From b2e6c20ee9aef89cc97d1934c6c9cd61395b83ec Mon Sep 17 00:00:00 2001 From: satish <satish.dvnk@vtiger.com> Date: Fri, 16 Dec 2016 11:35:14 +0530 Subject: [PATCH] Unable to send email from Mail Manager --- .../v7/modules/Emails/resources/MassEdit.js | 748 +-- .../Settings/Vtiger/OutgoingServerEdit.tpl | 2 +- layouts/v7/modules/Users/Login.tpl | 26 +- layouts/v7/modules/Vtiger/Footer.tpl | 3 +- layouts/v7/modules/Vtiger/resources/Detail.js | 4356 +++++++++-------- layouts/v7/modules/Vtiger/resources/Vtiger.js | 2514 +++++----- modules/Emails/models/Record.php | 16 +- modules/Emails/views/MassSaveAjax.php | 2 - modules/Migration/schema/660_to_700.php | 44 +- modules/Vtiger/actions/RelatedRecordsAjax.php | 1 + packages/vtiger/mandatory/MailManager.zip | Bin 148957 -> 140069 bytes .../v7/modules/MailManager/resources/List.js | 2881 +++++------ 12 files changed, 5317 insertions(+), 5276 deletions(-) diff --git a/layouts/v7/modules/Emails/resources/MassEdit.js b/layouts/v7/modules/Emails/resources/MassEdit.js index cc2c02b1c..a9ced971c 100644 --- a/layouts/v7/modules/Emails/resources/MassEdit.js +++ b/layouts/v7/modules/Emails/resources/MassEdit.js @@ -8,16 +8,16 @@ *************************************************************************************/ jQuery.Class("Emails_MassEdit_Js",{},{ - - init: function () { - this.preloadData = new Array(); - }, + + init: function () { + this.preloadData = new Array(); + }, ckEditorInstance : false, massEmailForm : false, - saved : "SAVED", - sent : "SENT", - attachmentsFileSize : 0, + saved : "SAVED", + sent : "SENT", + attachmentsFileSize : 0, documentsFileSize : 0, getPreloadData : function() { @@ -28,8 +28,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ this.preloadData = dataInfo; return this; }, - - /* + + /* * Function to get the Mass Email Form */ getMassEmailForm : function(){ @@ -38,8 +38,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } return this.massEmailForm; }, - - /** + + /** * Function to get ckEditorInstance */ getckEditorInstance : function(){ @@ -54,153 +54,153 @@ jQuery.Class("Emails_MassEdit_Js",{},{ * return UI */ showComposeEmailForm : function(params){ - var aDeferred = jQuery.Deferred(); - var thisInstance = this; - app.request.post({data:params}).then(function(err,data){ - app.helper.hideProgress(); - if(err == null) { - var modalContainer = app.helper.showModal(data, {cb: function(){ - thisInstance.registerEvents(); - }}); - return aDeferred.resolve(modalContainer); - } - }); - return aDeferred.promise(); - }, - - /** + var aDeferred = jQuery.Deferred(); + var thisInstance = this; + app.request.post({data:params}).then(function(err,data){ + app.helper.hideProgress(); + if(err == null) { + var modalContainer = app.helper.showModal(data, {cb: function(){ + thisInstance.registerEvents(); + }}); + return aDeferred.resolve(modalContainer); + } + }); + return aDeferred.promise(); + }, + + /** * function to call the registerevents of send Email step1 */ registerEmailFieldSelectionEvent : function(){ var thisInstance = this; var selectEmailForm = jQuery("#SendEmailFormStep1"); selectEmailForm.on('submit',function(e){ - e.preventDefault(); + e.preventDefault(); var form = jQuery(e.currentTarget); - - var checkedEmails = form.find('.emailField:checked').length; - if (checkedEmails < 1) { - app.helper.showErrorNotification({message: app.vtranslate("JS_PLEASE_SELECT_ATLEAST_ONE_OPTION")}); - return false; - } - - //added check to handle save recipient email preferences - var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked'); - if (saveRecipientPref) { - var selectedFieldEles = form.find('.emailField').filter(':checked'); - var selectedFields = new Array(); - jQuery.each(selectedFieldEles, function (i, ele) { - selectedFields.push(JSON.parse(jQuery(ele).val())); - }); - - var params = { - module: app.getModuleName(), - action: "RecipientPreferencesSaveAjax", - selectedFields: selectedFields, - source_module: form.find('input[name="source_module"]').val() - }; - app.request.post({"data":params}); - } - + + var checkedEmails = form.find('.emailField:checked').length; + if (checkedEmails < 1) { + app.helper.showErrorNotification({message: app.vtranslate("JS_PLEASE_SELECT_ATLEAST_ONE_OPTION")}); + return false; + } + + //added check to handle save recipient email preferences + var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked'); + if (saveRecipientPref) { + var selectedFieldEles = form.find('.emailField').filter(':checked'); + var selectedFields = new Array(); + jQuery.each(selectedFieldEles, function (i, ele) { + selectedFields.push(JSON.parse(jQuery(ele).val())); + }); + + var params = { + module: app.getModuleName(), + action: "RecipientPreferencesSaveAjax", + selectedFields: selectedFields, + source_module: form.find('input[name="source_module"]').val() + }; + app.request.post({"data":params}); + } + var params = form.serialize(); - app.helper.showProgress(); - app.helper.hideModal().then(function(e){ - thisInstance.showComposeEmailForm(params); - }); + app.helper.showProgress(); + app.helper.hideModal().then(function(e){ + thisInstance.showComposeEmailForm(params); + }); }); }, - - registerPreventFormSubmitEvent : function(){ - var form = this.getMassEmailForm(); - form.on('submit',function(e){ - e.preventDefault(); - }).on('keypress',function(e){ - if(e.which == 13){ + + registerPreventFormSubmitEvent : function(){ + var form = this.getMassEmailForm(); + form.on('submit',function(e){ + e.preventDefault(); + }).on('keypress',function(e){ + if(e.which == 13){ e.preventDefault(); } - }); - }, - - /** - * Function to register select Email Template click event - * @returns {undefined} - */ - registerSelectEmailTemplateEvent : function(){ - var thisInstance = this; - jQuery("#selectEmailTemplate").on("click",function(e){ + }); + }, + + /** + * Function to register select Email Template click event + * @returns {undefined} + */ + registerSelectEmailTemplateEvent : function(){ + var thisInstance = this; + jQuery("#selectEmailTemplate").on("click",function(e){ var url = "index.php?"+jQuery(e.currentTarget).data('url'); - var postParams = app.convertUrlToDataParams(url); - app.request.post({data:postParams}).then(function(err,data){ - if(err === null){ - jQuery('.popupModal').remove(); - var ele = jQuery('<div class="modal popupModal"></div>'); - ele.append(data); - jQuery('body').append(ele); - - thisInstance.showpopupModal(); - app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.EmailTemplateList.click"}) - } - }); - }); - }, - - showpopupModal : function(){ - var thisInstance = this; - vtUtils.applyFieldElementsView(jQuery('.popupModal')); - jQuery('.popupModal').modal(); - jQuery('.popupModal').on('shown.bs.modal', function() { - jQuery('.myModal').css('opacity', .5); - jQuery('.myModal').unbind(); - }); - - jQuery('.popupModal').on('hidden.bs.modal', function() { - this.remove(); - jQuery('.myModal').css('opacity', 1); - jQuery('.myModal').removeData("modal").modal(app.helper.defaultModalParams()); - jQuery('.myModal').bind(); - }); - }, - - registerSaveDraftOrSendEmailEvent : function(){ - var thisInstance = this; - var form = this.getMassEmailForm(); + var postParams = app.convertUrlToDataParams(url); + app.request.post({data:postParams}).then(function(err,data){ + if(err === null){ + jQuery('.popupModal').remove(); + var ele = jQuery('<div class="modal popupModal"></div>'); + ele.append(data); + jQuery('body').append(ele); + + thisInstance.showpopupModal(); + app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.EmailTemplateList.click"}) + } + }); + }); + }, + + showpopupModal : function(){ + var thisInstance = this; + vtUtils.applyFieldElementsView(jQuery('.popupModal')); + jQuery('.popupModal').modal(); + jQuery('.popupModal').on('shown.bs.modal', function() { + jQuery('.myModal').css('opacity', .5); + jQuery('.myModal').unbind(); + }); + + jQuery('.popupModal').on('hidden.bs.modal', function() { + this.remove(); + jQuery('.myModal').css('opacity', 1); + jQuery('.myModal').removeData("modal").modal(app.helper.defaultModalParams()); + jQuery('.myModal').bind(); + }); + }, + + registerSaveDraftOrSendEmailEvent : function(){ + var thisInstance = this; + var form = this.getMassEmailForm(); form.on('click','#sendEmail, #saveDraft',function(e){ - var targetName = jQuery(e.currentTarget).attr('name'); - if(targetName === 'savedraft'){ - jQuery('#flag').val(thisInstance.saved); - } else { - jQuery('#flag').val(thisInstance.sent); - } - var params = { - submitHandler: function(form) { - form = jQuery(form); - app.helper.hideModal(); - app.helper.showProgress(); - if (CKEDITOR.instances['description']) { - form.find('#description').val(CKEDITOR.instances['description'].getData()); - } - - var data = new FormData(form[0]); - var postParams = { - data:data, - // jQuery will set contentType = multipart/form-data based on data we are sending - contentType:false, - // we don’t want jQuery trying to transform file data into a huge query string, we want raw data to be sent to server - processData:false - }; - app.request.post(postParams).then(function(err,data){ - app.helper.hideProgress(); - var ele = jQuery(data); - var success = ele.find('.mailSentSuccessfully'); - if(success.length <= 0){ - app.helper.showModal(data); - } else { - app.event.trigger('post.mail.sent',data); - } - }); - } - }; - form.vtValidate(params); + var targetName = jQuery(e.currentTarget).attr('name'); + if(targetName === 'savedraft'){ + jQuery('#flag').val(thisInstance.saved); + } else { + jQuery('#flag').val(thisInstance.sent); + } + var params = { + submitHandler: function(form) { + form = jQuery(form); + app.helper.hideModal(); + app.helper.showProgress(); + if (CKEDITOR.instances['description']) { + form.find('#description').val(CKEDITOR.instances['description'].getData()); + } + + var data = new FormData(form[0]); + var postParams = { + data:data, + // jQuery will set contentType = multipart/form-data based on data we are sending + contentType:false, + // we don’t want jQuery trying to transform file data into a huge query string, we want raw data to be sent to server + processData:false + }; + app.request.post(postParams).then(function(err,data){ + app.helper.hideProgress(); + var ele = jQuery(data); + var success = ele.find('.mailSentSuccessfully'); + if(success.length <= 0){ + app.helper.showModal(data); + } else { + app.event.trigger('post.mail.sent',data); + } + }); + } + }; + form.vtValidate(params); }); }, @@ -208,7 +208,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{ * Function to register the events for bcc and cc links */ registerCcAndBccEvents : function(){ - var thisInstance = this; + var thisInstance = this; jQuery('#ccLink').on('click',function(e){ jQuery('.ccContainer').removeClass("hide"); jQuery(e.currentTarget).hide(); @@ -218,8 +218,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ jQuery(e.currentTarget).hide(); }); }, - - /** + + /** * Function which will handle the reference auto complete event registrations * @params - container <jQuery> - element in which auto complete fields needs to be searched */ @@ -229,23 +229,23 @@ jQuery.Class("Emails_MassEdit_Js",{},{ container.find('#emailField').select2({ minimumInputLength: 3, closeOnSelect : false, - + tags : [], tokenSeparators: [","], ajax : { - 'url' : 'index.php?module=Emails&action=BasicAjax', - 'dataType' : 'json', - 'data' : function(term,page){ - var data = {}; - data['searchValue'] = term; - return data; - }, - 'results' : function(data){ + 'url' : 'index.php?module=Emails&action=BasicAjax', + 'dataType' : 'json', + 'data' : function(term,page){ + var data = {}; + data['searchValue'] = term; + return data; + }, + 'results' : function(data){ var finalResult = []; var results = data.result; var resultData = new Array(); - for(var moduleName in results) { + for(var moduleName in results) { var moduleResult = []; moduleResult.text = moduleName; @@ -262,21 +262,21 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } moduleResult.children = children; resultData.push(moduleResult); - } + } finalResult.results = resultData; lastResults = resultData; - return finalResult; - }, + return finalResult; + }, transport : function(params) { return jQuery.ajax(params); } - }, + }, createSearchChoice : function(term) { //checking for results if there is any if not creating as value if(lastResults.length == 0) { return { id: term, text: term }; } - }, + }, escapeMarkup: function(m) { // Do not escape HTML in the select options text return m; @@ -396,10 +396,10 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } }, - - removeFromEmailAddressData : function(mailInfo) { - var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]'); - var previousValue = JSON.parse(mailInfoElement.val()); + + removeFromEmailAddressData : function(mailInfo) { + var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]'); + var previousValue = JSON.parse(mailInfoElement.val()); var elementSize = previousValue[mailInfo.id].length; var emailAddress = mailInfo.emailid; var selectedId = mailInfo.id; @@ -419,16 +419,16 @@ jQuery.Class("Emails_MassEdit_Js",{},{ //update toemailnameslist hidden element value } mailInfoElement.val(JSON.stringify(previousValue)); - }, - - removeFromSelectedIds : function(selectedId) { - var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]'); - var previousValue = JSON.parse(selectedIdElement.val()); + }, + + removeFromSelectedIds : function(selectedId) { + var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]'); + var previousValue = JSON.parse(selectedIdElement.val()); var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]'); - var mailAddress = JSON.parse(mailInfoElement.val()); - var elements = mailAddress[selectedId]; + var mailAddress = JSON.parse(mailInfoElement.val()); + var elements = mailAddress[selectedId]; var noOfEmailAddress = elements.length; - + //Don't remove id from selected_ids if element is having more than two email id's if(noOfEmailAddress < 2){ var updatedValue = []; @@ -444,11 +444,11 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } selectedIdElement.val(JSON.stringify(updatedValue)); } - }, - - removeFromEmails : function(mailInfo){ - var toEmails = this.getMassEmailForm().find('[name="to"]'); - var previousValue = JSON.parse(toEmails.val()); + }, + + removeFromEmails : function(mailInfo){ + var toEmails = this.getMassEmailForm().find('[name="to"]'); + var previousValue = JSON.parse(toEmails.val()); var updatedValue = []; for (var i in previousValue) { @@ -461,75 +461,75 @@ jQuery.Class("Emails_MassEdit_Js",{},{ updatedValue.push(email); } } - toEmails.val(JSON.stringify(updatedValue)); - }, - - addToEmails : function(mailInfo){ - var toEmails = this.getMassEmailForm().find('[name="to"]'); - var value = JSON.parse(toEmails.val()); + toEmails.val(JSON.stringify(updatedValue)); + }, + + addToEmails : function(mailInfo){ + var toEmails = this.getMassEmailForm().find('[name="to"]'); + var value = JSON.parse(toEmails.val()); if(value == ""){ value = new Array(); } - value.push(mailInfo.emailid); - toEmails.val(JSON.stringify(value)); - }, - - addToEmailAddressData : function(mailInfo) { - var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]'); - var existingToMailInfo = JSON.parse(mailInfoElement.val()); - if(typeof existingToMailInfo.length != 'undefined') { - existingToMailInfo = {}; - } - //If same record having two different email id's then it should be appended to - //existing email id - if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){ - var existingValues = existingToMailInfo[mailInfo.id]; - var newValue = new Array(mailInfo.emailid); - existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue); - } else { - existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid); - } - mailInfoElement.val(JSON.stringify(existingToMailInfo)); - }, - - appendToSelectedIds : function(selectedId) { - var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]'); - var previousValue = ''; - if(JSON.parse(selectedIdElement.val()) != '') { - previousValue = JSON.parse(selectedIdElement.val()); - //If value doesn't exist then insert into an array - if(jQuery.inArray(selectedId,previousValue) === -1){ - previousValue.push(selectedId); - } - } else { + value.push(mailInfo.emailid); + toEmails.val(JSON.stringify(value)); + }, + + addToEmailAddressData : function(mailInfo) { + var mailInfoElement = this.getMassEmailForm().find('[name="toemailinfo"]'); + var existingToMailInfo = JSON.parse(mailInfoElement.val()); + if(typeof existingToMailInfo.length != 'undefined') { + existingToMailInfo = {}; + } + //If same record having two different email id's then it should be appended to + //existing email id + if(existingToMailInfo.hasOwnProperty(mailInfo.id) === true){ + var existingValues = existingToMailInfo[mailInfo.id]; + var newValue = new Array(mailInfo.emailid); + existingToMailInfo[mailInfo.id] = jQuery.merge(existingValues,newValue); + } else { + existingToMailInfo[mailInfo.id] = new Array(mailInfo.emailid); + } + mailInfoElement.val(JSON.stringify(existingToMailInfo)); + }, + + appendToSelectedIds : function(selectedId) { + var selectedIdElement = this.getMassEmailForm().find('[name="selected_ids"]'); + var previousValue = ''; + if(JSON.parse(selectedIdElement.val()) != '') { + previousValue = JSON.parse(selectedIdElement.val()); + //If value doesn't exist then insert into an array + if(jQuery.inArray(selectedId,previousValue) === -1){ + previousValue.push(selectedId); + } + } else { previousValue = new Array(selectedId); - } + } selectedIdElement.val(JSON.stringify(previousValue)); - }, - - checkHiddenStatusofCcandBcc : function(){ + }, + + checkHiddenStatusofCcandBcc : function(){ var ccLink = jQuery('#ccLink'); var bccLink = jQuery('#bccLink'); if(ccLink.is(':hidden') && bccLink.is(':hidden')){ ccLink.closest('div.row').addClass('hide'); } }, - - loadCkEditor : function(textAreaElement){ - var ckEditorInstance = this.getckEditorInstance(); - ckEditorInstance.loadCkEditor(textAreaElement); - }, - - setAttachmentsFileSizeByElement : function(element){ - this.attachmentsFileSize += element.get(0).files[0].size; - }, - - setAttachmentsFileSizeBySize : function(fileSize){ + + loadCkEditor : function(textAreaElement){ + var ckEditorInstance = this.getckEditorInstance(); + ckEditorInstance.loadCkEditor(textAreaElement); + }, + + setAttachmentsFileSizeByElement : function(element){ + this.attachmentsFileSize += element.get(0).files[0].size; + }, + + setAttachmentsFileSizeBySize : function(fileSize){ this.attachmentsFileSize += parseFloat(fileSize); }, - - getAttachmentsFileSize : function(){ + + getAttachmentsFileSize : function(){ return this.attachmentsFileSize; }, setDocumentsFileSize : function(documentSize){ @@ -542,24 +542,24 @@ jQuery.Class("Emails_MassEdit_Js",{},{ getTotalAttachmentsSize : function(){ return parseFloat(this.getAttachmentsFileSize())+parseFloat(this.getDocumentsFileSize()); }, - - getMaxUploadSize : function(){ + + getMaxUploadSize : function(){ return jQuery('#maxUploadSize').val(); }, - - removeAttachmentFileSizeByElement : function(element) { - this.attachmentsFileSize -= element.get(0).files[0].size; + + removeAttachmentFileSizeByElement : function(element) { + this.attachmentsFileSize -= element.get(0).files[0].size; }, - - removeDocumentsFileSize : function(documentSize){ + + removeDocumentsFileSize : function(documentSize){ this.documentsFileSize -= parseFloat(documentSize); }, - + removeAttachmentFileSizeBySize : function(fileSize) { this.attachmentsFileSize -= parseFloat(fileSize); }, - - /** + + /** * Function to calculate upload file size */ calculateUploadFileSize : function(){ @@ -578,8 +578,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } }) }, - - setReferenceFieldValue : function(container,object){ + + setReferenceFieldValue : function(container,object){ var thisInstance = this; var preloadData = thisInstance.getPreloadData(); @@ -602,8 +602,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } toEmailField.val(toEmailFieldNewValue); }, - - fileAfterSelectHandler : function(element, value, master_element){ + + fileAfterSelectHandler : function(element, value, master_element){ var thisInstance = this; var mode = jQuery('[name="emailMode"]').val(); var existingAttachment = JSON.parse(jQuery('[name="attachments"]').val()); @@ -617,7 +617,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{ master_element.list.find('.MultiFile-label:last').find('.MultiFile-remove').trigger('click'); }else if((mode != "") && (existingAttachment != "")){ var pattern = /\\/; - var fileuploaded = value; + var fileuploaded = value; jQuery.each(existingAttachment,function(key,value){ if((value['attachment'] == fileuploaded) && !(value.hasOwnProperty( "docid"))){ var errorMsg = app.vtranslate("JS_THIS_FILE_HAS_ALREADY_BEEN_SELECTED")+fileuploaded; @@ -630,9 +630,9 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } return true; }, - - registerEventsForToField: function() { - var thisInstance = this; + + registerEventsForToField: function() { + var thisInstance = this; this.getMassEmailForm().on('click','.selectEmail',function(e){ var moduleSelected = jQuery('.emailModulesList').select2('val'); var parentElem = jQuery(e.target).closest('.toEmailField'); @@ -645,7 +645,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{ var popupInstance =Vtiger_Popup_Js.getInstance(); popupInstance.showPopup(params, function(data){ var responseData = JSON.parse(data); - + for(var id in responseData){ var data = { 'name' : responseData[id].name, @@ -653,13 +653,13 @@ jQuery.Class("Emails_MassEdit_Js",{},{ 'emailid' : responseData[id].email } thisInstance.setReferenceFieldValue(parentElem, data); - thisInstance.addToEmailAddressData(data); - thisInstance.appendToSelectedIds(id); - thisInstance.addToEmails(data); + thisInstance.addToEmailAddressData(data); + thisInstance.appendToSelectedIds(id); + thisInstance.addToEmails(data); } },'relatedEmailModules'); }); - + this.getMassEmailForm().on('click','[name="clearToEmailField"]',function(e){ var element = jQuery(e.currentTarget); element.closest('div.toEmailField').find('.sourceField').val(''); @@ -671,32 +671,32 @@ jQuery.Class("Emails_MassEdit_Js",{},{ thisInstance.setPreloadData(preloadData); thisInstance.getMassEmailForm().find('#emailField').select2('data', preloadData); }); - - }, - - registerBrowseCrmEvent : function(){ + + }, + + registerBrowseCrmEvent : function(){ var thisInstance = this; jQuery('#browseCrm').on('click',function(e){ - var url = jQuery(e.currentTarget).data('url'); - var postParams = app.convertUrlToDataParams("index.php?"+url); - - app.request.post({"data":postParams}).then(function(err,data){ - jQuery('.popupModal').remove(); - var ele = jQuery('<div class="modal popupModal"></div>'); - ele.append(data); - jQuery('body').append(ele); - thisInstance.showpopupModal(); - app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.DocumentsList.click"}); - }); + var url = jQuery(e.currentTarget).data('url'); + var postParams = app.convertUrlToDataParams("index.php?"+url); + + app.request.post({"data":postParams}).then(function(err,data){ + jQuery('.popupModal').remove(); + var ele = jQuery('<div class="modal popupModal"></div>'); + ele.append(data); + jQuery('body').append(ele); + thisInstance.showpopupModal(); + app.event.trigger("post.Popup.Load",{"eventToTrigger":"post.DocumentsList.click"}); + }); }); }, - - - getDocumentAttachmentElement : function(selectedFileName,id,selectedFileSize){ + + + getDocumentAttachmentElement : function(selectedFileName,id,selectedFileSize){ return '<div class="MultiFile-label"><a href="#" class="removeAttachment cursorPointer" data-id='+id+' data-file-size='+selectedFileSize+'>x </a><span>'+selectedFileName+'</span></div>'; }, - - /** + + /** * Function to check whether selected document * is already an existing attachment * @param expects document id to check @@ -741,8 +741,8 @@ jQuery.Class("Emails_MassEdit_Js",{},{ return false; } }, - - writeDocumentIds :function(selectedDocumentId){ + + writeDocumentIds :function(selectedDocumentId){ var thisInstance = this; var newAttachment; var selectedDocumentIds = jQuery('#documentIds').val(); @@ -769,14 +769,14 @@ jQuery.Class("Emails_MassEdit_Js",{},{ return false; } }, - - removeDocumentIds : function(removedDocumentId){ + + removeDocumentIds : function(removedDocumentId){ var documentIdsContainer = jQuery('#documentIds'); var documentIdsArray = JSON.parse(documentIdsContainer.val()); documentIdsArray.splice( jQuery.inArray('"'+removedDocumentId+'"', documentIdsArray), 1 ); documentIdsContainer.val(JSON.stringify(documentIdsArray)); }, - + registerRemoveAttachmentEvent : function(){ var thisInstance = this; this.getMassEmailForm().on('click','.removeAttachment',function(e){ @@ -791,7 +791,7 @@ jQuery.Class("Emails_MassEdit_Js",{},{ } }); }, - + registerEventForRemoveCustomAttachments : function() { var thisInstance = this; var composeEmailForm = this.getMassEmailForm(); @@ -818,102 +818,102 @@ jQuery.Class("Emails_MassEdit_Js",{},{ imageContainer.remove(); }); }, - - registerEvents : function(){ - var thisInstance = this; - var container = this.getMassEmailForm(); - if(container.length > 0){ - this.registerPreventFormSubmitEvent(); - this.registerCcAndBccEvents(); - this.registerAutoCompleteFields(container); - jQuery("#multiFile").MultiFile({ - list: '#attachments', - 'afterFileSelect' : function(element, value, master_element){ - var masterElement = master_element; - var newElement = jQuery(masterElement.current); - newElement.addClass('removeNoFileChosen'); - thisInstance.fileAfterSelectHandler(element, value, master_element); - }, - 'afterFileRemove' : function(element, value, master_element){ - if (jQuery('#attachments').is(':empty')){ - jQuery('.MultiFile,.MultiFile-applied').removeClass('removeNoFileChosen'); - } - thisInstance.removeAttachmentFileSizeByElement(jQuery(element)); - } - }); - this.registerRemoveAttachmentEvent(); - this.registerBrowseCrmEvent(); - this.calculateUploadFileSize(); - this.registerSaveDraftOrSendEmailEvent(); - var isCkeditorApplied = jQuery('#description').data('isCkeditorApplied'); - if(isCkeditorApplied != true){ - this.loadCkEditor(jQuery('#description').data('isCkeditorApplied',true)); - } - this.registerSelectEmailTemplateEvent(); - this.registerEventsForToField(); + + registerEvents : function(){ + var thisInstance = this; + var container = this.getMassEmailForm(); + if(container.length > 0){ + this.registerPreventFormSubmitEvent(); + this.registerCcAndBccEvents(); + this.registerAutoCompleteFields(container); + jQuery("#multiFile").MultiFile({ + list: '#attachments', + 'afterFileSelect' : function(element, value, master_element){ + var masterElement = master_element; + var newElement = jQuery(masterElement.current); + newElement.addClass('removeNoFileChosen'); + thisInstance.fileAfterSelectHandler(element, value, master_element); + }, + 'afterFileRemove' : function(element, value, master_element){ + if (jQuery('#attachments').is(':empty')){ + jQuery('.MultiFile,.MultiFile-applied').removeClass('removeNoFileChosen'); + } + thisInstance.removeAttachmentFileSizeByElement(jQuery(element)); + } + }); + this.registerRemoveAttachmentEvent(); + this.registerBrowseCrmEvent(); + this.calculateUploadFileSize(); + this.registerSaveDraftOrSendEmailEvent(); + var isCkeditorApplied = jQuery('#description').data('isCkeditorApplied'); + if(isCkeditorApplied != true){ + this.loadCkEditor(jQuery('#description').data('isCkeditorApplied',true)); + } + this.registerSelectEmailTemplateEvent(); + this.registerEventsForToField(); this.registerEventForRemoveCustomAttachments(); - - app.event.on("post.DocumentsList.click",function(event, data){ - var responseData = JSON.parse(data); - jQuery('.popupModal').modal('hide'); - for(var id in responseData){ - selectedDocumentId = id; - var selectedFileName = responseData[id].info['filename']; - var selectedFileSize = responseData[id].info['filesize']; - var response = thisInstance.writeDocumentIds(selectedDocumentId) - if(response){ - var attachmentElement = thisInstance.getDocumentAttachmentElement(selectedFileName,id,selectedFileSize); - //TODO handle the validation if the size exceeds 5mb before appending. - jQuery(attachmentElement).appendTo(jQuery('#attachments')); - jQuery('.MultiFile-applied,.MultiFile').addClass('removeNoFileChosen'); - thisInstance.setDocumentsFileSize(selectedFileSize); - } - } - }); - - jQuery('#emailTemplateWarning .alert-warning .close').click(function(e){ - e.preventDefault(); - e.stopPropagation(); - jQuery('#emailTemplateWarning').addClass('hide'); - }); - - app.event.on("post.EmailTemplateList.click",function(event, data){ - var responseData = JSON.parse(data); - jQuery('.popupModal').modal('hide'); - - var ckEditorInstance = thisInstance.getckEditorInstance(); - - for(var id in responseData){ - var data = responseData[id]; - ckEditorInstance.loadContentsInCkeditor(data['info']); - //fill subject - jQuery('#subject').val(data['name']); - var selectedTemplateBody = responseData[id].info; - } - var sourceModule = jQuery('[name=source_module]').val(); - var tokenDataPair = selectedTemplateBody.split('$'); - var showWarning = false; - for (var i=0; i<tokenDataPair.length; i++) { - var module = tokenDataPair[i].split('-'); - var pattern = /^[A-z]+$/; - if(pattern.test(module[0])) { - if(!(module[0] == sourceModule.toLowerCase() || module[0] == 'users' || module[0] == 'custom')) { - showWarning = true; - } - } - } - if(showWarning) { - jQuery('#emailTemplateWarning').removeClass('hide'); - } else { - jQuery('#emailTemplateWarning').addClass('hide'); - } - }); + + app.event.on("post.DocumentsList.click",function(event, data){ + var responseData = JSON.parse(data); + jQuery('.popupModal').modal('hide'); + for(var id in responseData){ + selectedDocumentId = id; + var selectedFileName = responseData[id].info['filename']; + var selectedFileSize = responseData[id].info['filesize']; + var response = thisInstance.writeDocumentIds(selectedDocumentId) + if(response){ + var attachmentElement = thisInstance.getDocumentAttachmentElement(selectedFileName,id,selectedFileSize); + //TODO handle the validation if the size exceeds 5mb before appending. + jQuery(attachmentElement).appendTo(jQuery('#attachments')); + jQuery('.MultiFile-applied,.MultiFile').addClass('removeNoFileChosen'); + thisInstance.setDocumentsFileSize(selectedFileSize); + } + } + }); + + jQuery('#emailTemplateWarning .alert-warning .close').click(function(e){ + e.preventDefault(); + e.stopPropagation(); + jQuery('#emailTemplateWarning').addClass('hide'); + }); + + app.event.on("post.EmailTemplateList.click",function(event, data){ + var responseData = JSON.parse(data); + jQuery('.popupModal').modal('hide'); + + var ckEditorInstance = thisInstance.getckEditorInstance(); + + for(var id in responseData){ + var data = responseData[id]; + ckEditorInstance.loadContentsInCkeditor(data['info']); + //fill subject + jQuery('#subject').val(data['name']); + var selectedTemplateBody = responseData[id].info; + } + var sourceModule = jQuery('[name=source_module]').val(); + var tokenDataPair = selectedTemplateBody.split('$'); + var showWarning = false; + for (var i=0; i<tokenDataPair.length; i++) { + var module = tokenDataPair[i].split('-'); + var pattern = /^[A-z]+$/; + if(pattern.test(module[0])) { + if(!(module[0] == sourceModule.toLowerCase() || module[0] == 'users' || module[0] == 'custom')) { + showWarning = true; + } + } + } + if(showWarning) { + jQuery('#emailTemplateWarning').removeClass('hide'); + } else { + jQuery('#emailTemplateWarning').addClass('hide'); + } + }); var params = { setHeight:(jQuery(window).height() - container.find('.modal-header').height() - container.find('.modal-footer').height() - 100)+'px' }; app.helper.showVerticalScroll(container.find('.modal-body'), params); - } - } + } + } }); diff --git a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl index a830c8d74..7c52a0cd8 100644 --- a/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl +++ b/layouts/v7/modules/Settings/Vtiger/OutgoingServerEdit.tpl @@ -42,7 +42,7 @@ <div class=" col-lg-6 col-md-6 col-sm-12"> <select class="select2 inputElement col-lg-12 col-md-12 col-lg-12" name="serverType"> <option value="">{vtranslate('LBL_SELECT_OPTION','Vtiger')}</option> - <option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465;"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option> + <option value="{"ssl://smtp.gmail.com:465"}" {if {$MODEL->get('server')} eq "ssl://smtp.gmail.com:465"} selected {/if}>{vtranslate('LBL_GMAIL', $QUALIFIED_MODULE)} </option> <option value="{"smtp.live.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_HOTMAIL', $QUALIFIED_MODULE)}</option> <option value="{"smtp-mail.outlook.com"}" {if {$MODEL->get('server')} eq "smtp.live.com"} selected {/if}>{vtranslate('LBL_OFFICE365', $QUALIFIED_MODULE)}</option> <option value="{"smtp.mail.yahoo.com"}" {if {$MODEL->get('server')} eq "smtp.mail.yahoo.com"} selected {/if}>{vtranslate('LBL_YAHOO', $QUALIFIED_MODULE)}</option> diff --git a/layouts/v7/modules/Users/Login.tpl b/layouts/v7/modules/Users/Login.tpl index 31f748222..50c5d7278 100644 --- a/layouts/v7/modules/Users/Login.tpl +++ b/layouts/v7/modules/Users/Login.tpl @@ -80,22 +80,20 @@ display: block; color: red; } + .app-footer p { + margin-top: 0px; + } + #page { + padding-top: 55px; + } </style> </head> <body> <div class="header"> - <div class="row"> - <div class="login-logo"> - <img src='layouts/v7/resources/Images/vtiger.jpg'/> - </div> - </div> - <div class="row"> - <h1>One account. All of Vtiger.</h1> - </div> - <div class="row"> - <h4>Sign in to continue to Vtiger</h4> - </div> + <div class="login-logo"><img src='layouts/v7/resources/Images/vtiger.jpg'/></div> + <div><h1>One account. All of Vtiger.</h1></div> + <div><h4>Sign in to continue to Vtiger</h4></div> </div> <div class="body"> <div class="container login-form" id="login-form-div"> @@ -139,8 +137,10 @@ </form> </div> </div> - <div class="footer"></div> -</body> + <div class="footer"> + {include file="Footer.tpl"|vtemplate_path:$MODULE} + </div> + </body> <script> jQuery(document).ready(function () { jQuery('#login-form-div #username').focus(); diff --git a/layouts/v7/modules/Vtiger/Footer.tpl b/layouts/v7/modules/Vtiger/Footer.tpl index 864df35a3..3191efc37 100644 --- a/layouts/v7/modules/Vtiger/Footer.tpl +++ b/layouts/v7/modules/Vtiger/Footer.tpl @@ -8,7 +8,8 @@ ************************************************************************************} <footer class="app-footer"> - <p>Powered by vtiger CRM - 7.0 © 2004 - 2015 + <p> + Powered by vtiger CRM - 7.0 © 2004 - 2017 <a href="//www.vtiger.com" target="_blank">Vtiger</a> | <a href="https://www.vtiger.com/privacy-policy" target="_blank">Privacy Policy</a> </p> diff --git a/layouts/v7/modules/Vtiger/resources/Detail.js b/layouts/v7/modules/Vtiger/resources/Detail.js index f64cdf57c..66be15a02 100644 --- a/layouts/v7/modules/Vtiger/resources/Detail.js +++ b/layouts/v7/modules/Vtiger/resources/Detail.js @@ -8,61 +8,61 @@ *************************************************************************************/ Vtiger.Class("Vtiger_Detail_Js",{ - - detailInstance : false, - PreAjaxSaveEvent : 'PreAjaxSaveEvent', - PostAjaxSaveEvent : 'PostAjaxSaveEvent', + + detailInstance : false, + PreAjaxSaveEvent : 'PreAjaxSaveEvent', + PostAjaxSaveEvent : 'PostAjaxSaveEvent', getInstance: function(){ - if( Vtiger_Detail_Js.detailInstance == false ){ - var module = app.getModuleName(); - var view = app.view; - var moduleClassName = module+"_"+view+"_Js"; - var fallbackClassName = Vtiger_Detail_Js; - if(typeof window[moduleClassName] != 'undefined'){ - var instance = new window[moduleClassName](); - }else{ - var instance = new fallbackClassName(); - } - Vtiger_Detail_Js.detailInstance = instance; - } - return Vtiger_Detail_Js.detailInstance; - }, - - getInstanceByModuleName : function(moduleName){ - if(typeof moduleName == "undefined"){ - moduleName = app.getModuleName(); - } - var parentModule = app.getParentModuleName(); - if(parentModule == 'Settings'){ - var moduleClassName = parentModule+"_"+moduleName+"_Detail_Js"; - if(typeof window[moduleClassName] == 'undefined'){ - moduleClassName = moduleName+"_Detail_Js"; - } - var fallbackClassName = parentModule+"_Vtiger_Detail_Js"; - if(typeof window[fallbackClassName] == 'undefined') { - fallbackClassName = "Vtiger_Detail_Js"; - } - } else { - moduleClassName = moduleName+"_Detail_Js"; - fallbackClassName = "Vtiger_Detail_Js"; - } - if(typeof window[moduleClassName] != 'undefined'){ - var instance = new window[moduleClassName](); - }else{ - var instance = new window[fallbackClassName](); - } - return instance; - }, - - triggerSendSms: function(detailActionUrl, module) { - var self = this.getInstance(); - self.sendSMS(detailActionUrl,module); - }, - - deleteRelatedActivity : function(e) { - var thisInstance = this; - var currentElement = jQuery(e.currentTarget); - var id = currentElement.data('id'); + if( Vtiger_Detail_Js.detailInstance == false ){ + var module = app.getModuleName(); + var view = app.view; + var moduleClassName = module+"_"+view+"_Js"; + var fallbackClassName = Vtiger_Detail_Js; + if(typeof window[moduleClassName] != 'undefined'){ + var instance = new window[moduleClassName](); + }else{ + var instance = new fallbackClassName(); + } + Vtiger_Detail_Js.detailInstance = instance; + } + return Vtiger_Detail_Js.detailInstance; + }, + + getInstanceByModuleName : function(moduleName){ + if(typeof moduleName == "undefined"){ + moduleName = app.getModuleName(); + } + var parentModule = app.getParentModuleName(); + if(parentModule == 'Settings'){ + var moduleClassName = parentModule+"_"+moduleName+"_Detail_Js"; + if(typeof window[moduleClassName] == 'undefined'){ + moduleClassName = moduleName+"_Detail_Js"; + } + var fallbackClassName = parentModule+"_Vtiger_Detail_Js"; + if(typeof window[fallbackClassName] == 'undefined') { + fallbackClassName = "Vtiger_Detail_Js"; + } + } else { + moduleClassName = moduleName+"_Detail_Js"; + fallbackClassName = "Vtiger_Detail_Js"; + } + if(typeof window[moduleClassName] != 'undefined'){ + var instance = new window[moduleClassName](); + }else{ + var instance = new window[fallbackClassName](); + } + return instance; + }, + + triggerSendSms: function(detailActionUrl, module) { + var self = this.getInstance(); + self.sendSMS(detailActionUrl,module); + }, + + deleteRelatedActivity : function(e) { + var thisInstance = this; + var currentElement = jQuery(e.currentTarget); + var id = currentElement.data('id'); var recurringEnabled = currentElement.data('recurringEnabled'); var postData = {'related_record_list' : [id]}; if(recurringEnabled) { @@ -80,25 +80,25 @@ Vtiger.Class("Vtiger_Detail_Js",{ function(error,err) { }); } - }, - + }, + deleteActivityRelation : function(customParams) { var params = { - 'module' : app.getModuleName(), - 'related_module' : 'Calendar', - 'action' : 'RelationAjax', - 'mode' : 'deleteRelation', - 'src_record' : jQuery('#recordId').val() + 'module' : app.getModuleName(), + 'related_module' : 'Calendar', + 'action' : 'RelationAjax', + 'mode' : 'deleteRelation', + 'src_record' : jQuery('#recordId').val() }; params = jQuery.extend(params, customParams); - + app.request.post({data: params}).then(function(err, data) { if(data) { params = { - 'record' : jQuery('#recordId').val(), - 'view' : 'Detail', - 'module' : app.getModuleName(), - 'mode' : 'getActivities' + 'record' : jQuery('#recordId').val(), + 'view' : 'Detail', + 'module' : app.getModuleName(), + 'mode' : 'getActivities' }; app.request.get({data: params}).then(function(err, result) { jQuery('#relatedActivities').html(result); @@ -107,132 +107,132 @@ Vtiger.Class("Vtiger_Detail_Js",{ } }); }, - - - showUpdates : function(element){ - jQuery(".historyButtons").find("button").removeAttr("disabled").removeClass("btn-success"); - var currentElement = jQuery(element); - currentElement.attr("disabled","disabled").addClass("btn-success"); - - var params = []; - var recordId = jQuery('#recordId').val(); - params.url = "index.php?view=Detail&module="+app.getModuleName()+"&mode=showRecentActivities&record="+recordId; - - app.helper.showProgress(); - app.request.get(params).then(function(error,response){ - app.helper.hideProgress(); - jQuery(".HistoryContainer").find(".data-body").html(response); - }); - }, - - - checkSMSStatus: function(url) { - app.request.post({url: url}).then( - function(err, data) { - var status = data['status']; - if(status == 'Failed'){ - var message = data['message']; - app.helper.showErrorNotification({title: status, message: message}); - } - else if (status == null) { - app.helper.showErrorNotification({title: 'Error', message: 'Failed to send SMS.'}); - } - else { - var message = data['message']; - app.helper.showErrorNotification({title:status, message:message}); - } - }); - }, - - /* + + + showUpdates : function(element){ + jQuery(".historyButtons").find("button").removeAttr("disabled").removeClass("btn-success"); + var currentElement = jQuery(element); + currentElement.attr("disabled","disabled").addClass("btn-success"); + + var params = []; + var recordId = jQuery('#recordId').val(); + params.url = "index.php?view=Detail&module="+app.getModuleName()+"&mode=showRecentActivities&record="+recordId; + + app.helper.showProgress(); + app.request.get(params).then(function(error,response){ + app.helper.hideProgress(); + jQuery(".HistoryContainer").find(".data-body").html(response); + }); + }, + + + checkSMSStatus: function(url) { + app.request.post({url: url}).then( + function(err, data) { + var status = data['status']; + if(status == 'Failed'){ + var message = data['message']; + app.helper.showErrorNotification({title: status, message: message}); + } + else if (status == null) { + app.helper.showErrorNotification({title: 'Error', message: 'Failed to send SMS.'}); + } + else { + var message = data['message']; + app.helper.showErrorNotification({title:status, message:message}); + } + }); + }, + + /* * function to trigger delete record action * @params: delete record url. */ - deleteRecord : function(deleteRecordActionUrl) { - var detailInstance = window.app.controller(); - detailInstance.remove(deleteRecordActionUrl); - }, - - - /** - * Function to trigger Transfer Ownership - * @param {type} massActionUrl - * @returns {undefined} - */ - triggerTransferOwnership : function(massActionUrl){ + deleteRecord : function(deleteRecordActionUrl) { + var detailInstance = window.app.controller(); + detailInstance.remove(deleteRecordActionUrl); + }, + + + /** + * Function to trigger Transfer Ownership + * @param {type} massActionUrl + * @returns {undefined} + */ + triggerTransferOwnership : function(massActionUrl){ var thisInstance = this; - var params = app.convertUrlToDataParams(massActionUrl); - app.helper.showProgress(); + var params = app.convertUrlToDataParams(massActionUrl); + app.helper.showProgress(); app.request.post({data:params}).then( function(error, data) { - app.helper.hideProgress(); - app.helper.showModal(data); - var form = jQuery('form#changeOwner'); - var isFormExists = form.length; - if(isFormExists){ - thisInstance.transferOwnershipSave(form); - } + app.helper.hideProgress(); + app.helper.showModal(data); + var form = jQuery('form#changeOwner'); + var isFormExists = form.length; + if(isFormExists){ + thisInstance.transferOwnershipSave(form); + } } ); }, - - /** - * Saving transfer ownership - * @param {type} form - * @returns {undefined} - */ - transferOwnershipSave : function (form){ - form.on("click","button[name='saveButton']",function(e){ - e.preventDefault(); - var rules = {}; - rules["related_modules"] = {'required' : true}; - rules["transferOwnerId"] = {'required' : true}; - var params = { - rules : rules, - submitHandler: function(form) { - // to Prevent submit if already submitted - jQuery(form).find("button[name='saveButton']").attr("disabled","disabled"); - if(this.numberOfInvalids() > 0) { - return false; - } - var transferOwner = jQuery('#transferOwnerId').val(); - var relatedModules = jQuery('#related_modules').val(); - var recordId = jQuery('#recordId').val(); - var reqParams = { - 'module': app.getModuleName(), - 'action' : 'TransferOwnership', - 'record':recordId, - 'transferOwnerId' : transferOwner, - 'related_modules' : relatedModules - }; - app.request.post({data:reqParams}).then( - function(error,data) { - if(error === null){ - app.helper.hideModal(); - app.helper.showAlertBox({'message':app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')}); - } - } - ); - } - }; - validateAndSubmitForm(form,params); - }); - }, - - /* + + /** + * Saving transfer ownership + * @param {type} form + * @returns {undefined} + */ + transferOwnershipSave : function (form){ + form.on("click","button[name='saveButton']",function(e){ + e.preventDefault(); + var rules = {}; + rules["related_modules"] = {'required' : true}; + rules["transferOwnerId"] = {'required' : true}; + var params = { + rules : rules, + submitHandler: function(form) { + // to Prevent submit if already submitted + jQuery(form).find("button[name='saveButton']").attr("disabled","disabled"); + if(this.numberOfInvalids() > 0) { + return false; + } + var transferOwner = jQuery('#transferOwnerId').val(); + var relatedModules = jQuery('#related_modules').val(); + var recordId = jQuery('#recordId').val(); + var reqParams = { + 'module': app.getModuleName(), + 'action' : 'TransferOwnership', + 'record':recordId, + 'transferOwnerId' : transferOwner, + 'related_modules' : relatedModules + }; + app.request.post({data:reqParams}).then( + function(error,data) { + if(error === null){ + app.helper.hideModal(); + app.helper.showAlertBox({'message':app.vtranslate('JS_RECORDS_TRANSFERRED_SUCCESSFULLY')}); + } + } + ); + } + }; + validateAndSubmitForm(form,params); + }); + }, + + /* * function to trigger send Email * @params: send email url , module name. */ triggerSendEmail : function(detailActionUrl, module){ - var currentInstance = window.app.controller(); - var parentRecord = new Array(); - var params = {}; - parentRecord.push(currentInstance.getRecordId()); - var urlParams = app.convertUrlToDataParams(detailActionUrl); - urlParams['selected_ids'] = parentRecord; - Vtiger_Index_Js.showComposeEmailPopup(urlParams); - }, - + var currentInstance = window.app.controller(); + var parentRecord = new Array(); + var params = {}; + parentRecord.push(currentInstance.getRecordId()); + var urlParams = app.convertUrlToDataParams(detailActionUrl); + urlParams['selected_ids'] = parentRecord; + Vtiger_Index_Js.showComposeEmailPopup(urlParams); + }, + /** * Function to show the content of a file in an iframe * @param {type} e @@ -242,92 +242,92 @@ Vtiger.Class("Vtiger_Detail_Js",{ previewFile: function (e, recordId,attachmentId) { Vtiger_Index_Js.previewFile(e, recordId,attachmentId); } - + },{ - - detailViewSummaryTabLabel : 'LBL_RECORD_SUMMARY', + + detailViewSummaryTabLabel : 'LBL_RECORD_SUMMARY', detailViewDetailTabLabel : 'LBL_RECORD_DETAILS', - detailViewHistoryTabLabel : 'LBL_HISTORY', - detailViewRecentCommentsTabLabel : 'ModComments', - detailViewRecentActivitiesTabLabel : 'Activities', - detailViewRecentDocumentsLabel : 'Documents', - widgetPostLoad : 'Vtiger.Widget.PostLoad', - _moduleName : false, - targetPicklistChange : false, - targetPicklist : false, - sourcePicklistname : false, - - getModuleName : function() { - if(this._moduleName != false){ - return this._moduleName; - } - return app.module(); - }, - - setModuleName : function(module){ - this._moduleName = module; - return this; - }, - - registerOverlayEditEvents: function(module, container) { - var editInstance = Vtiger_Edit_Js.getInstanceByModuleName(module); - editInstance.setModuleName(module); - var editContainer = container.find('.overlayEdit'); - editInstance.setEditViewContainer(editContainer); - editInstance.registerEvents(false); - }, - - setContentHolder: function(container){ - this.detailViewContentHolder = container; - }, - - overlayMode: false, - setOverlayDetailMode: function(option){ - this.overlayMode = option; - }, - getOverlayDetailMode: function(){ - return this.overlayMode; - }, - - registerRelatedRecordSave: function(){ - var thisInstance = this; - app.event.on('post.overLayEditView.loaded',function(e, container){ - jQuery('#EditView').vtValidate({ - submitHandler : function(form){ + detailViewHistoryTabLabel : 'LBL_HISTORY', + detailViewRecentCommentsTabLabel : 'ModComments', + detailViewRecentActivitiesTabLabel : 'Activities', + detailViewRecentDocumentsLabel : 'Documents', + widgetPostLoad : 'Vtiger.Widget.PostLoad', + _moduleName : false, + targetPicklistChange : false, + targetPicklist : false, + sourcePicklistname : false, + + getModuleName : function() { + if(this._moduleName != false){ + return this._moduleName; + } + return app.module(); + }, + + setModuleName : function(module){ + this._moduleName = module; + return this; + }, + + registerOverlayEditEvents: function(module, container) { + var editInstance = Vtiger_Edit_Js.getInstanceByModuleName(module); + editInstance.setModuleName(module); + var editContainer = container.find('.overlayEdit'); + editInstance.setEditViewContainer(editContainer); + editInstance.registerEvents(false); + }, + + setContentHolder: function(container){ + this.detailViewContentHolder = container; + }, + + overlayMode: false, + setOverlayDetailMode: function(option){ + this.overlayMode = option; + }, + getOverlayDetailMode: function(){ + return this.overlayMode; + }, + + registerRelatedRecordSave: function(){ + var thisInstance = this; + app.event.on('post.overLayEditView.loaded',function(e, container){ + jQuery('#EditView').vtValidate({ + submitHandler : function(form){ window.onbeforeunload = null; - var e = jQuery.Event(Vtiger_Edit_Js.recordPresaveEvent); - app.event.trigger(e); - if(e.isDefaultPrevented()) { - return false; - } - var formData = new FormData(form); - var postParams = { - data: formData, - contentType: false, - processData: false - }; - app.helper.showProgress(); - app.request.post(postParams).then(function(err,data){ - app.helper.hideProgress(); - app.helper.hidePageContentOverlay(); - var relatedModuleName = formData.module; + var e = jQuery.Event(Vtiger_Edit_Js.recordPresaveEvent); + app.event.trigger(e); + if(e.isDefaultPrevented()) { + return false; + } + var formData = new FormData(form); + var postParams = { + data: formData, + contentType: false, + processData: false + }; + app.helper.showProgress(); + app.request.post(postParams).then(function(err,data){ + app.helper.hideProgress(); + app.helper.hidePageContentOverlay(); + var relatedModuleName = formData.module; if(relatedModuleName == 'Events') { relatedModuleName = 'Calendar'; } - var relatedController = thisInstance.getRelatedController(relatedModuleName); - relatedController.loadRelatedList(); - }); - return false; - } + var relatedController = thisInstance.getRelatedController(relatedModuleName); + relatedController.loadRelatedList(); + }); + return false; + } }); - + jQuery('#EditView').find('.saveButton').on('click', function(e){ window.onbeforeunload = null; }); }); - }, - - referenceFieldNames : { + }, + + referenceFieldNames : { 'Accounts' : 'parent_id', 'Contacts' : 'contact_id', 'Leads' : 'parent_id', @@ -335,264 +335,264 @@ Vtiger.Class("Vtiger_Detail_Js",{ 'HelpDesk' : 'parent_id', 'Project' : 'projectid' }, - - init : function() { - this.addComponents(); - }, - - addComponents : function() { - var emailPreviewClassName = 'Vtiger_EmailPreview_Js'; + + init : function() { + this.addComponents(); + }, + + addComponents : function() { + var emailPreviewClassName = 'Vtiger_EmailPreview_Js'; this.addIndexComponent(); - this.addComponent(emailPreviewClassName); - this.addComponent('Vtiger_Tag_Js'); - }, - - - + this.addComponent(emailPreviewClassName); + this.addComponent('Vtiger_Tag_Js'); + }, + + + addIndexComponent : function() { this.addModuleSpecificComponent('Index','Vtiger',app.getParentModuleName()); }, - - /** + + /** * Function which will give the detail view form * @return : jQuery element */ - detailViewForm : false, + detailViewForm : false, getForm : function() { if(this.detailViewForm == false) { this.detailViewForm = jQuery('#detailView'); } return this.detailViewForm; }, - - detailViewContainer : false, - getDetailViewContainer : function(){ - if(this.detailViewContainer === false){ + + detailViewContainer : false, + getDetailViewContainer : function(){ + if(this.detailViewContainer === false){ this.detailViewContainer = jQuery('.detailViewContainer'); } return this.detailViewContainer; - }, - setDetailViewContainer : function(container){ - this.detailViewContainer = container; - }, - - detailViewContentHolder : false, - getContentHolder : function() { + }, + setDetailViewContainer : function(container){ + this.detailViewContainer = container; + }, + + detailViewContentHolder : false, + getContentHolder : function() { if(this.detailViewContentHolder == false) { this.detailViewContentHolder = jQuery('div.details'); } return this.detailViewContentHolder; }, - - /** - * Function to load related list - */ - loadRelatedListRecords : function(urlParams) { - var self = this; - var aDeferred = jQuery.Deferred(); - var defParams = self.getDefaultParams(); - urlParams = jQuery.extend(defParams, urlParams); - app.helper.showProgress(); - app.request.get({data:urlParams}).then(function(err, res){ - aDeferred.resolve(res); - var container = jQuery('.relatedContainer'); + + /** + * Function to load related list + */ + loadRelatedListRecords : function(urlParams) { + var self = this; + var aDeferred = jQuery.Deferred(); + var defParams = self.getDefaultParams(); + urlParams = jQuery.extend(defParams, urlParams); + app.helper.showProgress(); + app.request.get({data:urlParams}).then(function(err, res){ + aDeferred.resolve(res); + var container = jQuery('.relatedContainer'); container.html(res); - app.helper.hideProgress(); - app.event.trigger("post.relatedListLoad.click",container.find(".searchRow")); - }); - return aDeferred.promise(); - }, - sendSMS: function(detailActionUrl, module){ - var self = this; - app.helper.checkServerConfig(module).then(function(data) { - if (data == true) { - var cb = function(container) { - $('#phoneFormatWarningPop').popover(); - } - self.sendSMSAction(detailActionUrl, cb); - } else { - app.helper.showAlertBox({message:app.vtranslate('JS_SMS_SERVER_CONFIGURATION')}) - } - }); - }, - sendSMSAction: function(detailActionUrl, callBackFunction) { - var self = this; - var selectedIds = new Array(); - selectedIds.push(self.getRecordId()); - var postData = { - "selected_ids": JSON.stringify(selectedIds) - }; - app.request.post({url:detailActionUrl, data:postData, dataType:"html"}).then( - function(err, data) { - if (data) { - app.helper.showModal(data); - if (typeof callBackFunction == 'function') { - callBackFunction(data); - } - } - }); - }, - - /** - * Function to fetch default params - */ - getDefaultParams : function() { + app.helper.hideProgress(); + app.event.trigger("post.relatedListLoad.click",container.find(".searchRow")); + }); + return aDeferred.promise(); + }, + sendSMS: function(detailActionUrl, module){ + var self = this; + app.helper.checkServerConfig(module).then(function(data) { + if (data == true) { + var cb = function(container) { + $('#phoneFormatWarningPop').popover(); + } + self.sendSMSAction(detailActionUrl, cb); + } else { + app.helper.showAlertBox({message:app.vtranslate('JS_SMS_SERVER_CONFIGURATION')}) + } + }); + }, + sendSMSAction: function(detailActionUrl, callBackFunction) { + var self = this; + var selectedIds = new Array(); + selectedIds.push(self.getRecordId()); + var postData = { + "selected_ids": JSON.stringify(selectedIds) + }; + app.request.post({url:detailActionUrl, data:postData, dataType:"html"}).then( + function(err, data) { + if (data) { + app.helper.showModal(data); + if (typeof callBackFunction == 'function') { + callBackFunction(data); + } + } + }); + }, + + /** + * Function to fetch default params + */ + getDefaultParams : function() { var module = app.module(); - var activeModule = jQuery(".related-tabs li.active"); - var relatedModule = activeModule.attr("data-module") - var label = activeModule.attr("data-label-key"); - var relationId = activeModule.attr("data-relation-id"); - var orderBy = jQuery('#orderBy').val(); + var activeModule = jQuery(".related-tabs li.active"); + var relatedModule = activeModule.attr("data-module") + var label = activeModule.attr("data-label-key"); + var relationId = activeModule.attr("data-relation-id"); + var orderBy = jQuery('#orderBy').val(); var sortOrder = jQuery("#sortOrder").val(); - var pageNumber = jQuery('#pageNumber').val(); - - var recordId = jQuery('#recordId').val(); + var pageNumber = jQuery('#pageNumber').val(); + + var recordId = jQuery('#recordId').val(); var params = { 'module': module, - 'relatedModule': relatedModule, + 'relatedModule': relatedModule, 'view' : "Detail", - 'record' : recordId, - 'page' : pageNumber, + 'record' : recordId, + 'page' : pageNumber, 'mode' : 'showRelatedList', 'relationId' : relationId, - 'tab_label' : label, - 'orderby' : orderBy, + 'tab_label' : label, + 'orderby' : orderBy, 'sortorder' : sortOrder }; - params.search_params = JSON.stringify(this.getRelatedListSearchParams()); - params.nolistcache = (jQuery('#noFilterCache').val() == 1) ? 1 : 0; - return params; - }, - - /** - * Function to fetch search params - */ - getRelatedListSearchParams : function() { - var detailViewContainer = this.getDetailViewContainer(); - var relatedListTable = detailViewContainer.find('.searchRow'); - var searchParams = []; - var currentSearchParams = []; - if(jQuery('#currentSearchParams').val()) { - currentSearchParams = JSON.parse(jQuery('#currentSearchParams').val()); - } - relatedListTable.find('.listSearchContributor').each(function(index,domElement){ - var searchInfo = []; - var searchContributorElement = jQuery(domElement); - var fieldName = searchContributorElement.attr('name'); - var fieldInfo = related_uimeta.field.get(fieldName); - - if(fieldName in currentSearchParams) { - delete currentSearchParams[fieldName]; - } - - var searchValue = searchContributorElement.val(); - - if(typeof searchValue == "object") { - if(searchValue == null) { - searchValue = ""; - }else{ - searchValue = searchValue.join(','); - } - } - searchValue = searchValue.trim(); - if(searchValue.length <=0 ) { - //continue - return true; - } - var searchOperator = 'c'; - if(fieldInfo.type == "date" || fieldInfo.type == "datetime") { - searchOperator = 'bw'; - }else if (fieldInfo.type == 'percentage' || fieldInfo.type == "double" || fieldInfo.type == "integer" - || fieldInfo.type == 'currency' || fieldInfo.type == "number" || fieldInfo.type == "boolean" || - fieldInfo.type == "picklist") { - searchOperator = 'e'; - } - var storedOperator = searchContributorElement.parent().parent().find('.operatorValue').val(); - if(storedOperator) { - searchOperator = storedOperator; - storedOperator = false; - } - searchInfo.push(fieldName); - searchInfo.push(searchOperator); - searchInfo.push(searchValue); - searchInfo.push(fieldInfo.type); - searchParams.push(searchInfo); - }); - for(var i in currentSearchParams) { - var fieldName = currentSearchParams[i]['fieldName']; - var searchValue = currentSearchParams[i]['searchValue']; - var searchOperator = currentSearchParams[i]['comparator']; - if(fieldName== null || fieldName.length <=0 ){ - continue; - } - var searchInfo = []; - searchInfo.push(fieldName); - searchInfo.push(searchOperator); - searchInfo.push(searchValue); - searchParams.push(searchInfo); - } - var params = []; - params.push(searchParams); - return params; - }, - - getTabContainer : function(){ + params.search_params = JSON.stringify(this.getRelatedListSearchParams()); + params.nolistcache = (jQuery('#noFilterCache').val() == 1) ? 1 : 0; + return params; + }, + + /** + * Function to fetch search params + */ + getRelatedListSearchParams : function() { + var detailViewContainer = this.getDetailViewContainer(); + var relatedListTable = detailViewContainer.find('.searchRow'); + var searchParams = []; + var currentSearchParams = []; + if(jQuery('#currentSearchParams').val()) { + currentSearchParams = JSON.parse(jQuery('#currentSearchParams').val()); + } + relatedListTable.find('.listSearchContributor').each(function(index,domElement){ + var searchInfo = []; + var searchContributorElement = jQuery(domElement); + var fieldName = searchContributorElement.attr('name'); + var fieldInfo = related_uimeta.field.get(fieldName); + + if(fieldName in currentSearchParams) { + delete currentSearchParams[fieldName]; + } + + var searchValue = searchContributorElement.val(); + + if(typeof searchValue == "object") { + if(searchValue == null) { + searchValue = ""; + }else{ + searchValue = searchValue.join(','); + } + } + searchValue = searchValue.trim(); + if(searchValue.length <=0 ) { + //continue + return true; + } + var searchOperator = 'c'; + if(fieldInfo.type == "date" || fieldInfo.type == "datetime") { + searchOperator = 'bw'; + }else if (fieldInfo.type == 'percentage' || fieldInfo.type == "double" || fieldInfo.type == "integer" + || fieldInfo.type == 'currency' || fieldInfo.type == "number" || fieldInfo.type == "boolean" || + fieldInfo.type == "picklist") { + searchOperator = 'e'; + } + var storedOperator = searchContributorElement.parent().parent().find('.operatorValue').val(); + if(storedOperator) { + searchOperator = storedOperator; + storedOperator = false; + } + searchInfo.push(fieldName); + searchInfo.push(searchOperator); + searchInfo.push(searchValue); + searchInfo.push(fieldInfo.type); + searchParams.push(searchInfo); + }); + for(var i in currentSearchParams) { + var fieldName = currentSearchParams[i]['fieldName']; + var searchValue = currentSearchParams[i]['searchValue']; + var searchOperator = currentSearchParams[i]['comparator']; + if(fieldName== null || fieldName.length <=0 ){ + continue; + } + var searchInfo = []; + searchInfo.push(fieldName); + searchInfo.push(searchOperator); + searchInfo.push(searchValue); + searchParams.push(searchInfo); + } + var params = []; + params.push(searchParams); + return params; + }, + + getTabContainer : function(){ return jQuery('div.related-tabs'); }, - - getRecordId : function(){ + + getRecordId : function(){ return app.getRecordId(); }, - - getRelatedTabs : function() { + + getRelatedTabs : function() { return this.getTabContainer().find('li'); }, - - deSelectAllrelatedTabs : function() { + + deSelectAllrelatedTabs : function() { this.getRelatedTabs().removeClass('active'); }, - - markRelatedTabAsSelected : function(tabElement){ + + markRelatedTabAsSelected : function(tabElement){ tabElement.addClass('active'); }, - - /* - * Function to register the submit event for Send Sms - */ - registerSendSmsSubmitEvent: function() { - var thisInstance = this; - jQuery('body').on('submit', '#massSave', function(e) { - var form = jQuery(e.currentTarget); + + /* + * Function to register the submit event for Send Sms + */ + registerSendSmsSubmitEvent: function() { + var thisInstance = this; + jQuery('body').on('submit', '#massSave', function(e) { + var form = jQuery(e.currentTarget); form.vtValidate({onsubmit : false}); if(!form.valid()) { return false; } - var smsTextLength = form.find('#message').val().length; - if (smsTextLength > 160) { - app.helper.showErrorNotification({message:app.vtranslate('LBL_SMS_MAX_CHARACTERS_ALLOWED')}); - return false; - } - var submitButton = form.find(':submit'); - submitButton.attr('disabled', 'disabled'); - thisInstance.SendSmsSave(form); - e.preventDefault(); - }); - }, - /* - * Function to Save and sending the Sms and hide the modal window of send sms - */ - SendSmsSave: function(form) { - app.helper.showProgress(); - var formData = form.serializeFormData(); - app.request.post({data: formData}).then( - function(err, data) { - app.helper.hideProgress(); - app.helper.hideModal(); - if(err){ - app.helper.showErrorNotification({message:app.vtranslate('JS_PHONEFORMAT_ERROR')}); - return; - } + var smsTextLength = form.find('#message').val().length; + if (smsTextLength > 160) { + app.helper.showErrorNotification({message:app.vtranslate('LBL_SMS_MAX_CHARACTERS_ALLOWED')}); + return false; + } + var submitButton = form.find(':submit'); + submitButton.attr('disabled', 'disabled'); + thisInstance.SendSmsSave(form); + e.preventDefault(); + }); + }, + /* + * Function to Save and sending the Sms and hide the modal window of send sms + */ + SendSmsSave: function(form) { + app.helper.showProgress(); + var formData = form.serializeFormData(); + app.request.post({data: formData}).then( + function(err, data) { + app.helper.hideProgress(); + app.helper.hideModal(); + if(err){ + app.helper.showErrorNotification({message:app.vtranslate('JS_PHONEFORMAT_ERROR')}); + return; + } var statusDetails = data.statusdetails; var status = statusDetails.status; if(status == 'Failed') { @@ -602,144 +602,144 @@ Vtiger.Class("Vtiger_Detail_Js",{ var msg = statusDetails.statusmessage; app.helper.showSuccessNotification({'title' : status, 'message' : msg}); } - } - ); - }, - /** - * To load Related List Contents - * @returns {undefined} - */ - registerEventForRelatedTabClick : function(){ - var self = this; - var detailViewContainer = this.getDetailViewContainer(); - jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item a', function(e, urlAttributes) { - e.preventDefault(); - }); - jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab a', function(e, urlAttributes) { - e.preventDefault(); - }); - jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab', function(e,urlAttributes){ - if(jQuery('.moreTabElement').length != 0){ - jQuery('.moreTabElement').remove(); - } - var moreTabElement = jQuery(e.currentTarget).clone(); - moreTabElement.find('.content').text(''); - moreTabElement.addClass('moreTabElement'); - moreTabElement.addClass('active'); - var moreElementTitle = moreTabElement.find('a').attr('displaylabel') - moreTabElement.attr('title',moreElementTitle); - moreTabElement.find('.tab-icon').removeClass('textOverflowEllipsis'); - jQuery('.related-tab-more-element').before(moreTabElement); - self.loadSelectedTabContents(moreTabElement, urlAttributes); - self.registerQtipevent(moreTabElement); - }); - jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item', function(e,urlAttributes){ - var tabElement = jQuery(e.currentTarget); - self.loadSelectedTabContents(tabElement, urlAttributes); - }); - }, - - loadSelectedTabContents: function(tabElement, urlAttributes){ - var self = this; - var detailViewContainer = this.getDetailViewContainer(); - var url = tabElement.data('url'); - self.loadContents(url,urlAttributes).then(function(data){ - self.deSelectAllrelatedTabs(); - self.markRelatedTabAsSelected(tabElement); - var container = jQuery('.relatedContainer'); - app.event.trigger("post.relatedListLoad.click",container.find(".searchRow")); - // Added this to register pagination events in related list - var relatedModuleInstance = self.getRelatedController(); - //Summary tab is clicked - if(tabElement.data('linkKey') == self.detailViewSummaryTabLabel) { - self.registerSummaryViewContainerEvents(detailViewContainer); + } + ); + }, + /** + * To load Related List Contents + * @returns {undefined} + */ + registerEventForRelatedTabClick : function(){ + var self = this; + var detailViewContainer = this.getDetailViewContainer(); + jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item a', function(e, urlAttributes) { + e.preventDefault(); + }); + jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab a', function(e, urlAttributes) { + e.preventDefault(); + }); + jQuery('.related-tabs', detailViewContainer).on('click', 'li.more-tab', function(e,urlAttributes){ + if(jQuery('.moreTabElement').length != 0){ + jQuery('.moreTabElement').remove(); + } + var moreTabElement = jQuery(e.currentTarget).clone(); + moreTabElement.find('.content').text(''); + moreTabElement.addClass('moreTabElement'); + moreTabElement.addClass('active'); + var moreElementTitle = moreTabElement.find('a').attr('displaylabel') + moreTabElement.attr('title',moreElementTitle); + moreTabElement.find('.tab-icon').removeClass('textOverflowEllipsis'); + jQuery('.related-tab-more-element').before(moreTabElement); + self.loadSelectedTabContents(moreTabElement, urlAttributes); + self.registerQtipevent(moreTabElement); + }); + jQuery('.related-tabs', detailViewContainer).on('click', 'li.tab-item', function(e,urlAttributes){ + var tabElement = jQuery(e.currentTarget); + self.loadSelectedTabContents(tabElement, urlAttributes); + }); + }, + + loadSelectedTabContents: function(tabElement, urlAttributes){ + var self = this; + var detailViewContainer = this.getDetailViewContainer(); + var url = tabElement.data('url'); + self.loadContents(url,urlAttributes).then(function(data){ + self.deSelectAllrelatedTabs(); + self.markRelatedTabAsSelected(tabElement); + var container = jQuery('.relatedContainer'); + app.event.trigger("post.relatedListLoad.click",container.find(".searchRow")); + // Added this to register pagination events in related list + var relatedModuleInstance = self.getRelatedController(); + //Summary tab is clicked + if(tabElement.data('linkKey') == self.detailViewSummaryTabLabel) { + self.registerSummaryViewContainerEvents(detailViewContainer); self.registerEventForPicklistDependencySetup(self.getForm()); - } + } //Detail tab is clicked - if(tabElement.data('linkKey') == self.detailViewDetailTabLabel) { - self.triggerDetailViewContainerEvents(detailViewContainer); + if(tabElement.data('linkKey') == self.detailViewDetailTabLabel) { + self.triggerDetailViewContainerEvents(detailViewContainer); self.registerEventForPicklistDependencySetup(self.getForm()); - } - - // Registering engagement events if clicked tab is History - if(tabElement.data('labelKey') == self.detailViewHistoryTabLabel){ - var engagementsContainer = jQuery(".engagementsContainer"); - if(engagementsContainer.length > 0){ - app.event.trigger("post.engagements.load"); - } - } - + } + + // Registering engagement events if clicked tab is History + if(tabElement.data('labelKey') == self.detailViewHistoryTabLabel){ + var engagementsContainer = jQuery(".engagementsContainer"); + if(engagementsContainer.length > 0){ + app.event.trigger("post.engagements.load"); + } + } + relatedModuleInstance.initializePaginationEvents(); - //prevent detail view ajax form submissions - jQuery('form#detailView').on('submit', function(e) { - e.preventDefault(); - }); - }); - }, + //prevent detail view ajax form submissions + jQuery('form#detailView').on('submit', function(e) { + e.preventDefault(); + }); + }); + }, triggerDetailViewContainerEvents: function(detailViewContainer) { }, - registerRollupCommentsSwitchEvent : function() { - var self = this; - var commentsRelatedContainer = jQuery('.commentsRelatedContainer'); - if(jQuery('#rollupcomments').length > 0 && commentsRelatedContainer.length) { - app.helper.hideProgress(); - commentsRelatedContainer.off('switchChange.bootstrapSwitch') - .on('switchChange.bootstrapSwitch','#rollupcomments', function(e){ - app.helper.showProgress(); - self.toggleRollupComments(e); - }); - if(jQuery('#rollupcomments').attr('rollup-status') == 1) { - jQuery('#rollupcomments').bootstrapSwitch('state', true, true); - - }else{ - jQuery('#rollupcomments').bootstrapSwitch('state', false, true); - } - } - }, - - /** + registerRollupCommentsSwitchEvent : function() { + var self = this; + var commentsRelatedContainer = jQuery('.commentsRelatedContainer'); + if(jQuery('#rollupcomments').length > 0 && commentsRelatedContainer.length) { + app.helper.hideProgress(); + commentsRelatedContainer.off('switchChange.bootstrapSwitch') + .on('switchChange.bootstrapSwitch','#rollupcomments', function(e){ + app.helper.showProgress(); + self.toggleRollupComments(e); + }); + if(jQuery('#rollupcomments').attr('rollup-status') == 1) { + jQuery('#rollupcomments').bootstrapSwitch('state', true, true); + + }else{ + jQuery('#rollupcomments').bootstrapSwitch('state', false, true); + } + } + }, + + /** * To handle related record delete confirmation message */ getDeleteMessageKey : function() { return 'LBL_DELETE_CONFIRMATION'; }, - /** - * Funtion to register Related List Events - * @returns {undefined} - */ - registerEventsForRelatedList : function(){ - var self = this; - var detailContentsHolder = this.getContentHolder(); - this.registerRelatedRecordEdit(); - - this.registerEventForRelatedTabClick(); - this.registerRelatedListSearch(); - this.registerRelatedListSort(); - this.registerRemoveRelatedListSort(); - this.registerEventForEmailsRelatedRecord(); - this.registerRelatedListPageNavigationEvents(); - this.registerEventForAddingRelatedRecord(); - this.registerEventForSelectingRelatedRecord(); - self.registerScrollForRollupEvents(); - - app.event.on("post.relatedListLoad.click",function(event, container){ - vtUtils.applyFieldElementsView(container); - vtUtils.enableTooltips(); - var vtigerInstance = Vtiger_Index_Js.getInstance(); - vtigerInstance.registerMultiUpload(); - //For Rollup Comments + /** + * Funtion to register Related List Events + * @returns {undefined} + */ + registerEventsForRelatedList : function(){ + var self = this; + var detailContentsHolder = this.getContentHolder(); + this.registerRelatedRecordEdit(); + + this.registerEventForRelatedTabClick(); + this.registerRelatedListSearch(); + this.registerRelatedListSort(); + this.registerRemoveRelatedListSort(); + this.registerEventForEmailsRelatedRecord(); + this.registerRelatedListPageNavigationEvents(); + this.registerEventForAddingRelatedRecord(); + this.registerEventForSelectingRelatedRecord(); + self.registerScrollForRollupEvents(); + + app.event.on("post.relatedListLoad.click",function(event, container){ + vtUtils.applyFieldElementsView(container); + vtUtils.enableTooltips(); + var vtigerInstance = Vtiger_Index_Js.getInstance(); + vtigerInstance.registerMultiUpload(); + //For Rollup Comments self.registerRollupCommentsSwitchEvent(); //END - }); - + }); + var vtigerInstance = Vtiger_Index_Js.getInstance(); vtigerInstance.registerMultiUpload(); - detailContentsHolder.on('click', 'a.relationDelete', function(e){ + detailContentsHolder.on('click', 'a.relationDelete', function(e){ e.stopImmediatePropagation(); var element = jQuery(e.currentTarget); var key = self.getDeleteMessageKey(); @@ -779,18 +779,18 @@ Vtiger.Class("Vtiger_Detail_Js",{ } } }); - }, - - registerEventForEmailsRelatedRecord : function(){ + }, + + registerEventForEmailsRelatedRecord : function(){ var detailContentsHolder = this.getContentHolder(); var parentId = this.getRecordId(); - - var params = {}; - params['module'] = "Emails"; - params['view'] = "ComposeEmail"; - params['parentId'] = parentId; - params['relatedLoad'] = true; - + + var params = {}; + params['module'] = "Emails"; + params['view'] = "ComposeEmail"; + params['parentId'] = parentId; + params['relatedLoad'] = true; + detailContentsHolder.on('click','[name="emailsRelatedRecord"], [name="emailsDetailView"]',function(e){ e.stopPropagation(); var element = jQuery(e.currentTarget); @@ -799,25 +799,25 @@ Vtiger.Class("Vtiger_Detail_Js",{ var mode = 'emailEdit'; } else { mode = 'emailPreview'; - params['parentModule'] = app.getModuleName(); + params['parentModule'] = app.getModuleName(); } params['mode'] = mode; params['record'] = recordId; - app.helper.showProgress(); - app.request.post({data:params}).then(function(err,data){ - app.helper.hideProgress(); - if(err === null){ + app.helper.showProgress(); + app.request.post({data:params}).then(function(err,data){ + app.helper.hideProgress(); + if(err === null){ var dataObj = jQuery(data); var descriptionContent = dataObj.find('#iframeDescription').val(); - app.helper.showModal(data,{cb:function(){ + app.helper.showModal(data,{cb:function(){ if(mode === 'emailEdit'){ var editInstance = new Emails_MassEdit_Js(); editInstance.registerEvents(); }else { - app.event.trigger('post.EmailPreview.load',null); + app.event.trigger('post.EmailPreview.load',null); } jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent); - jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height()); + jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height()); jQuery('#emailPreviewIframe').contents().find('html').find('a').on('click', function(e) { e.preventDefault(); var url = jQuery(e.currentTarget).attr('href'); @@ -825,11 +825,11 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); //jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height()); }}); - } - }); + } + }); }) - - detailContentsHolder.on('click','[name="emailsEditView"]',function(e){ + + detailContentsHolder.on('click','[name="emailsEditView"]',function(e){ e.stopPropagation(); var module = "Emails"; app.helper.checkServerConfig(module).then(function(data){ @@ -839,154 +839,154 @@ Vtiger.Class("Vtiger_Detail_Js",{ var recordId = closestROw.data('id'); var parentRecord = new Array(); parentRecord.push(parentId); - + params['mode'] = "emailEdit"; params['record'] = recordId; params['selected_ids'] = parentRecord; - app.helper.showProgress(); - app.request.post({'data':params}).then(function(err,data){ - app.helper.hideProgress(); - if(err === null){ - app.helper.showModal(data); - var editInstance = new Emails_MassEdit_Js(); - editInstance.registerEvents(); - } - }); + app.helper.showProgress(); + app.request.post({'data':params}).then(function(err,data){ + app.helper.hideProgress(); + if(err === null){ + app.helper.showModal(data); + var editInstance = new Emails_MassEdit_Js(); + editInstance.registerEvents(); + } + }); } else { app.helper.showErrorMessage(app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION')); } }) }) - }, - - /** - * To Delete Record from detail View - * @param {type} deleteRecordActionUrl - * @returns {undefined} - */ - remove : function(deleteRecordActionUrl){ - var message = app.vtranslate('LBL_DELETE_CONFIRMATION'); + }, + + /** + * To Delete Record from detail View + * @param {type} deleteRecordActionUrl + * @returns {undefined} + */ + remove : function(deleteRecordActionUrl){ + var message = app.vtranslate('LBL_DELETE_CONFIRMATION'); app.helper.showConfirmationBox({'message' : message}).then(function(data) { - var params = app.convertUrlToDataParams(deleteRecordActionUrl+"&ajaxDelete=true"); - app.request.post({data:params}).then( + var params = app.convertUrlToDataParams(deleteRecordActionUrl+"&ajaxDelete=true"); + app.request.post({data:params}).then( function(err,data){ - if(err === null){ - if(typeof data !== 'object'){ - var appName = app.getAppName(); - window.location.href = data+'&app='+appName; - }else { - app.helper.showAlertBox({'message' : data.prototype.message}); - } - } else { - app.helper.showAlertBox({'message' : err}); - } + if(err === null){ + if(typeof data !== 'object'){ + var appName = app.getAppName(); + window.location.href = data+'&app='+appName; + }else { + app.helper.showAlertBox({'message' : data.prototype.message}); + } + } else { + app.helper.showAlertBox({'message' : err}); + } }); } ); - }, - - /** - * Function to register the related list search event - */ - registerRelatedListSearch : function() { - var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); - detailViewContainer.on('click','[data-trigger="relatedListSearch"]',function(e){ - var params = {'page' : '1'}; - thisInstance.getRelatedController().loadRelatedList(params); - }); - detailViewContainer.on('keypress','input.listSearchContributor',function(e){ - if(e.keyCode == 13){ - var element = jQuery(e.currentTarget); - var parentElement = element.closest('tr'); - var searchTriggerElement = parentElement.find('[data-trigger="relatedListSearch"]'); - searchTriggerElement.trigger('click'); - } - }); - }, - - /** - * Function to register the related list sort event - */ - registerRelatedListSort : function() { - var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); - detailViewContainer.on('click','.listViewContentHeaderValues,.relatedListHeaderValues',function(e){ - var fieldName = jQuery(e.currentTarget).attr('data-fieldname'); - var sortOrderVal = jQuery(e.currentTarget).attr('data-nextsortorderval'); - if(sortOrderVal === 'ASC'){ - jQuery('i',e.currentTarget).addClass('fa-sort-asc'); - }else{ - jQuery('i',e.currentTarget).addClass('fa-sort-desc'); - } - jQuery('#sortOrder').val(sortOrderVal); - jQuery('#orderBy').val(fieldName); - var params = []; - thisInstance.getRelatedController().loadRelatedList(params); - }); - }, - - /** - * Function to register remove related list sorting - */ - registerRemoveRelatedListSort : function() { - var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); - detailViewContainer.on('click','.removeSorting',function(e){ - jQuery('#sortOrder').val(null); - jQuery('#orderBy').val(null); - var params = []; - thisInstance.getRelatedController().loadRelatedList(params); - }); - }, - - /** - * Function to register Related List View Pagination - * @returns {undefined} - */ - registerRelatedListPageNavigationEvents : function(){ - var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); - var urlParams = {}; - detailViewContainer.on('click','#listViewNextPageButton',function(e){ - var pageLimit = jQuery('#pageLimit').val(); - var noOfEntries = jQuery('#noOfEntries').val(); - var nextPageExist = jQuery('#nextPageExist').val(); - - if(noOfEntries == pageLimit && nextPageExist){ - var pageNumber = jQuery('#pageNumber').val(); - var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1; - jQuery('#pageNumber').val(nextPageNumber); - var params = []; - thisInstance.loadRelatedListRecords(params); - } - }); - - detailViewContainer.on('click','#listViewPreviousPageButton',function(e){ - var pageNumber = jQuery('#pageNumber').val(); - if(pageNumber > 1){ - var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1; - jQuery('#pageNumber').val(previousPageNumber); - var params = []; - thisInstance.loadRelatedListRecords(params); - } - }); - }, - - /** + }, + + /** + * Function to register the related list search event + */ + registerRelatedListSearch : function() { + var thisInstance = this; + var detailViewContainer = thisInstance.getDetailViewContainer(); + detailViewContainer.on('click','[data-trigger="relatedListSearch"]',function(e){ + var params = {'page' : '1'}; + thisInstance.getRelatedController().loadRelatedList(params); + }); + detailViewContainer.on('keypress','input.listSearchContributor',function(e){ + if(e.keyCode == 13){ + var element = jQuery(e.currentTarget); + var parentElement = element.closest('tr'); + var searchTriggerElement = parentElement.find('[data-trigger="relatedListSearch"]'); + searchTriggerElement.trigger('click'); + } + }); + }, + + /** + * Function to register the related list sort event + */ + registerRelatedListSort : function() { + var thisInstance = this; + var detailViewContainer = thisInstance.getDetailViewContainer(); + detailViewContainer.on('click','.listViewContentHeaderValues,.relatedListHeaderValues',function(e){ + var fieldName = jQuery(e.currentTarget).attr('data-fieldname'); + var sortOrderVal = jQuery(e.currentTarget).attr('data-nextsortorderval'); + if(sortOrderVal === 'ASC'){ + jQuery('i',e.currentTarget).addClass('fa-sort-asc'); + }else{ + jQuery('i',e.currentTarget).addClass('fa-sort-desc'); + } + jQuery('#sortOrder').val(sortOrderVal); + jQuery('#orderBy').val(fieldName); + var params = []; + thisInstance.getRelatedController().loadRelatedList(params); + }); + }, + + /** + * Function to register remove related list sorting + */ + registerRemoveRelatedListSort : function() { + var thisInstance = this; + var detailViewContainer = thisInstance.getDetailViewContainer(); + detailViewContainer.on('click','.removeSorting',function(e){ + jQuery('#sortOrder').val(null); + jQuery('#orderBy').val(null); + var params = []; + thisInstance.getRelatedController().loadRelatedList(params); + }); + }, + + /** + * Function to register Related List View Pagination + * @returns {undefined} + */ + registerRelatedListPageNavigationEvents : function(){ + var thisInstance = this; + var detailViewContainer = thisInstance.getDetailViewContainer(); + var urlParams = {}; + detailViewContainer.on('click','#listViewNextPageButton',function(e){ + var pageLimit = jQuery('#pageLimit').val(); + var noOfEntries = jQuery('#noOfEntries').val(); + var nextPageExist = jQuery('#nextPageExist').val(); + + if(noOfEntries == pageLimit && nextPageExist){ + var pageNumber = jQuery('#pageNumber').val(); + var nextPageNumber = parseInt(parseFloat(pageNumber)) + 1; + jQuery('#pageNumber').val(nextPageNumber); + var params = []; + thisInstance.loadRelatedListRecords(params); + } + }); + + detailViewContainer.on('click','#listViewPreviousPageButton',function(e){ + var pageNumber = jQuery('#pageNumber').val(); + if(pageNumber > 1){ + var previousPageNumber = parseInt(parseFloat(pageNumber)) - 1; + jQuery('#pageNumber').val(previousPageNumber); + var params = []; + thisInstance.loadRelatedListRecords(params); + } + }); + }, + + /** * Function to register event for adding related record for module */ registerEventForAddingRelatedRecord : function(){ var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); + var detailViewContainer = thisInstance.getDetailViewContainer(); detailViewContainer.on('click','[name="addButton"]',function(e){ var element = jQuery(e.currentTarget); - var relatedModuleName = element.attr('module'); - var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ relatedModuleName +'"]'); - if(quickCreateNode.length <= 0) { - window.location.href = element.data('url'); - return; - } + var relatedModuleName = element.attr('module'); + var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ relatedModuleName +'"]'); + if(quickCreateNode.length <= 0) { + window.location.href = element.data('url'); + return; + } var relatedController = thisInstance.getRelatedController(relatedModuleName); if(relatedController){ @@ -994,26 +994,26 @@ Vtiger.Class("Vtiger_Detail_Js",{ } }) }, - - /** + + /** * Function to register event for selecting related record for module */ registerEventForSelectingRelatedRecord : function() { var thisInstance = this; - var detailViewContainer = thisInstance.getDetailViewContainer(); - detailViewContainer.on('click', 'button.selectRelation', function(e){ - var relatedController = thisInstance.getRelatedController(); + var detailViewContainer = thisInstance.getDetailViewContainer(); + detailViewContainer.on('click', 'button.selectRelation', function(e){ + var relatedController = thisInstance.getRelatedController(); if(relatedController){ relatedController.showSelectRelationPopup(); } }); }, - - getRelatedModuleName : function() { + + getRelatedModuleName : function() { return jQuery('.relatedModuleName').val(); }, - - getRelatedController : function(relatedModuleName) { + + getRelatedController : function(relatedModuleName) { var thisInstance = this; var recordId = thisInstance.getRecordId(); var moduleName = app.getModuleName(); @@ -1028,37 +1028,37 @@ Vtiger.Class("Vtiger_Detail_Js",{ } return null; }, - - getSelectedTab : function() { + + getSelectedTab : function() { var tabContainer = this.getTabContainer(); return tabContainer.find('li.active'); }, - - /** - * To Register Ajax Edit Event - * @returns {undefined} - */ - registerAjaxEditEvent : function(){ - var thisInstance = this; - var detailContentsHolder = this.getContentHolder(); - detailContentsHolder.on('click','table.detailview-table td.fieldValue .editAction', function(e) { - var editedLength = jQuery('table.detailview-table td.fieldValue .ajaxEdited').length; - if(editedLength === 0) { - var selection = window.getSelection().toString(); - if(selection.length == 0) { - var currentTdElement = jQuery(e.currentTarget).closest('td'); - thisInstance.ajaxEditHandling(currentTdElement); - } - } - }); - }, - - /** - * To Save Ajax Edited field - * @param {type} fieldDetailList - * @returns {unresolved} - */ - saveFieldValues : function (fieldDetailList) { + + /** + * To Register Ajax Edit Event + * @returns {undefined} + */ + registerAjaxEditEvent : function(){ + var thisInstance = this; + var detailContentsHolder = this.getContentHolder(); + detailContentsHolder.on('click','table.detailview-table td.fieldValue .editAction', function(e) { + var editedLength = jQuery('table.detailview-table td.fieldValue .ajaxEdited').length; + if(editedLength === 0) { + var selection = window.getSelection().toString(); + if(selection.length == 0) { + var currentTdElement = jQuery(e.currentTarget).closest('td'); + thisInstance.ajaxEditHandling(currentTdElement); + } + } + }); + }, + + /** + * To Save Ajax Edited field + * @param {type} fieldDetailList + * @returns {unresolved} + */ + saveFieldValues : function (fieldDetailList) { var aDeferred = jQuery.Deferred(); var recordId = this.getRecordId(); @@ -1074,319 +1074,319 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({data:data}).then( function(err, reponseData){ - if(err === null){ - app.helper.showSuccessNotification({"message":""}); - aDeferred.resolve(reponseData); - } else { - app.helper.showErrorNotification({"message":err}); - } + if(err === null){ + app.helper.showSuccessNotification({"message":""}); + aDeferred.resolve(reponseData); + } else { + app.helper.showErrorNotification({"message":err}); + } } ); return aDeferred.promise(); }, - - registerSaveOnEnterEvent: function(editElement) { - editElement.find('.inputElement:not(textarea)').on('keyup', function(e) { - var textArea = editElement.find('textarea'); - var ignoreList = ['reference','picklist','multipicklist','owner']; - var fieldType = jQuery(e.target).closest('.ajaxEdited').find('.fieldBasicData').data('type'); - if(ignoreList.indexOf(fieldType) !== -1) return; - if(!textArea.length){ - (e.keyCode || e.which) === 13 && editElement.find('.inlineAjaxSave').trigger('click'); - } - }); - }, - - /** - * Handling Ajax Edit - * @param {type} currentTdElement - * @returns {undefined} - */ - ajaxEditHandling : function(currentTdElement){ - var thisInstance = this; - var detailViewValue = jQuery('.value',currentTdElement); - var editElement = jQuery('.edit',currentTdElement); - var fieldBasicData = jQuery('.fieldBasicData', editElement); - var fieldName = fieldBasicData.data('name'); - var fieldType = fieldBasicData.data('type'); - var value = fieldBasicData.data('displayvalue'); - var rawValue = fieldBasicData.data('value'); - var self = this; - var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement); - - // If Reference field has value, then we are disabling the field by default - if(fieldElement.attr('disabled') == 'disabled' && fieldType != 'reference'){ - return; - } - - if(editElement.length <= 0) { - return; - } - - if(editElement.is(':visible')){ - return; - } - - if(fieldType === 'multipicklist') { - var multiPicklistFieldName = fieldName.split('[]'); - fieldName = multiPicklistFieldName[0]; - } - - var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','currencyList','text']; - if(jQuery.inArray(fieldType, customHandlingFields) !== -1){ - value = rawValue; - } - if(jQuery('.editElement',editElement).length === 0){ - var fieldInfo; - if(self.getOverlayDetailMode() == true){ - fieldInfo = related_uimeta.field.get(fieldName); - } - else{ - fieldInfo = uimeta.field.get(fieldName); - } - fieldInfo['value'] = value; - var fieldObject = Vtiger_Field_Js.getInstance(fieldInfo); - var fieldModel = fieldObject.getUiTypeModel(); - - var ele = jQuery('<div class="input-group editElement"></div>'); - var actionButtons = '<span class="pointerCursorOnHover input-group-addon input-group-addon-save inlineAjaxSave"><i class="fa fa-check"></i></span>'; - actionButtons += '<span class="pointerCursorOnHover input-group-addon input-group-addon-cancel inlineAjaxCancel"><i class="fa fa-close"></i></span>'; - //wrapping action buttons with class called input-save-wrap - var inlineSaveWrap=jQuery('<div class="input-save-wrap"></div>'); - inlineSaveWrap.append(actionButtons); - // we should have atleast one submit button for the form to submit which is required for validation - ele.append(fieldModel.getUi()).append(inlineSaveWrap); - ele.find('.inputElement').addClass('form-control'); - editElement.append(ele); - } - - // for reference fields, actual value will be ID but we need to show related name of that ID - if(fieldType === 'reference'){ - if(value !== 0){ - jQuery('input[name="'+fieldName+'"]',editElement).prop('value',jQuery.trim(detailViewValue.text())); - var referenceElement = jQuery('input[name="'+fieldName+'"]',editElement); - if(!referenceElement.attr('disabled')) { - referenceElement.attr('disabled','disabled'); - editElement.find('.clearReferenceSelection').removeClass('hide') - } - } - } - - detailViewValue.css('display', 'none'); - editElement.removeClass('hide').show().children().filter('input[type!="hidden"]input[type!="image"],select').filter(':first').focus(); - vtUtils.applyFieldElementsView(currentTdElement); - var contentHolder = this.getDetailViewContainer(); - var vtigerInstance = Vtiger_Index_Js.getInstance(); - vtigerInstance.registerAutoCompleteFields(contentHolder); - vtigerInstance.referenceModulePopupRegisterEvent(contentHolder); - editElement.addClass('ajaxEdited'); - thisInstance.registerSaveOnEnterEvent(editElement); - jQuery('.editAction').addClass('hide'); - - if(fieldType == 'picklist' || fieldType == 'ownergroup' || fieldType == 'owner') { - var sourcePicklistFieldName = thisInstance.getDependentSourcePicklistName(fieldName); - if(sourcePicklistFieldName) { - thisInstance.handlePickListDependencyMap(sourcePicklistFieldName); - } - } - }, - - getDependentSourcePicklistName : function(fieldName) { - var container = this.getForm(); - var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container); - if(picklistDependcyElemnt.length <= 0) { - return ''; - } - - var picklistDependencyMapping = JSON.parse(picklistDependcyElemnt.val()); - var sourcePicklists = Object.keys(picklistDependencyMapping); - if(sourcePicklists.length <= 0){ - return ''; - } - var sourcePicklistFieldName = ''; - jQuery.each(picklistDependencyMapping, function(sourcePicklistName, configuredDependencyObject) { - var picklistmap = configuredDependencyObject["__DEFAULT__"]; - jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){ - if(targetPickListName == fieldName){ - sourcePicklistFieldName = sourcePicklistName; - } - }); - }); - - return sourcePicklistFieldName; - }, - - getInlineWrapper : function(element) { - var wrapperElement = element.closest('td'); - if(!wrapperElement.length) { - wrapperElement = element.closest('.td'); - } - return wrapperElement; - }, - - /** - * Ajax Edit Save Event - * @param {type} currentTdElement - * @returns {undefined} - */ - registerAjaxEditSaveEvent : function(contentHolder){ - var thisInstance = this; - if(typeof contentHolder === 'undefined') { - contentHolder = this.getContentHolder(); - } - - contentHolder.on('click','.inlineAjaxSave',function(e){ - e.preventDefault(); - e.stopPropagation(); - var currentTarget = jQuery(e.currentTarget); - var currentTdElement = thisInstance.getInlineWrapper(currentTarget); - var detailViewValue = jQuery('.value',currentTdElement); - var editElement = jQuery('.edit',currentTdElement); - var actionElement = jQuery('.editAction', currentTdElement); - var fieldBasicData = jQuery('.fieldBasicData', editElement); - var fieldName = fieldBasicData.data('name'); - var fieldType = fieldBasicData.data("type"); - var previousValue = jQuery.trim(fieldBasicData.data('displayvalue')); - - var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement); - var ajaxEditNewValue = fieldElement.val(); - - // ajaxEditNewValue should be taken based on field Type - if(fieldElement.is('input:checkbox')) { - if(fieldElement.is(':checked')) { - ajaxEditNewValue = '1'; - } else { - ajaxEditNewValue = '0'; - } - fieldElement = fieldElement.filter('[type="checkbox"]'); - } else if(fieldType == 'reference'){ - ajaxEditNewValue = fieldElement.attr('value'); - } - - // prev Value should be taken based on field Type - var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','boolean']; - if(jQuery.inArray(fieldType, customHandlingFields) !== -1){ - previousValue = fieldBasicData.data('value'); - } - - // Field Specific custom Handling - if(fieldType === 'multipicklist'){ - var multiPicklistFieldName = fieldName.split('[]'); - fieldName = multiPicklistFieldName[0]; - } - - var fieldValue = ajaxEditNewValue; - - //Before saving ajax edit values we need to check if the value is changed then only we have to save - if(previousValue == ajaxEditNewValue) { - detailViewValue.css('display', 'inline-block'); - editElement.addClass('hide'); - editElement.removeClass('ajaxEdited'); - jQuery('.editAction').removeClass('hide'); - actionElement.show(); - }else{ - var fieldNameValueMap = {}; - fieldNameValueMap['value'] = fieldValue; - fieldNameValueMap['field'] = fieldName; - var form = currentTarget.closest('form'); - var params = { - 'ignore' : 'span.hide .inputElement,input[type="hidden"]', - submitHandler : function(form){ - var preAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PreAjaxSaveEvent); - app.event.trigger(preAjaxSaveEvent,{form:jQuery(form),tiggeredFiledInfo:fieldNameValueMap}); - if(preAjaxSaveEvent.isDefaultPrevented()) { - return false; - } - - jQuery(currentTdElement).find('.input-group-addon').addClass('disabled'); - app.helper.showProgress(); - thisInstance.saveFieldValues(fieldNameValueMap).then(function(response) { - app.helper.hideProgress(); - var postSaveRecordDetails = response; - if(fieldBasicData.data('type') == 'picklist' && app.getModuleName() != 'Users') { - var color = postSaveRecordDetails[fieldName].colormap[postSaveRecordDetails[fieldName].value]; - if(color) { - var contrast = app.helper.getColorContrast(color); - var textColor = (contrast === 'dark') ? 'white' : 'black'; - var picklistHtml = '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' + - postSaveRecordDetails[fieldName].display_value + - '</span>'; - } else { - var picklistHtml = '<span class="picklist-color">' + - postSaveRecordDetails[fieldName].display_value + - '</span>'; - } - detailViewValue.html(picklistHtml); - } else if(fieldBasicData.data('type') == 'multipicklist' && app.getModuleName() != 'Users') { - var picklistHtml = ''; - var rawPicklistValues = postSaveRecordDetails[fieldName].value; - rawPicklistValues = rawPicklistValues.split('|##|'); - var picklistValues = postSaveRecordDetails[fieldName].display_value; - picklistValues = picklistValues.split(','); - for(var i=0; i< rawPicklistValues.length; i++) { - var color = postSaveRecordDetails[fieldName].colormap[rawPicklistValues[i].trim()]; - if(color) { - var contrast = app.helper.getColorContrast(color); - var textColor = (contrast === 'dark') ? 'white' : 'black'; - picklistHtml = picklistHtml + - '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' + - picklistValues[i] + - '</span>'; - } else { - picklistHtml = picklistHtml + - '<span class="picklist-color">' + - picklistValues[i] + - '</span>'; - } - if(picklistValues[i+1]!==undefined) - picklistHtml+=' , '; - } - detailViewValue.html(picklistHtml); - } else if(fieldBasicData.data('type') == 'currency' && app.getModuleName() != 'Users') { + + registerSaveOnEnterEvent: function(editElement) { + editElement.find('.inputElement:not(textarea)').on('keyup', function(e) { + var textArea = editElement.find('textarea'); + var ignoreList = ['reference','picklist','multipicklist','owner']; + var fieldType = jQuery(e.target).closest('.ajaxEdited').find('.fieldBasicData').data('type'); + if(ignoreList.indexOf(fieldType) !== -1) return; + if(!textArea.length){ + (e.keyCode || e.which) === 13 && editElement.find('.inlineAjaxSave').trigger('click'); + } + }); + }, + + /** + * Handling Ajax Edit + * @param {type} currentTdElement + * @returns {undefined} + */ + ajaxEditHandling : function(currentTdElement){ + var thisInstance = this; + var detailViewValue = jQuery('.value',currentTdElement); + var editElement = jQuery('.edit',currentTdElement); + var fieldBasicData = jQuery('.fieldBasicData', editElement); + var fieldName = fieldBasicData.data('name'); + var fieldType = fieldBasicData.data('type'); + var value = fieldBasicData.data('displayvalue'); + var rawValue = fieldBasicData.data('value'); + var self = this; + var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement); + + // If Reference field has value, then we are disabling the field by default + if(fieldElement.attr('disabled') == 'disabled' && fieldType != 'reference'){ + return; + } + + if(editElement.length <= 0) { + return; + } + + if(editElement.is(':visible')){ + return; + } + + if(fieldType === 'multipicklist') { + var multiPicklistFieldName = fieldName.split('[]'); + fieldName = multiPicklistFieldName[0]; + } + + var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','currencyList','text']; + if(jQuery.inArray(fieldType, customHandlingFields) !== -1){ + value = rawValue; + } + if(jQuery('.editElement',editElement).length === 0){ + var fieldInfo; + if(self.getOverlayDetailMode() == true){ + fieldInfo = related_uimeta.field.get(fieldName); + } + else{ + fieldInfo = uimeta.field.get(fieldName); + } + fieldInfo['value'] = value; + var fieldObject = Vtiger_Field_Js.getInstance(fieldInfo); + var fieldModel = fieldObject.getUiTypeModel(); + + var ele = jQuery('<div class="input-group editElement"></div>'); + var actionButtons = '<span class="pointerCursorOnHover input-group-addon input-group-addon-save inlineAjaxSave"><i class="fa fa-check"></i></span>'; + actionButtons += '<span class="pointerCursorOnHover input-group-addon input-group-addon-cancel inlineAjaxCancel"><i class="fa fa-close"></i></span>'; + //wrapping action buttons with class called input-save-wrap + var inlineSaveWrap=jQuery('<div class="input-save-wrap"></div>'); + inlineSaveWrap.append(actionButtons); + // we should have atleast one submit button for the form to submit which is required for validation + ele.append(fieldModel.getUi()).append(inlineSaveWrap); + ele.find('.inputElement').addClass('form-control'); + editElement.append(ele); + } + + // for reference fields, actual value will be ID but we need to show related name of that ID + if(fieldType === 'reference'){ + if(value !== 0){ + jQuery('input[name="'+fieldName+'"]',editElement).prop('value',jQuery.trim(detailViewValue.text())); + var referenceElement = jQuery('input[name="'+fieldName+'"]',editElement); + if(!referenceElement.attr('disabled')) { + referenceElement.attr('disabled','disabled'); + editElement.find('.clearReferenceSelection').removeClass('hide') + } + } + } + + detailViewValue.css('display', 'none'); + editElement.removeClass('hide').show().children().filter('input[type!="hidden"]input[type!="image"],select').filter(':first').focus(); + vtUtils.applyFieldElementsView(currentTdElement); + var contentHolder = this.getDetailViewContainer(); + var vtigerInstance = Vtiger_Index_Js.getInstance(); + vtigerInstance.registerAutoCompleteFields(contentHolder); + vtigerInstance.referenceModulePopupRegisterEvent(contentHolder); + editElement.addClass('ajaxEdited'); + thisInstance.registerSaveOnEnterEvent(editElement); + jQuery('.editAction').addClass('hide'); + + if(fieldType == 'picklist' || fieldType == 'ownergroup' || fieldType == 'owner') { + var sourcePicklistFieldName = thisInstance.getDependentSourcePicklistName(fieldName); + if(sourcePicklistFieldName) { + thisInstance.handlePickListDependencyMap(sourcePicklistFieldName); + } + } + }, + + getDependentSourcePicklistName : function(fieldName) { + var container = this.getForm(); + var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container); + if(picklistDependcyElemnt.length <= 0) { + return ''; + } + + var picklistDependencyMapping = JSON.parse(picklistDependcyElemnt.val()); + var sourcePicklists = Object.keys(picklistDependencyMapping); + if(sourcePicklists.length <= 0){ + return ''; + } + var sourcePicklistFieldName = ''; + jQuery.each(picklistDependencyMapping, function(sourcePicklistName, configuredDependencyObject) { + var picklistmap = configuredDependencyObject["__DEFAULT__"]; + jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){ + if(targetPickListName == fieldName){ + sourcePicklistFieldName = sourcePicklistName; + } + }); + }); + + return sourcePicklistFieldName; + }, + + getInlineWrapper : function(element) { + var wrapperElement = element.closest('td'); + if(!wrapperElement.length) { + wrapperElement = element.closest('.td'); + } + return wrapperElement; + }, + + /** + * Ajax Edit Save Event + * @param {type} currentTdElement + * @returns {undefined} + */ + registerAjaxEditSaveEvent : function(contentHolder){ + var thisInstance = this; + if(typeof contentHolder === 'undefined') { + contentHolder = this.getContentHolder(); + } + + contentHolder.on('click','.inlineAjaxSave',function(e){ + e.preventDefault(); + e.stopPropagation(); + var currentTarget = jQuery(e.currentTarget); + var currentTdElement = thisInstance.getInlineWrapper(currentTarget); + var detailViewValue = jQuery('.value',currentTdElement); + var editElement = jQuery('.edit',currentTdElement); + var actionElement = jQuery('.editAction', currentTdElement); + var fieldBasicData = jQuery('.fieldBasicData', editElement); + var fieldName = fieldBasicData.data('name'); + var fieldType = fieldBasicData.data("type"); + var previousValue = jQuery.trim(fieldBasicData.data('displayvalue')); + + var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement); + var ajaxEditNewValue = fieldElement.val(); + + // ajaxEditNewValue should be taken based on field Type + if(fieldElement.is('input:checkbox')) { + if(fieldElement.is(':checked')) { + ajaxEditNewValue = '1'; + } else { + ajaxEditNewValue = '0'; + } + fieldElement = fieldElement.filter('[type="checkbox"]'); + } else if(fieldType == 'reference'){ + ajaxEditNewValue = fieldElement.attr('value'); + } + + // prev Value should be taken based on field Type + var customHandlingFields = ['owner','ownergroup','picklist','multipicklist','reference','boolean']; + if(jQuery.inArray(fieldType, customHandlingFields) !== -1){ + previousValue = fieldBasicData.data('value'); + } + + // Field Specific custom Handling + if(fieldType === 'multipicklist'){ + var multiPicklistFieldName = fieldName.split('[]'); + fieldName = multiPicklistFieldName[0]; + } + + var fieldValue = ajaxEditNewValue; + + //Before saving ajax edit values we need to check if the value is changed then only we have to save + if(previousValue == ajaxEditNewValue) { + detailViewValue.css('display', 'inline-block'); + editElement.addClass('hide'); + editElement.removeClass('ajaxEdited'); + jQuery('.editAction').removeClass('hide'); + actionElement.show(); + }else{ + var fieldNameValueMap = {}; + fieldNameValueMap['value'] = fieldValue; + fieldNameValueMap['field'] = fieldName; + var form = currentTarget.closest('form'); + var params = { + 'ignore' : 'span.hide .inputElement,input[type="hidden"]', + submitHandler : function(form){ + var preAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PreAjaxSaveEvent); + app.event.trigger(preAjaxSaveEvent,{form:jQuery(form),tiggeredFiledInfo:fieldNameValueMap}); + if(preAjaxSaveEvent.isDefaultPrevented()) { + return false; + } + + jQuery(currentTdElement).find('.input-group-addon').addClass('disabled'); + app.helper.showProgress(); + thisInstance.saveFieldValues(fieldNameValueMap).then(function(response) { + app.helper.hideProgress(); + var postSaveRecordDetails = response; + if(fieldBasicData.data('type') == 'picklist' && app.getModuleName() != 'Users') { + var color = postSaveRecordDetails[fieldName].colormap[postSaveRecordDetails[fieldName].value]; + if(color) { + var contrast = app.helper.getColorContrast(color); + var textColor = (contrast === 'dark') ? 'white' : 'black'; + var picklistHtml = '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' + + postSaveRecordDetails[fieldName].display_value + + '</span>'; + } else { + var picklistHtml = '<span class="picklist-color">' + + postSaveRecordDetails[fieldName].display_value + + '</span>'; + } + detailViewValue.html(picklistHtml); + } else if(fieldBasicData.data('type') == 'multipicklist' && app.getModuleName() != 'Users') { + var picklistHtml = ''; + var rawPicklistValues = postSaveRecordDetails[fieldName].value; + rawPicklistValues = rawPicklistValues.split('|##|'); + var picklistValues = postSaveRecordDetails[fieldName].display_value; + picklistValues = picklistValues.split(','); + for(var i=0; i< rawPicklistValues.length; i++) { + var color = postSaveRecordDetails[fieldName].colormap[rawPicklistValues[i].trim()]; + if(color) { + var contrast = app.helper.getColorContrast(color); + var textColor = (contrast === 'dark') ? 'white' : 'black'; + picklistHtml = picklistHtml + + '<span class="picklist-color" style="background-color: ' + color + '; color: '+ textColor + ';">' + + picklistValues[i] + + '</span>'; + } else { + picklistHtml = picklistHtml + + '<span class="picklist-color">' + + picklistValues[i] + + '</span>'; + } + if(picklistValues[i+1]!==undefined) + picklistHtml+=' , '; + } + detailViewValue.html(picklistHtml); + } else if(fieldBasicData.data('type') == 'currency' && app.getModuleName() != 'Users') { detailViewValue.find('.currencyValue').html(postSaveRecordDetails[fieldName].display_value); contentHolder.closest('.detailViewContainer').find('.detailview-header-block').find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value); }else { - detailViewValue.html(postSaveRecordDetails[fieldName].display_value); - //update namefields displayvalue in header - if(contentHolder.hasClass('overlayDetail')) { - contentHolder.find('.overlayDetailHeader').find('.'+fieldName) - .html(postSaveRecordDetails[fieldName].display_value); - } else { - contentHolder.closest('.detailViewContainer').find('.detailview-header-block') - .find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value); - } - } - fieldBasicData.data('displayvalue',postSaveRecordDetails[fieldName].display_value); - fieldBasicData.data('value',postSaveRecordDetails[fieldName].value); - jQuery(currentTdElement).find('.input-group-addon').removeClass("disabled"); - - detailViewValue.css('display', 'inline-block'); - editElement.addClass('hide'); - editElement.removeClass('ajaxEdited'); - jQuery('.editAction').removeClass('hide'); - actionElement.show(); - var postAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PostAjaxSaveEvent); - app.event.trigger(postAjaxSaveEvent, fieldBasicData, postSaveRecordDetails, contentHolder); - //After saving source field value, If Target field value need to change by user, show the edit view of target field. - if(thisInstance.targetPicklistChange) { - var sourcePicklistname = thisInstance.sourcePicklistname; - thisInstance.targetPicklist.find('.editAction').trigger('click'); - thisInstance.targetPicklistChange = false; - thisInstance.targetPicklist = false; - thisInstance.handlePickListDependencyMap(sourcePicklistname); - thisInstance.sourcePicklistname = false; - } - }); - } - }; - validateAndSubmitForm(form,params); - } - }); - }, - - handlePickListDependencyMap : function(sourcePicklistName) { - var container = this.getForm(); + detailViewValue.html(postSaveRecordDetails[fieldName].display_value); + //update namefields displayvalue in header + if(contentHolder.hasClass('overlayDetail')) { + contentHolder.find('.overlayDetailHeader').find('.'+fieldName) + .html(postSaveRecordDetails[fieldName].display_value); + } else { + contentHolder.closest('.detailViewContainer').find('.detailview-header-block') + .find('.'+fieldName).html(postSaveRecordDetails[fieldName].display_value); + } + } + fieldBasicData.data('displayvalue',postSaveRecordDetails[fieldName].display_value); + fieldBasicData.data('value',postSaveRecordDetails[fieldName].value); + jQuery(currentTdElement).find('.input-group-addon').removeClass("disabled"); + + detailViewValue.css('display', 'inline-block'); + editElement.addClass('hide'); + editElement.removeClass('ajaxEdited'); + jQuery('.editAction').removeClass('hide'); + actionElement.show(); + var postAjaxSaveEvent = jQuery.Event(Vtiger_Detail_Js.PostAjaxSaveEvent); + app.event.trigger(postAjaxSaveEvent, fieldBasicData, postSaveRecordDetails, contentHolder); + //After saving source field value, If Target field value need to change by user, show the edit view of target field. + if(thisInstance.targetPicklistChange) { + var sourcePicklistname = thisInstance.sourcePicklistname; + thisInstance.targetPicklist.find('.editAction').trigger('click'); + thisInstance.targetPicklistChange = false; + thisInstance.targetPicklist = false; + thisInstance.handlePickListDependencyMap(sourcePicklistname); + thisInstance.sourcePicklistname = false; + } + }); + } + }; + validateAndSubmitForm(form,params); + } + }); + }, + + handlePickListDependencyMap : function(sourcePicklistName) { + var container = this.getForm(); var picklistDependcyElemnt = jQuery('[name="picklistDependency"]',container); if(picklistDependcyElemnt.length <= 0) { return; @@ -1397,101 +1397,101 @@ Vtiger.Class("Vtiger_Detail_Js",{ return; } - var configuredDependencyObject = picklistDependencyMapping[sourcePicklistName]; - var selectedValue = container.find('[data-name='+sourcePicklistName+']').data('value'); - var targetObjectForSelectedSourceValue = configuredDependencyObject[selectedValue]; - var picklistmap = configuredDependencyObject["__DEFAULT__"]; - if(typeof targetObjectForSelectedSourceValue == 'undefined'){ - targetObjectForSelectedSourceValue = picklistmap; - } - jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){ - var targetPickListMap = targetObjectForSelectedSourceValue[targetPickListName]; - if(typeof targetPickListMap == "undefined"){ - targetPickListMap = targetPickListValues; - } - var targetPickList = jQuery('[name="'+targetPickListName+'"]',container); - if(targetPickList.length <= 0){ - return; - } - - var listOfAvailableOptions = targetPickList.data('available-options'); - if(typeof listOfAvailableOptions == "undefined"){ - listOfAvailableOptions = jQuery('option',targetPickList); - targetPickList.data('available-options', listOfAvailableOptions); - } - - var targetOptions = new jQuery(); - var optionSelector = []; - optionSelector.push(''); - for(var i=0; i<targetPickListMap.length; i++){ - optionSelector.push(targetPickListMap[i]); - } - - jQuery.each(listOfAvailableOptions, function(i,e) { - var picklistValue = jQuery(e).val(); - if(jQuery.inArray(picklistValue, optionSelector) != -1) { - targetOptions = targetOptions.add(jQuery(e)); - } - }) - var targetPickListSelectedValue = ''; - targetPickListSelectedValue = targetOptions.filter('[selected]').val(); - if(targetPickListMap.length == 1) { - targetPickListSelectedValue = targetPickListMap[0]; // to automatically select picklist if only one picklistmap is present. - } + var configuredDependencyObject = picklistDependencyMapping[sourcePicklistName]; + var selectedValue = container.find('[data-name='+sourcePicklistName+']').data('value'); + var targetObjectForSelectedSourceValue = configuredDependencyObject[selectedValue]; + var picklistmap = configuredDependencyObject["__DEFAULT__"]; + if(typeof targetObjectForSelectedSourceValue == 'undefined'){ + targetObjectForSelectedSourceValue = picklistmap; + } + jQuery.each(picklistmap,function(targetPickListName,targetPickListValues){ + var targetPickListMap = targetObjectForSelectedSourceValue[targetPickListName]; + if(typeof targetPickListMap == "undefined"){ + targetPickListMap = targetPickListValues; + } + var targetPickList = jQuery('[name="'+targetPickListName+'"]',container); + if(targetPickList.length <= 0){ + return; + } + + var listOfAvailableOptions = targetPickList.data('available-options'); + if(typeof listOfAvailableOptions == "undefined"){ + listOfAvailableOptions = jQuery('option',targetPickList); + targetPickList.data('available-options', listOfAvailableOptions); + } + + var targetOptions = new jQuery(); + var optionSelector = []; + optionSelector.push(''); + for(var i=0; i<targetPickListMap.length; i++){ + optionSelector.push(targetPickListMap[i]); + } + + jQuery.each(listOfAvailableOptions, function(i,e) { + var picklistValue = jQuery(e).val(); + if(jQuery.inArray(picklistValue, optionSelector) != -1) { + targetOptions = targetOptions.add(jQuery(e)); + } + }) + var targetPickListSelectedValue = ''; + targetPickListSelectedValue = targetOptions.filter('[selected]').val(); + if(targetPickListMap.length == 1) { + targetPickListSelectedValue = targetPickListMap[0]; // to automatically select picklist if only one picklistmap is present. + } if((targetPickListName == 'group_id' || targetPickListName == 'assigned_user_id') && jQuery("[data-name="+ sourcePicklistName +"]").data('value') == ''){ return false; } - targetPickList.html(targetOptions).val(targetPickListSelectedValue).trigger("change"); - }) - - }, - - /** - * Ajax Edit Calcel Event - * @param {type} currentTdElement - * @returns {undefined} - */ - registerAjaxEditCancelEvent : function(contentHolder){ - var thisInstance = this; - if(typeof contentHolder === 'undefined') { - contentHolder = this.getContentHolder(); - } - contentHolder.on('click','.inlineAjaxCancel',function(e){ - e.preventDefault(); - e.stopPropagation(); - var currentTarget = jQuery(e.currentTarget); - var currentTdElement = thisInstance.getInlineWrapper(currentTarget); - var detailViewValue = jQuery('.value',currentTdElement); - var editElement = jQuery('.edit',currentTdElement); - var actionElement = jQuery('.editAction', currentTdElement); - detailViewValue.css('display', 'inline-block'); - editElement.addClass('hide'); - editElement.find('.inputElement').trigger('Vtiger.Validation.Hide.Messsage') - editElement.removeClass('ajaxEdited'); - jQuery('.editAction').removeClass('hide'); - actionElement.show(); - }); - }, - - registerClearReferenceSelectionEvent : function(contentHolder) { - var thisInstance = this; - if(typeof contentHolder === 'undefined') { - contentHolder = this.getContentHolder(); - } + targetPickList.html(targetOptions).val(targetPickListSelectedValue).trigger("change"); + }) + + }, + + /** + * Ajax Edit Calcel Event + * @param {type} currentTdElement + * @returns {undefined} + */ + registerAjaxEditCancelEvent : function(contentHolder){ + var thisInstance = this; + if(typeof contentHolder === 'undefined') { + contentHolder = this.getContentHolder(); + } + contentHolder.on('click','.inlineAjaxCancel',function(e){ + e.preventDefault(); + e.stopPropagation(); + var currentTarget = jQuery(e.currentTarget); + var currentTdElement = thisInstance.getInlineWrapper(currentTarget); + var detailViewValue = jQuery('.value',currentTdElement); + var editElement = jQuery('.edit',currentTdElement); + var actionElement = jQuery('.editAction', currentTdElement); + detailViewValue.css('display', 'inline-block'); + editElement.addClass('hide'); + editElement.find('.inputElement').trigger('Vtiger.Validation.Hide.Messsage') + editElement.removeClass('ajaxEdited'); + jQuery('.editAction').removeClass('hide'); + actionElement.show(); + }); + }, + + registerClearReferenceSelectionEvent : function(contentHolder) { + var thisInstance = this; + if(typeof contentHolder === 'undefined') { + contentHolder = this.getContentHolder(); + } contentHolder.on('click','.clearReferenceSelection',function(e){ - e.preventDefault(); + e.preventDefault(); var element = jQuery(e.currentTarget); var parentTdElement = thisInstance.getInlineWrapper(element); - var inputElement = parentTdElement.find('.inputElement'); - parentTdElement.find('.referencefield-wrapper').removeClass('selected'); - inputElement.removeAttr("disabled"); - inputElement.attr("value",""); - inputElement.val(""); - element.addClass('hide'); + var inputElement = parentTdElement.find('.inputElement'); + parentTdElement.find('.referencefield-wrapper').removeClass('selected'); + inputElement.removeAttr("disabled"); + inputElement.attr("value",""); + inputElement.val(""); + element.addClass('hide'); }); }, - - searchModuleNames : function(params) { + + searchModuleNames : function(params) { var aDeferred = jQuery.Deferred(); if(typeof params.module == 'undefined') { @@ -1501,7 +1501,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ if(typeof params.action == 'undefined') { params.action = 'BasicAjax'; } - + if(typeof params.base_record == 'undefined') { var record = jQuery('[name="record"]'); var recordId = app.getRecordId(); @@ -1516,7 +1516,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ } } } - + app.request.get({data:params}).then( function(err, res){ aDeferred.resolve(res); @@ -1525,51 +1525,51 @@ Vtiger.Class("Vtiger_Detail_Js",{ //TODO : Handle error aDeferred.reject(); } - ); + ); return aDeferred.promise(); }, - - /** + + /** * Function to get reference search params */ getReferenceSearchParams : function(element){ var tdElement = jQuery(element).closest('td'); var params = {}; - var referenceModuleElement = jQuery('input[name="referenceModule"]',tdElement).length ? - jQuery('input[name="referenceModule"]',tdElement) : jQuery('input.referenceModule',tdElement); + var referenceModuleElement = jQuery('input[name="referenceModule"]',tdElement).length ? + jQuery('input[name="referenceModule"]',tdElement) : jQuery('input.referenceModule',tdElement); var searchModule = referenceModuleElement.val(); params.search_module = searchModule; return params; }, - - /** - * Load Detail View Contents - * @param {type} url - * @returns {unresolved} - */ - loadContents : function(url,data){ + + /** + * Load Detail View Contents + * @param {type} url + * @returns {unresolved} + */ + loadContents : function(url,data){ var thisInstance = this; - var detailContentsHolder = this.getContentHolder(); - var aDeferred = jQuery.Deferred(); - if(url.indexOf('index.php') < 0) { - url = 'index.php?' + url; - } - var params = []; - params.url = url; - if(typeof data != 'undefined'){ - params.data = data; - } - app.helper.showProgress(); - app.request.pjax(params).then(function(error,response){ - detailContentsHolder.html(response); - thisInstance.detailViewForm = jQuery('#detailView'); + var detailContentsHolder = this.getContentHolder(); + var aDeferred = jQuery.Deferred(); + if(url.indexOf('index.php') < 0) { + url = 'index.php?' + url; + } + var params = []; + params.url = url; + if(typeof data != 'undefined'){ + params.data = data; + } + app.helper.showProgress(); + app.request.pjax(params).then(function(error,response){ + detailContentsHolder.html(response); + thisInstance.detailViewForm = jQuery('#detailView'); thisInstance.registerBlockStatusCheckOnLoad(); - aDeferred.resolve(response); - app.helper.hideProgress(); - }); - return aDeferred.promise(); - }, - + aDeferred.resolve(response); + app.helper.hideProgress(); + }); + return aDeferred.promise(); + }, + registerBlockAnimationEvent : function(){ var detailContentsHolder = this.getContentHolder(); detailContentsHolder.on('click','.blockToggle',function(e){ @@ -1599,7 +1599,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); }, - + registerBlockStatusCheckOnLoad : function(){ var blocks = this.getContentHolder().find('.block'); var module = app.getModuleName(); @@ -1611,38 +1611,38 @@ Vtiger.Class("Vtiger_Detail_Js",{ var cacheKey = module+'.'+blockId; var value = app.storage.get(cacheKey); if(value != null){ - if(value == 1){ - headerAnimationElement.hide(); - currentBlock.find("[data-mode='show']").removeClass('hide').show(); - bodyContents.removeClass('hide').show(); - } else { - headerAnimationElement.hide(); - currentBlock.find("[data-mode='hide']").removeClass('hide').show(); - bodyContents.hide(); - } + if(value == 1){ + headerAnimationElement.hide(); + currentBlock.find("[data-mode='show']").removeClass('hide').show(); + bodyContents.removeClass('hide').show(); + } else { + headerAnimationElement.hide(); + currentBlock.find("[data-mode='hide']").removeClass('hide').show(); + bodyContents.hide(); + } } else { - if(bodyContents.hasClass("hide")) { - headerAnimationElement.hide(); + if(bodyContents.hasClass("hide")) { + headerAnimationElement.hide(); currentBlock.find("[data-mode='hide']").show(); bodyContents.hide(); - } - } + } + } }); }, - - registerEventForActivityWidget : function(){ + + registerEventForActivityWidget : function(){ var thisInstance = this; /* * Register click event for add button in Related Activities widget */ jQuery('.createActivity').on('click', function(e){ - var currentTarget = jQuery(e.currentTarget); - var referenceModuleName; - if(currentTarget.hasClass('toDotask')){ - referenceModuleName = 'Calendar'; - }else{ - referenceModuleName = "Events"; - } + var currentTarget = jQuery(e.currentTarget); + var referenceModuleName; + if(currentTarget.hasClass('toDotask')){ + referenceModuleName = 'Calendar'; + }else{ + referenceModuleName = "Events"; + } var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]'); var recordId = thisInstance.getRecordId(); var module = app.getModuleName(); @@ -1655,20 +1655,20 @@ Vtiger.Class("Vtiger_Detail_Js",{ if(typeof fieldName == 'undefined' && module != 'Contacts'){ fieldName = 'parent_id'; } - + var customParams = {}; customParams[fieldName] = recordId; customParams['parentModule'] = module; - - app.event.on("post.QuickCreateForm.show",function(event,form){ - jQuery('<input type="hidden" name="sourceModule" value="'+module+'" >').appendTo(form); - jQuery('<input type="hidden" name="sourceRecord" value="'+recordId+'" >').appendTo(form); - jQuery('<input type="hidden" name="relationOperation" value="true" >').appendTo(form); - jQuery('<input type="hidden" name="'+fieldName+'" value="'+recordId+'" >').appendTo(form); - }); - - app.event.on('post.QuickCreateForm.save',function(event,data){ - var params = {}; + + app.event.on("post.QuickCreateForm.show",function(event,form){ + jQuery('<input type="hidden" name="sourceModule" value="'+module+'" >').appendTo(form); + jQuery('<input type="hidden" name="sourceRecord" value="'+recordId+'" >').appendTo(form); + jQuery('<input type="hidden" name="relationOperation" value="true" >').appendTo(form); + jQuery('<input type="hidden" name="'+fieldName+'" value="'+recordId+'" >').appendTo(form); + }); + + app.event.on('post.QuickCreateForm.save',function(event,data){ + var params = {}; params['record'] = recordId; params['view'] = 'Detail'; params['module'] = module; @@ -1679,23 +1679,23 @@ Vtiger.Class("Vtiger_Detail_Js",{ var activitiesWidget = jQuery('#relatedActivities'); activitiesWidget.html(data); vtUtils.applyFieldElementsView(activitiesWidget); - thisInstance.registerEventForActivityWidget(); + thisInstance.registerEventForActivityWidget(); } ); - }); - + }); + var QuickCreateParams = {}; QuickCreateParams['noCache'] = false; QuickCreateParams['data'] = customParams; quickCreateNode.trigger('click', QuickCreateParams); }); }, - - registerSummaryViewContainerEvents : function(summaryViewContainer){ - var self = this; - this.registerEventForActivityWidget(); - this.loadWidgets(); - /** + + registerSummaryViewContainerEvents : function(summaryViewContainer){ + var self = this; + this.registerEventForActivityWidget(); + this.loadWidgets(); + /** * Function to handle the ajax edit for summary view fields */ summaryViewContainer.on('click','table.summary-table td.fieldValue .editAction', function(e){ @@ -1704,8 +1704,8 @@ Vtiger.Class("Vtiger_Detail_Js",{ var currentTdElement = currentTarget.closest('td.fieldValue'); self.ajaxEditHandling(currentTdElement); }); - - jQuery('.createRecord').on('click',function(e){ + + jQuery('.createRecord').on('click',function(e){ var currentElement = jQuery(e.currentTarget); var summaryWidgetContainer = currentElement.closest('.summaryWidgetContainer'); var widgetHeaderContainer = summaryWidgetContainer.find('.widget_header'); @@ -1721,27 +1721,27 @@ Vtiger.Class("Vtiger_Detail_Js",{ if(quickCreateNode.length <= 0) { app.helper.showErrorMessage(app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED')); } - - app.event.on('post.QuickCreateForm.save',function(event,data){ - var idList = new Array(); - idList.push(data._recordId); - - self.addRelationBetweenRecords(referenceModuleName,idList).then(function(data){ - self.loadWidget(summaryWidgetContainer.find('[class^="widgetContainer_"]')); - }); - }); + + app.event.on('post.QuickCreateForm.save',function(event,data){ + var idList = new Array(); + idList.push(data._recordId); + + self.addRelationBetweenRecords(referenceModuleName,idList).then(function(data){ + self.loadWidget(summaryWidgetContainer.find('[class^="widgetContainer_"]')); + }); + }); var QuickCreateParams = {}; QuickCreateParams['data'] = customParams; QuickCreateParams['noCache'] = false; quickCreateNode.trigger('click', QuickCreateParams); }); - - /* + + /* * Register the event to edit the status for for related activities */ summaryViewContainer.on('click', '.editStatus', function(e){ - var currentTarget = jQuery(e.currentTarget); + var currentTarget = jQuery(e.currentTarget); var currentDiv = currentTarget.closest('.activityStatus'); var editElement = currentDiv.find('.edit'); var detailViewElement = currentDiv.find('.value'); @@ -1749,15 +1749,15 @@ Vtiger.Class("Vtiger_Detail_Js",{ currentTarget.hide(); detailViewElement.addClass('hide'); editElement.removeClass('hide').show(); - - var callbackFunction = function() { - var fieldnameElement = jQuery('.fieldname', editElement); + + var callbackFunction = function() { + var fieldnameElement = jQuery('.fieldname', editElement); var fieldName = fieldnameElement.val(); var fieldElement = jQuery('[name="'+ fieldName +'"]', editElement); var previousValue = fieldnameElement.data('prevValue'); var ajaxEditNewValue = fieldElement.find('option:selected').val(); var translatedValue = fieldElement.find('option:selected').text(); - + var select2Element = fieldElement.parent().find('.select2-container'); if(ajaxEditNewValue == '') { vtUtils.showValidationMessage(select2Element, app.vtranslate('JS_REQUIRED_FIELD')); @@ -1766,19 +1766,19 @@ Vtiger.Class("Vtiger_Detail_Js",{ } else { vtUtils.hideValidationMessage(select2Element); } - + if(previousValue == ajaxEditNewValue) { - editElement.addClass('hide'); - detailViewElement.removeClass('hide'); + editElement.addClass('hide'); + detailViewElement.removeClass('hide'); currentTarget.show(); - } else { + } else { var activityDiv = currentDiv.closest('.activityEntries'); var activityId = activityDiv.find('.activityId').val(); var moduleName = activityDiv.find('.activityModule').val(); var activityType = activityDiv.find('.activityType').val(); - app.helper.showProgress(); - editElement.addClass('hide'); + app.helper.showProgress(); + editElement.addClass('hide'); var params = { action : 'SaveAjax', record : activityId, @@ -1792,26 +1792,26 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({"data":params}).then( function(err,data) { - app.helper.hideProgress(); + app.helper.hideProgress(); detailViewElement.removeClass('hide'); currentTarget.show(); detailViewElement.html(translatedValue); fieldnameElement.data('prevValue', ajaxEditNewValue); - }); - } - } - app.helper.addClickOutSideEvent(currentDiv,callbackFunction); - }); - }, - - addRelationBetweenRecords : function(relatedModule, relatedModuleRecordId){ + }); + } + } + app.helper.addClickOutSideEvent(currentDiv,callbackFunction); + }); + }, + + addRelationBetweenRecords : function(relatedModule, relatedModuleRecordId){ var aDeferred = jQuery.Deferred(); var thisInstance = this; var relatedController = thisInstance.getRelatedController(relatedModule); - if(thisInstance.getOverlayDetailMode() == true){ - relatedController.parentModuleName = thisInstance.getModuleName(); - relatedController.setSelectedTabElement(''); - } + if(thisInstance.getOverlayDetailMode() == true){ + relatedController.parentModuleName = thisInstance.getModuleName(); + relatedController.setSelectedTabElement(''); + } if(relatedController){ relatedController.addRelations(relatedModuleRecordId).then( function(data){ @@ -1825,56 +1825,56 @@ Vtiger.Class("Vtiger_Detail_Js",{ } return aDeferred.promise(); }, - - loadWidgets : function(){ + + loadWidgets : function(){ var self = this; var widgetList = jQuery('[class^="widgetContainer_"]'); widgetList.each(function(index,widgetContainerELement){ var widgetContainer = jQuery(widgetContainerELement); self.loadWidget(widgetContainer).then(function(){ - app.event.trigger('post.summarywidget.load',widgetContainer); - }); + app.event.trigger('post.summarywidget.load',widgetContainer); + }); }); }, loadWidget : function(widgetContainer) { - var aDeferred = jQuery.Deferred(); - var thisInstance = this; + var aDeferred = jQuery.Deferred(); + var thisInstance = this; var contentContainer = jQuery('.widget_contents',widgetContainer); var urlParams = widgetContainer.data('url'); - + var params = { 'type' : 'GET', 'dataType': 'html', 'data' : urlParams }; - app.helper.showProgress(); + app.helper.showProgress(); app.request.post(params).then( function(err,data){ - app.helper.hideProgress(); - contentContainer.html(data); - contentContainer.trigger(thisInstance.widgetPostLoad); - - var adjustedHeight = contentContainer.height()-50; - app.helper.showVerticalScroll(contentContainer.find('.twitterContainer'),{ - 'setHeight' : adjustedHeight - }); - - aDeferred.resolve(params); + app.helper.hideProgress(); + contentContainer.html(data); + contentContainer.trigger(thisInstance.widgetPostLoad); + + var adjustedHeight = contentContainer.height()-50; + app.helper.showVerticalScroll(contentContainer.find('.twitterContainer'),{ + 'setHeight' : adjustedHeight + }); + + aDeferred.resolve(params); }, function(){ - aDeferred.reject(); + aDeferred.reject(); } ); - return aDeferred.promise(); + return aDeferred.promise(); }, - - - getTabs : function() { + + + getTabs : function() { return this.getTabContainer().find('li'); }, - - /** + + /** * Function to return related tab. * @return : jQuery Object. */ @@ -1891,8 +1891,8 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); return targetTab; }, - - /** + + /** * function to save comment * return json response */ @@ -1906,26 +1906,26 @@ Vtiger.Class("Vtiger_Detail_Js",{ var commentContent = closestCommentBlock.find('.commentcontent'); var formData = new FormData(form[0]); var commentContentValue = commentContent.val(); - var isPrivate; - if(closestCommentBlock.find('#is_private').is(":checked")) { - isPrivate = 1; - } else { - isPrivate = 0; - } + var isPrivate; + if(closestCommentBlock.find('#is_private').is(":checked")) { + isPrivate = 1; + } else { + isPrivate = 0; + } var errorMsg; if(commentContentValue.trim() == ""){ errorMsg = app.vtranslate('JS_LBL_COMMENT_VALUE_CANT_BE_EMPTY'); - vtUtils.showValidationMessage(commentContent, errorMsg); + vtUtils.showValidationMessage(commentContent, errorMsg); aDeferred.reject(); return aDeferred.promise(); } - vtUtils.hideValidationMessage(commentContent); + vtUtils.hideValidationMessage(commentContent); if(commentMode == "edit"){ var editCommentReason = closestCommentBlock.find('[name="reasonToEdit"]').val(); - isPrivate = closestCommentBlock.find('[name="is_private"]').val(); + isPrivate = closestCommentBlock.find('[name="is_private"]').val(); } - app.helper.showProgress(); + app.helper.showProgress(); var element = jQuery(e.currentTarget); element.attr('disabled', 'disabled'); @@ -1934,14 +1934,14 @@ Vtiger.Class("Vtiger_Detail_Js",{ var parentCommentId = commentInfoHeader.data('parentcommentid'); var commentRelatedTo = commentInfoHeader.data('relatedto'); if(!commentRelatedTo) commentRelatedTo = self.getRecordId(); - - var postData = { + + var postData = { 'commentcontent' : commentContentValue, 'related_to': commentRelatedTo, 'module' : 'ModComments', - 'is_private' : isPrivate + 'is_private' : isPrivate } - var incrementCount = false; + var incrementCount = false; if(commentMode == "edit"){ postData['record'] = commentId; postData['reasontoedit'] = editCommentReason; @@ -1952,7 +1952,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ postData['parent_comments'] = commentId; postData['action'] = 'SaveAjax'; postData['filename'] = Vtiger_Index_Js.files, - incrementCount = true; + incrementCount = true; } jQuery.each(postData, function (key, value) { formData.append(key, value); @@ -1967,18 +1967,18 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post(postData).then( function(err,data){ Vtiger_Index_Js.files = ''; - jQuery('.MultiFile-remove').trigger('click'); - app.helper.hideProgress(); - if(incrementCount){ - // to increment related records count when we add comment from related tab / summary view widget - var tabElement = self.getTabByLabel("ModComments"); - var relatedController = new Vtiger_RelatedList_Js(self.getRecordId(), app.getModuleName(), tabElement, self.getRelatedModuleName()); - relatedController.updateRelatedRecordsCount(jQuery(tabElement).data('relation-id'),[1],true); - } + jQuery('.MultiFile-remove').trigger('click'); + app.helper.hideProgress(); + if(incrementCount){ + // to increment related records count when we add comment from related tab / summary view widget + var tabElement = self.getTabByLabel("ModComments"); + var relatedController = new Vtiger_RelatedList_Js(self.getRecordId(), app.getModuleName(), tabElement, self.getRelatedModuleName()); + relatedController.updateRelatedRecordsCount(jQuery(tabElement).data('relation-id'),[1],true); + } aDeferred.resolve(data); }, function(textStatus, errorThrown){ - app.helper.hideProgress(); + app.helper.hideProgress(); element.removeAttr('disabled'); aDeferred.reject(textStatus, errorThrown); } @@ -1986,8 +1986,8 @@ Vtiger.Class("Vtiger_Detail_Js",{ return aDeferred.promise(); }, - - /** + + /** * function to remove comment block if its exists. */ removeCommentBlockIfExists : function() { @@ -1995,8 +1995,8 @@ Vtiger.Class("Vtiger_Detail_Js",{ var Commentswidget = jQuery('.commentsBody',detailContentsHolder); jQuery('.addCommentBlock',Commentswidget).remove(); }, - - /** + + /** * function to return cloned edit comment block * return jQuery Obj. */ @@ -2004,11 +2004,11 @@ Vtiger.Class("Vtiger_Detail_Js",{ var detailContentsHolder = this.getContentHolder(); var clonedCommentBlock = jQuery('.basicEditCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicEditCommentBlock hide').addClass('addCommentBlock'); clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent'); - clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); + clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); return clonedCommentBlock; }, - - /** + + /** * function to return cloned add comment block * return jQuery Obj. */ @@ -2016,25 +2016,25 @@ Vtiger.Class("Vtiger_Detail_Js",{ var detailContentsHolder = this.getContentHolder(); var clonedCommentBlock = jQuery('.basicAddCommentBlock',detailContentsHolder).clone(true,true).removeClass('basicAddCommentBlock hide').addClass('addCommentBlock'); clonedCommentBlock.find('.commentcontenthidden').removeClass('commentcontenthidden').addClass('commentcontent'); - clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); + clonedCommentBlock.find('.commentcontent').addClass('mention_listener'); return clonedCommentBlock; }, - - - /** + + + /** * function to get the Comment thread for the given parent. * params: Url to get the Comment thread */ getCommentThread : function(url) { var aDeferred = jQuery.Deferred(); app.request.post({"url":url}).then(function(err,data) { - aDeferred.resolve(data); - }); + aDeferred.resolve(data); + }); return aDeferred.promise(); }, - - - /** + + + /** * Function to get child comments */ getChildComments : function(commentId){ @@ -2046,8 +2046,8 @@ Vtiger.Class("Vtiger_Detail_Js",{ }); return aDeferred.promise(); }, - - /** + + /** * function to return the UI of the comment. * return html */ @@ -2061,650 +2061,650 @@ Vtiger.Class("Vtiger_Detail_Js",{ app.request.post({"data":postData}).then( function(err,data){ aDeferred.resolve(data); - }); + }); return aDeferred.promise(); }, - - - getRelatedRecordsCount : function(recordId, moduleName){ - var aDeferred = jQuery.Deferred(); - var params = { - 'type' : 'GET', - 'data' : { - 'module' : moduleName, - 'recordId' : recordId, - 'action' : 'RelatedRecordsAjax', - 'mode' : 'getRelatedRecordsCount' - } - }; - app.request.get(params).then(function(err,data){ - if(err == null){ - aDeferred.resolve(data); - } - }); - return aDeferred.promise(); - }, - - updateRelatedRecordsCount : function(){ - var self = this; - var recordId = self.getRecordId(); - var moduleName = app.getModuleName(); - self.getRelatedRecordsCount(recordId, moduleName).then(function(data){ - jQuery.each(data, function(key, value){ - var element = new Object(jQuery("a","li[data-relation-id="+key+"]")); - var numberEle = element.find('.numberCircle'); - numberEle.text(value); - if(parseInt(value) > 0){ - numberEle.removeClass('hide'); - } else{ - numberEle.addClass('hide'); - } - element.attr("recordscount",value); - }); - }); - }, - - registerAddTwitterToRecordEvent : function(elementId){ - jQuery('.searchProfileToolTip').tooltip({'placement': 'top','content':'html'}); - jQuery('#'+elementId).on('click', function(e){ - jQuery('.searchProfileToolTip').tooltip('hide'); - var twitterNameArray = elementId.split("__"); - Vtiger_Detail_Js.saveTwitterHandler(twitterNameArray[1]); - }); - }, - + + + getRelatedRecordsCount : function(recordId, moduleName){ + var aDeferred = jQuery.Deferred(); + var params = { + 'type' : 'GET', + 'data' : { + 'module' : moduleName, + 'recordId' : recordId, + 'action' : 'RelatedRecordsAjax', + 'mode' : 'getRelatedRecordsCount' + } + }; + app.request.get(params).then(function(err,data){ + if(err == null){ + aDeferred.resolve(data); + } + }); + return aDeferred.promise(); + }, + + updateRelatedRecordsCount : function(){ + var self = this; + var recordId = self.getRecordId(); + var moduleName = app.getModuleName(); + self.getRelatedRecordsCount(recordId, moduleName).then(function(data){ + jQuery.each(data, function(key, value){ + var element = new Object(jQuery("a","li[data-relation-id="+key+"]")); + var numberEle = element.find('.numberCircle'); + numberEle.text(value); + if(parseInt(value) > 0){ + numberEle.removeClass('hide'); + } else{ + numberEle.addClass('hide'); + } + element.attr("recordscount",value); + }); + }); + }, + + registerAddTwitterToRecordEvent : function(elementId){ + jQuery('.searchProfileToolTip').tooltip({'placement': 'top','content':'html'}); + jQuery('#'+elementId).on('click', function(e){ + jQuery('.searchProfileToolTip').tooltip('hide'); + var twitterNameArray = elementId.split("__"); + Vtiger_Detail_Js.saveTwitterHandler(twitterNameArray[1]); + }); + }, + toggleRollupComments : function (e) { - e.stopPropagation(); - e.preventDefault(); - var self = this; - var currentTarget = jQuery(e.currentTarget); - var moduleName = currentTarget.attr('module'); - var recordId = currentTarget.attr('record'); - var rollupId = currentTarget.attr('rollupid'); - var rollupstatus = currentTarget.attr('rollup-status'); - var viewtype = currentTarget.data('view'); + e.stopPropagation(); + e.preventDefault(); + var self = this; + var currentTarget = jQuery(e.currentTarget); + var moduleName = currentTarget.attr('module'); + var recordId = currentTarget.attr('record'); + var rollupId = currentTarget.attr('rollupid'); + var rollupstatus = currentTarget.attr('rollup-status'); + var viewtype = currentTarget.data('view'); var startindex = parseInt(currentTarget.attr('startindex')); - var contents, url, params; - - if(rollupstatus == 0) { - if(viewtype == 'relatedlist') { + var contents, url, params; + + if(rollupstatus == 0) { + if(viewtype == 'relatedlist') { url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+ moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status='+rollupstatus+ '&startindex='+startindex; - contents = jQuery('.details'); - }else { - url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+ - recordId+'&mode=showRecentComments'+'&rollupid='+rollupId - +'&rollup_status=1&parent='+moduleName+'&rollup-toggle=1&limit=5'; - contents = jQuery('div[data-name="ModComments"] div.widget_contents'); - } - + contents = jQuery('.details'); + }else { + url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+ + recordId+'&mode=showRecentComments'+'&rollupid='+rollupId + +'&rollup_status=1&parent='+moduleName+'&rollup-toggle=1&limit=5'; + contents = jQuery('div[data-name="ModComments"] div.widget_contents'); + } + params = { 'type' : 'GET', 'url' : url }; - - app.request.get(params).then(function(err, data){ + + app.request.get(params).then(function(err, data){ app.helper.hideProgress(); - contents.html(data); - self.registerRollupCommentsSwitchEvent(); + contents.html(data); + self.registerRollupCommentsSwitchEvent(); jQuery('#rollupcomments').bootstrapSwitch('state', true, true); - }); - }else { - if(viewtype == 'relatedlist') { - url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+ - moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status=0&mode=saveRollupSettings'; + }); + }else { + if(viewtype == 'relatedlist') { + url = 'index.php?module=Vtiger&view=ModCommentsDetailAjax&parent='+ + moduleName+'&parentId='+recordId+'&rollupid='+rollupId+'&rollup_status=0&mode=saveRollupSettings'; params = { 'type' : 'GET', 'url' : url }; - app.request.get(params).then(function(err, data){ - currentTarget.attr('rollup-status', 0); - jQuery('div.related-tabs li[data-label-key="ModComments"]').trigger('click'); - }); - }else { - url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+ - recordId+'&mode=showRecentComments'+'&rollupid='+rollupId - +'&rollup_status=0&parent='+moduleName+'&rollup-toggle=1&limit=5'; - contents = jQuery('div[data-name="ModComments"] div.widget_contents'); + app.request.get(params).then(function(err, data){ + currentTarget.attr('rollup-status', 0); + jQuery('div.related-tabs li[data-label-key="ModComments"]').trigger('click'); + }); + }else { + url = 'index.php?module='+moduleName+'&relatedModule=ModComments&view=Detail&record='+ + recordId+'&mode=showRecentComments'+'&rollupid='+rollupId + +'&rollup_status=0&parent='+moduleName+'&rollup-toggle=1&limit=5'; + contents = jQuery('div[data-name="ModComments"] div.widget_contents'); params = { 'type' : 'GET', 'url' : url }; - app.request.get(params).then(function(err, data){ + app.request.get(params).then(function(err, data){ app.helper.hideProgress(); - contents.html(data); - self.registerRollupCommentsSwitchEvent(); + contents.html(data); + self.registerRollupCommentsSwitchEvent(); jQuery('#rollupcomments').bootstrapSwitch('state', false, true); - }); - } - } - }, - - registerScrollForRollupEvents : function() { - var relatedController = this.getRelatedController(); + }); + } + } + }, + + registerScrollForRollupEvents : function() { + var relatedController = this.getRelatedController(); if(relatedController) relatedController.registerScrollForRollupComments(); - }, - - registerStarToggle : function() { - var self = this; - jQuery('#starToggle').on('click',function(e){ - var element = jQuery(e.currentTarget); - if(element.hasClass('processing')) return; - element.addClass('processing'); - var record = self.getRecordId(); - var params = {}; - params.module = app.getModuleName(); - params.action = 'SaveAjax'; - params.record = record; - if(element.hasClass('active')) { - params.starred = 0; - }else { - params.starred = 1; - } - - element.toggleClass('active'); - - - app.request.post({data:params}).then(function(err,data){ - element.removeClass('processing'); - }) - }); - }, - - saveTag : function(callerParams) { - var self = this; - var aDeferred = jQuery.Deferred(); - var params = { - 'module' : app.getModuleName(), - 'action' : 'TagCloud', - 'mode' : 'saveTags', - 'record' : this.getRecordId() - - }; - var params = jQuery.extend(params, callerParams); - app.request.post({'data': params}).then( - function(error, data) { - if(error == null) { - var tagContainer = jQuery('.tagContainer'); - var tagInstance = self.getComponentInstance('Vtiger_Tag_Js'); - tagInstance.addTagsToShowAllTagContianer(data.tags); - self.addTagsToSummaryTag(data.tags); - if(parseInt(data.moreTagCount) > 0) { - tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide'); - } - aDeferred.resolve(data); - }else{ - aDeferred.reject(data); - } - } - ); - return aDeferred.promise(); - }, - - deleteTag : function(callerParams) { - var aDeferred = jQuery.Deferred(); - - var params = { - 'module' : app.getModuleName(), - 'action' : 'TagCloud', - 'mode' : 'delete', - 'record' : this.getRecordId() - } - - var params = jQuery.extend(params, callerParams); - app.request.post({'data': params}).then( - function(error, data) { - if(error == null) { - aDeferred.resolve(data); - }else{ - aDeferred.reject(data); - } - } - ); - - return aDeferred.promise(); - }, - - constructTagElement : function (params) { - var tagElement = jQuery(jQuery('#dummyTagElement').html()).clone(true); - tagElement.attr('data-id',params.id).attr('data-type',params.type); - tagElement.find('.tagLabel').html(params.name); - return tagElement - }, - - showAllTags : function(container) { - var self = this; - var showTagModal = container.find('.showAllTagContainer').clone(true); - app.helper.showModal(showTagModal.find('.modal-dialog'),{'cb' : function(modalContainer){ - - var registerShowAllTagEvents = function(modalContainer) { - var currentTagsSelected = new Array(); - var currentTagHolder = modalContainer.find('.currentTag'); - - modalContainer.find('.dropdown-menu').on('click',function(e){ - e.stopPropagation(); - }); - - modalContainer.find('.currentTagMenu > li > a ').on('click', function(e){ - var element = jQuery(e.currentTarget); - var selectedTag = jQuery(element.html()); - currentTagsSelected.push(selectedTag.data('id')); - element.remove(); - currentTagHolder.append(selectedTag); - }); - - app.helper.showVerticalScroll(currentTagHolder); - - modalContainer.find('.currentTagSelector').instaFilta({ - targets : '.currentTagMenu > li', - sections : '.currentTagMenu', - scope : '.detailShowAllModal', - hideEmptySections : true, - beginsWith : false, - caseSensitive : false, - typeDelay : 0 - }); - - var tagInputEle = modalContainer.find('input[name="createNewTag"]'); - var params = {tags : [], tokenSeparators: [","]}; - vtUtils.showSelect2ElementView(tagInputEle, params); - - var form = modalContainer.find('form'); - form.on('submit',function(e){ - e.preventDefault(); - var modalContainerClone = modalContainer.clone(true); - app.helper.hideModal(); - var saveParams = {}; - var saveTagList = {}; - saveTagList['existing'] = currentTagsSelected; - saveTagList['new'] = tagInputEle.val().split(',') - saveParams['tagsList'] = saveTagList; - - var formData = form.serializeFormData(); - saveParams['newTagType'] = formData['visibility']; - self.saveTag(saveParams).then(function(data){ - jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); - jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html()); - }) - return false; - }) - - } - registerShowAllTagEvents(modalContainer); - }}); - }, - - addTagsToSummaryTag : function(tagsList) { - var summaryTagList = jQuery('.detailTagList'); - var numOfTagsToShow = parseInt(summaryTagList.data('numOfTagsToShow')); - var numOfTagsToAppend = numOfTagsToShow - (parseInt(summaryTagList.find('.tag').length)); - for(var index in tagsList) { - if(numOfTagsToAppend <= 0) { - break; - } - var tagInfo = tagsList[index]; - var tagId = tagInfo.id; - if(summaryTagList.find('[data-id="'+ tagId +'"]').length <= 0) { - var newTagEle = this.constructTagElement(tagInfo); - summaryTagList.find('.moreTags').before(newTagEle); - summaryTagList.find('.noTagsPlaceHolder').addClass('hide'); - numOfTagsToAppend--; - } - } - - if(summaryTagList.find('.tag').length > 0){ - summaryTagList.closest('.tag-contents').removeClass('hide'); - } - - }, - - removeDeletedTagsFromSummaryTag : function(deletedTags){ - var summaryTagContainer = jQuery('.detailTagList'); - for(var index in deletedTags) { - var tag = summaryTagContainer.find('.tag[data-id="'+deletedTags[index]+'"]'); - if(tag.length > 0){ - var showAllTagContainer = jQuery('.showAllTagContainer'); - var currentTagHolder = showAllTagContainer.find('.currentTag'); - var summaryLastTag = summaryTagContainer.find('.tag').filter(':last'); - var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next(); - summaryTagContainer.find('.moreTags').before(nextTag.clone(true)); - tag.remove(); - } - } - - if(summaryTagContainer.find(".tag").length <=0){ - summaryTagContainer.find(".noTagsPlaceHolder").removeClass("hide"); - } - - }, - - registerTagSearch : function() { - jQuery('#tag-search').instaFilta({ - targets : '#addTagContainer .existingTag .tag-item', - sections : '#addTagContainer .existingTag', - hideEmptySections : true, - beginsWith : false, - caseSensitive : false, - typeDelay : 0 - }); - }, - - postTagDeleteActions : function(deletedTagClone) { - var summaryTagContainer = jQuery('.detailTagList'); - var tagInstance = this.getComponentInstance('Vtiger_Tag_Js'); - var tagInfo = { - 'id' : deletedTagClone.data('id') - }; - tagInstance.removeTagsFromShowTagContainer(new Array(tagInfo)); - - if(summaryTagContainer.find('.tag').length <= 0 ) { - summaryTagContainer.find('.noTagsPlaceHolder').removeClass('hide'); - }else{ - var moreTagsEle = summaryTagContainer.find('.tagMoreCount'); - if(!moreTagsEle.closest('.moreTags').hasClass('hide')) { - var moreTagsCount = parseInt(moreTagsEle.text()); - moreTagsCount--; - moreTagsEle.text(moreTagsCount); - if(moreTagsCount <=0 ){ - moreTagsEle.closest('.moreTags').addClass('hide'); - } - } - } - }, - - - registerTagEvents : function() { - var self = this; - var tagContainer = jQuery('.tagContainer'); - - tagContainer.find('#addTagContainer .dropdown-menu').on('click',function(e){ - e.stopPropagation(); - }); - var tagInputEle = tagContainer.find('.newTags'); - var params = {tags : [], tokenSeparators: [","]}; - vtUtils.showSelect2ElementView(tagInputEle, params); - - var existinTagContainer = tagContainer.find('.existingTag'); - app.helper.showVerticalScroll(existinTagContainer); - - this.registerTagSearch(); - - jQuery('#saveTag').on('click', function(e){ - tagContainer.find('.dropdown-toggle').dropdown('toggle'); - var element = jQuery(e.currentTarget); - var createTagContainer = element.closest('.createTagContainer'); - var existingTagContainer = createTagContainer.find('.existingTag'); - var selectedExistingTags = new Array(); - var selectedTagElement = existingTagContainer.find('.tagSelector').filter(':checked').closest('li.tag-item'); - selectedTagElement.each(function(index, domEle){ - var ele = jQuery(domEle); - selectedExistingTags.push(ele.find('.tag').data('id')); - }); - var newTagEle = createTagContainer.find('input.newTags'); - var newTags = newTagEle.val(); - var tagsList = {}; - tagsList['new'] = newTags.split(','); - tagsList['existing'] = selectedExistingTags; - var visibility = createTagContainer.find('[name="visibility"]').val(); - var visibilityCheckBox = createTagContainer.find('[type="checkbox"][name="visibility"]'); - if(visibilityCheckBox.is(':checked')){ - visibility = visibilityCheckBox.val(); - } - self.saveTag({'tagsList':tagsList,'newTagType': visibility}).then(function(data){ - selectedTagElement.remove(); - newTagEle.select2('val',''); - }); - }); - - tagContainer.find('.cancelLink').on('click', function(e){ - tagContainer.find('.dropdown-toggle').dropdown('toggle'); - }); - - app.event.on('post.MassTag.save',function(e, modalContainerClone, data){ - var moreTagCount = parseInt(data.moreTagCount); - if(moreTagCount === 0) { - tagContainer.find('.tagMoreCount').closest('.moreTags').addClass('hide'); - } else if(moreTagCount > 0){ - tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide'); - } - jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); - jQuery('.viewAllTagsContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); - jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html()); - var tagInstance = self.getComponentInstance('Vtiger_Tag_Js'); - tagInstance.addTagsToShowAllTagContianer(data.tags); - self.removeDeletedTagsFromSummaryTag(data.deleted); - self.addTagsToSummaryTag(data.tags); - }) - - tagContainer.find('.moreTags').on('click',function(e){ - //self.showAllTags(tagContainer); - app.event.trigger('Request.AllTag.show',tagContainer, {'record' : self.getRecordId()}); - }); - - tagContainer.on('click', '.deleteTag', function(e){ - var tag = jQuery(e.currentTarget).closest('.tag'); - self.deleteTag({'tag_id':tag.data('id')}).then(function(){ - var summaryTagContainer = jQuery('.detailTagList'); - var showAllTagContainer = jQuery('.showAllTagContainer'); - var currentTagHolder = showAllTagContainer.find('.currentTag'); - var summaryLastTag = summaryTagContainer.find('.tag').filter(':last'); - var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next(); - - summaryTagContainer.find('.moreTags').before(nextTag.clone(true)); - tag.remove(); - - self.postTagDeleteActions(tag.clone(true)); - if(summaryTagContainer.find('.tag').length == 0){ - summaryTagContainer.closest('.tag-contents').addClass('hide'); - } - }) - }); - - jQuery('#addTagTriggerer').on('click', function(e){ - app.event.trigger('Request.MassTag.show',tagContainer, {'record' : self.getRecordId()}); - }); - }, - - /** + }, + + registerStarToggle : function() { + var self = this; + jQuery('#starToggle').on('click',function(e){ + var element = jQuery(e.currentTarget); + if(element.hasClass('processing')) return; + element.addClass('processing'); + var record = self.getRecordId(); + var params = {}; + params.module = app.getModuleName(); + params.action = 'SaveAjax'; + params.record = record; + if(element.hasClass('active')) { + params.starred = 0; + }else { + params.starred = 1; + } + + element.toggleClass('active'); + + + app.request.post({data:params}).then(function(err,data){ + element.removeClass('processing'); + }) + }); + }, + + saveTag : function(callerParams) { + var self = this; + var aDeferred = jQuery.Deferred(); + var params = { + 'module' : app.getModuleName(), + 'action' : 'TagCloud', + 'mode' : 'saveTags', + 'record' : this.getRecordId() + + }; + var params = jQuery.extend(params, callerParams); + app.request.post({'data': params}).then( + function(error, data) { + if(error == null) { + var tagContainer = jQuery('.tagContainer'); + var tagInstance = self.getComponentInstance('Vtiger_Tag_Js'); + tagInstance.addTagsToShowAllTagContianer(data.tags); + self.addTagsToSummaryTag(data.tags); + if(parseInt(data.moreTagCount) > 0) { + tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide'); + } + aDeferred.resolve(data); + }else{ + aDeferred.reject(data); + } + } + ); + return aDeferred.promise(); + }, + + deleteTag : function(callerParams) { + var aDeferred = jQuery.Deferred(); + + var params = { + 'module' : app.getModuleName(), + 'action' : 'TagCloud', + 'mode' : 'delete', + 'record' : this.getRecordId() + } + + var params = jQuery.extend(params, callerParams); + app.request.post({'data': params}).then( + function(error, data) { + if(error == null) { + aDeferred.resolve(data); + }else{ + aDeferred.reject(data); + } + } + ); + + return aDeferred.promise(); + }, + + constructTagElement : function (params) { + var tagElement = jQuery(jQuery('#dummyTagElement').html()).clone(true); + tagElement.attr('data-id',params.id).attr('data-type',params.type); + tagElement.find('.tagLabel').html(params.name); + return tagElement + }, + + showAllTags : function(container) { + var self = this; + var showTagModal = container.find('.showAllTagContainer').clone(true); + app.helper.showModal(showTagModal.find('.modal-dialog'),{'cb' : function(modalContainer){ + + var registerShowAllTagEvents = function(modalContainer) { + var currentTagsSelected = new Array(); + var currentTagHolder = modalContainer.find('.currentTag'); + + modalContainer.find('.dropdown-menu').on('click',function(e){ + e.stopPropagation(); + }); + + modalContainer.find('.currentTagMenu > li > a ').on('click', function(e){ + var element = jQuery(e.currentTarget); + var selectedTag = jQuery(element.html()); + currentTagsSelected.push(selectedTag.data('id')); + element.remove(); + currentTagHolder.append(selectedTag); + }); + + app.helper.showVerticalScroll(currentTagHolder); + + modalContainer.find('.currentTagSelector').instaFilta({ + targets : '.currentTagMenu > li', + sections : '.currentTagMenu', + scope : '.detailShowAllModal', + hideEmptySections : true, + beginsWith : false, + caseSensitive : false, + typeDelay : 0 + }); + + var tagInputEle = modalContainer.find('input[name="createNewTag"]'); + var params = {tags : [], tokenSeparators: [","]}; + vtUtils.showSelect2ElementView(tagInputEle, params); + + var form = modalContainer.find('form'); + form.on('submit',function(e){ + e.preventDefault(); + var modalContainerClone = modalContainer.clone(true); + app.helper.hideModal(); + var saveParams = {}; + var saveTagList = {}; + saveTagList['existing'] = currentTagsSelected; + saveTagList['new'] = tagInputEle.val().split(',') + saveParams['tagsList'] = saveTagList; + + var formData = form.serializeFormData(); + saveParams['newTagType'] = formData['visibility']; + self.saveTag(saveParams).then(function(data){ + jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); + jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html()); + }) + return false; + }) + + } + registerShowAllTagEvents(modalContainer); + }}); + }, + + addTagsToSummaryTag : function(tagsList) { + var summaryTagList = jQuery('.detailTagList'); + var numOfTagsToShow = parseInt(summaryTagList.data('numOfTagsToShow')); + var numOfTagsToAppend = numOfTagsToShow - (parseInt(summaryTagList.find('.tag').length)); + for(var index in tagsList) { + if(numOfTagsToAppend <= 0) { + break; + } + var tagInfo = tagsList[index]; + var tagId = tagInfo.id; + if(summaryTagList.find('[data-id="'+ tagId +'"]').length <= 0) { + var newTagEle = this.constructTagElement(tagInfo); + summaryTagList.find('.moreTags').before(newTagEle); + summaryTagList.find('.noTagsPlaceHolder').addClass('hide'); + numOfTagsToAppend--; + } + } + + if(summaryTagList.find('.tag').length > 0){ + summaryTagList.closest('.tag-contents').removeClass('hide'); + } + + }, + + removeDeletedTagsFromSummaryTag : function(deletedTags){ + var summaryTagContainer = jQuery('.detailTagList'); + for(var index in deletedTags) { + var tag = summaryTagContainer.find('.tag[data-id="'+deletedTags[index]+'"]'); + if(tag.length > 0){ + var showAllTagContainer = jQuery('.showAllTagContainer'); + var currentTagHolder = showAllTagContainer.find('.currentTag'); + var summaryLastTag = summaryTagContainer.find('.tag').filter(':last'); + var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next(); + summaryTagContainer.find('.moreTags').before(nextTag.clone(true)); + tag.remove(); + } + } + + if(summaryTagContainer.find(".tag").length <=0){ + summaryTagContainer.find(".noTagsPlaceHolder").removeClass("hide"); + } + + }, + + registerTagSearch : function() { + jQuery('#tag-search').instaFilta({ + targets : '#addTagContainer .existingTag .tag-item', + sections : '#addTagContainer .existingTag', + hideEmptySections : true, + beginsWith : false, + caseSensitive : false, + typeDelay : 0 + }); + }, + + postTagDeleteActions : function(deletedTagClone) { + var summaryTagContainer = jQuery('.detailTagList'); + var tagInstance = this.getComponentInstance('Vtiger_Tag_Js'); + var tagInfo = { + 'id' : deletedTagClone.data('id') + }; + tagInstance.removeTagsFromShowTagContainer(new Array(tagInfo)); + + if(summaryTagContainer.find('.tag').length <= 0 ) { + summaryTagContainer.find('.noTagsPlaceHolder').removeClass('hide'); + }else{ + var moreTagsEle = summaryTagContainer.find('.tagMoreCount'); + if(!moreTagsEle.closest('.moreTags').hasClass('hide')) { + var moreTagsCount = parseInt(moreTagsEle.text()); + moreTagsCount--; + moreTagsEle.text(moreTagsCount); + if(moreTagsCount <=0 ){ + moreTagsEle.closest('.moreTags').addClass('hide'); + } + } + } + }, + + + registerTagEvents : function() { + var self = this; + var tagContainer = jQuery('.tagContainer'); + + tagContainer.find('#addTagContainer .dropdown-menu').on('click',function(e){ + e.stopPropagation(); + }); + var tagInputEle = tagContainer.find('.newTags'); + var params = {tags : [], tokenSeparators: [","]}; + vtUtils.showSelect2ElementView(tagInputEle, params); + + var existinTagContainer = tagContainer.find('.existingTag'); + app.helper.showVerticalScroll(existinTagContainer); + + this.registerTagSearch(); + + jQuery('#saveTag').on('click', function(e){ + tagContainer.find('.dropdown-toggle').dropdown('toggle'); + var element = jQuery(e.currentTarget); + var createTagContainer = element.closest('.createTagContainer'); + var existingTagContainer = createTagContainer.find('.existingTag'); + var selectedExistingTags = new Array(); + var selectedTagElement = existingTagContainer.find('.tagSelector').filter(':checked').closest('li.tag-item'); + selectedTagElement.each(function(index, domEle){ + var ele = jQuery(domEle); + selectedExistingTags.push(ele.find('.tag').data('id')); + }); + var newTagEle = createTagContainer.find('input.newTags'); + var newTags = newTagEle.val(); + var tagsList = {}; + tagsList['new'] = newTags.split(','); + tagsList['existing'] = selectedExistingTags; + var visibility = createTagContainer.find('[name="visibility"]').val(); + var visibilityCheckBox = createTagContainer.find('[type="checkbox"][name="visibility"]'); + if(visibilityCheckBox.is(':checked')){ + visibility = visibilityCheckBox.val(); + } + self.saveTag({'tagsList':tagsList,'newTagType': visibility}).then(function(data){ + selectedTagElement.remove(); + newTagEle.select2('val',''); + }); + }); + + tagContainer.find('.cancelLink').on('click', function(e){ + tagContainer.find('.dropdown-toggle').dropdown('toggle'); + }); + + app.event.on('post.MassTag.save',function(e, modalContainerClone, data){ + var moreTagCount = parseInt(data.moreTagCount); + if(moreTagCount === 0) { + tagContainer.find('.tagMoreCount').closest('.moreTags').addClass('hide'); + } else if(moreTagCount > 0){ + tagContainer.find('.tagMoreCount').text(data.moreTagCount).closest('.moreTags').removeClass('hide'); + } + jQuery('.showAllTagContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); + jQuery('.viewAllTagsContainer').find('.currentTag').html(modalContainerClone.find('.currentTag').html()); + jQuery('.showAllTagContainer').find('.currentTagMenu').html(modalContainerClone.find('.currentTagMenu').html()); + var tagInstance = self.getComponentInstance('Vtiger_Tag_Js'); + tagInstance.addTagsToShowAllTagContianer(data.tags); + self.removeDeletedTagsFromSummaryTag(data.deleted); + self.addTagsToSummaryTag(data.tags); + }) + + tagContainer.find('.moreTags').on('click',function(e){ + //self.showAllTags(tagContainer); + app.event.trigger('Request.AllTag.show',tagContainer, {'record' : self.getRecordId()}); + }); + + tagContainer.on('click', '.deleteTag', function(e){ + var tag = jQuery(e.currentTarget).closest('.tag'); + self.deleteTag({'tag_id':tag.data('id')}).then(function(){ + var summaryTagContainer = jQuery('.detailTagList'); + var showAllTagContainer = jQuery('.showAllTagContainer'); + var currentTagHolder = showAllTagContainer.find('.currentTag'); + var summaryLastTag = summaryTagContainer.find('.tag').filter(':last'); + var nextTag = currentTagHolder.find('[data-id="'+ summaryLastTag.data('id') +'"]').next(); + + summaryTagContainer.find('.moreTags').before(nextTag.clone(true)); + tag.remove(); + + self.postTagDeleteActions(tag.clone(true)); + if(summaryTagContainer.find('.tag').length == 0){ + summaryTagContainer.closest('.tag-contents').addClass('hide'); + } + }) + }); + + jQuery('#addTagTriggerer').on('click', function(e){ + app.event.trigger('Request.MassTag.show',tagContainer, {'record' : self.getRecordId()}); + }); + }, + + /** * Function to register event for related list row click */ registerRelatedRowClickEvent: function() { - var detailContentsHolder = this.getContentHolder(); - detailContentsHolder.on('click','.relatedListEntryValues a',function(e){ - e.preventDefault(); - }); + var detailContentsHolder = this.getContentHolder(); + detailContentsHolder.on('click','.relatedListEntryValues a',function(e){ + e.preventDefault(); + }); detailContentsHolder.on('click','.listViewEntries',function(e){ - var selection = window.getSelection().toString(); - if(selection.length == 0) { - var targetElement = jQuery(e.target, jQuery(e.currentTarget)); - if(targetElement.hasClass('js-reference-display-value')) return; + var selection = window.getSelection().toString(); + if(selection.length == 0) { + var targetElement = jQuery(e.target, jQuery(e.currentTarget)); + if(targetElement.hasClass('js-reference-display-value')) return; if(targetElement.is('td:first-child') && (targetElement.children('input[type="checkbox"]').length > 0)) return; if(jQuery(e.target).is('input[type="checkbox"]')) return; - var elem = jQuery(e.currentTarget); - var recordUrl = elem.data('recordurl'); + var elem = jQuery(e.currentTarget); + var recordUrl = elem.data('recordurl'); if(typeof recordUrl != "undefined"){ - var params = app.convertUrlToDataParams(recordUrl); - //Display Mode to show details in overlay - params['mode'] = 'showDetailViewByMode'; - params['requestMode'] = 'full'; - params['displayMode'] = 'overlay'; - var parentRecordId = app.getRecordId(); - app.helper.showProgress(); - app.request.get({data: params}).then(function(err, response) { - app.helper.hideProgress(); + var params = app.convertUrlToDataParams(recordUrl); + //Display Mode to show details in overlay + params['mode'] = 'showDetailViewByMode'; + params['requestMode'] = 'full'; + params['displayMode'] = 'overlay'; + var parentRecordId = app.getRecordId(); + app.helper.showProgress(); + app.request.get({data: params}).then(function(err, response) { + app.helper.hideProgress(); var overlayParams = {'backdrop' : 'static', 'keyboard' : false}; - app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) { - var detailjs = Vtiger_Detail_Js.getInstanceByModuleName(params.module); - detailjs.showScroll(jQuery('.overlayDetail .modal-body')); - detailjs.setModuleName(params.module); - detailjs.setOverlayDetailMode(true); - detailjs.setContentHolder(container.find('.overlayDetail')); - detailjs.setDetailViewContainer(container.find('.overlayDetail')); - detailjs.registerOverlayEditEvent(); - detailjs.registerBasicEvents(); - detailjs.registerClickEvent(); - detailjs.registerHeaderAjaxEditEvents(container.find('.overlayDetailHeader')); - detailjs.registerEventToReloadRelatedListOnCloseOverlay(parentRecordId); - container.find('form#detailView').on('submit', function(e) { - e.preventDefault(); - }); - }); - }); - } - } - }); - }, - - registerEventToReloadRelatedListOnCloseOverlay: function(parentId) { - var self = this; - var overlayContainer = jQuery('#overlayPageContent'); - overlayContainer.one("click", ".close", function(e) { - self.loadRelatedListOfParent(parentId); - }); - }, - - loadRelatedListOfParent: function(parentRecordId) { - var self = this; - var relatedController = self.getRelatedController(); - relatedController.setParentId(parentRecordId); - if (relatedController) { - relatedController.loadRelatedList(); - } - }, - - - showOverlayEditView: function(recordUrl) { - var self = this; - var params = app.convertUrlToDataParams(recordUrl); - params['displayMode'] = 'overlay'; - var postData = self.getDefaultParams(); - for (var key in postData) { - if (postData[key]) { - if (key == 'relatedModule') { - params['returnrelatedModuleName'] = postData[key]; - } else { - params['return' + key] = postData[key]; - } - delete postData[key]; - } else { - delete postData[key]; - } - } - params['returnrecord'] = jQuery('[name="record_id"]').val(); - app.helper.showProgress(); - app.request.get({data: params}).then(function(err, response) { - app.helper.hideProgress(); - var overlayParams = {'backdrop': 'static', 'keyboard': false}; - app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) { - var height = jQuery(window).height() - jQuery('.app-fixed-navbar').height() - jQuery('.overlayFooter').height() - 80; - - var scrollParams = { - setHeight: height, - alwaysShowScrollbar: 2, - autoExpandScrollbar: true, - setTop: 0, - scrollInertia: 70 - } - app.helper.showVerticalScroll(jQuery('.editViewContents'), scrollParams); - self.registerOverlayEditEvents(params.module, container); - self.registerRelatedRecordSave(); - app.event.trigger('post.overLayEditView.loaded', jQuery('.overlayEdit')); - }); - }); - }, - registerOverlayEditEvent: function() { - var self = this; - jQuery('.editRelatedRecord').on('click', function() { - var editUrl = jQuery('.editRelatedRecord').val(); - self.showOverlayEditView(editUrl); - }); - }, - - registerRelatedRecordEdit: function(){ - var self = this; - var detailViewContainer = this.getContentHolder(); - detailViewContainer.on('click', 'a[name="relationEdit"]', function(e) { - e.stopImmediatePropagation(); - var element = jQuery(e.currentTarget); - var editUrl = element.data('url'); - self.showOverlayEditView(editUrl); - }); - }, - - getDetails: function() { - return jQuery('.details'); - }, - + app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) { + var detailjs = Vtiger_Detail_Js.getInstanceByModuleName(params.module); + detailjs.showScroll(jQuery('.overlayDetail .modal-body')); + detailjs.setModuleName(params.module); + detailjs.setOverlayDetailMode(true); + detailjs.setContentHolder(container.find('.overlayDetail')); + detailjs.setDetailViewContainer(container.find('.overlayDetail')); + detailjs.registerOverlayEditEvent(); + detailjs.registerBasicEvents(); + detailjs.registerClickEvent(); + detailjs.registerHeaderAjaxEditEvents(container.find('.overlayDetailHeader')); + detailjs.registerEventToReloadRelatedListOnCloseOverlay(parentRecordId); + container.find('form#detailView').on('submit', function(e) { + e.preventDefault(); + }); + }); + }); + } + } + }); + }, + + registerEventToReloadRelatedListOnCloseOverlay: function(parentId) { + var self = this; + var overlayContainer = jQuery('#overlayPageContent'); + overlayContainer.one("click", ".close", function(e) { + self.loadRelatedListOfParent(parentId); + }); + }, + + loadRelatedListOfParent: function(parentRecordId) { + var self = this; + var relatedController = self.getRelatedController(); + relatedController.setParentId(parentRecordId); + if (relatedController) { + relatedController.loadRelatedList(); + } + }, + + + showOverlayEditView: function(recordUrl) { + var self = this; + var params = app.convertUrlToDataParams(recordUrl); + params['displayMode'] = 'overlay'; + var postData = self.getDefaultParams(); + for (var key in postData) { + if (postData[key]) { + if (key == 'relatedModule') { + params['returnrelatedModuleName'] = postData[key]; + } else { + params['return' + key] = postData[key]; + } + delete postData[key]; + } else { + delete postData[key]; + } + } + params['returnrecord'] = jQuery('[name="record_id"]').val(); + app.helper.showProgress(); + app.request.get({data: params}).then(function(err, response) { + app.helper.hideProgress(); + var overlayParams = {'backdrop': 'static', 'keyboard': false}; + app.helper.loadPageContentOverlay(response, overlayParams).then(function(container) { + var height = jQuery(window).height() - jQuery('.app-fixed-navbar').height() - jQuery('.overlayFooter').height() - 80; + + var scrollParams = { + setHeight: height, + alwaysShowScrollbar: 2, + autoExpandScrollbar: true, + setTop: 0, + scrollInertia: 70 + } + app.helper.showVerticalScroll(jQuery('.editViewContents'), scrollParams); + self.registerOverlayEditEvents(params.module, container); + self.registerRelatedRecordSave(); + app.event.trigger('post.overLayEditView.loaded', jQuery('.overlayEdit')); + }); + }); + }, + registerOverlayEditEvent: function() { + var self = this; + jQuery('.editRelatedRecord').on('click', function() { + var editUrl = jQuery('.editRelatedRecord').val(); + self.showOverlayEditView(editUrl); + }); + }, + + registerRelatedRecordEdit: function(){ + var self = this; + var detailViewContainer = this.getContentHolder(); + detailViewContainer.on('click', 'a[name="relationEdit"]', function(e) { + e.stopImmediatePropagation(); + var element = jQuery(e.currentTarget); + var editUrl = element.data('url'); + self.showOverlayEditView(editUrl); + }); + }, + + getDetails: function() { + return jQuery('.details'); + }, + registerClickEvent: function() { - this.getContentHolder().on('click', '.inventoryLineItemDetails', function(e) { - jQuery('.inventoryLineItemDetails').popover({html: true}).show(); - }); - }, - showScroll: function(container) { - var params = { - setHeight: container.height, - alwaysShowScrollbar: 2, - autoExpandScrollbar: true, - setTop: 0, - scrollInertia: 70, - mouseWheel: {preventDefault: true} - }; - app.helper.showVerticalScroll(container, params); - }, - - recordImageRandomColors: function(){ - var color= jQuery('.recordImage').css('background-color'); - if(color === "rgba(0, 0, 0, 0)"){ - jQuery('.recordImage').css('background-color', app.helper.getRandomColor()); - } - }, - - getFieldValue : function(fieldName,sourceElement){ - var form = this.getForm(); - var fieldBasicData = form.find('.fieldBasicData').filter('[data-name="'+fieldName+'"]'); - return fieldBasicData.attr('data-value'); - }, - - registerQtipevent: function (tabItem) { - if(typeof tabItem == 'undefined'){ - var container = jQuery('.related-tabs.row'); - var scrollContent = container.find('.dropdown #relatedmenuList'); - app.helper.showVerticalScroll(scrollContent,{autoHideScrollbar: true}); - tabItem = container.find('.tab-item, .more-tab'); - } - var title; - jQuery(tabItem).each(function () { - title = jQuery(this).attr('title'); - jQuery(this).qtip({ - content: title, - hide: { - event:'click mouseleave', - }, - position: { - my: 'bottom center', - at: 'top left', - adjust: { - x: 30, - y: 10 - } - }, - style: { - classes: 'qtip-dark' - } - }); - }); - }, - - - registerEvents : function() { - this._super(); - this.registerEventsForRelatedList(); - var detailContentsHolder = this.getContentHolder(); - var self = this; - this.registerSendSmsSubmitEvent(); - detailContentsHolder.on('click','.viewThread', function(e){ + this.getContentHolder().on('click', '.inventoryLineItemDetails', function(e) { + jQuery('.inventoryLineItemDetails').popover({html: true}).show(); + }); + }, + showScroll: function(container) { + var params = { + setHeight: container.height, + alwaysShowScrollbar: 2, + autoExpandScrollbar: true, + setTop: 0, + scrollInertia: 70, + mouseWheel: {preventDefault: true} + }; + app.helper.showVerticalScroll(container, params); + }, + + recordImageRandomColors: function(){ + var color= jQuery('.recordImage').css('background-color'); + if(color === "rgba(0, 0, 0, 0)"){ + jQuery('.recordImage').css('background-color', app.helper.getRandomColor()); + } + }, + + getFieldValue : function(fieldName,sourceElement){ + var form = this.getForm(); + var fieldBasicData = form.find('.fieldBasicData').filter('[data-name="'+fieldName+'"]'); + return fieldBasicData.attr('data-value'); + }, + + registerQtipevent: function (tabItem) { + if(typeof tabItem == 'undefined'){ + var container = jQuery('.related-tabs.row'); + var scrollContent = container.find('.dropdown #relatedmenuList'); + app.helper.showVerticalScroll(scrollContent,{autoHideScrollbar: true}); + tabItem = container.find('.tab-item, .more-tab'); + } + var title; + jQuery(tabItem).each(function () { + title = jQuery(this).attr('title'); + jQuery(this).qtip({ + content: title, + hide: { + event:'click mouseleave', + }, + position: { + my: 'bottom center', + at: 'top left', + adjust: { + x: 30, + y: 10 + } + }, + style: { + classes: 'qtip-dark' + } + }); + }); + }, + + + registerEvents : function() { + this._super(); + this.registerEventsForRelatedList(); + var detailContentsHolder = this.getContentHolder(); + var self = this; + this.registerSendSmsSubmitEvent(); + detailContentsHolder.on('click','.viewThread', function(e){ var currentTarget = jQuery(e.currentTarget); var currentTargetParent = currentTarget.parent(); var commentActionsBlock = currentTarget.closest('.commentActions'); @@ -2723,7 +2723,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ currentTargetParent.hide(); }); }); - detailContentsHolder.on('click','.hideThread', function(e){ + detailContentsHolder.on('click','.hideThread', function(e){ var currentTarget = jQuery(e.currentTarget); var currentTargetParent = currentTarget.parent(); var commentActionsBlock = currentTarget.closest('.commentActions'); @@ -2732,138 +2732,140 @@ Vtiger.Class("Vtiger_Detail_Js",{ currentTargetParent.hide(); commentActionsBlock.find('.viewThreadBlock').show(); }); - detailContentsHolder.on('click','.detailViewThread',function(e){ + detailContentsHolder.on('click','.detailViewThread',function(e){ var recentCommentsTab = self.getTabByLabel(self.detailViewRecentCommentsTabLabel); var commentId = jQuery(e.currentTarget).closest('.singleComment').find('.commentInfoHeader').data('commentid'); recentCommentsTab.trigger('click',{'commentid':commentId}); }); - this.registerStarToggle(); - this.registerTagEvents(); - app.event.on("post.mail.sent",function(event,data){ - var resultEle = jQuery(data); - var success = resultEle.find('.mailSentSuccessfully'); - if(success.length > 0){ - var relatedLoad = success.data("relatedload"); - if(relatedLoad == 1){ - var pageNumber = jQuery('[name="currentPageNum"]').val(); - window.app.controller().loadRelatedListRecords({page: pageNumber}); - } - } - }); - detailContentsHolder.on('click','.moreRecentUpdates', function() { - app.helper.showProgress(); + this.registerStarToggle(); + this.registerTagEvents(); + app.event.on("post.mail.sent",function(event,data){ + var resultEle = jQuery(data); + var success = resultEle.find('.mailSentSuccessfully'); + if(success.length > 0){ + var relatedLoad = success.data("relatedload"); + if(relatedLoad == 1){ + var pageNumber = jQuery('[name="currentPageNum"]').val(); + window.app.controller().loadRelatedListRecords({page: pageNumber}); + } else { + app.helper.showModal(data); + } + } + }); + detailContentsHolder.on('click','.moreRecentUpdates', function() { + app.helper.showProgress(); var currentPage = jQuery("#updatesCurrentPage").val(); var recordId = jQuery("#recordId").val(); var nextPage = parseInt(currentPage) + 1; var url = "index.php?module=" + app.getModuleName() + "&view=Detail&record=" + recordId + "&mode=showRecentActivities&page=" - + nextPage + "&limit=5&tab_label=LBL_UPDATES"; - var postParams = app.convertUrlToDataParams(url); - - app.request.post({data:postParams}).then(function(err,data){ - jQuery("#updatesCurrentPage").remove(); - jQuery("#moreLink").remove(); - jQuery("#more_button").remove(); - data = jQuery(data).removeClass("recentActivitiesContainer"); - jQuery('#updates').append(data); - app.helper.hideProgress(); - }); - - }); - this.updateRelatedRecordsCount(); - //RegisterBasicEvents for Related-List overlay's - this.registerBasicEvents(); - this.registerHeaderAjaxEditEvents(); - detailContentsHolder.on('click','.detailViewSaveComment', function(e){ - var element = jQuery(e.currentTarget); - if(!element.is(":disabled")) { - var dataObj = self.saveComment(e); - dataObj.then(function(){ - var commentsContainer = detailContentsHolder.find("[data-name='ModComments']"); - self.loadWidget(commentsContainer).then(function() { - element.removeAttr('disabled'); + + nextPage + "&limit=5&tab_label=LBL_UPDATES"; + var postParams = app.convertUrlToDataParams(url); + + app.request.post({data:postParams}).then(function(err,data){ + jQuery("#updatesCurrentPage").remove(); + jQuery("#moreLink").remove(); + jQuery("#more_button").remove(); + data = jQuery(data).removeClass("recentActivitiesContainer"); + jQuery('#updates').append(data); + app.helper.hideProgress(); + }); + + }); + this.updateRelatedRecordsCount(); + //RegisterBasicEvents for Related-List overlay's + this.registerBasicEvents(); + this.registerHeaderAjaxEditEvents(); + detailContentsHolder.on('click','.detailViewSaveComment', function(e){ + var element = jQuery(e.currentTarget); + if(!element.is(":disabled")) { + var dataObj = self.saveComment(e); + dataObj.then(function(){ + var commentsContainer = detailContentsHolder.find("[data-name='ModComments']"); + self.loadWidget(commentsContainer).then(function() { + element.removeAttr('disabled'); app.event.trigger('post.summarywidget.load',commentsContainer); var indexInstance = Vtiger_Index_Js.getInstance(); indexInstance.registerMultiUpload(); - }); - }); - } - }); - - detailContentsHolder.on('click','.saveComment', function(e){ - var element = jQuery(e.currentTarget); - if(!element.is(":disabled")) { - var currentTarget = jQuery(e.currentTarget); - var mode = currentTarget.data('mode'); - var dataObj = self.saveComment(e); - dataObj.then(function(data){ - var closestAddCommentBlock = currentTarget.closest('.addCommentBlock'); - var commentTextAreaElement = closestAddCommentBlock.find('.commentcontent'); - var commentInfoBlock = currentTarget.closest('.singleComment'); - commentTextAreaElement.val(''); - closestAddCommentBlock.find('#is_private').removeAttr('checked'); - if(mode == "add"){ - var commentId = data['id']; - var commentHtml = self.getCommentUI(commentId); - commentHtml.then(function(data){ - var html; - if(jQuery(data).hasClass('privateComment')) { - html = '<ul class="unstyled"><li class="commentDetails" style="background: #fff9ea;">'+data+'</li></ul>'; - } else { - html = '<ul class="unstyled"><li class="commentDetails">'+data+'</li></ul>'; - } - var commentBlock = closestAddCommentBlock.closest('.commentDetails'); - var detailContentsHolder = self.getContentHolder(); - var noCommentsMsgContainer = jQuery('.noCommentsMsgContainer',detailContentsHolder); - noCommentsMsgContainer.remove(); - if(commentBlock.length > 0){ - closestAddCommentBlock.remove(); - var childComments = commentBlock.find('ul'); - if(childComments.length <= 0){ - var currentChildCommentsCount = commentInfoBlock.find('.viewThreadBlock').data('childCommentsCount'); - var newChildCommentCount = currentChildCommentsCount + 1; - commentInfoBlock.find('.childCommentsCount').text(newChildCommentCount); - var parentCommentId = commentInfoBlock.find('.commentInfoHeader').data('commentid'); - self.getChildComments(parentCommentId).then(function(responsedata){ - jQuery(responsedata).appendTo(commentBlock); - commentInfoBlock.find('.viewThreadBlock').hide(); - commentInfoBlock.find('.hideThreadBlock').show(); - }); - }else { - jQuery(html).appendTo(commentBlock); - } - } else { - jQuery(html).prependTo(closestAddCommentBlock.closest('.commentContainer').find('.commentsList')); - commentTextAreaElement.css({height : '71px'}); - } - commentInfoBlock.find('.commentActionsContainer').show(); - }); - }else if(mode == "edit"){ - var modifiedTime = commentInfoBlock.find('.commentModifiedTime'); - var commentInfoContent = commentInfoBlock.find('.commentInfoContent'); - var commentEditStatus = commentInfoBlock.find('[name="editStatus"]'); - var commentReason = commentInfoBlock.find('[name="editReason"]'); - commentInfoContent.html(data.commentcontent); - commentReason.html(data.reasontoedit); - modifiedTime.text(data.modifiedtime); - modifiedTime.attr('title',data.modifiedtimetitle) - if(commentEditStatus.hasClass('hide')){ - commentEditStatus.removeClass('hide'); - } + }); + }); + } + }); + + detailContentsHolder.on('click','.saveComment', function(e){ + var element = jQuery(e.currentTarget); + if(!element.is(":disabled")) { + var currentTarget = jQuery(e.currentTarget); + var mode = currentTarget.data('mode'); + var dataObj = self.saveComment(e); + dataObj.then(function(data){ + var closestAddCommentBlock = currentTarget.closest('.addCommentBlock'); + var commentTextAreaElement = closestAddCommentBlock.find('.commentcontent'); + var commentInfoBlock = currentTarget.closest('.singleComment'); + commentTextAreaElement.val(''); + closestAddCommentBlock.find('#is_private').removeAttr('checked'); + if(mode == "add"){ + var commentId = data['id']; + var commentHtml = self.getCommentUI(commentId); + commentHtml.then(function(data){ + var html; + if(jQuery(data).hasClass('privateComment')) { + html = '<ul class="unstyled"><li class="commentDetails" style="background: #fff9ea;">'+data+'</li></ul>'; + } else { + html = '<ul class="unstyled"><li class="commentDetails">'+data+'</li></ul>'; + } + var commentBlock = closestAddCommentBlock.closest('.commentDetails'); + var detailContentsHolder = self.getContentHolder(); + var noCommentsMsgContainer = jQuery('.noCommentsMsgContainer',detailContentsHolder); + noCommentsMsgContainer.remove(); + if(commentBlock.length > 0){ + closestAddCommentBlock.remove(); + var childComments = commentBlock.find('ul'); + if(childComments.length <= 0){ + var currentChildCommentsCount = commentInfoBlock.find('.viewThreadBlock').data('childCommentsCount'); + var newChildCommentCount = currentChildCommentsCount + 1; + commentInfoBlock.find('.childCommentsCount').text(newChildCommentCount); + var parentCommentId = commentInfoBlock.find('.commentInfoHeader').data('commentid'); + self.getChildComments(parentCommentId).then(function(responsedata){ + jQuery(responsedata).appendTo(commentBlock); + commentInfoBlock.find('.viewThreadBlock').hide(); + commentInfoBlock.find('.hideThreadBlock').show(); + }); + }else { + jQuery(html).appendTo(commentBlock); + } + } else { + jQuery(html).prependTo(closestAddCommentBlock.closest('.commentContainer').find('.commentsList')); + commentTextAreaElement.css({height : '71px'}); + } + commentInfoBlock.find('.commentActionsContainer').show(); + }); + }else if(mode == "edit"){ + var modifiedTime = commentInfoBlock.find('.commentModifiedTime'); + var commentInfoContent = commentInfoBlock.find('.commentInfoContent'); + var commentEditStatus = commentInfoBlock.find('[name="editStatus"]'); + var commentReason = commentInfoBlock.find('[name="editReason"]'); + commentInfoContent.html(data.commentcontent); + commentReason.html(data.reasontoedit); + modifiedTime.text(data.modifiedtime); + modifiedTime.attr('title',data.modifiedtimetitle) + if(commentEditStatus.hasClass('hide')){ + commentEditStatus.removeClass('hide'); + } if(data.reasontoedit != ""){ commentInfoBlock.find('.editReason').removeClass('hide') } - commentInfoContent.show(); - commentInfoBlock.find('.commentActionsContainer').show(); - closestAddCommentBlock.remove(); - } - element.removeAttr('disabled'); + commentInfoContent.show(); + commentInfoBlock.find('.commentActionsContainer').show(); + closestAddCommentBlock.remove(); + } + element.removeAttr('disabled'); var indexInstance = Vtiger_Index_Js.getInstance(); indexInstance.registerMultiUpload(); - }); - } + }); + } }); - - detailContentsHolder.on('click','.editComment', function(e){ + + detailContentsHolder.on('click','.editComment', function(e){ self.removeCommentBlockIfExists(); var currentTarget = jQuery(e.currentTarget); var commentInfoBlock = currentTarget.closest('.singleComment'); @@ -2872,94 +2874,94 @@ Vtiger.Class("Vtiger_Detail_Js",{ var editCommentBlock = self.getEditCommentBlock(); editCommentBlock.find('.commentcontent').text(commentInfoContent.text()); editCommentBlock.find('[name="reasonToEdit"]').val(commentReason.text()); - editCommentBlock.find('[name="is_private"]').val(commentInfoBlock.find('[name="is_private"]').val()); + editCommentBlock.find('[name="is_private"]').val(commentInfoBlock.find('[name="is_private"]').val()); /*commentInfoContent.hide(); commentInfoBlock.find('.commentActionsContainer').hide();*/ editCommentBlock.appendTo(commentInfoBlock).show(); }); - - detailContentsHolder.on('click','.closeCommentBlock', function(e){ + + detailContentsHolder.on('click','.closeCommentBlock', function(e){ var currentTarget = jQuery(e.currentTarget); var commentInfoBlock = currentTarget.closest('.singleComment'); commentInfoBlock.find('.commentActionsContainer').show(); commentInfoBlock.find('.commentInfoContent').show(); self.removeCommentBlockIfExists(); }); - - detailContentsHolder.on('click','.replyComment', function(e){ + + detailContentsHolder.on('click','.replyComment', function(e){ self.removeCommentBlockIfExists(); var currentTarget = jQuery(e.currentTarget); var commentInfoBlock = currentTarget.closest('.singleComment'); - var message = commentInfoBlock.find('.commentInfoContent').text(); - var commentInfoHeader = commentInfoBlock.find('.commentInfoHeader'); - var commentId = commentInfoHeader.data('commentid'); + var message = commentInfoBlock.find('.commentInfoContent').text(); + var commentInfoHeader = commentInfoBlock.find('.commentInfoHeader'); + var commentId = commentInfoHeader.data('commentid'); var addCommentBlock = self.getCommentBlock(); /*commentInfoBlock.find('.commentActionsContainer').hide();*/ addCommentBlock.appendTo(commentInfoBlock).show(); - - var params = { - 'module': app.getModuleName(), - 'action': 'MentionedUsers', - 'message':message, - 'crmid':commentId - }; - - app.request.post({data: params}).then( - function(err, data) { - if (data) { - commentArea = commentInfoBlock.find('.commentcontent'); - commentArea.val(data.usersString); - commentArea.focus(); - var strLength= commentArea.val().length * 2; - commentArea[0].setSelectionRange(strLength, strLength); - } - }); - }); - - detailContentsHolder.on('click','.moreRecentComments', function(){ + + var params = { + 'module': app.getModuleName(), + 'action': 'MentionedUsers', + 'message':message, + 'crmid':commentId + }; + + app.request.post({data: params}).then( + function(err, data) { + if (data) { + commentArea = commentInfoBlock.find('.commentcontent'); + commentArea.val(data.usersString); + commentArea.focus(); + var strLength= commentArea.val().length * 2; + commentArea[0].setSelectionRange(strLength, strLength); + } + }); + }); + + detailContentsHolder.on('click','.moreRecentComments', function(){ var recentCommentsTab = self.getTabByLabel(self.detailViewRecentCommentsTabLabel); recentCommentsTab.trigger('click'); }); - - detailContentsHolder.on('click','.moreRecentActivities', function(){ + + detailContentsHolder.on('click','.moreRecentActivities', function(){ var recentActivitiesTab = self.getTabByLabel(self.detailViewRecentActivitiesTabLabel); recentActivitiesTab.trigger('click'); }); - - detailContentsHolder.on('click', '.moreRecentDocuments', function () { - var recentDocumentsTab = self.getTabByLabel(self.detailViewRecentDocumentsLabel); - recentDocumentsTab.trigger('click'); - }); - app.event.on('post.summarywidget.load',function(event,widgetContainer){ - vtUtils.applyFieldElementsView(widgetContainer); - + detailContentsHolder.on('click', '.moreRecentDocuments', function () { + var recentDocumentsTab = self.getTabByLabel(self.detailViewRecentDocumentsLabel); + recentDocumentsTab.trigger('click'); + }); + + app.event.on('post.summarywidget.load',function(event,widgetContainer){ + vtUtils.applyFieldElementsView(widgetContainer); + //For Rollup Comments if(jQuery('#rollupcomments').length > 0 && widgetContainer.data('name') == 'ModComments') { widgetContainer.off('switchChange.bootstrapSwitch').on('switchChange.bootstrapSwitch', '#rollupcomments', function(e){ app.helper.showProgress(); self.toggleRollupComments(e); }); - + if(jQuery('#rollupcomments').attr('rollup-status') == 1) { jQuery('#rollupcomments').bootstrapSwitch('state', true, true); }else{ jQuery('#rollupcomments').bootstrapSwitch('state', false, true); } - + } - var vtigerInstance = Vtiger_Index_Js.getInstance(); - vtUtils.enableTooltips(); + var vtigerInstance = Vtiger_Index_Js.getInstance(); + vtUtils.enableTooltips(); //END - }); + }); //For Rollup Comments if(jQuery('#rollupcomments').length > 0) { detailContentsHolder.on('switchChange.bootstrapSwitch', '#rollupcomments', function(e){ app.helper.showProgress(); self.toggleRollupComments(e); }); - + if(jQuery('#rollupcomments').attr('rollup-status') == 1) { jQuery('#rollupcomments').bootstrapSwitch('state', true, true); @@ -2970,22 +2972,22 @@ Vtiger.Class("Vtiger_Detail_Js",{ } //END - this.registerRelatedRowClickEvent(); - this.registerSummaryViewContainerEvents(this.getContentHolder()); - - //prevent detail view ajax form submissions - jQuery('form#detailView, form#headerForm').on('submit', function(e) { - e.preventDefault(); - }); - + this.registerRelatedRowClickEvent(); + this.registerSummaryViewContainerEvents(this.getContentHolder()); + + //prevent detail view ajax form submissions + jQuery('form#detailView, form#headerForm').on('submit', function(e) { + e.preventDefault(); + }); + if(typeof jQuery.fn.sadropdown === 'function') { jQuery('.widgetContainer_documents').find('.dropdown-toggle').sadropdown({ relativeTo: '#detailView' }); } - }, - - /** + }, + + /** * Function to register event for setting up picklistdependency * for a module if exist on change of picklist value */ @@ -3005,7 +3007,7 @@ Vtiger.Class("Vtiger_Detail_Js",{ for(var i=0;i<sourcePicklists.length;i++){ sourcePickListNames += '[name="'+sourcePicklists[i]+'"],'; } - sourcePickListNames = sourcePickListNames.replace(/(^,)|(,$)/g, ""); + sourcePickListNames = sourcePickListNames.replace(/(^,)|(,$)/g, ""); container.on('change', sourcePickListNames, function(e) { var currentElement = jQuery(e.currentTarget); var sourcePicklistname = currentElement.attr('name'); @@ -3026,17 +3028,17 @@ Vtiger.Class("Vtiger_Detail_Js",{ if(targetPickList.length <= 0){ return; } - + //On change of SourceField value, If TargetField value is not there in mapping, make user to select the new target value also. var selectedValue = targetPickList.data('value'); if(jQuery.inArray(selectedValue, targetPickListMap) == -1) { thisInstance.targetPicklistChange = true; thisInstance.targetPicklist = targetPickList.closest('td'); - thisInstance.sourcePicklistname = sourcePicklistname; + thisInstance.sourcePicklistname = sourcePicklistname; } else { thisInstance.targetPicklistChange = false; thisInstance.targetPicklist = false; - thisInstance.sourcePicklistname = false; + thisInstance.sourcePicklistname = false; } }) }); @@ -3062,55 +3064,55 @@ Vtiger.Class("Vtiger_Detail_Js",{ } }); }, - - registerHeaderAjaxEditEvents : function(contentHolder) { - var self = this; - - if(typeof contentHolder === 'undefined') { - contentHolder = jQuery('.detailview-header'); - } - + + registerHeaderAjaxEditEvents : function(contentHolder) { + var self = this; + + if(typeof contentHolder === 'undefined') { + contentHolder = jQuery('.detailview-header'); + } + contentHolder.on('click','.recordBasicInfo .fieldLabel .editAction', function(e){ var currentTarget = jQuery(e.currentTarget); currentTarget.hide(); var currentContainerElement = currentTarget.closest('.headerAjaxEdit'); self.ajaxEditHandling(currentContainerElement); }); - - this.registerAjaxEditSaveEvent(contentHolder); - this.registerAjaxEditCancelEvent(contentHolder); - this.registerClearReferenceSelectionEvent(contentHolder); - this.registerPostAjaxSaveEvent(); - }, - - //Events common for DetailView and OverlayDetailView - registerBasicEvents: function(){ - var self = this; - this.registerAjaxEditEvent(); - this.registerAjaxEditSaveEvent(); - this.registerAjaxEditCancelEvent(); - this.recordImageRandomColors(); - this.registerQtipevent(); - - app.event.on("post.RecordList.click", function(event, data) { - var responseData = JSON.parse(data); - var idList = new Array(); - for (var id in responseData) { - idList.push(id); - } - app.helper.hideModal(); - var relatedController = self.getRelatedController(); - if (relatedController) { - relatedController.addRelations(idList).then(function() { - relatedController.loadRelatedList(); - }); - } - }); - this.registerBlockAnimationEvent(); + + this.registerAjaxEditSaveEvent(contentHolder); + this.registerAjaxEditCancelEvent(contentHolder); + this.registerClearReferenceSelectionEvent(contentHolder); + this.registerPostAjaxSaveEvent(); + }, + + //Events common for DetailView and OverlayDetailView + registerBasicEvents: function(){ + var self = this; + this.registerAjaxEditEvent(); + this.registerAjaxEditSaveEvent(); + this.registerAjaxEditCancelEvent(); + this.recordImageRandomColors(); + this.registerQtipevent(); + + app.event.on("post.RecordList.click", function(event, data) { + var responseData = JSON.parse(data); + var idList = new Array(); + for (var id in responseData) { + idList.push(id); + } + app.helper.hideModal(); + var relatedController = self.getRelatedController(); + if (relatedController) { + relatedController.addRelations(idList).then(function() { + relatedController.loadRelatedList(); + }); + } + }); + this.registerBlockAnimationEvent(); this.registerBlockStatusCheckOnLoad(); - this.registerClearReferenceSelectionEvent(); - //register event for picklist dependency setup - this.registerEventForPicklistDependencySetup(this.getForm()); - vtUtils.enableTooltips(); - }, + this.registerClearReferenceSelectionEvent(); + //register event for picklist dependency setup + this.registerEventForPicklistDependencySetup(this.getForm()); + vtUtils.enableTooltips(); + }, }); diff --git a/layouts/v7/modules/Vtiger/resources/Vtiger.js b/layouts/v7/modules/Vtiger/resources/Vtiger.js index 7e92943b8..a7ca56d6d 100644 --- a/layouts/v7/modules/Vtiger/resources/Vtiger.js +++ b/layouts/v7/modules/Vtiger/resources/Vtiger.js @@ -7,14 +7,14 @@ * All Rights Reserved. *************************************************************************************/ Vtiger.Class('Vtiger_Index_Js', { - files: [], - hideNC: true, - - getInstance : function() { - return new Vtiger_Index_Js(); - }, - - /** + files: [], + hideNC: true, + + getInstance : function() { + return new Vtiger_Index_Js(); + }, + + /** * Function to show the content of a file in an iframe * @param {type} e * @param {type} recordId @@ -31,12 +31,12 @@ Vtiger.Class('Vtiger_Index_Js', { }; app.request.post({data:params}).then(function(err, res){ app.helper.showModal(res); - jQuery('.filePreview .preview-area').height(jQuery(window).height()-143); + jQuery('.filePreview .preview-area').height(jQuery(window).height()-143); }); } }, - - /** + + /** * Function to show email preview in popup */ showEmailPreview : function(recordId, parentId) { @@ -48,8 +48,8 @@ Vtiger.Class('Vtiger_Index_Js', { params['record'] = recordId; params['parentId'] = parentId; params['relatedLoad'] = true; - - var callback = function(data){ + + var callback = function(data){ emailPreviewClass = app.getModuleSpecificViewClass('EmailPreview','Vtiger'); _controller = new window[emailPreviewClass](); _controller.registerEventsForActionButtons(); @@ -64,11 +64,11 @@ Vtiger.Class('Vtiger_Index_Js', { var url = jQuery(e.currentTarget).attr('href'); window.open(url, '_blank'); }); - } + } popupInstance.showPopup(params,null,callback); }, - - /** + + /** * Function to show compose email popup based on number of * email fields in given module,if email fields are more than * one given option for user to select email for whom mail should @@ -79,106 +79,106 @@ Vtiger.Class('Vtiger_Index_Js', { */ showComposeEmailPopup : function(params, cb){ - var currentModule = "Emails"; - app.helper.showProgress(); - app.helper.checkServerConfig(currentModule).then(function(data){ - if(data == true){ - app.request.post({data:params}).then(function(err,data){ - if(err === null){ - data = jQuery(data); - var form = data.find('#SendEmailFormStep1'); - var emailFields = form.find('.emailField'); - var length = emailFields.length; - var emailEditInstance = new Emails_MassEdit_Js(); - - var prefsNeedToUpdate = form.find('#prefsNeedToUpdate').val(); - if(prefsNeedToUpdate && length > 1) { - app.helper.hideProgress(); - app.helper.showModal(data); - emailEditInstance.registerEmailFieldSelectionEvent(); - return true; - } - - if(length > 1) { - var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked'); - if(saveRecipientPref) { - var params = form.serializeFormData(); - emailEditInstance.showComposeEmailForm(params).then(function(response) { - jQuery(document).on('shown.bs.modal', function() { - if (typeof cb === 'function') cb(response); - }); - }); - }else { - app.helper.hideProgress(); - app.helper.showModal(data); - emailEditInstance.registerEmailFieldSelectionEvent(); - } - }else{ - emailFields.attr('checked','checked'); - var params = form.serialize(); - emailEditInstance.showComposeEmailForm(params).then(function(response) { - jQuery(document).on('shown.bs.modal', function() { - if (typeof cb === 'function') cb(response); - }); - }); - } - } - }); - } else { - app.helper.showAlertBox({'message':app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION')}); - } - }); + var currentModule = "Emails"; + app.helper.showProgress(); + app.helper.checkServerConfig(currentModule).then(function(data){ + if(data == true){ + app.request.post({data:params}).then(function(err,data){ + if(err === null){ + data = jQuery(data); + var form = data.find('#SendEmailFormStep1'); + var emailFields = form.find('.emailField'); + var length = emailFields.length; + var emailEditInstance = new Emails_MassEdit_Js(); + + var prefsNeedToUpdate = form.find('#prefsNeedToUpdate').val(); + if(prefsNeedToUpdate && length > 1) { + app.helper.hideProgress(); + app.helper.showModal(data); + emailEditInstance.registerEmailFieldSelectionEvent(); + return true; + } + + if(length > 1) { + var saveRecipientPref = form.find('#saveRecipientPrefs').is(':checked'); + if(saveRecipientPref) { + var params = form.serializeFormData(); + emailEditInstance.showComposeEmailForm(params).then(function(response) { + jQuery(document).on('shown.bs.modal', function() { + if (typeof cb === 'function') cb(response); + }); + }); + }else { + app.helper.hideProgress(); + app.helper.showModal(data); + emailEditInstance.registerEmailFieldSelectionEvent(); + } + }else{ + emailFields.attr('checked','checked'); + var params = form.serialize(); + emailEditInstance.showComposeEmailForm(params).then(function(response) { + jQuery(document).on('shown.bs.modal', function() { + if (typeof cb === 'function') cb(response); + }); + }); + } + } + }); + } else { + app.helper.showAlertBox({'message':app.vtranslate('JS_EMAIL_SERVER_CONFIGURATION')}); + } + }); }, - - showRecipientPreferences: function (module) { - var params = { - module: module, - view: "RecipientPreferences", - }; - - var callback = function (data) { - var form = jQuery(data).find('#recipientsForm'); - if (form.find('#multiEmailContainer').height() > 300) { - app.helper.showVerticalScroll(form.find('#multiEmailContainer'),{ + + showRecipientPreferences: function (module) { + var params = { + module: module, + view: "RecipientPreferences", + }; + + var callback = function (data) { + var form = jQuery(data).find('#recipientsForm'); + if (form.find('#multiEmailContainer').height() > 300) { + app.helper.showVerticalScroll(form.find('#multiEmailContainer'),{ setHeight: '300px', - autoHideScrollbar: false, - }); - } - - form.on('submit', function (e) { - e.preventDefault(); - form.find('.savePreference').attr('disabled', true); - var params = form.serialize(); - app.helper.hideModal(); - app.helper.showProgress(); - app.request.post({"data":params}).then(function (err,data) { - if (err == null) { - app.helper.hideProgress(); - app.helper.showSuccessNotification({"message":''}); - } else { - app.helper.showErrorNotification({"message":''}); - } - }); - }); - } - - app.helper.showProgress(); - app.request.post({"data":params}).then(function (err,data) { - if(err == null){ - app.helper.hideProgress(); - app.helper.showModal(data,{"cb":callback}); - } - }); - }, - - /** - * Function to show record address in Google Map - * @param {type} e - * @returns {undefined} - */ - showMap : function(e) { - var currentElement = jQuery(e); - var params1 = { + autoHideScrollbar: false, + }); + } + + form.on('submit', function (e) { + e.preventDefault(); + form.find('.savePreference').attr('disabled', true); + var params = form.serialize(); + app.helper.hideModal(); + app.helper.showProgress(); + app.request.post({"data":params}).then(function (err,data) { + if (err == null) { + app.helper.hideProgress(); + app.helper.showSuccessNotification({"message":''}); + } else { + app.helper.showErrorNotification({"message":''}); + } + }); + }); + } + + app.helper.showProgress(); + app.request.post({"data":params}).then(function (err,data) { + if(err == null){ + app.helper.hideProgress(); + app.helper.showModal(data,{"cb":callback}); + } + }); + }, + + /** + * Function to show record address in Google Map + * @param {type} e + * @returns {undefined} + */ + showMap : function(e) { + var currentElement = jQuery(e); + var params1 = { 'module' : 'Google', 'action' : 'MapAjax', 'mode' : 'getLocation', @@ -208,27 +208,27 @@ Vtiger.Class('Vtiger_Index_Js', { }); } }); - }, - - /** + }, + + /** * Function registers event for Calendar Reminder popups */ registerActivityReminder : function() { - var activityReminderInterval = app.getActivityReminderInterval(); - if(activityReminderInterval != '') { + var activityReminderInterval = app.getActivityReminderInterval(); + if(activityReminderInterval != '') { var cacheActivityReminder = app.storage.get('activityReminder', 0); var currentTime = new Date().getTime()/1000; - var nextActivityReminderCheck = app.storage.get('nextActivityReminderCheckTime', 0); - //If activity Reminder Changed, nextActivityReminderCheck should reset + var nextActivityReminderCheck = app.storage.get('nextActivityReminderCheckTime', 0); + //If activity Reminder Changed, nextActivityReminderCheck should reset if(activityReminderInterval != cacheActivityReminder) { nextActivityReminderCheck = 0; } if(currentTime >= nextActivityReminderCheck) { Vtiger_Index_Js.requestReminder(); } else { - var nextInterval = nextActivityReminderCheck - currentTime; - setTimeout(function() {Vtiger_Index_Js.requestReminder()}, nextInterval*1000); - } + var nextInterval = nextActivityReminderCheck - currentTime; + setTimeout(function() {Vtiger_Index_Js.requestReminder()}, nextInterval*1000); + } } }, @@ -237,708 +237,708 @@ Vtiger.Class('Vtiger_Index_Js', { */ requestReminder : function() { var activityReminder = app.getActivityReminderInterval(); - if(!activityReminder);return; + if(!activityReminder);return; var currentTime = new Date().getTime()/1000; //requestReminder function should call after activityreminder popup interval setTimeout(function() {Vtiger_Index_Js.requestReminder()}, activityReminder*1000); app.storage.set('activityReminder', activityReminder); //setting next activity reminder check time app.storage.set('nextActivityReminderCheckTime', currentTime + parseInt(activityReminder)); - - app.request.post({ - 'data' : { - 'module' : 'Calendar', - 'action' : 'ActivityReminder', - 'mode' : 'getReminders' - } - }).then(function(e, res) { - if(!res.hasOwnProperty('result')) { - for(i=0; i< res.length; i++) { - var record = res[i]; + + app.request.post({ + 'data' : { + 'module' : 'Calendar', + 'action' : 'ActivityReminder', + 'mode' : 'getReminders' + } + }).then(function(e, res) { + if(!res.hasOwnProperty('result')) { + for(i=0; i< res.length; i++) { + var record = res[i]; if(typeof record == 'object') { Vtiger_Index_Js.showReminderPopup(record); } - } - } - }); + } + } + }); }, /** * Function display the Reminder popup */ showReminderPopup : function(record) { - var notifyParams = { - 'title' : record.activitytype + ' - ' + - '<a target="_blank" href="index.php?module=Calendar&view=Detail&record='+record.id+'">'+record.subject+'</a> '+ - '<i id="reminder-postpone-'+record.id+'" title="'+app.vtranslate('JS_POSTPONE')+'" class="cursorPointer fa fa-clock-o"></i>', - 'message' : '<div class="col-sm-12">'+ - '<div class="row">'+ - '<div class="col-sm-12 font13px">'+ - app.vtranslate('JS_START_DATE_TIME') + ' : ' + record.date_start+ - '</div>'+ - '<div class="col-sm-12 font13px">'+ - app.vtranslate('JS_END_DATE_TIME') + ' : ' + record.due_date+ - '</div>'+ - '</div>'+ - '</div>' - }; - var settings = { - 'element' : 'body', - 'type' : 'danger', - 'delay' : 0 - }; - - jQuery.notify(notifyParams, settings); - jQuery('#reminder-postpone-'+record.id).on('click', function(e) { + var notifyParams = { + 'title' : record.activitytype + ' - ' + + '<a target="_blank" href="index.php?module=Calendar&view=Detail&record='+record.id+'">'+record.subject+'</a> '+ + '<i id="reminder-postpone-'+record.id+'" title="'+app.vtranslate('JS_POSTPONE')+'" class="cursorPointer fa fa-clock-o"></i>', + 'message' : '<div class="col-sm-12">'+ + '<div class="row">'+ + '<div class="col-sm-12 font13px">'+ + app.vtranslate('JS_START_DATE_TIME') + ' : ' + record.date_start+ + '</div>'+ + '<div class="col-sm-12 font13px">'+ + app.vtranslate('JS_END_DATE_TIME') + ' : ' + record.due_date+ + '</div>'+ + '</div>'+ + '</div>' + }; + var settings = { + 'element' : 'body', + 'type' : 'danger', + 'delay' : 0 + }; + + jQuery.notify(notifyParams, settings); + jQuery('#reminder-postpone-'+record.id).on('click', function(e) { jQuery(e.currentTarget).closest('.notificationHeader').find('[data-notify="dismiss"]').trigger('click'); app.request.post({ - 'data' : { - 'module' : 'Calendar', - 'action' : 'ActivityReminder', - 'mode' : 'postpone', - 'record' : record.id - } - }).then(function(e,res) {}); + 'data' : { + 'module' : 'Calendar', + 'action' : 'ActivityReminder', + 'mode' : 'postpone', + 'record' : record.id + } + }).then(function(e,res) {}); }); - jQuery('#reminder-postpone-'+record.id).closest('[data-notify="container"]').draggable({'containment' : 'body'}); + jQuery('#reminder-postpone-'+record.id).closest('[data-notify="container"]').draggable({'containment' : 'body'}); } - + }, { - _SearchIntiatedEventName : 'VT_SEARCH_INTIATED', - usernames : [], - userList : {}, + _SearchIntiatedEventName : 'VT_SEARCH_INTIATED', + usernames : [], + userList : {}, autoFillElement : false, - - init : function() { - this.addComponents(); - }, - - addComponents : function() { - var basicSearchClassName = 'Vtiger_BasicSearch_Js'; - var textsearchClassName = 'TextSearch_BasicSearch_Js'; - if(typeof window[textsearchClassName] != "undefined") { - this.addComponent(textsearchClassName); - } else{ - this.addComponent(basicSearchClassName); - } - }, - - registerListEssentialsToggleEvent : function() { - jQuery('.main-container').on('click', '.essentials-toggle', function() { - jQuery('.sidebar-essentials').toggleClass('hide'); - jQuery(".content-area").toggleClass("full-width"); - var params = { - 'module' : 'Users', - 'action' : 'IndexAjax', - 'mode' : 'toggleLeftPanel', - 'showPanel' : +jQuery('.sidebar-essentials').hasClass('hide') - } - app.request.post({data: params}); - if(jQuery('.sidebar-essentials').hasClass('hide')) { - jQuery('.essentials-toggle-marker').removeClass('fa-chevron-left') - .addClass('fa-chevron-right'); - } else { - jQuery('.essentials-toggle-marker').removeClass('fa-chevron-right') - .addClass('fa-chevron-left'); - } - app.event.trigger("Vtiger.Post.MenuToggle"); - }); - }, - - registerModuleQtips : function() { - jQuery('.module-qtip').qtip({ - position: { - my: 'left center', - at: 'center right', - adjust: { - y: 1 - } - }, - style: { - classes: 'qtip-dark qtip-shadow module-name-tooltip' - }, - show: { - delay: 500 - } - }); - }, - - registerEvents: function() { - this.registerMenuToggle(); - this.registerGlobalSearch(); - this.registerAppTriggerEvent(); - this.registerModuleQtips(); - this.registerListEssentialsToggleEvent(); - this.registerAdvanceSeachIntiator(); - this.registerQuickCreateEvent(); - this.registerQuickCreateSubMenus(); - this.registerPostQuickCreateEvent(); - this.registerEventForTaskManagement(); + + init : function() { + this.addComponents(); + }, + + addComponents : function() { + var basicSearchClassName = 'Vtiger_BasicSearch_Js'; + var textsearchClassName = 'TextSearch_BasicSearch_Js'; + if(typeof window[textsearchClassName] != "undefined") { + this.addComponent(textsearchClassName); + } else{ + this.addComponent(basicSearchClassName); + } + }, + + registerListEssentialsToggleEvent : function() { + jQuery('.main-container').on('click', '.essentials-toggle', function() { + jQuery('.sidebar-essentials').toggleClass('hide'); + jQuery(".content-area").toggleClass("full-width"); + var params = { + 'module' : 'Users', + 'action' : 'IndexAjax', + 'mode' : 'toggleLeftPanel', + 'showPanel' : +jQuery('.sidebar-essentials').hasClass('hide') + } + app.request.post({data: params}); + if(jQuery('.sidebar-essentials').hasClass('hide')) { + jQuery('.essentials-toggle-marker').removeClass('fa-chevron-left') + .addClass('fa-chevron-right'); + } else { + jQuery('.essentials-toggle-marker').removeClass('fa-chevron-right') + .addClass('fa-chevron-left'); + } + app.event.trigger("Vtiger.Post.MenuToggle"); + }); + }, + + registerModuleQtips : function() { + jQuery('.module-qtip').qtip({ + position: { + my: 'left center', + at: 'center right', + adjust: { + y: 1 + } + }, + style: { + classes: 'qtip-dark qtip-shadow module-name-tooltip' + }, + show: { + delay: 500 + } + }); + }, + + registerEvents: function() { + this.registerMenuToggle(); + this.registerGlobalSearch(); + this.registerAppTriggerEvent(); + this.registerModuleQtips(); + this.registerListEssentialsToggleEvent(); + this.registerAdvanceSeachIntiator(); + this.registerQuickCreateEvent(); + this.registerQuickCreateSubMenus(); + this.registerPostQuickCreateEvent(); + this.registerEventForTaskManagement(); this.registerFileChangeEvent(); this.registerMultiUpload(); this.registerHoverEventOnAttachment(); //this.addBodyScroll(); - this.mentionerCallBack(); - this.modulesMenuScrollbar(); - Vtiger_Index_Js.registerActivityReminder(); - //reference preview event registeration - this.registerReferencePreviewEvent(); + this.mentionerCallBack(); + this.modulesMenuScrollbar(); + Vtiger_Index_Js.registerActivityReminder(); + //reference preview event registeration + this.registerReferencePreviewEvent(); }, - - addBodyScroll: function () { - app.helper.showVerticalScroll( - $("body"), - { - setHeight: $(window).height() - 92, - theme: "inset-dark", - alwaysShowScrollbar: 2, - autoExpandScrollbar: true, - live: "on", - setTop: 0, - scrollInertia: 70, - mouseWheel:{ preventDefault: true } - - } - ); - }, - registerEventForTaskManagement : function(){ - var globalNav = jQuery('.global-nav'); - globalNav.on("click",".taskManagement",function(e){ - if(jQuery("#taskManagementContainer").length > 0){ - app.helper.hidePageOverlay(); - return false; - } - - var params = { - 'module' : 'Calendar', - 'view' : 'TaskManagement', - 'mode' : 'showManagementView' - } - app.helper.showProgress(); - app.request.post({"data":params}).then(function(err,data){ - if(err === null){ - app.helper.loadPageOverlay(data,{'ignoreScroll' : true,'backdrop': 'static'}).then(function(){ - app.helper.hideProgress(); - $('#overlayPage').find('.data').css('height','100vh'); - - var taskManagementPageOffset = jQuery('.taskManagement').offset(); - $('#overlayPage').find(".arrow").css("left",taskManagementPageOffset.left+13); - $('#overlayPage').find(".arrow").addClass("show"); - - vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="assigned_user_id"]'),{placeholder:"User : All"}); - vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="taskstatus"]'),{placeholder:"Status : All"}); - var js = new Vtiger_TaskManagement_Js(); - js.registerEvents(); - }); - }else{ - app.helper.showErrorNotification({"message":err}); - } - }); - }); - }, - - registerPostQuickCreateEvent : function(){ - var thisInstance = this; - - app.event.on("post.QuickCreateForm.show",function(event,form){ - form.find('#goToFullForm').on('click', function(e) { + + addBodyScroll: function () { + app.helper.showVerticalScroll( + $("body"), + { + setHeight: $(window).height() - 92, + theme: "inset-dark", + alwaysShowScrollbar: 2, + autoExpandScrollbar: true, + live: "on", + setTop: 0, + scrollInertia: 70, + mouseWheel:{ preventDefault: true } + + } + ); + }, + registerEventForTaskManagement : function(){ + var globalNav = jQuery('.global-nav'); + globalNav.on("click",".taskManagement",function(e){ + if(jQuery("#taskManagementContainer").length > 0){ + app.helper.hidePageOverlay(); + return false; + } + + var params = { + 'module' : 'Calendar', + 'view' : 'TaskManagement', + 'mode' : 'showManagementView' + } + app.helper.showProgress(); + app.request.post({"data":params}).then(function(err,data){ + if(err === null){ + app.helper.loadPageOverlay(data,{'ignoreScroll' : true,'backdrop': 'static'}).then(function(){ + app.helper.hideProgress(); + $('#overlayPage').find('.data').css('height','100vh'); + + var taskManagementPageOffset = jQuery('.taskManagement').offset(); + $('#overlayPage').find(".arrow").css("left",taskManagementPageOffset.left+13); + $('#overlayPage').find(".arrow").addClass("show"); + + vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="assigned_user_id"]'),{placeholder:"User : All"}); + vtUtils.showSelect2ElementView($('#overlayPage .data-header').find('select[name="taskstatus"]'),{placeholder:"Status : All"}); + var js = new Vtiger_TaskManagement_Js(); + js.registerEvents(); + }); + }else{ + app.helper.showErrorNotification({"message":err}); + } + }); + }); + }, + + registerPostQuickCreateEvent : function(){ + var thisInstance = this; + + app.event.on("post.QuickCreateForm.show",function(event,form){ + form.find('#goToFullForm').on('click', function(e) { window.onbeforeunload = true; - var form = jQuery(e.currentTarget).closest('form'); - var editViewUrl = jQuery(e.currentTarget).data('editViewUrl'); - if (typeof goToFullFormCallBack != "undefined") { - goToFullFormCallBack(form); - } - thisInstance.quickCreateGoToFullForm(form, editViewUrl); - }); - }); - }, - - /** - * Function to navigate from quickcreate to editView Fullform - * @param accepts form element as parameter - */ - quickCreateGoToFullForm: function(form, editViewUrl) { - var formData = form.serializeFormData(); - //As formData contains information about both view and action removed action and directed to view - delete formData.module; - delete formData.action; - delete formData.picklistDependency; - var formDataUrl = jQuery.param(formData); - var completeUrl = editViewUrl + "&" + formDataUrl; - window.location.href = completeUrl; - }, - - registerQuickCreateSubMenus : function() { - jQuery("#quickCreateModules").on("click",".quickCreateModuleSubmenu",function(e){ - e.preventDefault(); - e.stopImmediatePropagation(); - jQuery(e.currentTarget).closest('.dropdown').toggleClass('open'); - }); - }, - - /** - * Function to register Quick Create Event - * @returns {undefined} - */ - registerQuickCreateEvent : function (){ - var thisInstance = this; - jQuery("#quickCreateModules").on("click",".quickCreateModule",function(e,params){ - var quickCreateElem = jQuery(e.currentTarget); - var quickCreateUrl = quickCreateElem.data('url'); - var quickCreateModuleName = quickCreateElem.data('name'); - if (typeof params === 'undefined') { - params = {}; - } - if (typeof params.callbackFunction === 'undefined') { - params.callbackFunction = function(data, err) { - //fix for Refresh list view after Quick create - var parentModule=app.getModuleName(); - var viewname=app.view(); - if((quickCreateModuleName == parentModule) && (viewname=="List")){ - var listinstance = app.controller(); - listinstance.loadListViewRecords(); - } - }; - } - app.helper.showProgress(); - thisInstance.getQuickCreateForm(quickCreateUrl,quickCreateModuleName,params).then(function(data){ - app.helper.hideProgress(); + var form = jQuery(e.currentTarget).closest('form'); + var editViewUrl = jQuery(e.currentTarget).data('editViewUrl'); + if (typeof goToFullFormCallBack != "undefined") { + goToFullFormCallBack(form); + } + thisInstance.quickCreateGoToFullForm(form, editViewUrl); + }); + }); + }, + + /** + * Function to navigate from quickcreate to editView Fullform + * @param accepts form element as parameter + */ + quickCreateGoToFullForm: function(form, editViewUrl) { + var formData = form.serializeFormData(); + //As formData contains information about both view and action removed action and directed to view + delete formData.module; + delete formData.action; + delete formData.picklistDependency; + var formDataUrl = jQuery.param(formData); + var completeUrl = editViewUrl + "&" + formDataUrl; + window.location.href = completeUrl; + }, + + registerQuickCreateSubMenus : function() { + jQuery("#quickCreateModules").on("click",".quickCreateModuleSubmenu",function(e){ + e.preventDefault(); + e.stopImmediatePropagation(); + jQuery(e.currentTarget).closest('.dropdown').toggleClass('open'); + }); + }, + + /** + * Function to register Quick Create Event + * @returns {undefined} + */ + registerQuickCreateEvent : function (){ + var thisInstance = this; + jQuery("#quickCreateModules").on("click",".quickCreateModule",function(e,params){ + var quickCreateElem = jQuery(e.currentTarget); + var quickCreateUrl = quickCreateElem.data('url'); + var quickCreateModuleName = quickCreateElem.data('name'); + if (typeof params === 'undefined') { + params = {}; + } + if (typeof params.callbackFunction === 'undefined') { + params.callbackFunction = function(data, err) { + //fix for Refresh list view after Quick create + var parentModule=app.getModuleName(); + var viewname=app.view(); + if((quickCreateModuleName == parentModule) && (viewname=="List")){ + var listinstance = app.controller(); + listinstance.loadListViewRecords(); + } + }; + } + app.helper.showProgress(); + thisInstance.getQuickCreateForm(quickCreateUrl,quickCreateModuleName,params).then(function(data){ + app.helper.hideProgress(); var callbackparams = { 'cb' : function (container){ thisInstance.registerPostReferenceEvent(container); - app.event.trigger('post.QuickCreateForm.show',form); - app.helper.registerLeavePageWithoutSubmit(form); - app.helper.registerModalDismissWithoutSubmit(form); + app.event.trigger('post.QuickCreateForm.show',form); + app.helper.registerLeavePageWithoutSubmit(form); + app.helper.registerModalDismissWithoutSubmit(form); }, backdrop : 'static', keyboard : false } - - app.helper.showModal(data, callbackparams); - var form = jQuery('form[name="QuickCreate"]'); - var moduleName = form.find('[name="module"]').val(); - app.helper.showVerticalScroll(jQuery('form[name="QuickCreate"] .modal-body'), {'autoHideScrollbar': true}); - - var targetInstance = thisInstance; - var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName(moduleName); - if(typeof(moduleInstance.quickCreateSave) === 'function'){ - targetInstance = moduleInstance; - targetInstance.registerBasicEvents(form); + + app.helper.showModal(data, callbackparams); + var form = jQuery('form[name="QuickCreate"]'); + var moduleName = form.find('[name="module"]').val(); + app.helper.showVerticalScroll(jQuery('form[name="QuickCreate"] .modal-body'), {'autoHideScrollbar': true}); + + var targetInstance = thisInstance; + var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName(moduleName); + if(typeof(moduleInstance.quickCreateSave) === 'function'){ + targetInstance = moduleInstance; + targetInstance.registerBasicEvents(form); } - - vtUtils.applyFieldElementsView(form); - targetInstance.quickCreateSave(form,params); - app.helper.hideProgress(); - }); - }); - }, - - /** - * Function to register quick create tab events - */ - registerQuickcreateTabEvents : function(form) { - var thisInstance = this; - var tabElements = form.closest('.modal-content').find('.nav.nav-pills , .nav.nav-tabs').find('a'); - - //This will remove the name attributes and assign it to data-element-name . We are doing this to avoid - //Multiple element to send as in calendar - var quickCreateTabOnHide = function(tabElement) { - var container = jQuery(tabElement.attr('data-target')); - - container.find('[name]').each(function(index, element) { - element = jQuery(element); - element.attr('data-element-name', element.attr('name')).removeAttr('name'); - }); - }; - - //This will add the name attributes and get value from data-element-name . We are doing this to avoid - //Multiple element to send as in calendar - var quickCreateTabOnShow = function(tabElement) { - var container = jQuery(tabElement.attr('data-target')); - - container.find('[data-element-name]').each(function(index, element) { - element = jQuery(element); - element.attr('name', element.attr('data-element-name')).removeAttr('data-element-name'); - }); - }; - - tabElements.on('shown.bs.tab', function(e) { - var previousTab = jQuery(e.relatedTarget); - var currentTab = jQuery(e.currentTarget); - - quickCreateTabOnHide(previousTab); - quickCreateTabOnShow(currentTab); - - if(form.find('[name="module"]').val()=== 'Calendar') { - var sourceModule = currentTab.data('source-module'); - form.find('[name="calendarModule"]').val(sourceModule); - var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName('Calendar'); - moduleInstance.registerEventForPicklistDependencySetup(form); - } - + + vtUtils.applyFieldElementsView(form); + targetInstance.quickCreateSave(form,params); + app.helper.hideProgress(); + }); + }); + }, + + /** + * Function to register quick create tab events + */ + registerQuickcreateTabEvents : function(form) { + var thisInstance = this; + var tabElements = form.closest('.modal-content').find('.nav.nav-pills , .nav.nav-tabs').find('a'); + + //This will remove the name attributes and assign it to data-element-name . We are doing this to avoid + //Multiple element to send as in calendar + var quickCreateTabOnHide = function(tabElement) { + var container = jQuery(tabElement.attr('data-target')); + + container.find('[name]').each(function(index, element) { + element = jQuery(element); + element.attr('data-element-name', element.attr('name')).removeAttr('name'); + }); + }; + + //This will add the name attributes and get value from data-element-name . We are doing this to avoid + //Multiple element to send as in calendar + var quickCreateTabOnShow = function(tabElement) { + var container = jQuery(tabElement.attr('data-target')); + + container.find('[data-element-name]').each(function(index, element) { + element = jQuery(element); + element.attr('name', element.attr('data-element-name')).removeAttr('data-element-name'); + }); + }; + + tabElements.on('shown.bs.tab', function(e) { + var previousTab = jQuery(e.relatedTarget); + var currentTab = jQuery(e.currentTarget); + + quickCreateTabOnHide(previousTab); + quickCreateTabOnShow(currentTab); + + if(form.find('[name="module"]').val()=== 'Calendar') { + var sourceModule = currentTab.data('source-module'); + form.find('[name="calendarModule"]').val(sourceModule); + var moduleInstance = Vtiger_Edit_Js.getInstanceByModuleName('Calendar'); + moduleInstance.registerEventForPicklistDependencySetup(form); + } + //while switching tabs we have to show scroll bar //thisInstance.showQuickCreateScrollBar(form); - //while switching tabs we have to clear the invalid fields list - //form.data('jqv').InvalidFields = []; - }); - - //remove name attributes for inactive tab elements - quickCreateTabOnHide(tabElements.closest('li').filter(':not(.active)').find('a')); - }, - - /** - * Register Quick Create Save Event - * @param {type} form - * @returns {undefined} - */ - quickCreateSave : function(form,invokeParams){ - var params = { - submitHandler: function(form) { - // to Prevent submit if already submitted - jQuery("button[name='saveButton']").attr("disabled","disabled"); - if(this.numberOfInvalids() > 0) { - return false; - } - var formData = jQuery(form).serialize(); - app.request.post({data:formData}).then(function(err,data){ - app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); - if(err === null) { - app.helper.hideModal(); - app.helper.showSuccessNotification({"message":''}); - invokeParams.callbackFunction(data, err); + //while switching tabs we have to clear the invalid fields list + //form.data('jqv').InvalidFields = []; + }); + + //remove name attributes for inactive tab elements + quickCreateTabOnHide(tabElements.closest('li').filter(':not(.active)').find('a')); + }, + + /** + * Register Quick Create Save Event + * @param {type} form + * @returns {undefined} + */ + quickCreateSave : function(form,invokeParams){ + var params = { + submitHandler: function(form) { + // to Prevent submit if already submitted + jQuery("button[name='saveButton']").attr("disabled","disabled"); + if(this.numberOfInvalids() > 0) { + return false; + } + var formData = jQuery(form).serialize(); + app.request.post({data:formData}).then(function(err,data){ + app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); + if(err === null) { + app.helper.hideModal(); + app.helper.showSuccessNotification({"message":''}); + invokeParams.callbackFunction(data, err); //To unregister onbefore unload event registered for quickcreate window.onbeforeunload = null; - }else{ - app.helper.showErrorNotification({"message":err}); - } - }); - }, - validationMeta: quickcreate_uimeta - }; - form.vtValidate(params); - }, - - /** - * Function to get Quick Create Form - * @param {type} url - * @param {type} moduleName - * @returns {unresolved} - */ - getQuickCreateForm: function(url, moduleName, params) { - var aDeferred = jQuery.Deferred(); - var requestParams = app.convertUrlToDataParams(url); - jQuery.extend(requestParams, params.data); - app.request.post({data:requestParams}).then(function(err,data) { - aDeferred.resolve(data); - }); - return aDeferred.promise(); - }, - - registerMenuToggle : function(){ - jQuery("#menu-toggle").on('click', function(e) { - e.preventDefault(); - $("#modnavigator").toggleClass('hide'); - $(".content-area").toggleClass("full-width"); - var params = { - 'module' : 'Users', - 'action' : 'IndexAjax', - 'mode' : 'toggleLeftPanel', - 'showPanel' : +jQuery("#modnavigator").hasClass('hide') - } - app.request.post({data: params}); - app.event.trigger("Vtiger.Post.MenuToggle"); - }); - }, - - registerAppTriggerEvent : function() { - jQuery('.app-menu').removeClass('hide'); - var toggleAppMenu = function(type) { - var appMenu = jQuery('.app-menu'); - var appNav = jQuery('.app-nav'); - appMenu.appendTo('#page'); - appMenu.css({ - 'top' : appNav.offset().top + appNav.height(), - 'left' : 0 - }); - if(typeof type === 'undefined') { - type = appMenu.is(':hidden') ? 'show' : 'hide'; - } - if(type == 'show') { - appMenu.show(200, function() {}); - } else { - appMenu.hide(200, function() {}); - } - }; - - jQuery('.app-trigger, .app-icon, .app-navigator').on('click',function(e){ - e.stopPropagation(); - toggleAppMenu(); - }); - - jQuery('html').on('click', function() { - toggleAppMenu('hide'); - }); - - jQuery(document).keyup(function (e) { - if (e.keyCode == 27) { - if(!jQuery('.app-menu').is(':hidden')) { - toggleAppMenu('hide'); - } - } - }); - - jQuery('.app-modules-dropdown-container').hover(function(e) { - var dropdownContainer = jQuery(e.currentTarget); - jQuery('.dropdown').removeClass('open'); - if(dropdownContainer.length) { - if(dropdownContainer.hasClass('dropdown-compact')) { - dropdownContainer.find('.app-modules-dropdown').css('top', dropdownContainer.position().top - 8); - } else { - dropdownContainer.find('.app-modules-dropdown').css('top', ''); - } - dropdownContainer.addClass('open').find('.app-item').addClass('active-app-item'); - } - }, function(e) { - var dropdownContainer = jQuery(e.currentTarget); - dropdownContainer.find('.app-item').removeClass('active-app-item'); - setTimeout(function() { - if(dropdownContainer.find('.app-modules-dropdown').length && !dropdownContainer.find('.app-modules-dropdown').is(':hover') && !dropdownContainer.is(':hover')) { - dropdownContainer.removeClass('open'); - } - }, 500); - - }); - - jQuery('.app-item').on('click', function() { - var url = jQuery(this).data('defaultUrl'); - if(url) { - window.location.href = url; - } - }); - + }else{ + app.helper.showErrorNotification({"message":err}); + } + }); + }, + validationMeta: quickcreate_uimeta + }; + form.vtValidate(params); + }, + + /** + * Function to get Quick Create Form + * @param {type} url + * @param {type} moduleName + * @returns {unresolved} + */ + getQuickCreateForm: function(url, moduleName, params) { + var aDeferred = jQuery.Deferred(); + var requestParams = app.convertUrlToDataParams(url); + jQuery.extend(requestParams, params.data); + app.request.post({data:requestParams}).then(function(err,data) { + aDeferred.resolve(data); + }); + return aDeferred.promise(); + }, + + registerMenuToggle : function(){ + jQuery("#menu-toggle").on('click', function(e) { + e.preventDefault(); + $("#modnavigator").toggleClass('hide'); + $(".content-area").toggleClass("full-width"); + var params = { + 'module' : 'Users', + 'action' : 'IndexAjax', + 'mode' : 'toggleLeftPanel', + 'showPanel' : +jQuery("#modnavigator").hasClass('hide') + } + app.request.post({data: params}); + app.event.trigger("Vtiger.Post.MenuToggle"); + }); + }, + + registerAppTriggerEvent : function() { + jQuery('.app-menu').removeClass('hide'); + var toggleAppMenu = function(type) { + var appMenu = jQuery('.app-menu'); + var appNav = jQuery('.app-nav'); + appMenu.appendTo('#page'); + appMenu.css({ + 'top' : appNav.offset().top + appNav.height(), + 'left' : 0 + }); + if(typeof type === 'undefined') { + type = appMenu.is(':hidden') ? 'show' : 'hide'; + } + if(type == 'show') { + appMenu.show(200, function() {}); + } else { + appMenu.hide(200, function() {}); + } + }; + + jQuery('.app-trigger, .app-icon, .app-navigator').on('click',function(e){ + e.stopPropagation(); + toggleAppMenu(); + }); + + jQuery('html').on('click', function() { + toggleAppMenu('hide'); + }); + + jQuery(document).keyup(function (e) { + if (e.keyCode == 27) { + if(!jQuery('.app-menu').is(':hidden')) { + toggleAppMenu('hide'); + } + } + }); + + jQuery('.app-modules-dropdown-container').hover(function(e) { + var dropdownContainer = jQuery(e.currentTarget); + jQuery('.dropdown').removeClass('open'); + if(dropdownContainer.length) { + if(dropdownContainer.hasClass('dropdown-compact')) { + dropdownContainer.find('.app-modules-dropdown').css('top', dropdownContainer.position().top - 8); + } else { + dropdownContainer.find('.app-modules-dropdown').css('top', ''); + } + dropdownContainer.addClass('open').find('.app-item').addClass('active-app-item'); + } + }, function(e) { + var dropdownContainer = jQuery(e.currentTarget); + dropdownContainer.find('.app-item').removeClass('active-app-item'); + setTimeout(function() { + if(dropdownContainer.find('.app-modules-dropdown').length && !dropdownContainer.find('.app-modules-dropdown').is(':hover') && !dropdownContainer.is(':hover')) { + dropdownContainer.removeClass('open'); + } + }, 500); + + }); + + jQuery('.app-item').on('click', function() { + var url = jQuery(this).data('defaultUrl'); + if(url) { + window.location.href = url; + } + }); + jQuery(window).resize(function() { jQuery(".app-modules-dropdown").mCustomScrollbar("destroy"); - app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), { - setHeight: $(window).height(), - autoExpandScrollbar: true - }); - jQuery('.dropdown-modules-compact').each(function() { - var element = jQuery(this); - var heightPer = parseFloat(element.data('height')); - app.helper.showVerticalScroll(element, { - setHeight: $(window).height()*heightPer - 3, - autoExpandScrollbar: true, - scrollbarPosition: 'outside' - }); - }); + app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), { + setHeight: $(window).height(), + autoExpandScrollbar: true + }); + jQuery('.dropdown-modules-compact').each(function() { + var element = jQuery(this); + var heightPer = parseFloat(element.data('height')); + app.helper.showVerticalScroll(element, { + setHeight: $(window).height()*heightPer - 3, + autoExpandScrollbar: true, + scrollbarPosition: 'outside' + }); + }); + }); + app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), { + setHeight: $(window).height(), + autoExpandScrollbar: true, + scrollbarPosition: 'outside' }); - app.helper.showVerticalScroll(jQuery(".app-modules-dropdown").not('.dropdown-modules-compact'), { - setHeight: $(window).height(), - autoExpandScrollbar: true, - scrollbarPosition: 'outside' - }); - jQuery('.dropdown-modules-compact').each(function() { - var element = jQuery(this); - var heightPer = parseFloat(element.data('height')); - app.helper.showVerticalScroll(element, { - setHeight: $(window).height()*heightPer - 3, - autoExpandScrollbar: true, - scrollbarPosition: 'outside' - }); - }); - }, - - registerGlobalSearch : function() { - var thisInstance = this; - jQuery('.search-link .keyword-input').on('keypress',function(e){ - if(e.which == 13) { - - var element = jQuery(e.currentTarget); - var searchValue = element.val(); - var data = {}; - data['searchValue'] = searchValue; - element.trigger(thisInstance._SearchIntiatedEventName,data); - } - }); - }, - - registerAdvanceSeachIntiator : function () { - jQuery('#adv-search').on('click',function(e){ - var advanceSearchInstance = new Vtiger_AdvanceSearch_Js(); - advanceSearchInstance.advanceSearchTriggerIntiatorHandler(); -// advanceSearchInstance.initiateSearch().then(function() { -// advanceSearchInstance.selectBasicSearchValue(); -// }); - }); - }, - - /** - * Function which will handle the reference auto complete event registrations - * @params - container <jQuery> - element in which auto complete fields needs to be searched - */ - registerAutoCompleteFields : function(container) { - var thisInstance = this; - container.find('input.autoComplete').autocomplete({ - 'minLength' : '3', - 'source' : function(request, response){ - //element will be array of dom elements - //here this refers to auto complete instance - var inputElement = jQuery(this.element[0]); - var searchValue = request.term; - var params = thisInstance.getReferenceSearchParams(inputElement); + jQuery('.dropdown-modules-compact').each(function() { + var element = jQuery(this); + var heightPer = parseFloat(element.data('height')); + app.helper.showVerticalScroll(element, { + setHeight: $(window).height()*heightPer - 3, + autoExpandScrollbar: true, + scrollbarPosition: 'outside' + }); + }); + }, + + registerGlobalSearch : function() { + var thisInstance = this; + jQuery('.search-link .keyword-input').on('keypress',function(e){ + if(e.which == 13) { + + var element = jQuery(e.currentTarget); + var searchValue = element.val(); + var data = {}; + data['searchValue'] = searchValue; + element.trigger(thisInstance._SearchIntiatedEventName,data); + } + }); + }, + + registerAdvanceSeachIntiator : function () { + jQuery('#adv-search').on('click',function(e){ + var advanceSearchInstance = new Vtiger_AdvanceSearch_Js(); + advanceSearchInstance.advanceSearchTriggerIntiatorHandler(); +// advanceSearchInstance.initiateSearch().then(function() { +// advanceSearchInstance.selectBasicSearchValue(); +// }); + }); + }, + + /** + * Function which will handle the reference auto complete event registrations + * @params - container <jQuery> - element in which auto complete fields needs to be searched + */ + registerAutoCompleteFields : function(container) { + var thisInstance = this; + container.find('input.autoComplete').autocomplete({ + 'minLength' : '3', + 'source' : function(request, response){ + //element will be array of dom elements + //here this refers to auto complete instance + var inputElement = jQuery(this.element[0]); + var searchValue = request.term; + var params = thisInstance.getReferenceSearchParams(inputElement); params.module = app.getModuleName(); if (jQuery('#QuickCreate').length > 0) { params.module = container.find('[name="module"]').val(); } - params.search_value = searchValue; - if(params.search_module && params.search_module!= 'undefined') { - thisInstance.searchModuleNames(params).then(function(data){ - var reponseDataList = new Array(); - var serverDataFormat = data; - if(serverDataFormat.length <= 0) { - jQuery(inputElement).val(''); - serverDataFormat = new Array({ - 'label' : 'No Results Found', - 'type' : 'no results' - }); - } - for(var id in serverDataFormat){ - var responseData = serverDataFormat[id]; - reponseDataList.push(responseData); - } - response(reponseDataList); - }); - } else { - jQuery(inputElement).val(''); - serverDataFormat = new Array({ - 'label' : 'No Results Found', - 'type' : 'no results' - }); - response(serverDataFormat); - } - }, - 'select' : function(event, ui ){ - var selectedItemData = ui.item; - //To stop selection if no results is selected - if(typeof selectedItemData.type != 'undefined' && selectedItemData.type=="no results"){ - return false; - } - var element = jQuery(this); - var parent = element.closest('td'); - if(parent.length == 0){ - parent = element.closest('.fieldValue'); - } - var sourceField = parent.find('.sourceField'); - selectedItemData.record = selectedItemData.id; - selectedItemData.source_module = parent.find('input[name="popupReferenceModule"]').val(); - selectedItemData.selectedName = selectedItemData.label; - var fieldName = sourceField.attr("name"); - parent.find('input[name="'+fieldName+'"]').val(selectedItemData.id); - element.attr("value",selectedItemData.id); - parent.find('.clearReferenceSelection').removeClass('hide'); - parent.find('.referencefield-wrapper').addClass('selected'); - element.attr("disabled","disabled"); - //trigger reference field selection event - sourceField.trigger(Vtiger_Edit_Js.referenceSelectionEvent,selectedItemData); - //trigger post reference selection - sourceField.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':selectedItemData}); - } - }); - }, - - /** - * Function to register clear reference selection event - * @param <jQUery> container - */ - registerClearReferenceSelectionEvent : function(container) { - container.find('.clearReferenceSelection').on('click', function(e){ - e.preventDefault(); - var element = jQuery(e.currentTarget); - var parentTdElement = element.closest('td'); - if(parentTdElement.length == 0){ - parentTdElement = element.closest('.fieldValue'); - } - var inputElement = parentTdElement.find('.inputElement'); - var fieldName = parentTdElement.find('.sourceField').attr("name"); - - parentTdElement.find('.referencefield-wrapper').removeClass('selected'); - inputElement.removeAttr("disabled").removeAttr('readonly'); - inputElement.attr("value",""); - inputElement.val(""); - parentTdElement.find('input[name="'+fieldName+'"]').val(""); - element.addClass('hide'); - element.trigger(Vtiger_Edit_Js.referenceDeSelectionEvent); - }); - }, - - /** - * Function which will register event for create of reference record - * This will allow users to create reference record from edit view of other record - */ - registerReferenceCreate : function(container) { - var thisInstance = this; - container.on('click','.createReferenceRecord', function(e) { - var element = jQuery(e.currentTarget); - var controlElementTd = thisInstance.getParentElement(element); - thisInstance.referenceCreateHandler(controlElementTd); - }); - }, - - /** - * Funtion to register popup search event for reference field - * @param <jQuery> container - */ - referenceModulePopupRegisterEvent : function(container) { - var thisInstance = this; + params.search_value = searchValue; + if(params.search_module && params.search_module!= 'undefined') { + thisInstance.searchModuleNames(params).then(function(data){ + var reponseDataList = new Array(); + var serverDataFormat = data; + if(serverDataFormat.length <= 0) { + jQuery(inputElement).val(''); + serverDataFormat = new Array({ + 'label' : 'No Results Found', + 'type' : 'no results' + }); + } + for(var id in serverDataFormat){ + var responseData = serverDataFormat[id]; + reponseDataList.push(responseData); + } + response(reponseDataList); + }); + } else { + jQuery(inputElement).val(''); + serverDataFormat = new Array({ + 'label' : 'No Results Found', + 'type' : 'no results' + }); + response(serverDataFormat); + } + }, + 'select' : function(event, ui ){ + var selectedItemData = ui.item; + //To stop selection if no results is selected + if(typeof selectedItemData.type != 'undefined' && selectedItemData.type=="no results"){ + return false; + } + var element = jQuery(this); + var parent = element.closest('td'); + if(parent.length == 0){ + parent = element.closest('.fieldValue'); + } + var sourceField = parent.find('.sourceField'); + selectedItemData.record = selectedItemData.id; + selectedItemData.source_module = parent.find('input[name="popupReferenceModule"]').val(); + selectedItemData.selectedName = selectedItemData.label; + var fieldName = sourceField.attr("name"); + parent.find('input[name="'+fieldName+'"]').val(selectedItemData.id); + element.attr("value",selectedItemData.id); + parent.find('.clearReferenceSelection').removeClass('hide'); + parent.find('.referencefield-wrapper').addClass('selected'); + element.attr("disabled","disabled"); + //trigger reference field selection event + sourceField.trigger(Vtiger_Edit_Js.referenceSelectionEvent,selectedItemData); + //trigger post reference selection + sourceField.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':selectedItemData}); + } + }); + }, + + /** + * Function to register clear reference selection event + * @param <jQUery> container + */ + registerClearReferenceSelectionEvent : function(container) { + container.find('.clearReferenceSelection').on('click', function(e){ + e.preventDefault(); + var element = jQuery(e.currentTarget); + var parentTdElement = element.closest('td'); + if(parentTdElement.length == 0){ + parentTdElement = element.closest('.fieldValue'); + } + var inputElement = parentTdElement.find('.inputElement'); + var fieldName = parentTdElement.find('.sourceField').attr("name"); + + parentTdElement.find('.referencefield-wrapper').removeClass('selected'); + inputElement.removeAttr("disabled").removeAttr('readonly'); + inputElement.attr("value",""); + inputElement.val(""); + parentTdElement.find('input[name="'+fieldName+'"]').val(""); + element.addClass('hide'); + element.trigger(Vtiger_Edit_Js.referenceDeSelectionEvent); + }); + }, + + /** + * Function which will register event for create of reference record + * This will allow users to create reference record from edit view of other record + */ + registerReferenceCreate : function(container) { + var thisInstance = this; + container.on('click','.createReferenceRecord', function(e) { + var element = jQuery(e.currentTarget); + var controlElementTd = thisInstance.getParentElement(element); + thisInstance.referenceCreateHandler(controlElementTd); + }); + }, + + /** + * Funtion to register popup search event for reference field + * @param <jQuery> container + */ + referenceModulePopupRegisterEvent : function(container) { + var thisInstance = this; container.off('click', '.relatedPopup'); - container.on("click",'.relatedPopup',function(e) { - thisInstance.openPopUp(e); - }); - container.on('change','.referenceModulesList',function(e){ - var element = jQuery(e.currentTarget); - var closestTD = thisInstance.getParentElement(element).next(); - var popupReferenceModule = element.val(); - var referenceModuleElement = jQuery('input[name="popupReferenceModule"]', closestTD).length ? - jQuery('input[name="popupReferenceModule"]', closestTD) : jQuery('input.popupReferenceModule', closestTD); - var prevSelectedReferenceModule = referenceModuleElement.val(); - referenceModuleElement.val(popupReferenceModule); - - //If Reference module is changed then we should clear the previous value - if(prevSelectedReferenceModule != popupReferenceModule) { - closestTD.find('.clearReferenceSelection').trigger('click'); - } - }); - }, - - /** - * Function to open popup list modal - */ - openPopUp : function(e) { - var thisInstance = this; - var parentElem = thisInstance.getParentElement(jQuery(e.target)); - - var params = this.getPopUpParams(parentElem); - params.view = 'Popup'; - - var isMultiple = false; - if(params.multi_select) { - isMultiple = true; - } - - var sourceFieldElement = jQuery('input[class="sourceField"]',parentElem); - - var prePopupOpenEvent = jQuery.Event(Vtiger_Edit_Js.preReferencePopUpOpenEvent); - sourceFieldElement.trigger(prePopupOpenEvent); - - if(prePopupOpenEvent.isDefaultPrevented()) { - return ; - } - var popupInstance = Vtiger_Popup_Js.getInstance(); - - app.event.off(Vtiger_Edit_Js.popupSelectionEvent); - app.event.one(Vtiger_Edit_Js.popupSelectionEvent,function(e,data) { - var responseData = JSON.parse(data); - var dataList = new Array(); + container.on("click",'.relatedPopup',function(e) { + thisInstance.openPopUp(e); + }); + container.on('change','.referenceModulesList',function(e){ + var element = jQuery(e.currentTarget); + var closestTD = thisInstance.getParentElement(element).next(); + var popupReferenceModule = element.val(); + var referenceModuleElement = jQuery('input[name="popupReferenceModule"]', closestTD).length ? + jQuery('input[name="popupReferenceModule"]', closestTD) : jQuery('input.popupReferenceModule', closestTD); + var prevSelectedReferenceModule = referenceModuleElement.val(); + referenceModuleElement.val(popupReferenceModule); + + //If Reference module is changed then we should clear the previous value + if(prevSelectedReferenceModule != popupReferenceModule) { + closestTD.find('.clearReferenceSelection').trigger('click'); + } + }); + }, + + /** + * Function to open popup list modal + */ + openPopUp : function(e) { + var thisInstance = this; + var parentElem = thisInstance.getParentElement(jQuery(e.target)); + + var params = this.getPopUpParams(parentElem); + params.view = 'Popup'; + + var isMultiple = false; + if(params.multi_select) { + isMultiple = true; + } + + var sourceFieldElement = jQuery('input[class="sourceField"]',parentElem); + + var prePopupOpenEvent = jQuery.Event(Vtiger_Edit_Js.preReferencePopUpOpenEvent); + sourceFieldElement.trigger(prePopupOpenEvent); + + if(prePopupOpenEvent.isDefaultPrevented()) { + return ; + } + var popupInstance = Vtiger_Popup_Js.getInstance(); + + app.event.off(Vtiger_Edit_Js.popupSelectionEvent); + app.event.one(Vtiger_Edit_Js.popupSelectionEvent,function(e,data) { + var responseData = JSON.parse(data); + var dataList = new Array(); jQuery.each(responseData, function(key, value){ var counter = 0; for(var valuekey in value){ @@ -965,14 +965,14 @@ Vtiger.Class('Vtiger_Index_Js', { } }); - if(isMultiple) { - sourceFieldElement.trigger(Vtiger_Edit_Js.refrenceMultiSelectionEvent,{'data':dataList}); - } - sourceFieldElement.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':responseData}); - }); - popupInstance.showPopup(params,Vtiger_Edit_Js.popupSelectionEvent,function() {}); - }, - + if(isMultiple) { + sourceFieldElement.trigger(Vtiger_Edit_Js.refrenceMultiSelectionEvent,{'data':dataList}); + } + sourceFieldElement.trigger(Vtiger_Edit_Js.postReferenceSelectionEvent,{'data':responseData}); + }); + popupInstance.showPopup(params,Vtiger_Edit_Js.popupSelectionEvent,function() {}); + }, + /** * Functions changes the value of max upload size variable * @param {type} container @@ -1004,39 +1004,39 @@ Vtiger.Class('Vtiger_Index_Js', { */ registerFileChangeEvent: function () { var thisInstance = this; - var container = jQuery('body'); - Vtiger_Index_Js.files = ''; - container.on('change', 'input[name="filename[]"],input[name="imagename[]"]', function(e){ - if(e.target.type == "text") return false; - + var container = jQuery('body'); + Vtiger_Index_Js.files = ''; + container.on('change', 'input[name="filename[]"],input[name="imagename[]"]', function(e){ + if(e.target.type == "text") return false; + var files_uploaded=[]; var fileSize = 0; jQuery.each(e.target.files,function(key,element){ files_uploaded[key] = element; fileSize += Number(element['size']); }); - - - Vtiger_Index_Js.files = files_uploaded; - var element = container.find('input[name="filename[]"],input[name="imagename[]"]'); - //ignore all other types than file - if(element.attr('type') != 'file'){ - return ; - } - var uploadFileSizeHolder = element.closest('.fileUploadContainer').find('.uploadedFileSize'); - var maxFileSize = thisInstance.getMaxiumFileUploadingSize(container); - if(fileSize > maxFileSize) { + + + Vtiger_Index_Js.files = files_uploaded; + var element = container.find('input[name="filename[]"],input[name="imagename[]"]'); + //ignore all other types than file + if(element.attr('type') != 'file'){ + return ; + } + var uploadFileSizeHolder = element.closest('.fileUploadContainer').find('.uploadedFileSize'); + var maxFileSize = thisInstance.getMaxiumFileUploadingSize(container); + if(fileSize > maxFileSize) { alert(app.vtranslate('JS_EXCEEDS_MAX_UPLOAD_SIZE')); var removeFileLinks = jQuery('.MultiFile-remove'); jQuery(removeFileLinks[removeFileLinks.length - 1]).click(); - } else { - if(container.length > 1){ - jQuery('div.fieldsContainer').find('form#I_form').find('input[name="filename"]').css('width','80px'); - jQuery('div.fieldsContainer').find('form#W_form').find('input[name="filename"]').css('width','80px'); - } else { - container.find('input[name="filename[]"]').css('width','80px'); - } - } + } else { + if(container.length > 1){ + jQuery('div.fieldsContainer').find('form#I_form').find('input[name="filename"]').css('width','80px'); + jQuery('div.fieldsContainer').find('form#W_form').find('input[name="filename"]').css('width','80px'); + } else { + container.find('input[name="filename[]"]').css('width','80px'); + } + } }); }, @@ -1055,9 +1055,9 @@ Vtiger.Class('Vtiger_Index_Js', { setTimeout(indexInstance.registerMultiUpload, 50); //wait 50 ms, then try again } }, - + //removed toggle class for quickcreate - + /** * Function register on mouseover and mouseout events * @returns {undefined} @@ -1069,38 +1069,38 @@ Vtiger.Class('Vtiger_Index_Js', { jQuery(e.currentTarget).closest('div').find('a[name="downloadfile"] i').addClass('hide'); }); }, - /* - * Function to get reference select popup parameters - */ - getPopUpParams : function(container) { - var params = {}; - var sourceModule = app.getModuleName(); - var editTaskContainer = jQuery('[name="editTask"]'); - if(editTaskContainer.length > 0){ - sourceModule = editTaskContainer.find('#sourceModule').val(); - } - var quickCreateConatiner = jQuery('[name="QuickCreate"]'); - if(quickCreateConatiner.length!=0){ - sourceModule = quickCreateConatiner.find('input[name="module"]').val(); - } + /* + * Function to get reference select popup parameters + */ + getPopUpParams : function(container) { + var params = {}; + var sourceModule = app.getModuleName(); + var editTaskContainer = jQuery('[name="editTask"]'); + if(editTaskContainer.length > 0){ + sourceModule = editTaskContainer.find('#sourceModule').val(); + } + var quickCreateConatiner = jQuery('[name="QuickCreate"]'); + if(quickCreateConatiner.length!=0){ + sourceModule = quickCreateConatiner.find('input[name="module"]').val(); + } var searchResultContainer = jQuery('#searchResults-container'); if(searchResultContainer.length) { sourceModule = jQuery('select#searchModuleList').val(); } - var popupReferenceModuleElement = jQuery('input[name="popupReferenceModule"]',container).length ? - jQuery('input[name="popupReferenceModule"]',container) : jQuery('input.popupReferenceModule',container); - var popupReferenceModule = popupReferenceModuleElement.val(); - var sourceFieldElement = jQuery('input[class="sourceField"]',container); + var popupReferenceModuleElement = jQuery('input[name="popupReferenceModule"]',container).length ? + jQuery('input[name="popupReferenceModule"]',container) : jQuery('input.popupReferenceModule',container); + var popupReferenceModule = popupReferenceModuleElement.val(); + var sourceFieldElement = jQuery('input[class="sourceField"]',container); if(!sourceFieldElement.length) { sourceFieldElement = jQuery('input.sourceField',container); } - var sourceField = sourceFieldElement.attr('name'); - var sourceRecordElement = jQuery('input[name="record"]'); - var sourceRecordId = ''; + var sourceField = sourceFieldElement.attr('name'); + var sourceRecordElement = jQuery('input[name="record"]'); + var sourceRecordId = ''; var recordId = app.getRecordId(); - if(sourceRecordElement.length > 0) { - sourceRecordId = sourceRecordElement.val(); - } else if(recordId) { + if(sourceRecordElement.length > 0) { + sourceRecordId = sourceRecordElement.val(); + } else if(recordId) { sourceRecordId = recordId; } else if(app.view() == 'List') { var editRecordId = jQuery('#listview-table').find('tr.listViewEntries.edited').data('id'); @@ -1108,46 +1108,46 @@ Vtiger.Class('Vtiger_Index_Js', { sourceRecordId = editRecordId; } } - + if(searchResultContainer.length) { sourceRecordId = searchResultContainer.find('tr.listViewEntries.edited').data('id') } - var isMultiple = false; - if(sourceFieldElement.data('multiple') == true) { - isMultiple = true; - } - - // TODO : Need to recheck. We don't have reference field module name if that module is disabled - if(typeof popupReferenceModule == "undefined"){ - popupReferenceModule = "undefined"; - } - - var params = { - 'module' : popupReferenceModule, - 'src_module' : sourceModule, - 'src_field' : sourceField, - 'src_record' : sourceRecordId - } - - if(isMultiple) { - params.multi_select = true ; - } - return params; - }, - - /* - * Function to set reference field value - */ - setReferenceFieldValue : function(container, params) { - var sourceField = container.find('input.sourceField').attr('name'); - var fieldElement = container.find('input[name="'+sourceField+'"]'); - var sourceFieldDisplay = sourceField+"_display"; - var fieldDisplayElement = container.find('input[name="'+sourceFieldDisplay+'"]'); - var popupReferenceModuleElement = container.find('input[name="popupReferenceModule"]').length ? container.find('input[name="popupReferenceModule"]') : container.find('input.popupReferenceModule'); - var popupReferenceModule = popupReferenceModuleElement.val(); - var selectedName = params.name; - var id = params.id; + var isMultiple = false; + if(sourceFieldElement.data('multiple') == true) { + isMultiple = true; + } + + // TODO : Need to recheck. We don't have reference field module name if that module is disabled + if(typeof popupReferenceModule == "undefined"){ + popupReferenceModule = "undefined"; + } + + var params = { + 'module' : popupReferenceModule, + 'src_module' : sourceModule, + 'src_field' : sourceField, + 'src_record' : sourceRecordId + } + + if(isMultiple) { + params.multi_select = true ; + } + return params; + }, + + /* + * Function to set reference field value + */ + setReferenceFieldValue : function(container, params) { + var sourceField = container.find('input.sourceField').attr('name'); + var fieldElement = container.find('input[name="'+sourceField+'"]'); + var sourceFieldDisplay = sourceField+"_display"; + var fieldDisplayElement = container.find('input[name="'+sourceFieldDisplay+'"]'); + var popupReferenceModuleElement = container.find('input[name="popupReferenceModule"]').length ? container.find('input[name="popupReferenceModule"]') : container.find('input.popupReferenceModule'); + var popupReferenceModule = popupReferenceModuleElement.val(); + var selectedName = params.name; + var id = params.id; if (id && selectedName) { if(!fieldDisplayElement.length) { @@ -1172,64 +1172,64 @@ Vtiger.Class('Vtiger_Index_Js', { } fieldElement.trigger(Vtiger_Edit_Js.referenceSelectionEvent, {'source_module' : popupReferenceModule, 'record' : id, 'selectedName' : selectedName}); } - }, - - /* - * Function to get referenced module name - */ - getReferencedModuleName : function(parentElement) { - var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',parentElement).length ? - jQuery('input[name="popupReferenceModule"]',parentElement) : jQuery('input.popupReferenceModule',parentElement); - return referenceModuleElement.val(); - }, - - /* - * Function to show quick create modal while creating from reference field - */ - referenceCreateHandler : function(container) { - var thisInstance = this; - var postQuickCreateSave = function(data) { + }, + + /* + * Function to get referenced module name + */ + getReferencedModuleName : function(parentElement) { + var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',parentElement).length ? + jQuery('input[name="popupReferenceModule"]',parentElement) : jQuery('input.popupReferenceModule',parentElement); + return referenceModuleElement.val(); + }, + + /* + * Function to show quick create modal while creating from reference field + */ + referenceCreateHandler : function(container) { + var thisInstance = this; + var postQuickCreateSave = function(data) { var module = thisInstance.getReferencedModuleName(container); var params = {}; - params.name = data._recordLabel; - params.id = data._recordId; + params.name = data._recordLabel; + params.id = data._recordId; params.module = module; - thisInstance.setReferenceFieldValue(container, params); - - var tdElement = thisInstance.getParentElement(container.find('[value="'+ module +'"]')); - var sourceField = tdElement.find('input[class="sourceField"]').attr('name'); - var fieldElement = tdElement.find('input[name="'+sourceField+'"]'); + thisInstance.setReferenceFieldValue(container, params); + + var tdElement = thisInstance.getParentElement(container.find('[value="'+ module +'"]')); + var sourceField = tdElement.find('input[class="sourceField"]').attr('name'); + var fieldElement = tdElement.find('input[name="'+sourceField+'"]'); thisInstance.autoFillElement = fieldElement; thisInstance.postRefrenceSearch(params, container); - - tdElement.find('input[class="sourceField"]').trigger(Vtiger_Edit_Js.postReferenceQuickCreateSave, {'data' : data}); - } - - var referenceModuleName = this.getReferencedModuleName(container); - var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]'); - if(quickCreateNode.length <= 0) { - var notificationOptions = { - 'title' : app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED') - } - app.helper.showAlertNotification(notificationOptions); - } - quickCreateNode.trigger('click',[{'callbackFunction':postQuickCreateSave}]); - }, - - /** - * Function to get reference search params - */ - getReferenceSearchParams : function(element){ - var tdElement = this.getParentElement(element); - var params = {}; - var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',tdElement).length ? - jQuery('input[name="popupReferenceModule"]',tdElement) : jQuery('input.popupReferenceModule',tdElement); - var searchModule = referenceModuleElement.val(); - params.search_module = searchModule; - return params; - }, - - searchModuleNames : function(params) { + + tdElement.find('input[class="sourceField"]').trigger(Vtiger_Edit_Js.postReferenceQuickCreateSave, {'data' : data}); + } + + var referenceModuleName = this.getReferencedModuleName(container); + var quickCreateNode = jQuery('#quickCreateModules').find('[data-name="'+ referenceModuleName +'"]'); + if(quickCreateNode.length <= 0) { + var notificationOptions = { + 'title' : app.vtranslate('JS_NO_CREATE_OR_NOT_QUICK_CREATE_ENABLED') + } + app.helper.showAlertNotification(notificationOptions); + } + quickCreateNode.trigger('click',[{'callbackFunction':postQuickCreateSave}]); + }, + + /** + * Function to get reference search params + */ + getReferenceSearchParams : function(element){ + var tdElement = this.getParentElement(element); + var params = {}; + var referenceModuleElement = jQuery('input[name="popupReferenceModule"]',tdElement).length ? + jQuery('input[name="popupReferenceModule"]',tdElement) : jQuery('input.popupReferenceModule',tdElement); + var searchModule = referenceModuleElement.val(); + params.search_module = searchModule; + return params; + }, + + searchModuleNames : function(params) { var aDeferred = jQuery.Deferred(); if(typeof params.module == 'undefined') { @@ -1239,7 +1239,7 @@ Vtiger.Class('Vtiger_Index_Js', { if(typeof params.action == 'undefined') { params.action = 'BasicAjax'; } - + if(typeof params.base_record == 'undefined') { var record = jQuery('[name="record"]'); var recordId = app.getRecordId(); @@ -1262,340 +1262,340 @@ Vtiger.Class('Vtiger_Index_Js', { //TODO : Handle error aDeferred.reject(); } - ); + ); return aDeferred.promise(); }, - - /* - * Function to get Field parent element - */ - getParentElement : function(element) { - var parent = element.closest('td'); - // added to support from all views which may not be table format - if(parent.length === 0) { - parent = element.closest('.td').length ? - element.closest('.td') : element.closest('.fieldValue'); - } - return parent; - }, - - getUserNameForId : function(id) { - for(var key in userList) { - if(userList[key] === id) { - return key; - } - } - return null; - }, - - modulesMenuScrollbar : function(){ + + /* + * Function to get Field parent element + */ + getParentElement : function(element) { + var parent = element.closest('td'); + // added to support from all views which may not be table format + if(parent.length === 0) { + parent = element.closest('.td').length ? + element.closest('.td') : element.closest('.fieldValue'); + } + return parent; + }, + + getUserNameForId : function(id) { + for(var key in userList) { + if(userList[key] === id) { + return key; + } + } + return null; + }, + + modulesMenuScrollbar : function(){ app.helper.showVerticalScroll(jQuery("#modnavigator #modules-menu"),{autoHideScrollbar:true}); - }, - - mentionerCallBack: function() { - jQuery(document).on('textComplete:select', '.mention_listener', function(e, word, strategy) { - //First charecter is " " if user mentioned in the begining - //Removing it here - var value = $(e.currentTarget).val(); - value = app.getDecodedValue(value); - if(value.charAt(0) === ' ') value = value.substr(1); - $(e.currentTarget).val(value); - Vtiger_Index_Js.hideNC = false; - }); - }, - - registerChangeTemplateEvent: function (container, recordId) { - var sourceModule = container.find('#sourceModuleName').val(); - var thisInstance = this; - var select = container.find('#fieldList'); - select.on("change", function () { - var templateId = select.val(); - thisInstance.showQuickPreviewForId(recordId, sourceModule, app.getAppName(), templateId); - }); - }, - - registerMoreRecentUpdatesClickEvent: function (container, recordId) { - var moduleName = container.find('#sourceModuleName').val(); - container.find('.moreRecentUpdates').on('click', function () { - var recentUpdateURL = "index.php?view=Detail&mode=showRecentActivities&page=1&module=" + moduleName + "&record=" + recordId + "&tab_label=LBL_UPDATES"; - window.location.href = recentUpdateURL; - }); - }, - - registerNavigationEvents: function (container) { - this.registerNextRecordClickEvent(container); - this.registerPreviousRecordClickEvent(container); - }, - - registerNextRecordClickEvent: function(container){ - var self = this; - container.find('#quickPreviewNextRecordButton').on('click',function(e){ - var element = jQuery(e.currentTarget); - var nextRecordId = element.data('record') || element.data('id'); - var moduleName = container.find('#sourceModuleName').val(); - var appName = element.data('app'); - var templateId, fieldList = container.find('#fieldList'); - if(fieldList.length) { - templateId = fieldList.val(); - } - self.showQuickPreviewForId(nextRecordId, moduleName, appName, templateId, false, 'navigation'); - }); - }, - - registerPreviousRecordClickEvent: function(container){ - var self = this; - container.find('#quickPreviewPreviousRecordButton').on('click', function (e) { - var element = jQuery(e.currentTarget); - var prevRecordId = element.data('record') || element.data('id'); - var moduleName = container.find('#sourceModuleName').val(); - var appName = element.data('app'); - var templateId, fieldList = container.find('#fieldList'); - if(fieldList.length) { - templateId = fieldList.val(); - } - self.showQuickPreviewForId(prevRecordId, moduleName, appName, templateId, false, 'navigation'); - }); - }, - - _showInventoryQuickPreviewForId: function (recordId, moduleName, templateId, isReference, mode) { - var thisInstance = this; - var params = {}; - if(typeof moduleName === 'undefined') { - moduleName = app.module(); - } - params['module'] = moduleName; - params['record'] = recordId; - params['view'] = 'RecordQuickPreview'; - if(isReference == true){ - params['navigation'] = 'false'; - } - else{ - params['navigation'] = 'true'; - } - - if (templateId) { - params['templateid'] = templateId; - } - + }, + + mentionerCallBack: function() { + jQuery(document).on('textComplete:select', '.mention_listener', function(e, word, strategy) { + //First charecter is " " if user mentioned in the begining + //Removing it here + var value = $(e.currentTarget).val(); + value = app.getDecodedValue(value); + if(value.charAt(0) === ' ') value = value.substr(1); + $(e.currentTarget).val(value); + Vtiger_Index_Js.hideNC = false; + }); + }, + + registerChangeTemplateEvent: function (container, recordId) { + var sourceModule = container.find('#sourceModuleName').val(); + var thisInstance = this; + var select = container.find('#fieldList'); + select.on("change", function () { + var templateId = select.val(); + thisInstance.showQuickPreviewForId(recordId, sourceModule, app.getAppName(), templateId); + }); + }, + + registerMoreRecentUpdatesClickEvent: function (container, recordId) { + var moduleName = container.find('#sourceModuleName').val(); + container.find('.moreRecentUpdates').on('click', function () { + var recentUpdateURL = "index.php?view=Detail&mode=showRecentActivities&page=1&module=" + moduleName + "&record=" + recordId + "&tab_label=LBL_UPDATES"; + window.location.href = recentUpdateURL; + }); + }, + + registerNavigationEvents: function (container) { + this.registerNextRecordClickEvent(container); + this.registerPreviousRecordClickEvent(container); + }, + + registerNextRecordClickEvent: function(container){ + var self = this; + container.find('#quickPreviewNextRecordButton').on('click',function(e){ + var element = jQuery(e.currentTarget); + var nextRecordId = element.data('record') || element.data('id'); + var moduleName = container.find('#sourceModuleName').val(); + var appName = element.data('app'); + var templateId, fieldList = container.find('#fieldList'); + if(fieldList.length) { + templateId = fieldList.val(); + } + self.showQuickPreviewForId(nextRecordId, moduleName, appName, templateId, false, 'navigation'); + }); + }, + + registerPreviousRecordClickEvent: function(container){ + var self = this; + container.find('#quickPreviewPreviousRecordButton').on('click', function (e) { + var element = jQuery(e.currentTarget); + var prevRecordId = element.data('record') || element.data('id'); + var moduleName = container.find('#sourceModuleName').val(); + var appName = element.data('app'); + var templateId, fieldList = container.find('#fieldList'); + if(fieldList.length) { + templateId = fieldList.val(); + } + self.showQuickPreviewForId(prevRecordId, moduleName, appName, templateId, false, 'navigation'); + }); + }, + + _showInventoryQuickPreviewForId: function (recordId, moduleName, templateId, isReference, mode) { + var thisInstance = this; + var params = {}; + if(typeof moduleName === 'undefined') { + moduleName = app.module(); + } + params['module'] = moduleName; + params['record'] = recordId; + params['view'] = 'RecordQuickPreview'; + if(isReference == true){ + params['navigation'] = 'false'; + } + else{ + params['navigation'] = 'true'; + } + + if (templateId) { + params['templateid'] = templateId; + } + if(mode) { params['preview_mode'] = mode; } - app.helper.showProgress(); - app.request.get({data: params}).then(function (err, response) { - app.helper.hideProgress(); - if (templateId && mode != 'navigation') { - jQuery('#pdfViewer').html(response); - return; - } - var params = { - cb: function () { - thisInstance.registerChangeTemplateEvent(jQuery('#helpPageOverlay'), recordId); - thisInstance.registerNavigationEvents(jQuery('#helpPageOverlay')); - ListTemplates_Js = new PrintTemplates_ListTemplates_Js(); - ListTemplates_Js.registerEvents(); - } - }; - jQuery('#helpPageOverlay').css({"width": "870px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'}); - app.helper.loadHelpPageOverlay(response, params); - }); - }, - - _showQuickPreviewForId: function (recordId, moduleName, appName, isReference) { - var self = this; - var params = {}; - if (typeof moduleName === 'undefined') { - moduleName = app.module(); - } - params['module'] = moduleName; - params['record'] = recordId; - params['view'] = 'RecordQuickPreview'; - if(isReference === true){ - params['navigation'] = 'false'; - } - else{ - params['navigation'] = 'true'; - } - params['app'] = appName; - - app.helper.showProgress(); - app.request.get({data: params}).then(function (err, response) { - app.helper.hideProgress(); - jQuery('#helpPageOverlay').css({"width": "550px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'}); - var callBack = function(container){ - self.registerMoreRecentUpdatesClickEvent(container,recordId); - //Register Navigation Events - self.registerNavigationEvents(container); - }; - app.helper.loadHelpPageOverlay(response, { - 'cb' : callBack - }); - var params = { - setHeight: "100%", - alwaysShowScrollbar: 2, - autoExpandScrollbar: true, - setTop: 0, - scrollInertia: 70, - mouseWheel: {preventDefault: true} - }; - app.helper.showVerticalScroll(jQuery('.quickPreview .modal-body'), params); - }); - }, - - isInventoryModule : function(moduleName) { - var inventoryModules = jQuery('#inventoryModules').val(); - return inventoryModules.indexOf(moduleName) !== -1; - }, - - showQuickPreviewForId: function(recordId, moduleName, appName, templateId, isReference, mode) { - var self = this; - if(self.isInventoryModule(moduleName) && moduleName != 'Subscription') { - self._showInventoryQuickPreviewForId(recordId, moduleName, templateId, isReference, mode); - } else { - self._showQuickPreviewForId(recordId, moduleName, appName, isReference); - } - }, - - registerReferencePreviewEvent : function() { - var self = this; - var view = app.view(); - jQuery('body').on('click', '.js-reference-display-value', function(e) { - e.preventDefault(); - e.stopPropagation(); - var currentTarget = jQuery(this); - if(currentTarget.closest('#popupPageContainer').length) { - return; //no action in reference selection popup - } - var href = currentTarget.attr('href'); - if(view === 'List') { - if(currentTarget.data('timer')) { - //if list view single click has set a time, clear it - clearTimeout(currentTarget.data('timer')); - currentTarget.data('timer', null); - } - //perform show preview only after 500ms in list view to support double click edit action - if (!currentTarget.data('preview-timer') && typeof href != 'undefined') { - currentTarget.data('preview-timer', setTimeout(function () { - var data = app.convertUrlToDataParams(href); - self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true); - currentTarget.data('preview-timer',null); - }, 500)); - } - } else { - var data = app.convertUrlToDataParams(href); - self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true); - } - }); - - if(view === 'List') { - /* - * when reference display value is double clicked in list view, - * should initiate inline edit instead of showing preview - */ - jQuery('body').on('dblclick', '.js-reference-display-value', function(e) { - e.preventDefault(); - var currentTarget = jQuery(this); - if (currentTarget.data('preview-timer')) { - clearTimeout(currentTarget.data('preview-timer')); - currentTarget.data('preview-timer', null); - }; - }); - } - }, - + app.helper.showProgress(); + app.request.get({data: params}).then(function (err, response) { + app.helper.hideProgress(); + if (templateId && mode != 'navigation') { + jQuery('#pdfViewer').html(response); + return; + } + var params = { + cb: function () { + thisInstance.registerChangeTemplateEvent(jQuery('#helpPageOverlay'), recordId); + thisInstance.registerNavigationEvents(jQuery('#helpPageOverlay')); + ListTemplates_Js = new PrintTemplates_ListTemplates_Js(); + ListTemplates_Js.registerEvents(); + } + }; + jQuery('#helpPageOverlay').css({"width": "870px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'}); + app.helper.loadHelpPageOverlay(response, params); + }); + }, + + _showQuickPreviewForId: function (recordId, moduleName, appName, isReference) { + var self = this; + var params = {}; + if (typeof moduleName === 'undefined') { + moduleName = app.module(); + } + params['module'] = moduleName; + params['record'] = recordId; + params['view'] = 'RecordQuickPreview'; + if(isReference === true){ + params['navigation'] = 'false'; + } + else{ + params['navigation'] = 'true'; + } + params['app'] = appName; + + app.helper.showProgress(); + app.request.get({data: params}).then(function (err, response) { + app.helper.hideProgress(); + jQuery('#helpPageOverlay').css({"width": "550px", "box-shadow": "-8px 0 5px -5px lightgrey", 'height': '100vh', 'background': 'white'}); + var callBack = function(container){ + self.registerMoreRecentUpdatesClickEvent(container,recordId); + //Register Navigation Events + self.registerNavigationEvents(container); + }; + app.helper.loadHelpPageOverlay(response, { + 'cb' : callBack + }); + var params = { + setHeight: "100%", + alwaysShowScrollbar: 2, + autoExpandScrollbar: true, + setTop: 0, + scrollInertia: 70, + mouseWheel: {preventDefault: true} + }; + app.helper.showVerticalScroll(jQuery('.quickPreview .modal-body'), params); + }); + }, + + isInventoryModule : function(moduleName) { + var inventoryModules = jQuery('#inventoryModules').val(); + return inventoryModules.indexOf(moduleName) !== -1; + }, + + showQuickPreviewForId: function(recordId, moduleName, appName, templateId, isReference, mode) { + var self = this; + if(self.isInventoryModule(moduleName) && moduleName != 'Subscription') { + self._showInventoryQuickPreviewForId(recordId, moduleName, templateId, isReference, mode); + } else { + self._showQuickPreviewForId(recordId, moduleName, appName, isReference); + } + }, + + registerReferencePreviewEvent : function() { + var self = this; + var view = app.view(); + jQuery('body').on('click', '.js-reference-display-value', function(e) { + e.preventDefault(); + e.stopPropagation(); + var currentTarget = jQuery(this); + if(currentTarget.closest('#popupPageContainer').length) { + return; //no action in reference selection popup + } + var href = currentTarget.attr('href'); + if(view === 'List') { + if(currentTarget.data('timer')) { + //if list view single click has set a time, clear it + clearTimeout(currentTarget.data('timer')); + currentTarget.data('timer', null); + } + //perform show preview only after 500ms in list view to support double click edit action + if (!currentTarget.data('preview-timer') && typeof href != 'undefined') { + currentTarget.data('preview-timer', setTimeout(function () { + var data = app.convertUrlToDataParams(href); + self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true); + currentTarget.data('preview-timer',null); + }, 500)); + } + } else { + var data = app.convertUrlToDataParams(href); + self.showQuickPreviewForId(data.record, data.module, app.getAppName(),'',true); + } + }); + + if(view === 'List') { + /* + * when reference display value is double clicked in list view, + * should initiate inline edit instead of showing preview + */ + jQuery('body').on('dblclick', '.js-reference-display-value', function(e) { + e.preventDefault(); + var currentTarget = jQuery(this); + if (currentTarget.data('preview-timer')) { + clearTimeout(currentTarget.data('preview-timer')); + currentTarget.data('preview-timer', null); + }; + }); + } + }, + registerPostReferenceEvent : function(container) { - var thisInstance = this; - - container.find('.sourceField').on(Vtiger_Edit_Js.postReferenceSelectionEvent,function(e,result){ - var dataList = result.data; - var element = jQuery(e.currentTarget); - - if(typeof element.data('autofill') != 'undefined') { - thisInstance.autoFillElement = element; - if(typeof(dataList.id) == 'undefined'){ - thisInstance.postRefrenceComplete(dataList, container); - }else { - thisInstance.postRefrenceSearch(dataList, container); - } - } - }); - }, - + var thisInstance = this; + + container.find('.sourceField').on(Vtiger_Edit_Js.postReferenceSelectionEvent,function(e,result){ + var dataList = result.data; + var element = jQuery(e.currentTarget); + + if(typeof element.data('autofill') != 'undefined') { + thisInstance.autoFillElement = element; + if(typeof(dataList.id) == 'undefined'){ + thisInstance.postRefrenceComplete(dataList, container); + }else { + thisInstance.postRefrenceSearch(dataList, container); + } + } + }); + }, + postRefrenceComplete : function(data, container){ - var thisInstance = this; - if(!data) - return ; - - jQuery.each(data, function(id, value){ - thisInstance.fillReferenceFieldValue(value, container); - }); - }, - + var thisInstance = this; + if(!data) + return ; + + jQuery.each(data, function(id, value){ + thisInstance.fillReferenceFieldValue(value, container); + }); + }, + getRelatedFieldElements: function(container, autoFillData){ - var parentElems = {}; + var parentElems = {}; if (autoFillData) { var field = container.find('#'+autoFillData.fieldname+'_display').closest('td'); parentElems['parent_id'] = field; } - return parentElems; - }, - - fillReferenceFieldValue : function(data, container){ - var thisInstance = this; + return parentElems; + }, + + fillReferenceFieldValue : function(data, container){ + var thisInstance = this; var autoFillElement = this.autoFillElement; var autoFillData = autoFillElement.data('autofill'); var completedValues = []; for(var index in autoFillData){ - var value = autoFillData[index]; - var referenceContainer = thisInstance.getRelatedFieldElements(container, value); - jQuery.each(data, function(datakey, datavalue){ - for(var name in datavalue){ - if(typeof datavalue[name] == 'object'){ - var key = name; - var dataList = { - 'name': datavalue[key].name, - 'id' : datavalue[key].id - } - - if(value.module == datavalue[key].module){ - var autoFillElement = thisInstance.autoFillElement; - var autoFillData = value; - var popupReferenceModuleElement = autoFillElement.parent().parent().find('[name=popupReferenceModule]').length ? - autoFillElement.parent().parent().find('[name=popupReferenceModule]') : autoFillElement.parent().parent().find('.popupReferenceModule'); - var module = popupReferenceModuleElement.val(); - var elementName = autoFillElement.attr('name'); - var selectedName = container.find('#'+elementName+'_display').val(); - var message = app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG1')+' '+app.vtranslate('SINGLE_'+autoFillData.module)+" "+app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG2')+" "+app.vtranslate('SINGLE_'+module)+' ('+selectedName+') '+app.vtranslate('SINGLE_'+autoFillData.module)+" ?"; - var parentId = container.find('[name='+autoFillData.fieldname+']').val(); - - if(parentId != dataList.id && parentId) { - if(jQuery.inArray(datavalue[key].module, completedValues) === -1) { - completedValues.push(datavalue[key].module); - thisInstance.confirmAndFillDetails(referenceContainer[key], dataList, message); - } - } else { - thisInstance.setReferenceFieldValue(referenceContainer[key], dataList); - } - } - } - } - }); + var value = autoFillData[index]; + var referenceContainer = thisInstance.getRelatedFieldElements(container, value); + jQuery.each(data, function(datakey, datavalue){ + for(var name in datavalue){ + if(typeof datavalue[name] == 'object'){ + var key = name; + var dataList = { + 'name': datavalue[key].name, + 'id' : datavalue[key].id + } + + if(value.module == datavalue[key].module){ + var autoFillElement = thisInstance.autoFillElement; + var autoFillData = value; + var popupReferenceModuleElement = autoFillElement.parent().parent().find('[name=popupReferenceModule]').length ? + autoFillElement.parent().parent().find('[name=popupReferenceModule]') : autoFillElement.parent().parent().find('.popupReferenceModule'); + var module = popupReferenceModuleElement.val(); + var elementName = autoFillElement.attr('name'); + var selectedName = container.find('#'+elementName+'_display').val(); + var message = app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG1')+' '+app.vtranslate('SINGLE_'+autoFillData.module)+" "+app.vtranslate('JS_OVERWRITE_AUTOFILL_MSG2')+" "+app.vtranslate('SINGLE_'+module)+' ('+selectedName+') '+app.vtranslate('SINGLE_'+autoFillData.module)+" ?"; + var parentId = container.find('[name='+autoFillData.fieldname+']').val(); + + if(parentId != dataList.id && parentId) { + if(jQuery.inArray(datavalue[key].module, completedValues) === -1) { + completedValues.push(datavalue[key].module); + thisInstance.confirmAndFillDetails(referenceContainer[key], dataList, message); + } + } else { + thisInstance.setReferenceFieldValue(referenceContainer[key], dataList); + } + } + } + } + }); } - }, - - confirmAndFillDetails : function(container, data, message) { - var thisInstance = this; - app.helper.showConfirmationBox({'message' : message}).then( - function(e) { - thisInstance.setReferenceFieldValue(container, data); - }, - function(error, err){ - } - ); - }, - + }, + + confirmAndFillDetails : function(container, data, message) { + var thisInstance = this; + app.helper.showConfirmationBox({'message' : message}).then( + function(e) { + thisInstance.setReferenceFieldValue(container, data); + }, + function(error, err){ + } + ); + }, + postRefrenceSearch: function(resultData, container){ - var thisInstance = this; + var thisInstance = this; var module; if(!resultData.module) { var autoFillElement = this.autoFillElement; @@ -1605,20 +1605,20 @@ Vtiger.Class('Vtiger_Index_Js', { }else { module = resultData.module; } - if(!resultData.id) - return; - - var params = { - module: module, - action: 'RelationAjax', - mode: 'getRelatedRecordInfo', - id: resultData.id - }; - - app.request.post({'data' : params}).then(function(err, data){ - if(err == null){ - thisInstance.postRefrenceComplete(data, container); - } - }); - } + if(!resultData.id) + return; + + var params = { + module: module, + action: 'RelationAjax', + mode: 'getRelatedRecordInfo', + id: resultData.id + }; + + app.request.post({'data' : params}).then(function(err, data){ + if(err == null){ + thisInstance.postRefrenceComplete(data, container); + } + }); + } }); diff --git a/modules/Emails/models/Record.php b/modules/Emails/models/Record.php index f3ec099bc..a4da3a8d4 100644 --- a/modules/Emails/models/Record.php +++ b/modules/Emails/models/Record.php @@ -47,7 +47,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { */ public function send($addToQueue = false) { $currentUserModel = Users_Record_Model::getCurrentUserModel(); - $rootDirectory = vglobal('root_directory'); + $rootDirectory = vglobal('root_directory'); $mailer = Emails_Mailer_Model::getInstance(); $mailer->IsHTML(true); @@ -119,7 +119,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { } if(!empty($generatedMessageId)){ - $mailer->MessageID = $generatedMessageId; + $mailer->MessageID = $generatedMessageId; } if (strpos($description, '$logo$')) { @@ -186,7 +186,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { } if(!$status) { $status = $mailer->getError(); - //If mailer error, then update emailflag as saved + //If mailer error, then update emailflag as saved if($status){ $this->updateEmailFlag(); } @@ -340,7 +340,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { */ public function deleteDocumentLink($idList = array()){ $db = PearDatabase::getInstance(); - $query = 'DELETE FROM vtiger_senotesrel where crmid=?'; + $query = 'DELETE FROM vtiger_senotesrel where crmid=?'; $params = array($this->getId()); if(count($idList) > 0) { $query .= 'AND notesid IN ('.generateQuestionMarks($idList).')'; @@ -491,8 +491,8 @@ class Emails_Record_Model extends Vtiger_Record_Model { } $db = PearDatabase::getInstance(); - $sql = 'SELECT mailid, access_count,click_count FROM vtiger_email_track WHERE crmid = ? AND mailid IN('. generateQuestionMarks($emailIds).')'; - $result = $db->pquery($sql, array($parentId, $emailIds)); + $sql = 'SELECT mailid, access_count,click_count FROM vtiger_email_track WHERE crmid = ? AND mailid IN('.generateQuestionMarks($emailIds).')'; + $result = $db->pquery($sql, array($parentId, $emailIds)); $numRows = $db->num_rows($result); if($numRows > 0) { for($i=0;$i<$numRows;$i++){ @@ -538,7 +538,7 @@ class Emails_Record_Model extends Vtiger_Record_Model { } /** - * Function stores emailid,parentmodule and generates shorturl + * Function stores emailid,parentmodule and generates shorturl * @param type $parentModule * @return type */ @@ -640,8 +640,8 @@ class Emails_Record_Model extends Vtiger_Record_Model { $trackingUrl = $this->getTrackUrlForClicks($crmid, $sourceUrl); $content = $this->replaceLinkWithShortUrl($content, $trackingUrl, $sourceUrl, $type); } - return $content; } + return $content; } public function replaceLinkWithShortUrl($content, $toReplace, $search, $type) { diff --git a/modules/Emails/views/MassSaveAjax.php b/modules/Emails/views/MassSaveAjax.php index e5b431571..b90a5ebc4 100644 --- a/modules/Emails/views/MassSaveAjax.php +++ b/modules/Emails/views/MassSaveAjax.php @@ -59,7 +59,6 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View { $recordModel->set('mode', ''); } - $parentEmailId = $request->get('parent_id',null); $attachmentsWithParentEmail = array(); if(!empty($parentEmailId) && !empty ($recordId)) { @@ -117,7 +116,6 @@ class Emails_MassSaveAjax_View extends Vtiger_Footer_View { } - // This will be used for sending mails to each individual $toMailInfo = $request->get('toemailinfo'); diff --git a/modules/Migration/schema/660_to_700.php b/modules/Migration/schema/660_to_700.php index 54b4be280..2c244d16e 100644 --- a/modules/Migration/schema/660_to_700.php +++ b/modules/Migration/schema/660_to_700.php @@ -213,7 +213,7 @@ if(defined('VTIGER_UPGRADE')) { $result = $db->pquery($query, array()); $num_rows = $db->num_rows($result); $relationShipMapping = array(); - for ($i = 0; $i < $num_rows; $i++) { + for ($i=0; $i<$num_rows; $i++) { $tabId = $db->query_result($result, $i, 'tabid'); $relatedTabid = $db->query_result($result, $i, 'related_tabid'); $relationId = $db->query_result($result, $i, 'relation_id'); @@ -345,7 +345,7 @@ if(defined('VTIGER_UPGRADE')) { WHERE vtiger_crmentity.setype NOT IN ('.generateQuestionMarks($internalCommentModules).') OR vtiger_crmentity.setype IS NULL', $internalCommentModules, array()); $commentCount = $db->num_rows($commentsResult); - for ($i = 0; $i < $commentCount; $i++) { + for ($i=0; $i<$commentCount; $i++) { $commentIds[] = $db->query_result($commentsResult, $i, 'modcommentsid'); } if (count($commentIds) > 0) { @@ -388,7 +388,7 @@ if(defined('VTIGER_UPGRADE')) { $result = $db->pquery($query, array($tabid, $modcommentTabid)); $count = $db->num_rows($result); - for ($i = 0; $i < $count; $i++) { + for ($i=0; $i<$count; $i++) { $relationId = $db->query_result($result, $i, 'relation_id'); $sequence = $db->query_result($result, $i, 'sequence'); $sequence += 1; @@ -888,7 +888,7 @@ if(defined('VTIGER_UPGRADE')) { //Adding Create Event and Create Todo workflow tasks for Project module. $taskResult = $db->pquery('SELECT id, modules FROM com_vtiger_workflow_tasktypes WHERE tasktypename IN (?, ?)', array('VTCreateTodoTask', 'VTCreateEventTask')); $taskResultCount = $db->num_rows($taskResult); - for ($i = 0; $i < $taskResultCount; $i++) { + for ($i=0; $i<$taskResultCount; $i++) { $taskId = $db->query_result($taskResult, $i, 'id'); $modules = Zend_Json::decode(decode_html($db->query_result($taskResult, $i, 'modules'))); $modules['include'][] = 'Project'; @@ -1146,7 +1146,7 @@ if(defined('VTIGER_UPGRADE')) { $tagOwners = array(); $tagNamesList = array(); $visibility = Vtiger_Tag_Model::PRIVATE_TYPE; - for ($i = 0; $i < $num_rows; $i++) { + for ($i=0; $i<$num_rows; $i++) { $row = $db->query_result_rowdata($result, $i); $tagId = $row['tag_id']; $tagOwners[$tagId][] = $row['tagger_id']; @@ -1176,7 +1176,7 @@ if(defined('VTIGER_UPGRADE')) { $fieldRows = $db->num_rows($fieldResult); $ignorePickListFields = array('hdnTaxType', 'email_flag'); - for ($i = 0; $i < $fieldRows; $i++) { + for ($i=0; $i<$fieldRows; $i++) { $fieldName = $db->query_result($fieldResult, $i, 'fieldname'); if (in_array($fieldName, $ignorePickListFields) || !Vtiger_Utils::CheckTable("vtiger_$fieldName")) continue; @@ -1192,7 +1192,7 @@ if(defined('VTIGER_UPGRADE')) { $fieldResult = $db->pquery('SELECT fieldname FROM vtiger_field WHERE uitype IN (?,?,?,?) AND tabid IN (?)', array('15', '16', '33', '114', getTabid('Users'))); $fieldRows = $db->num_rows($fieldResult); - for ($i = 0; $i < $fieldRows; $i++) { + for ($i=0; $i<$fieldRows; $i++) { $fieldName = $db->query_result($fieldResult, $i, 'fieldname'); if (!Vtiger_Utils::CheckTable("vtiger_$fieldName")) continue; @@ -1241,7 +1241,8 @@ if(defined('VTIGER_UPGRADE')) { //End $result = $db->pquery('SELECT * FROM vtiger_module_dashboard_widgets', array()); - for ($i = 0; $i < $db->num_rows($result); $i++) { + $num_rows = $db->num_rows($result); + for ($i=0; $i<$num_rows; $i++) { $rowdata = $db->query_result_rowdata($result, $i); if ($rowdata['dashboardtabid'] == null) { $result1 = $db->pquery('SELECT id FROM vtiger_dashboard_tabs WHERE userid=? AND tabname=?', array($rowdata['userid'], 'My Dashboard')); @@ -1269,7 +1270,7 @@ if(defined('VTIGER_UPGRADE')) { $fieldResult = $db->pquery('SELECT fieldname FROM vtiger_field WHERE fieldname=? AND tabid NOT IN (?)', array('salutationtype', getTabid('Users'))); $fieldRows = $db->num_rows($fieldResult); - for ($i = 0; $i < $fieldRows; $i++) { + for ($i=0; $i<$fieldRows; $i++) { $fieldName = $db->query_result($fieldResult, $i, 'fieldname'); if (!Vtiger_Utils::CheckTable("vtiger_$fieldName")) { continue; @@ -1298,8 +1299,8 @@ if(defined('VTIGER_UPGRADE')) { INNER JOIN vtiger_role2picklist ON vtiger_role2picklist.picklistid = vtiger_picklist.picklistid)', array()); $rows = $db->num_rows($deletedPicklistResult); $deletablePicklists = array(); - for ($z = 0; $z < $rows; $z++) { - $deletablePicklists[] = $db->query_result($deletedPicklistResult, $z, 'picklistid'); + for ($i=0; $i<$rows; $i++) { + $deletablePicklists[] = $db->query_result($deletedPicklistResult, $i, 'picklistid'); } if (count($deletablePicklists)) { $db->pquery('DELETE FROM vtiger_role2picklist WHERE picklistid IN ('.generateQuestionMarks($deletablePicklists).')', array($deletablePicklists)); @@ -1703,6 +1704,27 @@ if(defined('VTIGER_UPGRADE')) { $db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE templatename IN (?,?,?) AND module IS NULL', array('Events', 'ToDo Reminder', 'Activity Reminder', 'Invite Users')); $db->pquery('UPDATE vtiger_emailtemplates SET module=? WHERE module IS NULL', array('Contacts')); + $columns = $db->getColumnNames('vtiger_mailmanager_mailrecord'); + if (!in_array('mfolder', $columns)) { + $db->pquery('ALTER TABLE vtiger_mailmanager_mailrecord ADD COLUMN mfolder VARCHAR(250)', array()); + $duplicateResult = $db->pquery('SELECT muid FROM vtiger_mailmanager_mailrecord GROUP BY muid HAVING COUNT(muid) > ?', array('1')); + $noOfDuplicate = $db->num_rows($duplicateResult); + if ($noOfDuplicate) { + $duplicateMuid = array(); + for ($i=0; $i<$noOfDuplicate; $i++) { + $duplicateMuid[] = $db->query_result($duplicateResult, $i, 'muid'); + } + $db->pquery('DELETE FROM vtiger_mailmanager_mailrecord WHERE muid IN ('.generateQuestionMarks($duplicateMuid).')', $duplicateMuid); + $db->pquery('DELETE FROM vtiger_mailmanager_mailattachments WHERE muid IN ('.generateQuestionMarks($duplicateMuid).')', $duplicateMuid); + } + } + + if (Vtiger_Utils::CheckTable('vtiger_mailscanner_ids')) { + $db->pquery('RENAME TABLE vtiger_mailscanner_ids TO vtiger_message_ids', array()); + $db->pquery('ALTER TABLE vtiger_message_ids ADD COLUMN refids MEDIUMTEXT', array()); + $db->pquery('ALTER TABLE vtiger_message_ids ADD INDEX messageids_crmid_idx(crmid)',array()); + } + //Update existing package modules Install_Utils_Model::installModules(); diff --git a/modules/Vtiger/actions/RelatedRecordsAjax.php b/modules/Vtiger/actions/RelatedRecordsAjax.php index da0882a38..ae927a9ea 100644 --- a/modules/Vtiger/actions/RelatedRecordsAjax.php +++ b/modules/Vtiger/actions/RelatedRecordsAjax.php @@ -38,6 +38,7 @@ class Vtiger_RelatedRecordsAjax_Action extends Vtiger_Action_Controller { $relationModels = $parentModuleModel->getRelations(); $relatedRecordsCount = array(); foreach ($relationModels as $relation) { + $relationId = $relation->getId(); $relatedModuleName = $relation->get('relatedModuleName'); $relationListView = Vtiger_RelationListView_Model::getInstance($parentRecordModel, $relatedModuleName, $relation->get('label')); $count = $relationListView->getRelatedEntriesCount(); diff --git a/packages/vtiger/mandatory/MailManager.zip b/packages/vtiger/mandatory/MailManager.zip index 32801ef733b58185aaa3d1055b0adcd349a00893..e42cd9ea2c6f5c043ae697d86922dfdcd572d5c1 100644 GIT binary patch literal 140069 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 z%0D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%0AKM?qS+yp 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 X5)eQy2LRN7za)UC-CjswfCc<N(MaQ( literal 148957 zcma%iW0WY(wq)D3aoV<R+qP}nw!2T;wtd>RZQGi2-y3~zX4akhk*j`1<*M8}B4g)H zc`0BJD1d)GyGce8|MBwQ2Pgm>0BZwVGZzCh6DK+qWk>*E7#3`G7#|*W7k6j?K#)^l z0D%7(<o_o|afRJKFcAKMVPdQ2^52oJXsP~RNGN~54*`(lV=v)|`di}~1^{4)6aWDK z|AHiAU|}s|VEcD|j<ojX_Wv=(d<JUuXW##0ip^L$b{nGiYu~6@dF&({xeF*)Qkg}0 z5}c}15kL}akZ|CEq-tnZkyP=?xI4AI8EZP%iHVz3HDm<g+<IJGTufX{mGHgRD;o=~ zcHiH}wLjSnY}6V~sZkvVE-Q@nhFcxhYZX=O6Ij#hTUR&SH|k^n{cA#M+jpVubI~-e zttuIfd6OPnj;>Q#EhsErZr^alJ)Y$Vbb3FNJ(0K@#&T6?xEp}g8i9TjZ!Jb9u$0y< zDj7>0W^pF1B}>T=)h4USZYDV@lc=C(CLi0XWSjSyLxwAdJYP+;ok*iR-+ff|pn~h$ zJp?2tIGE@KXZrXw6WG69y7XJ+JTaTXs9NOuy02HMUYe&)lu@G)<{H9VyF7M52Y%r3 zpO3H3&fHW~cdi<^@Z4lHcA77VoHD_zKhGbH87IaqQ<wa0NG}h_L;*?&&G-?uLC%WH zpxB!r7x0S~`DK_-;>d$x!-?gSf=3xh6Z&)`#T7!(mN%D%ge4GnQ2>moKz_gc$rbTT zIC>H4hA5!;)l>ajvF`Ox0Rh1T06PIT6=^`GaVpD8`9jGAmaG<4D1U0RHCaHW>)dUa z;$?JyylZ8^u>KCGmrOwg;%em)xa_{yZ7;T{F1LcE%ApP7jEGWGYM_Y=RS#@Te!v&x zWd|TEqJq45a0&FdS5K){2)|c5v*?Wq*}7L8NP|bqo;0&{N8MzXrF$n{MOi@R=+J1* zFr{Q(Nd(8+aD1qLH;On?!O>tb^X#k3LpsaQYAwkuc{d`wcTpUWC0418i0(lBs;#Mi zw_-9me{09Yz3f{&h@zp$E&)P^H!NY+c;PbPoLKOm22sudc6J=LjL--7HV(4VWD`tA ztNSN&C#W(DZrwXuV*pkKd6}kQVb#G1c-fF5!qDve(h%Yub2phBZt!ld_G+>|`7+>8 z6Q~6-mF1SW0*dFfQ--f?l8bOqi4^%3+(v4wxd?6X5u$voJc^Pm>yIFxzJ-j&R|EfV zhv@G)b<WV!4ao~Bsu92ifQ#8Ae*6qhGZ6DG0m`lzkN_cKAkUQpdyVRGoUa?s%JE-~ z%JuP+qL!wh2gD}Xq%4U?;g>n0eWo42*`xcA9lQ8&j>EpYosey{*t91Snch0D$FGLB zoMj9H$F!9beo2|s9_yNfxFL-K>)qCWhF9ru+C6_ohip1bJ9uq|#1u&l3wo+<PF$@q z+&CjFU%)O)&#$ubBfl}3L9M?vf|7o+!<INOzP(!P8&TH<3-tptZq&zwT94*k61{N_ znK?@!jdW+eJrI{18lBzyQg1+S6&EoZ@+91ZM#`PEl}l)30jE#%7`IbbTjOx8_;SMA ziK{;Mt!Z;(eXy)S2?I&`aB-PX;s~}6sZ$(z`8+?E2oRtisIEt)q4xrv9UdN(CP`3R z&Et6>%OK<HOvD{LGDgQ+IxZyd2E}8zM@cL${z|xUH`<4|eiLeHoYeyJJ%4*BUv?yl z#6_tAt(DU4sw>hJ_4Q66UBJZ6==f1r)TD64oA&8mS@-voG@IYIzDLeVd75^Oblbtc z?7VrIZA6#`00KzO?%x_ha`25c6{<}E(Lc*za^w9_ICuZuQ_{472I};|bxxi%-i4Ng zTRGzZrmqo26A!xNaMb{H{ZYk$^9|f~ydmtL#XI6YR9QW;;We0^{Kn(wsy4rI`I-Xv ziZdgPB5$`EAcsaA&XJ6`AgJ#KS{-iFcZJ3ogWE(d_w32Py%67}XC$do;68u_g=Fp7 zFYrK9H<k^Gk%}C;B`744&dUM<D3Xb!VSwzf#hSt7GRRRBC!FA);{{$HuDs4F{Co#b z4jfJ^L@Ku<NN2>yXioj>@(~<8sF+sScT0Q+^pUfoEM5=1{M0amc#j)48=6o47h`3% zQ%?H@ICz<;Nf|UI&^@H3BcgA{>d|J~ZED7eRa<mlER%HASqlE!adP?NSg}_fOBk49 zXz3lYI?%n8VN3P0e@!#?<yMe!gymVN|1~k?%JU-Dc0+?;GU)uS>Q$rGrRW0aa*FWh z{54uV*R-YiESK+!eAvJl+IS^W>tb~yoEPogs-f9V6Fa%TEOz2)==#0r6H5lQLI%Hv zJ_5Ca#5_k<fk}l;)UcvXt8;eaHu_8`oZE1s=%p<o>;!=rD&cP9Gu}L#GT7pwlSf*7 zC^;sSrLJHowUq~@2`nj>*`4NPMPPHhYu<^)((|~W>b@gdLb)Z5$JFSaG$qXP9QJm2 z=nL0S&w2D%*Zd6{fJlH}euEjOgZPsL)rqh_QeTCfX#^}TxQv7_G|)6ZiMjFFhU7Er z*RQ$=T0TDu6Vw+<7$d%?UVc!<9KTR6y4z3j_GeB0m*B9;-V~cKMO8tU8zaEPIBrpf zD4Q`Y9yJRGx{gx2!*sE<<2Vvyd~tc2U}8)pOsJl5SCtXoP2cmvufdHCImw_0_|_@1 zPdCdKumx0&BZf)~>Xh2X_gMHpPoCr)W-ycp?97g|n*>P6c)+mQ9KB*A#5A15<`NM| z9c-Lf{IB-pAi}E34?x)`Wg*`{2fM-2SpB*pYSKY2&h39_hxE_)y%vnqhwah5)(q7% zH-2R>SuT@LWpd}74+K~6Sp}&cLA*>HJw7mEktr+Gj(6%b=601l{5IEwe_~$O;3P>v z)+?tf9;-?KHs$MbGTe#KmH~W&&nYQ3U7a41Pf^_3(pqJ2$5IANqLj+0)Dh*-7&M3b zgCEm1VX<2o9h)SZG@`>6V`k4l#dYY)WoSfuzu7@vu%k#;vaYg&<S5FLF0TN31oFM< z^s5pfP??F~uJ-Gj_C~6za40IPd9%ia5v#fD`|a_ub7y1MFH>-QofHA{xW-w*AwFl@ zxEQa193}}vG@YksZ@2Hb(cDG*Mh??6ns8X*-k=}L$ove9S9-H>8sp+DZR6KQX=y~{ zFvgzeGILRDseGZ1DZIIODeb(~c5)?|p)z1(=qEOl{h%x4$v_k{Vv|z^{UV?^3|MsE zU59KID;;yNW4g+iZl0QgfiWmSCrDQLiFmzLQ-&v;YNfAYF5&Rys;g-e3$Ftx_Un@W zd$``-pS#-#%jo<e3&zI)aC4U9_zZ<<112L($I(ed6gsV{HaIpwp3H8^KNmq){_9!R zIWNVJTFN&(BO<f$&O5xOJ5V<4#v%E`;}j`*tYMV=njHGq&LI_sh|zO6>XP8Z`LJ&% zF-_-)_cKN}Q|s3dVch5;c%7)z=_ViU_M?()K==;RB4XENx%{G56iwMLvB)qoX=)~o znC-mNo0pnp@m~O(@mR(D7Er}R?xIhR6Ftgr<V?w5dg5OuhZ#p`9|qxdV2wtc2R6_g zcxFhH1BX)*B<$_wIW}keGP{Ai0dY@^iwU@4!|@i;<Z{xQTsTJZiK7@?`S}T`M(R~K z;S5Y-z&S`ub{>w0#-f(;fkwS~fkK(Xst)ZCf+I>($A`v?dT{1l<l3W*0VT$UQg#K^ zm&gKhTP;XyfNP^c)DuMR<s6Ei4;#I3b%UTc6Bc-De^~MLQB>%21fEX)9DH_^7GL$L zR*VJO10<33>^%CT(CMf#D<U%&%9MC;mt1{Q9;PPf1C7EgXJ88<#Jq;JT40Ui1HVVa zwAK<#MCSbUuDF75c&~MWKfyTJGPWMO<l`vHOBdiblDD6QjJ!u+ev6{)eFrNQqRHay z1S7TszR!a`>Nbkpr?8f9lmDKW_jSG!b22-|N7C>8gPRtRlxl?ZK9Xhjs=}oob@~P# z^v)MAROt1HcRI1Nv8>c+gHzdS_I$ilhVDi=WA2~YI4un0UlYa8h7Zs`Xp6%hlz~4Y zKUEU(6H@eD_(T6h3E^Qt<b=i~{=p8s6Y<rfAbC4O413a0x;EpaF>-qY#~IvB?WCRR z4gU>n;fTNh$CeG`#ksB9T#MOb1Xng-b^5WCj8TgzVxG2u@MOxGw+^fmP?-x_<}2X= z!3yqp9ugQ9BoBiv^1>1XjYn~q1}N)+=0b9+)6M_YK&5p3+fC!w-{cG&f|%fsLJr&A zU6HL*PGamGmJp!oE7!8Ll<s6Ve))C6sIWF&KN*M2v^H{MU-SoTjIdjqbQM|&+BD=i z1>gOP9_huie+{*^uGnt%s3u7CE&e|5Wl;$d)fyw9wDPR%kw7+U>@aJSJ|R<91s1Jb zVI;fi#2*>FhOi2FJ?GsqkANWK)BzkS#@D!fIJ-V~_mSe8NouUh>g1%iK|w7dkXD$P z;Qgl$SY`>pbRlR{;c>{PeAcbq96<%EFZEQ%qPeo7^npk9^3veyXw&ve1x6?;E=lQ2 zD7kQQrruKYa%HC{rj>g{PguvqMIpeh*R1g#8?NlJHX?bZ^--%-C#u(g^H!=5#_Q90 zFpKNkGMd-u!zf^d?+5&U8L~QW(SI1Sf0;UG6B~PL1Lyx?>WqFptNlMr-G5rKe_>p$ zGZI9C007Lx1N=q!-!YU-oSiLf&76cyod4P}T4#If|L|e|LjAw^upu=YyM1<qZ<t;~ z+I1@Vl=-v`o^p^P+M?F%JmvW3n%sDa(BV$f>2)}ou=kxA*(3lOn{wH1QA?9cGNu`B zrWUd&osTrj=9UjQIYiffSOji7N|+Q7UO-fNNaS&ZaQ^taS1wN|loe<QCJ{S%eyiD_ zDEG-SaGi4la>N>W@o^#cO+IGT3DpjLm2>+kqx3|MU~Pe_dMR}G6N4iE(98j5!{lJR z0U8y7eHxa8`b%g}A)$f1As-M*IsFtlz5xW{xRA8oS;+DNtes&@Mm!6Bq#Y%x@*JOs zeNc2s@L&DN;wbO*zs+o;325-9o;Csk9V;8&w<(P1>7kLp$Q34M*&c3g7b}*IuYKy< z;w5KKd(1za!SIL_S*h_+^DiU!ZKO_;XAwe{r~`d3>&?-ipM#?)5N3i`>w1zf6MnN6 z$eL!q9|cKn1yWS_f52W8@Hx}uc^<whV<wds|5=Ze>$j^!MpN=L`C<?iCH}lO=jjI- z!4y^)lD_}KR;Jx9|ArX~zS9b0z>=V>J~k`?fh1Y5ph)}1aqV>#6H<;0Wou}9DPOVE zbIlp=)`5=2M=ZA>o!VdD43ynfx@lVYTK~azb-j0Jj&M_^)Tr6)<w-}CMqyHwfieNU zCB&~+^c*aDt%m|^o<_T!UBJE&8$3Ugeij#(4mmrA6=Q^L(XP*Ik>!QATV`R1WWS2- zED?ojvVw=p;@VReeX`*=>#dLzoZ7=Q1uFFpm9jN;y2+wkXny3LXjyR4HZz8adE1Ke z&K>`ZpH?eDW8u^&p$A2Qa@B7UFvxmDXVy%pryZ{nOu`@gIZubi58=SWc=0{Vf;H~5 z<04!zTG^#Om|TU7e}y;t5-K8M%8jzQ^j;t@Y#Pa+Xb64EdQ$F8u2`O3Dm1WwS6x&R zI4(|YXGm&y(~4>5+xhcnCS97Gu~%w%w92|!pXq^1NZQDWz9#h*IkB`__2+&Qw|xbD zTGJC*sC^~#KG(=zL_Hb-DSsxdx2zV(4KE*5aSD^QN{h(}s2BfJQ_moS^leYVk=q$e zZF={!=>*_Acz#M*P5X>@1cf!5!jCwe<fK@@`2BfZ-$fQ^TCd(SM}OPUMX+c+@LB`R zE6S!uO0dhYEmxmaL#9Qw#KT79F~ytq;)Z8p5{KX&X|}cc)vwaJo|_?YLN_^PBQAMg z@d08Cg-<$+o#b{;5+=Jbfa#Ofk*hn7+v`!}7%^g-nUYQfi5-y~I8C-5ztYhJUUCHd zm_h|BCg_B<DB}E~Y=y(mA<6FIcES}79$xqHb-wcC%jtygHxBkk(o1DVzOA@s%>rJ| zQ>TsDtwEOgKt}J8L4nwtPR&TkmbhjXH%H}HSv#R~8lzB1LCpMw2B<j-M?hiW%$$zs z<TAc4R(d;*9R^8PF3w1VX$KQ#3s??x>jIx1vLoi4Xc7pJPPJ7o$<x*QUU8mlw#em> zprb>7c?2=MTLD*dMbXdh*q%bsIW}cJi@mIj)q8xx(>3LE5`P0u6?qDHdTP54laGC4 z`ZS&88Tdx;zc})L@!KOJW@OCYdX^9*007=U`0a0z$=1a}!NtPJO4`EK%IV)RT(gRd z-3B`X&ql9d>Q+cjUTh*zds9QeGEEC$qRbw~hXW(IgK>SaL`o3~w&?dqY>%}`H2{yb z%bfV22b0}v=w@zMuQX}@o1A;7J=_EeA?teKGn_OKZweezIYOI=y~iV}5&U*MaQ>}h z4BBxN*K4Af<gh)J(IVWQT$3yotQxu+$$2^poa-~(Hv@<DD_qlE{KC2s)aG!yM|`H_ zs<EUaE)ln6uId_Ac+0pK)rz7Ms1p%Fkr(uq=QY#fuC(oeP+v@{?)-b4dLAPtP1S48 zFBW!mlU;Np9z+KOtwTIe;Z9bWwfOciSCkx2jG37Zhnti@ku&=`{;(E)h3_9oIr@yr z>D<u4?gv#<xk37dMgwwV!211ZnY9<~;hpb9!<gSwp+PlKBlY!xuQG~<g6AwaKkkjX z3%{KU_!h95NQMa>xfPGLA#!EcmX40>U<{SVO}I(ZDLSiqnP`O{bV3!hjsMgzj<qxk zq?%Lx0`Qs2{F$*t-7HSnQ>890UBqks?%~fOe|VLk$ly4`c%5f6`54fu$tl3aj<e<4 zthsJePFRc89V}zMX*+IGDr_tjst`!mZ7ruvPQ*#jeLl+gau1{zuZ4F8+Fx*l>tZj~ zJ4tpZZ|gwqOVPfds8n9wz>tL2s98LGOB5I-Y)+RJt3@kvqZK6>O0H&A)-^=AI<#!m zSQ{VeJ54`+*+_P&=q<~kvcVfMyNT@!l2=sm9Y;%7cRri2u|s=o>MkB4YE2L%H%3Uf zomHKekitdW#a>RN)?%!e>CwO#C7SYok@w}lk#Mg`YqH9wn=NS+z+bKc@w|Ux+uZ|r zR0PN4rAcG+`~1H3YbId5KtFq#h^q3O9yJe(n{@Q0YAh^LCv1(_OvSV;8|>r?PrucE z<Jdydw&a9(VGPi_+1}aoZTs<J9ISTUj+p`I6&gqxELDcu1ZOM{tA<vY_zHLC_8FHv zLz9m*a~2Wb!ogQG<Iv&jgeeWCJdIxQ7SgF;Rhe4~HdMJ`s$}gs`GG{JOi%}Y;_kt_ zIH|`4TIQBTN|BliFT9{Sc{!J<%%oSV7J3MDL`4>f;goGkBx5wy^XS)+9_jGY!k`#V zD;n^fN)4$Q*IHn&YVs`j<8g)4&C8L;3B-vur!`X<mrAx>-;<9NQ`y>Os?l9i;Gn4= z^A+?IB2c60(^|o&{-a>`uns;2`$qTAB#-44es%{00D$?M=!E}BatT{w6L(b$6E}HB z6M08FBNL~8pXZ4JR@e*(Av0Tg45$Ibp)m(|NvrX;P_V@8=`Ha|3B?Ysk*Y}Zmz+^q zKfl)&EnwOok#s;Z-?k^c%(*&VwNnq~z_WowZwp1~`<Xna5tjQ{Ow^NvW+4e%D|gH> z*u??!jXe86miE!E*Hegq*^Fn+g7wlFLE)2<#_~LiTtQvD;a>7XL|=A+g{Zpih;HZf zjS1+enCB9n!3>17d!;udx@<Y*9{F{-$^u35yum&`CW$;p^JR|l?XMyv-fQcG&<mJ* zUcG9Y7C12bI^)%&jp-p-3PV(WI87mnpz6^(OxY`9U)rTk^cheXsp*Z*XW?$}?T1Y` zuz67Hrn1R-QMK-en+=V_ohy0@TN;qXO23_>kt$c!MW>$D`ma9EPo`SkM%8l0KH=50 z)zACba~_nd1FtH#W)$Mv(aQ%zz1s<?W)COMEWEk1QFEX3MU(Ie+KJ~-SdZ45jZx!s zDvFhL3cFL~!$kK|p-e^UaetoPVg9+KOR2%ESAUl@_V3;l;~z^ZYG-Y1;wWw5<os_L zTT!QSogcyHMNN7kP+?T&#tIvFXhTrouAq39OoI)X>B^Mt(zYul{%1Qvv~r1eI{-F| z$86f0_25tjW#~Yy4lsI8D}W&8xvU#FDTr=VKo&|s9YoE}x8QLX78rs{POFJtXL_%F zn>>-8C}N$^TkK-g+}+##Qh6{BJaA6z)xeT`2(Rf*p6SI7;*+NSo<CEGoJvGcDj5BK zh)|QxVcgNcLQ0c7JrgEi6TEHGOd%i4%#vybPLIXI@EiGBJ|i+B?A<oSGbe2NZcTkA zggqWDWCVuwLn*z6P)X@(t@9Q^RxHgoH#yJ*oL#*@sB^H&%MUcFkQ}!)NZ_EWxB{0s zd9af%YHi`<r~(&2D{&5vJPV{<0TbR-bQ+u>#oiW4{Q>EyqJ&x;{;*Lfu2b@K<OO{< zK)w>WW(e+8xB|J`)MfcF6q^j1Anxce9qn*AIq3rDr&)NedKD9;^wgxC7Y)@J6mF%M zz{Ojg&Bvd7so;<OB3yo5x?HH;4S}eX?v7rP{xpzNz6hIGx%?_BzD8ABt0(sTvo6xR zc$X9>&UOVOmpI)pVsZ1asj-rh)l9H)(l)!m>Sq{_q~UR)<Lb6M3&W8OQq%{H)V|l0 z^}a9j3b6RTrjE7XWTpM*Rc)C3Cy(t0{y)PfZhm8p|8MBb{FQy=e}s?4zZl`)Mvlsc z?Ex!-k86)1B{d~i8MRpyK!}~Wtq8h(ypGX^&Bw1<BpN2EBx;E_#igHZLJ|(iWr2;b zCn*%TlgXoO%+!+uy8?3FAE;g?_OLiAsB)B4C@X&2{+jdvk^_|R68*>_A{iR>2rww@ z3CD^(Q(yR-C{QzsNp;DP{9CG}PzgZvFX*s!SWBT<?Eaeuf0nhNcr>W450t=b#R_Wr z0E#M9GvOkXmdP6LCai+7dx6Gm$bmgkQ<QW}L9SeI5l{?`)5p_WS^A0FZ<;N6T2$S~ zC!YxAgU6f$uW}kRLxQDb^~`?5onQyp_5{ngZ7S%kEZvQpNT+nJpa2dQWjpiZ>D~dl z*n+dSy~`?QRVEj9Y%^<M3bJ8opu%u>XieKf5;}D>=^4)L$p(q|PmQ`qCbRuUiREC( zrbZbg=9=yI2osKGwleUpT}fG`a;D2Lq4Q+vqOQJFj(gI6O;gZP(jKzt9b|zz)NAYj zKK81NsKwSu@O10a1zDz}<WrIj&;`4pfilEQE+bOq0LcxiVBLD^!e6%@Ob0;P6I)xc zm{vfm2)esDi8OmtUrU{9PlI-I$(}~7Zf)cgY>)KhMlIYR^%Gt=Mwe$%IGRsjbT%Um zg{UN$$ZtwSzo;H?iZ>j8FmL2>{r_C=?h%`_6vaK~5{q?a7zA!@kAh!B<0{FptJvc? zbW|ZZRI8uF#8e|5$1bqInFC<f6W_l-oU8`N{D`B}SK6M^sA0YRG#REor;HA6=etfE zs%Aerh9b*~mj0mf)mTRADA-7<rO9BXYFvwMJY5iNt%boZNzt~tWiy%BgZRL6`_j{} zsUjP&PwTN|>&zr}1ns%mUE|yOWo$jc9k{!!6+DCbZLApM&=|Ljm<)0#v_+`X)SHCp zDJ>uw77HO5Up@B7!W^~1S)?lCrMyHu(D}zk*5v*EDAY!CTzR%Z`Ot3njodm_W&2rq z?cuk6f3~K)Fxy3o!%0F1*51HkJAx^G17B+BmK_kb$gr}MMhdL=(uN>JlDtIVjv^XO zSIE8$YkL934M+@apW*~*pie|coB5m~^!6)vB~mwhHJ7R^1XX2+@;UNV{4JuL#SK~d z<=d;8otq|Evo}l&)p&Dajrsj$B-K?m5BeN<F2N2FV4oT#5uQ<%fG#_zS{nygzk&e+ z=v`RqyR$iU0{<|mE;Dh=G;G&ud9J+<-D+!oq&o=wExYCZA#AdKyFz_uWGcodR6W#e z{9B;)GIRe{zcEEQq{3Oz0fo8BT`@KrhoXP1zH$#f2$1n!?T@gi+jVchzB6a^{>RFm zT$_7bX~oY_?VFOvAjkl5`SvCVsQqG{#2sN3I89TV&c0X!;ZnI#%VAp;^B#Ee!a-Qz zxsRJh_@c`8Rmzo(PIuI6<fDB+%H16N*pqqs#D$Pfci6~Fc}P@{((sbg7yLiTh)dnU z2=K3#u><{A5Aq+|6L~u)=l|cmiM))|AU^_6mfqcEIc!nB8VzU!x_|}bFL!Cy1ykcr zY*(^5r1zbzMP=yUTxlU5xs5(uT{4NxJp;nwcbdq_EP|rkmuQNOBdIL;_8>c{_(dRw z!2GAdZin$lbgNCprXgmk#@u@`*=AOC>2zQ#XT~6;jb2?FXdn9kMxZvk-y*YV1)_bV z%ByUd(1j4W)K3&PP3*1OT-)^&%#2!yt2=uQGaZD$c3P#rpmL!hz&{C`^DU5n7JPnk zM04K=Hr2`Y5a5r>5Gv&HrWppqj9WNBTxilw8>O~_mPf(+h{)t>3N2Ul4CaY7hDONG zyV-4H=cX8|+q6Uu7E1X(?Ed*<y_CbY6u<xg{ICE3(Eh>l|LP!+vp2E*cSPT<@waRx zitwHN8CjkMhJ+ixDPfZWK;yuk0wpLsDxspH5!KzNyWGj^MHt5Z?PX>Y1dEZBHt{B< zK680F`7k*>&H1o!E?2C0^a%S~h&|*xJ&-1(KoFE5EN__FpYSi&%Mqr-@G5BqB$DUR zt5^&B(0k#w<-o8v=1*Bu0zu`L;nP#>c6rxSqs6G}XKN4eIRepU1jIv;mSs^3^sX-| z^?`KkdS)XUD7hP3;?$sJse7(Ht%XAl^e4lCqG|K5=hldUf;jGPR6^49qX>OjaTaTP zmSGIH+EBD8EhF0%*V4xWSmz>%;9^XsPMGscpH106s|(C=OUzi=!|~8S<cR^F%as@I z^!6)Jq@0&V4Gwzbc^}ijRl;QjPDvmv!h}%{ypoCH%N!=t3-|!1D>2b~8z`WMpf%X| z6VPsXYVm=1&p&&=sbk$kIuX=wnnf<CyD9PAhO_(SB3(1L<u@*F_+m>A;}4KiUs;|y zXQzw$_%2#BtrvTK7PvQ*sSe{aMys_{nRR2m(!KbUv&k0}6&(Wa3qg!(3<p<95b4Qw z;dUgrAs5>xktp?L+3W5*m%+pj4CB7ZGjT#FhCvi4G3}>L_@l|u!eV?lt5bQCDj}_= zbDtYhW+-uUwNo!vrpqcupO5h6{<!)=J`~1nJ-aljRa_`T8pNPhq>RSkGS~#Ye+^7Q z&zIumqNecWW1LcEzA3*6gW$9}*3b4>YVlN??%C3Gah*HY-fT>fg*_|gh6aPn*`JHC zGbeu&-R0~%uC(=wixac0bjHmU;qT>2eS%y4s(a)d8c>Bo+wO0~xiPnj>Fa=p{f7AA z$%RyzbU9b8<laeR+fvIb<q(c8H~_MghZuAqFOAfU-B+Ui4A}}0i_A#2VSKi|LF<N# z@nH+!Ujcu$##4DO;)DS8Yzi?@))_qTEq9MkfUiH)pAN0VqgFNm4W}XFWI>a<3fj^r zl56|LP53i22wSI_YnUT($wf^7EPJ=A{VmB%W!<JO+JwhFD4J&+cZLEO2ZtuCLsbQ! z?r@95e{TP+gGk=Z0>bdoj!_iy@e#d9|J}aiN;0J?1w&%Yg14cgwpjqmv9;1L$3`H} z6bqXth7%T{fN})dMc4at<S6Hsv;u0v@oc3_0%f3ga~ZF8tWE`=z#f;h77`z*OL~Qe zhjcj+%y_bq%Ul;BMhErs6<53i9YuoKiGF0v{|0qF>MLb$om$)0gnutPpxYWm(MBn4 z??4R};FdutpMQ5E!u?pB1)S)6>~61Q7#BcszI>g@)<(fUQ#s^*y3^5ihzSXcE0XlU za+2cSy=BQTX)xHOM4<wZym_)s<$mU-R66t^0jV}aAUej=6wFYguwa!rwW0b@(mNar z$J^uh)H#f-KHmnq3RAAZ!K!!dHX+UaNR>L<2%0LO(|asd`P4&|zeZ}`Z(X6pyy1#B zRhzfUtS91t*4^?|rDK+9m3=O5BrD?tU#j7qX^NIx(!Mc|hx7okDWDtK)^B^P+rPd< zW$wjla^b9FbIT%*=$bO2j;5uy=B#tIPZd_F!);>!2z6LHrV0JUeA-ChHY@LVeXj7x zK+yRfw#xGU75b(IUOBHL`brm9o{#eD{2cCBL_;NpGf28;*^vxtSE<lvCm5VFYJ@FD zmPxi;IoLrmVYbyrW2wWU)ix7N_UDD1;T?aLj^MVY{>0z-8Uk$ItxS(AsIS#(xQic2 zdYp)r+WW(4T-&;cCa&zxP%fY{@iZzPvBY%^+sm(QK0|+pC2mg#=ORn5y7*|MgXSgT zn_F|?ECCDIPg#n)9_JcIi}pFZS*0}=crwc<stlplgYvT|1e+=ic^bOXRF+J)AlyRi z9ypSbur%<TCY5Hawp!X98PxKaaLMSHT^VDHw?1)pPz%qsR%w8&jB}@oD8W=iLgaP8 zziPu$*G0T3F-nMid%?N%$SQ5U`pC_<z_JDV>zL)6rL+5@vufk5rT(dsP_W+viZypV zeR3HgX{K~@AgeIt;|l7DS{VkJ7K4fIbGqU9bjQsgtp?SrzQBbDe<geC36wC{e4+Kx zk-YU$<o4~QGw7V%)Jf!`2U|r_*IvhpAV<TXkp99A8-~^`3$0l0!6xnbJ6o;5kM8ro zD8JFmsKoVOfnvx1uLAWyPFMb&Ky7K*$YFE*>s)0(vl(^|f;idHjXz#6Q<sATge0Kz z+*y;O6YgSP$Iix%K=AVg+e@#3FpJsZtl6>%t(NDv$MA#u=X2fH#B<{h>l`bVI|v82 zJh42|9ik#$in%bRfI0$k;hxw&c@aA^0<-F4D8%BW%d82r@uGmuc|1RovrKRiH-Gb1 z=5mJ#39RZHhR-hI{T&FXc0Po0Dd}jpkYI>80K#Xy0uDRKmckLHRYW9;iP|hSmVRjF zCQ0}>QS!(Ftc3qNH<Ik~9(P`3;HMTNX>=HY`DfNj^6A<VE?v9)Zn$tPfjS~OELk}w z4}lDxY+h^WtZHNS&5AzElXH+T&#wp!WVIE)pq+!`2&s`#1NHF^5$%c^igqhO7zWtz zI$1V0SyAm*2(I;{jwi&pdS?*WrMYw^w@OXkmUy}3k*yAwwJUgP;rvBOW(!bk4`jE+ zZo=_r2v-9XklxB@bzvQ%R)_s=ULOpq0N^qGt`<qZ=M6KPPPycQ{ut`3u2bh7-Da($ zkt803rHU8+RtoolPX%`fZSm+K{NtbTc<8z^qrNt$ERXP_k(+5?u%m!fDgQD;H?k54 z6GZg9!{W@C#Ft@6=+|N6a07d|Dq+V1VYQ+GB6`*KT6$_*{-5Ze^={MJC5)y^*@G^h z<*&}BAV*zGmhvZ_Ba-lEMR5;nThmyi<CeSlItrW;J|#fDd2JY?VM>NCZ+=nW!8T2n zF1o%|yJoGafGu;@PBnC3uiL!_7G&5$Kd40=|8uOy@H_x$h)=!08(4iLBxng1gFp5{ z9%82}=Mx8;{75B9p`<BS@NYcwVIiiAM&0ux(Hi04v0*{jv-ADQF82OU#(|V+h+3o| z4TKyqeNu%6Ql+u?i}S;f@GK*9>Ooa$k|N61p4n1B(ZL)P)-k@O7>2M>%-gR3)xmhD z5Z$M(o-5VcB83ZrhsctdcnX&^!Y2lCv3OAkp9aKgY@Gc7?W^XSO_6i(qK+<wMAS=$ zW{t}#(!Ek4YOT|RbWw&24hxj7ouZEQ3h7y*BRFS`Ymgz#QTz&IX-#&S$SmbdwjCgh zNJ+~$*ZjaM=?5D7ikOVt9E=nYi8sIoiIdG>+yo=4ms<}fBFP^aIKjU^p%xGu^w)Zj z*`-IUr>dL_kjtlAv=?dot#fR1FV8yOyo;0g8KuyV%GnKbfqMvyhI~=TYDy_%G_isc zfOvQ%9?~^d2;+u|n(=grq4|%PZPzIIG)IS^)c6Ah0Y}vc0bwA;$y5&U1$aeJhWB^; zXo>)^K+-lVODUe}-WjFR8D_#O(@p?Kf8TlK@P<(bDlBn0tU&0RmlXr;C8pvzkR?(@ zxCPA@FpSkE^w?Q}fJ(__Z67CH!p*PgtKHn$)6e-KqL)2?eA`~#wr**<xb<ezW;ubK z{KA`A!q1&n<A<Eeu^T-~@qq5MH8@&6c=h@{q!74v`+8DDiX$2<!QzR76+2kSKNWmx zcCbfM))fSLAhv7ZesXMK&U>PPK^pEvEnVqLN=kZ21vl$SJ$a+;NOSj1Qk~vX^nr0X zkN}@bKG|^f{Hbbc3a#3fqtTKjFw>heHm$IuuRAq^*N+<J(c=AF<zTDX06iub@P}GD zU^O9(0j&l5ZBI2po-#$c-F+J3Qqgv5y0=J-^<tVUX5x$eSP>FjYM+|EK1gzLWY4!; zyLP2AE><jCYkxT<TpY)cna%Y?)R)s<FW^oeHyYf^klQ_y0opS0;Ky(M>BByg!3_Ov za*|7j21=39#FIn-qD^v!BSb*_PzEOY5{sd2_c?D%FN<7`um;Ya$9*OMwnyy`*bz$| zpqwxFJ!^!#voLO1U2UV&tlO^!VEy?dHMH2KfH5YnABVY8Bh0`~ksev$+J$=xcM zQb97H?;%_6vktJmZO8N)%XTg~jPy>)jBA-m)Z51o%xAD2Ga_C#{_f>Y-O8VBylgi# z-B#WamSL<Hj4>DM-|~UcAPK*#%jDdP&>oq)&92X?jQ!FTs1%q1c(%lCQWU)JQnr^+ zwU;uYce>3{w->6z_gz$eQt7`bsCT_L#gw|=Io$0or{9KFcDX)*yu&IFDpgj1*t?&z z?I?KVCKstQr9wSiDxZ&wUEV1%#&6vrYm-h=SD+E#h>G1^O|dEf`g<dzal*tcbfGX@ zY|ZeYi1FldAtxvLYJ8vPXMi6rj1M|Ya&=(AwxBz=*sYq)!01|ZVQA#s9?w-`-w%IF zl03n6m+c_6YJZ&)qPdfVjrniZ+J4*L&`0>4jjL*to+nTzrDH?YFmqVGDT`$~`P zq83=P(q>jaqsO+Ee69=U=q_JaA?)Sal1feb{nOsDyjx)Pf&u{KAOQei{lnh<XAM}` z(ZJOC-`4ZH)wS$4SW$dk1HQp!CrHW43QasPmRA84H$<4&9a7tH-~Z~NjYF|`N<lV8 z=+6gSc@%|~Y*axG9*hL{O56?y_x*d(k5cVP&Zqyy5wvrlDT6@%Zlrw*A%hrY31+5} zC_*ZTiN`G+B&s418iXcg2LTf7joqvc9z9k8BrN0%#5=#SD5#iOsoAjg3WZws0raE7 zA$dR5pAbO~2s@wn()c1M1vmy`io*0T5FSNTY`5YF>?Z=y3)iAw)#s#+A`n^Gu{z z#)Jv`N{6ZPf;{?PQUk(JiKIh5O2zp~g&t%@fyRs|l7XlZ@^uwB7V@FLbOJo9<lWpi z<+}`Fwk}d&wvwVpNg^f(;M=-%Z|;pB?uRDOFQg?h2W(35=SZM1ryBwW%}aRY@7=@D zjfK<T3g-F<AxkF1u3QmDAnWzC1APbmQR2EeCM=Z8u=+Woid3nKxV~OL9eo~MIWc2y zywW`Ly}Hi4ZkI70`ZOKTCwLxIyqOZV5q=AW^T#PG)=(bM45;O=q0@B1)*{%Af=9k2 zBT)AtnNS@2sS4)!##4cE(}3t82y3zrXy4chV<`L)2@K=EmIFQkYv}36xxkg>7vhVH zmS1`LD!wO*IH7ckqr++XLk%vzB1OV5gR#t*#D?4(@1}>lB`tPCc5onrD_sh&MfSRX zKf&o!i&A}m8!3ElM)kpLR%HfZ=~2Kvl^?4{5nMK!#MpUm3Nk_eyp-ffCC;pSVw*EH zw{tV{g3kswz8Hx(1q>Oo01e_Ur(3u)PbSV|!cJVTkC;FMFv+_e^A&ct^mUu_0cB%w z`)vQ30<Phy@Ohol-qYM{GpA$UhqnuEQz=Q&AKe~0tTNy~*hsNd!g<l|Pm3@dPMHXU z0S6(JJ8G#9Am~Jq*sqYV`Dp9P)9tgmSdr5s&SKE2pNS37SbrckT-Lo3l8G9m2BxqP znk*AZV*GTGxNVx7??I-l!4e=YY;d5prURsO+x~%*yQ8}kYt4#&MR*4djphix)@@|q z_u)FG<Cd87VJ7+Qt#$u?*S@a4z){hee(e<hGdy0Pvegt5g5qIm(nSQ*w|y)DAVxG0 zP0Rks*|acjeKg&YX1Qd=i@p_knhGuV!G79E(%aoq+V5DkL<+<(eNC)!9yB;CpjS`) z5b*GzJM-e)rOWhbKuZFHy0wjIUu006;^(x$L-~!%3OZ>mEUPY>DIm%`2uQ>~eqK|) zH}^I?TmnfDGFXQ`Yz!HF$-oGX^MbHLbjrr>4bAiFCGh!$@ZAeYoAIs!aRYV5jos=p zSeIHAYY;=c(YbqT&qxhs#KVV+CpnCBOqXaA!s%12P<|K*{s3(j9n9k&;V9-&qSlHF zO{$Dzvyq?J$-C3f*@W7;HZb`qPJ{}d{h*ia`Uc-oXlDPOyx?ykNl>Jr8w*y)uvf~@ ztpaT5Fy42k(e#F5l?l^4i%moPI*TyX98vPeuzxgY?($sYXHlJGj*1M@$L8~O;7NZ$ z1?H~MjFzf==jT;X)%+(fL*^<W-`O1SnOoB97;n4x&5Apl$F4E@<#OUK^%k9FcHcJm z3BtV(oqP1^ZIwV;5A>I&&(Ym7j-72y4cU>jlYC)J97zmfG@!OPM(bnFnLy~Os(}^S z+d3)C?f1Jl7kBZTs1gO@tpj-~y%6gu3NSBn%p6Ge8R#HIo_uv;Wr^tY4(`0gBL-@7 zGRz2);D=am?ioe>+E^9CdbMRSPU;*0hpS+R|89<!{q`27XeF9Yo#T1g#kqhDhdU)_ ze3A}Brv&c%K!6>$6R&e?M4yMf2CoSQuelG&u1(g?%|+$wN&b?8RKyjB4cZD@2!g=Z zTgHGR9aQJ*dWn;hc}p_xuUy11$f-<P8zIohz_USUcF2?ce8_jzSI(qKKPpGO=BfFq zaBM&}Imu3qzNDI!pfD4c#^=bNzm4$!l7#=f$Mj!Y-cbG_363UCb}o*84|xCcM$`XS z^Bbh+IjRurUvU8k1o-v;K>OeCB3U~9&lWi3|MM!+mCu*&CTrsE&b-p>r0}I{t7ZdP z#>PTeW5eQaaw-ih30YIQ<!8k$>j;J{>m=*3%;@K-XSX=#TKgwJe*nnmFlsV~<+Ukc z8352cd2(gc3MeZ%Ejj$JT$7V>Cs$ndFXHJS_L*$s)58^mW0*m5`%h;3hOwg=0Y0~T z5GbG%Qux}y#Wfxd=UB2dg;h7W0bc~OfCr;^Qv)Qf8O|95%Ry97Tc?G$7vuftPcAZ9 zM>8OoDB3{yFa2yT0~jHUn8Mk(j{qm^<CVoM075a3<WMz(OR;HNMu=?s4g1GCoS2|h z4jEDlJ(ktDLGIvpuYMT>5~DKlhe|;td(PEcb_u6+@#DvZzL}r^Cl9htf#6Hh11@u) z9IlwHl5JbE$ZTZl(d;Aw==m&t{~f-5KC6idKE>Yd8(=?xpEtq_5PW?=aM+t!_(CDR z=lVyxq`Dv5G*dv8u9k<1`+53^JdqY?sTa88mOYp+2zu|hkO?UZdsI`8cuShNBx*kK zPk|RONRV^6ect_22I+Z)4a|>nzVS>5&$D4U3yYTn>e7(SlH4r$;1sSw1hLm8701-B zOyN1I*JBng3wlZ0Kv5?rjb-3nU3~D<=5AShLJ@ESm|o?b&7DM64S*z24plCx=Xv9< zw9R1%CyTQl5KMAUlw*HbP#SY2W*lFPomT~RcT})Bf}lI4%7EMt*qf6VHu`m+ZXiHi zs4&?<^OcCeS19q<kVaatj;59tKIgK?I31wnL2@f(cd|}d(z(7p2afL){NcsWchk$u zIfy@_7ODkp_#_(fN8wB4?T>{DjJHG>q=g+qd}_53lGzu0LjCMAH2^AgqCs^xClc$s zfV3X+Y`3g9H=Myg^Q~TUN&wYB+TY#!r*Z{dggvDKyb?z5AG*KjVc#V<*=2*2en<&2 z0ja+~TP5PRT~5t};%(g!j>X$Vfx)DiCJd4Ux<ye5;w!+*vS-bM0INx2eUbLiW9Fxg z{7|erwGVasF7q`CDM~^np8o*#Ae$Qg9^t;wpEYMa5<Dkn3+(msO(pq4XvKJduBUS! zhlTfxa3~TGj>^>uGs2N+?90X-<d*jlb2$X#d7$$Ux*l2AE$*qG`(jk!k!9$`1|O@- zkLf(Kw&U6+#sl#$(cfjUxTvk>0Pj!P>2-QXoTM0ySAtJXgTjET-Gndg=FzVhTbeiw z0-c{vtj03BVU&EoVMYUb%K2bTl{U0mW86F0#sF=Awd&RG;{p5$nI7~5Aqgc(OOQ~j zK}vB}&JwL>T;w7+IlD)ydtIrEU0b~YKKNYgy=(Nv8rTzg73^?gCN}zNHp$U8H=h6l z?Zy=A(|{M;e8Ha9TUU?Pq2Y1aJ~Ti%cC&o^WC&8lek8kYHcpHqYwL9`m>jmiI2jD} zg5o0YDfrqwnO^C$(UlWTqlbGMvf;Xp;{vzqxE*P9$z+c8kno>H7h({nM9OR3<L}Ch zj)$39p*vi5!TKYf|F}l_X;xWA{JLMVU>O2x6ujVw11O8j*HdWV%j56&5rP7+EBM0* z)evj#;M(LS><qBbht&Xn(vsvVu8Qb1IV`}36WWGz8^_^#g>FrSC1`YY;pF#(k6zu} z!rFW*xKSQx-!$B$G&Ijqx-wRcTttxvC=Qx7VURrVg6FeRM`?*NS_~C*D_SqTd%>ds z&HK`2>aZ_<+lI^?Ap@D06vRF2e}j8?ocKEjAoksH>cSg^rK|c5dd8xhp%ur@3YM3J z>x<gTJ%}FobF<$;x)X)>BdDJ?(Pt1l#$ETEn63xf{Jw9#JbAV|>E@T047MXZ*6*ir zcJOQATaf|RyQM>{uCIqidz3yf3+3@tOL?ojiYxEVo}QW~QE2jWze}WVTGhHPbw|XQ zl&>Z#h>xRU_=k)l#CkbnfbW@a@R6HF5LvBKH%ON}$q?L#>eB%YeDBlf+L4_*iQej` zE=Odr){PH!qahYgUa2qk17J+y+B=LQ-)lPWXS(|3mCoJi(`o!TF1B`a9Qk^VLJ5cg z97hractbNJM&(Zi$ZBeqN&7x~X;;3!wclsSN|cF6(ZBK~mGnDUB|x2X-Q5yP>eOq+ z0cT^`eHxXY$E#!yO&xpB>rDxdCVoSMQ(j_HP^p5F;UFWZUmx_l(^(q$rDTrg+<02x z1q;F`cB|#9p1Xn(;Fpf&V2$F~$lr=Ji#N5M{OoF$^JtX---Im$rGfJ-Chtn0;)(&v z+uV@hA3dd>IPc=yHTo+d4t6TgGX@`N3g8mE)KdwVBKWnK%(0INYV%V+#51^8gtLD8 za!c1q4`|*8V$3W9`c5uL5cEV*NWuF1T}O{}O5lL|V8GtSy&x}gJ6n%eLme(SYHRN$ zv#zo#@x_B&Mz!TJrte@pbJUa)aq4Or(F8(EHo!hq-3$iwsRrG~X|)n*Wdm*~Q&k7N z?LD5lfG00elY2HJ3de=5UwkMypS|p;Sj}uAk(;loxs4Y{f=)6p(`y2~tu$4a;36gd zaa>&xOA0K=Gr)q$?{}d)xw<~T3@%-cul{Y#RdZ2Q#Xc0~ViP*b{G9MW1c2+8#9-bA z=xZPfe4p(v@9aeP1E6pXyF})j0jl8tjAl^4&v4Dz)e$?o3WO?}gG9=`x=}<6sB&Cq z9pK?h_;DAhTgt)+CnVTwX_npY^kOrR-fQPHiKNh$9gVuk{|F2;Z7!^Ze@j|6Kt*He z;vg#m?0|&gZ<6Ij0^(yd%Acb2r(9B(UodhrzFn6T|4*NGvCx6@I~Y!k=tRupTHa|~ ziO{PbKTCXME=Q|5UG%RLBuMg^fH%`v$ii7-;nG;)4E~CFD&6gR3nYqEfFy(C^<Kzq z@-g)lf0uC+@Pck&Gm&4h6QUM|1RMQWu!?@+BW@<^+us*yVty~`Rkh4&*s^-U*GaK6 ziZ=a~E}qp^<nK#sodTy$&7Eq=3Tsbj<MzHG2L}vtac^+&GNWMvj1@(^0gmlee%Jka zbr0Q9PIgG1=&bePbtesZ#{eeBftPcnLD34zDUPPe`H;AN5XbG>;aKp-I8k>ome>Zp zUX4Fj67i^_sQnAfHTQT|Y6=*=6P}xL5zg6}e!QvKs*!Yg7j`d^4xhgvVP*Yb4Y-ku z*xYzMEA{c=adg#nm%9lr)Lv>XyOJza{DiTqw4Ba0v<U2#=+afIkL6V}(Z=wJW-BBD z`2(f|B4ArbNGJ?KfmG2hn<ON&37@mxz0IyItquB{lxKb~E+L<QE7vG2d)`xD!14=0 z5f#^_uvmSt3gP6>L%t4<bF#suldhe1HWBx7^@rv00g8z76+P%PgH=QaX_=A9e07Fy zo>eTV#NX(GyQc(y8CS66-lg%(Wz{T7R(kh>WAJme9pZ&v+2`1VVL_Piz-UzqB8f0t zrA!Y-$>xF=NmR1OO}i)Rq*czd2x@G0pmPmnm$!9MAT%jwe2|VKJW7l;5}P0drM}w) zff3n;w>UTV#|1Lmtv-z(1YJ*Cw7RYHoL>Kaa-F_C(YQHv`P<mi=tppaM0o-!pRlSp zoPyzm%V?(lsI3sVzFUHd>ImK4@Rtpehb3(-l8!->lW1453@K!6y=<YW3YVIh9>L2v zn1B0p_UN{MX03I!siRD6Y&KETSBcj*fxS)7Kf%ZOZu)(#@CAC>wKtq0aEEXYfa^a{ zdzc`S@mq#5(sBTVv=ynV9)3w)P%!cxB-v&h9l=dkvUlB~ApoM3(Zjh4qQc2h;hU&2 z>`{b&<T>|ptnJ8%^7lKd0>3dwRS2>+tW--&TB+*?qcsF`xg6|%_5OV9=x#g&r_x>N zzq9gY&~A)!y}Fv{K{1Hl`IZ{6WiMHxbSS<O6ozh<<V#~Mu;bmcY#MHL2X<l}llQQv zl%^75W~a|P5P}o|>b5=YAGR1q&}e`PD3b$j4OO~=7sG%=k@^Bju-)>!Y6paiDG`c8 zpkt^0$|UbwPCjeN=0unQjqYgh#28i)w!mm!AtZ&M$V8z(A3ryUA5*~&h7+P%04Q@I z;KMIIk6S{`B4pKoy=ugGFE`gVJi{NEwOaF_VQOt~q#`=;0XX&W#+CThP(+g7Ipq9Q zW=nqLcf8<<*XLZtE!KeJb8UITD#@vu5*w2hJ+k<9?iO2P>a6Z0pLjobS;EBP85a%Y z2%jvbZpBc?`T-HdZxYuCrQEs{68dN|;+Kg#v-;I=(tG)4;q^__^3jYBUy!#tO)v&y zfF%H;TxMg52X0O}bdA?Am_~WF3yuekCdZg=?K$Y`S{u_Fw?HiSE}`tr!NbGei48s! zrh_1HmX@dq^=eE@koApffiunbbG9mZ^Lat6K#M!fK9In7Eq@`)hY6X3=sdfoPi+qY zvo!C&H6i;nc8!0H<3~i9-Z<S*_DV~JPo_wwdo@U=Ah2baqHd?UPE+xl4+Ek1fhb0u z8jeO5H#5vP6}hCkt>}y?40Kii<_Ft6ye@CI9Tk*ga<^4f02d5tb+X*&{b}K|yQ)cb zsZA#nOjm5GL03&zcVn;chz4pDkjH-8*q@M*5x~wN_KUhxMo~ZYG^ctHBn5m5&L3`Q zMf#z+ilGPh6qVR)R^dnZW&anMv8`kRK)Lo@AO+;_a*w=7FeAYFHOS9z7l-{}`#%zm znBO#4*#ODoPz7_LBpEgBy6?9Q5MP#j6-)v~Odo<kNsG@4xWDc)yHV8=PJ<)RTf8Nq zAQOG)_Znpch;Q`r>)9;T;JyeC?`0dcvR&nTFMoG!bNn~T-Z4nDAj;OfW!tu^ZrQeN z+qP}nw#{3%ZQHgn)zk4JUU$5ip80wHtjLU$u`_e;o!`2Ac5&6|;o-RGx_oXA9Wni> zxkN`<xbSXvEE*H;@Ns+x#{nv*UB9`TK0A{YCG&)O=1ldw-pS)!lHof2LND68h4u0F z>2F6Cn=d0~|4SJ~1X0^2hnAho9O}IH(i5lfXDcPx1KKHFGH)cJ1YTC!y%{Za$9lgb zZW~YjmW6+Bwe*}|bk|<xM2F?<MSpe3THBs$6^AKT8Q7elv~n~H#)(M%N;h<_w{lZy zam3D9Vo$RqmvE~sDi0%1u*2?R)HaNe<e+kV#K#Aw*_Z_3N{GPbQMy@<`I8H5h(PiK zpPmYy*(YZ_M&r4tfdP4#wS(}0xqLMfO<LPM?<XD-SRHfpFp|8<&U^UEshby$tN@lr z^7^4N9TI)1`LldFh;QW@j-F`IRv++fBLfL_{f_Z<>>V$Fu}nMx2r9(FL};Y{b`NFO z?;#@xNf}nF{WN8T1G12$bqdTL%UQnDNT1CMN9l-F3bFYGexa=NT0pFVU0{Y?vZh84 zBe@G~Af3*OPKq@BUJSTP)PplZwo2Q9e2r;@?%?mT9i--JvQrCA`C>oQAGB{P8Q>0p z6LIq8Ybxf?0!{JEsKKG9OmLr~*rPQ56y>y|S~Qiy7d9g>VclX?K%9^$e%>oxP7Kkw zBXPnaQ)cO!*$Li5MB4-%l*Qzijb1z&*RcgZ^ahV&!pXU9ZK#g{gUfjrUv88|gMfB$ zue=3>gE%{8I`FZ#TyF)2@|0<D;!Tu#xbqayyA`J_RG3-qGlKl(CF6S=`ZJ%L5RdPJ z__Ph|EXw6AmC6!lhYdus`b)sfBv=Nj+AP5K;h)Z{O`XtQwIaL@r+a4V_al*`{6+g! zwTHbriBtL5>3mtQC3y$?x*aF8K&5A{`_>U0K^vzhz1)|I03mZ2hUZPO#Ck?C8^d8n z51fQ^crzQ1lrYqRzVdw9TgkW^?AFNbvYLm#ZA5YVRbsEmoJYFo3uk}&lsNwZqXX~l z1aQV>|LfiZOm0MR#hh5SIEWL5ZdyJ*sk#yEDwv$7Bd0%{_b(!D0*wWWSu9-1xsIX0 zkt&WnNVFD(!%irsv<IQiMqm#tOx%_ec5cj?x6-3RWR;K7B!Oy4Q`XGvcF?8dgQ3@3 za&Bp;$8)^>ZUMVh-2->8M;WIjh+C%2qY4A_fdsK6_>7d+X#<hsf-;r>9Uu8)*%~UY zC<iXfjuj>(mI<2`(O6DUvaC098)O1(ouZ*sA%<<=7lWgSLYMfO(3Gq{pKG+Vj~<wi z{Jc-d!4cICNI_zO^y1gG2SY+i54dz)iKTySDTt-H@|6Wr%S;6>U?fl6R_{(U4IMp; zlRiDr*CN?nDnKecR|@>^C_j-gWIh>E&r}NQaDG2qDWF{#h#lu&9-JRE;-7|(bnVAk zfICWQzS-r1ppwVc1|t4v%b>!I(g(d&3z-Fua;dPfnejRrdD-!i=G_9DMxfF`qfPQp z28tI+1jnhKdeo!R{?mEhiHZ1rbJQ_peL$}96eFwTk8u@x*}C$4PvtStu~u>>eD{aJ zC+Q`sR11Q}t3l~uwrR)ql-1|WlsWN<r@xyDm=sq$qo_*8PblM3nCZC$T&rE_Pm=AY z{U5p*6T$X6<hSHYP(9WwA0C(xxWus*Nu`a}7(~<-PrpBp#sHyG?#Hc*LP2yA9HENO zit{2xl7j&CMc?o!EyWtK)SuRXM9vCPp|$3g5$DDLY9MNYfr-DteLLk9>t~JHC3E5T zsB+*VJ%Pa$9xP`mkyAZ^rfVv5a8dQI+2yU@n)7(I+T~uB6;t95alL#)?F9r!e|M6J zd>zU~|9nH6n(?wrxU%Kd#eh>$=j&Cg>O%%*+KNTVEA2B#q&I*y2;@m_qx|kmWepFX z$IwrT?ZA+ZrXwsp24o0UfmMtHK%H=(bRj1Pq7dC0!%^a#LfN0M^b*DO9LfhNrIuug zZb5&#Dc$335AYAiO*a&th<t;jzv1wDkj;W>AF1L>sI=8EFvnO2{lbU%N*&=mlosqB zegyJ#Zon=5{<6-@?h?Lnn(ZS-P*5DOVO(jW#6sGh=yfg|Peo;a1HzKU`HVe;ebqWo z2R8B!*v1C-w4-^asnRIJDoi1+R<;S)<tV?jCf3UX@K2uO|Ayy;#6CJzY8i*He49Hk z4`*2f=OQmtqN#aE6BOwxRo4l4ASjq#cCOXJ7EoGStSDI*5}|68N`s=L<>b6I4(HWZ zX;Y@8v(k(fZWB)naGo3}h>qvyb{jJH&R`=hMD|7JRgJj01p$SmoH=so`=I#5w&@T= zeXOw@d_sNvc&+*N{lM(zIb3j&PJDSOT)gW^3>E-hF=<URfEBlyjtQW_hePj~#0&?k z6+tPc>}k4HN5`)?Y!wG2YwVB4$S+jaDbD*!yHr^55pHzFcOtFZ^<ton169*~LoXN^ z*#?j-y}KLKW|J+oe|2}+^xQCK-<(STBX44ZfE5GHLPpghk8A6a26B3OQ_r1O*59iG zS=;O_O4?8)hW{ZS=Ljs4HFxH0H3zrClP0v0)N45^P&c|@NLHnOik?TSg+IgUodEx! zag8xCg<u{<YIMPiHoPN__>+svkktO%(XrUQlUvE!30CkP^!hJDE*W*NtE`q4f1YMY z5RZ7QV=V24K7Ka2&YvRxRzE1<o~mC=xQzVDLLx?HDo^=_A=Z;66469Txq)m^IQ9x@ zE;3X!Hk9liL3&#=PTRQ#?c{5xGMedcGF(8S3;2N|#xT5PK0Zn?G!P}c?pY6Jb}C8@ zfbLG^YL$yCFVHQHY-1alPb-*zj=fCi&&;_RaXVTTvWB|?e42_bHcG`iF}9xfxxEHa z*@-st8chow>yJc|?fg;F>uUgy&fdt5#I_qUhpN!FXS6z&WE~ojeFG>B6UP_f6C<K) zmE(fD!q_p3rnwezotJ3$GJX*tTSUC@Jsp!wxsG$$dgBSJS>y2=NBr)9l<Pi!>F_Jg z?f6YfFmf5b3wiO=T;1N2h#CY45Lb~(ZoM0o@~e9@CHn<!#1gVhOjyp0MUC6SkJgg# zik1bmDqhE2u-T9ON0;ObAqY_NKF$jc_hLXy@TnL%OTP6@B$~EI>mKi?lN=KL>F6%| zcG)Rvaqx|Xt>jhLt)S?__Huo9H4`n|ERGXz=@&0+YjrX-Znh%25&es>X8pi6T0B-7 zIEQpW7&a{3jDdGhD92^>6lazQzome!NHR;Cb)=lgQNsm=RB8j&XexSw+UBI<Ut?Yu zIxnD#`<9j~oVEGyKe5+#@`Dw(F$}Cp$D(CfFU@opB5l$Tpw`xtO7X_M%S!R<X%U~H z?f!jjS+s#d3(@Rx4qz&;$H6@)e(boMNybC8XbBvUdImU$dU$pZa=9h<MID|_3Plc# zGff$(8&&=TESMDZTi0QZ5R*n-8F?l1bW*`yY0!Kp`H%T3w_ybGd!=@ED2Ge9$K0@K z9j8}ICD|@MQgf#ytXO0RV{I9E*4-q1&LbkBuML~BM#pnk2+R4(xG>mnUK3qqOx3EC zLB_?Z5huEG9iR9=%ZoC{Vp`Nce+R7l2y5Mz{)jLem?%J&GwN<N^8QPW{v<~vyXP4m z3onetYcQOP%K@B~>7^C;F2vb_3V-YIrTA%$zd=hj!xJY;3zb#3Sf+qUaT;lUfv^-N zRc5=e_jOQ$WAuWLjys@rlyN>lP9p@K8hXLC1@qiK>2${^jXD82x*pl?aoPcp`YcYd zMUy2VN)}N^VZm)ICdQQhs^7Q|Y=Q!pki1XV?Ba|!$4Lz7%sO;O>_F4;tkJP|Nh&WL zOuN;IMcWfiXVjGZtXDEx_{*1mj{q(Fhn%@{r6k|Cw-NRw@vrUZkhN;6rVABd(yV_? zgIJoX)aPx4eaeM0o=*Y-r?oIX`b;zALf5`EGRS~dym)lK^3X2wu^i0sJ_!mI|0bli z+h<&zi#a)4f&onLmk1@DB-G6in5mKW0ZM;Cg<E}_<l54!f58D0MzmwCb*i8cVqSI^ z_cY+*1~&)SWjD`5hV?FwO->ZtA6XmC$dHB;FiLupI~`$uew0CqP73d;`*S~Pds>zt z6J`6O72zL`KWZ9W6jjWqE7!>;uUpG{YOt(vG(t^&777}h`wh*Dv(&9l<#_Bl>Yf{x z>3FBlp{CHr_p(=1!Kr8@uZkUd7I%0wS1}bN-x-=UN62!zLhB>Q=9bpR(|~B^EyJ;H zlk2^_C7%`xMo=v6y>p(r7!_|r$iIzAnj;baB3Yw807Me=Cs@Dx<9y0&xf(PcA|i)t z=n+SgnJ!zje;6bS#Bsq}feJBi^;@r)jIy9Tt^6)=^m^H6w=1yq$N<34UVfQA>W<y~ z<J8R)?`EM~lEYFh2XHMsL<XNrGW-P-wUyrAgSqt+C(YXX`UNlQyYJ<KFAI6v`TEV5 zietjhtTjuPNb0yztk`Hj573~~A|S7M@t|JAtR`oMDOd1S*|}eES~yft&VM?HCXgfE z{yw0fsG!2mDxBx&@-^-X@@7Cs#ePx;(T&bow#?&}0`Z6p$Ozi`1)Qew-)bI!qOh-L zku{`E&ED*|>IBDIEYb}Iz=*Qf{I;gMyiRm@M`4ACR3fI3<qYT<LS5gM%RWJ7Mm<B^ zwFTg}mhV9lI$`O8>!eSi%FEq8Y~JW9Iux=%jl8yt3XxLSLgm`+>e;@0c`}>51Uos_ zt*8xs0#x$sE_(A59MX2GWGD7!9t0L<cWrNv&D~Xg1zuC&8W4tgS;F|uoS!EYKd*7) zJAv8=WD6<hrAdH=bhCsvMQqC8L+oTCxe-R%BZA3*>(1tbs|GgQ$w_}Ym*g`+GN);H zbuDuP;D4l20iByNj|~%Gr=1m4^M%$}@2g%k+K_6nt(enoy7XiKz2M(myTGA;d_VpL zO=`~cRpRi#>QUxcm{(zIcSu9C?U>2wm^MyGNWE#lfNwplbx$jdZ*&RsTqGEiQD5J2 zp=Wf9tCqK@v7(XTP~C&CKbX;BiJ(v`hDHS}Z!C8J8+DK+@`&D!Q%K{C+Vz4R8C4Pg zK8aoQjiXS95>wET&gT~9rV^R<O;8iQhuvo8i#duW*8S6uV})EvQ@z5c;)Aq$QT?t& zUU}d{N4XF7FVid$z4(=%1*OS4DbltA623tl7SAZZ>D|*<Kt*xRY&t7S1)mBi<4s?= zmvP#^^^0aSVc(DM$}sAR!BN|fu@_=S+!E9u5eSDKg&tvg-(*_Y$OQ?AkAcxXxR0vD zsH;dxaIDc8AQCY3h(eaPiIE4p_l^VHaYMZp*0r05a@zSTj7G-!9*<*qQmC(b12xqe zONI^Jz1`@Z{yet7G;-6>O;&6Gek->T+RGmjqwh*UKmV*ucKwJKcb;n&cN|AeV-vxU zC@vvSqu5;7jL%#s6{Bf1gMHv-4NO2J9cyOm{yMo<o`~;j>-0R*W)HrY6V`Oj#`q%* zLX4S6PK83-Ez$8scv(n)#+q}dMwM{R9qp2wzmGy5N{mB@Nj`7Q_`9qdHMX`<BS38& zU6%lJXcI@Jbj7Y0btR=kz*1f@dfdc4(I=&k>dCN92ec1$UNge%C}y{@O>pd1#brSN zkQT9EcOcSKd|;yBaM_acBKyfjT|NOTQ}B#QMjm_%c}CtR*2`REXh~TnM6Sjbw(i?n zl=0>S$P3+NdfLUMM>NtH?kdf5EATq~4m^9SPLe%rWDY0CpF}$mmuca*dMTTXocubK zk&lR%m1u)I;kBQGbA`iR>W&$+w`t7y^<o+dwu1uNJ+v=RK0H|Z8Y;Xmj*Cjo=&Cd} zA0SWF0HFV&6kSaqGC!8cYKR}8jVD+P3Ad4W4a&JvW5^Yqg(UR|9Q;?$bbp});D=<U zzik8F{kMQbFSdAlvpRO)0iN3q(t<XOb&+Z4MM~5i(6jk_f3Oby*~(iVtlp7DOsh5< zCgfF8xq6$R%#dfviRNWf53ux2es={i1N*sodj)c?Z&vXe>cupT_PU8R$iN`1lU@Ye zu~94o3T}f0%p8~b18AufkFlG#4Cls_Jr_B<&X~Qe`o+^;_C`=)tIw5lh^)JSHlNd; zZ-Cr^wjEOMwJt+6dBR^D${+WnPc#eACSMi3j5zFm-KR2w-1CTAgI(%6M-EEk;#z(` zrmniA+!a}o#8y&^PSI>c89dJB*nVs|o@wg7Q=$vKMOE;nEF}|TW3yg{nOOutDa+F7 zxKcPuDUs~lQ}!gzNfRgKBM*+mKo413B39)-dSr^fOOm)52WKg6hjiF}a-mRHN!lX- zH-en|+i|w@g)T(WuI;L4?oSxZ6|DkWkj=1i-B&T8krAL#1Ai_dV*eD$Skor1w5x)B z^LqB%0t{=GLD;@^fnptc7UpIw%eCD2VY}7!)mVshbXL@AE!lZ2j;Q@!X4ah{B*7V! zQSOT^?bnm1!vgUko<u(7h<Lp(Oa5v>hYcM%bGQJ#dB>&bxOjTldZ~rCGh|YaU@|ZO z7C2gqVy}fFer+kRQE5lslmFzeN*c)efg({Sx;Nv|vN&0xk|}28x#1;$l?oXU%?kGf zmLRuHaVoO8aTUxuQ+fow0IMDkAZb~$13Z%`k;h`Vlw^hQGQK#Pjv)bIYdvPu%w<{Z z<>OeAzA$G#1!*NaG8%14yPveI{ND0GM4<uv>~c{WC~<io*JEi!p49i{Z&#w_`HuW^ zz~%hgh7qRok&Z+rLtw*MnI)I{HzUq6@l9kic^6_H0lvMh!pnR26}Eh-AHWNe`ZU@y zVNVdKwS?W%2NhtUhY`TlTz(_U!k&|DvWBh$Sp!JIpb}xx&A~|wpaWa+$_<~PM!Npt z`YOx0oM%ek<!gbJ*7rBfFOQ^MMLLGRN47Z2GVE(8#&W?|{98`Fj>?&iDNE#%zxDr% z?DhR&xO;Pr`010oyVAnCtml(`xFqYzEHPHO;jc{v@alL*T!y?mE63W4hkv)CFfcbJ z%Sq<hHE?})Hm%#y)p)%#7hWnP6Ef^aL{a|aK`4c45CK_q_M)|rwn`2_H-O;7c6H?s zoT|0Q7+$o=R5JAK1qqb0+ea1fP#_M83E@7Dib;dfwBVq6Jh{AI69!UKU4AM)>`(iT zsts|GPj0|4eE^j;d`-m?vGQr3!|t`xmFIP|x5sAhPv69bzgxdc_laJG03N^9Dvr=J zx4zThBH?n=<|iKia)?(T54PQ`Fhe<SuE%9k@1~JX^FI~a7RuqF2rR)W`KXDE`aJN$ zGl7gd!V3HRhM$<nb<gNXuOL*;Qp}Hfk18g{lpCsB_X&JlaApwL@rIz$aY)keG8nb& zYP_Wo8D(Y))FR`&fRfb7^m0Mv;!OlMV`i!j;H)q>X;%JwZAB1Fo;fg5UD6}ty~QtN zs1!16fMK1MY@eN1cM9LisQzYt%NU3mr6ydxavq5HJ~m+BCzmgDi)S6su4}Wbohh$d z#VDZ&f>=iEzHC(NDCBf~=(<;5i&YvNX<Q;s2DFu!3Ia(jv+Y6Fe@`=bj6{cNaB0(* zz{7W@?%Zm7XV7JFF`Y0TiJH%PVbXFTQsT*d$H844eV%Gwz}_|klqlvMBCkpAdCg19 z%9;u?&KgG(4%X#sOD%LQ(dR(P9q%%Ei&eDu9*ZsTcReCl6itgPh$uo-8m$7f#t<vz zp8hQc9GnOa4P|pKl%)lbl8K&|^0_|VO@ICc=Xz(8STAEoni!lrXxYhLPOK*hgmQko zdNGMes9jm$B}1UP$BY6~Jq44*DvLX|q@2KC&|EYZfOj=(KX<<^702y7rnO?%#5@m< zB>Eu23BrF{M3eaS=k|YQ#AYj++bDdgg2{C&y$6b@cs<e|Qq6P;v!ACrTGTj7sP*?` zDdk=kdCbZ)uTV6(Hawh5WeIcgTEx)Cx})!%^@hrC?HRP)o12Q=bzk(?CbXC=z7gH= z+M~z~00jG%Pzz^ixKa{)Fz#fc?DfUXNBA`mnP;uAY%X?jT-3vZEO_lWSWCYM=)sxD z=fN#Ougi<WJW@8>ij4bM#b!io6sD(EGu}uz^X|CYij_9kZ|SE$Q5{r_o#izm+%X}n znUUoWi#n`A@Nc`YSuYQ;jpIq185k|m!}tr{FrI+Lx~QOi<kAt5SAS~64L$XOpIa^Z zr!PTqDmv+TYH9DaZ)9ORo!{iACg6XFu1a+!EF}J^dY)s-AlI&^U!5nx8VjYmE}1Wf z6iV}KAK`w9Fa<YVAwDjUt1r5cLRUB198T4XLo$@*Zak4AuK7;E{zg6X_H@68-I44^ z4f~5-SkrzNAP-dWFP0gri2@i$H`G3cxK-X$d_t=S?6XG{(>mT(^VM!>3<8ID&55lx z5j$52i0^T>7@9jlwt9*Y+{y<Vq;9+`_mi$R$_RP5W5uqfzvZ(rN{2Goody9HmON{` zxJMPj8(FTIBgoq^o%lxRwyI3KV$64=(t%B@9AJcKu{jZJExnjZU1dcjyYBf|!yX41 znr)!8VnPr#_X6wkq_3<7Vc1F9_RULU;p9ndz4AtT&tjOatOZ7s6vWQ@AjZo4e0rhQ z{bm9i2Dr_N0n*KJ#RMgPo?3JTYZ}4K7^Z3twMKH#_&ftVhIm7d$V+Z>B#vW}VJO;| zK?eB{IgyDo>?~XDL>5%FFjGRgim`mZvP~61oJE)I;?P&|?=)#D-QDncBk7iFOQfd^ z48<*mOXp|a4shyTerS~ZO*b{kEk<GZd8f|$2}Mp?%fo7A=dnr+i5ANQQTlP2sJ%H# zMf_T9lj6kJxV64pf)7u)E%m9#Fny$EF?i+Q(6PHY%0?W-mDFTaHa?RNrPuJ9UGI06 zu42tFKQ>#M1Ua*Nr@QEgPvyJ-kYH%NCcQo&I10@gD(!XwQEkQCc?BN*bCs&kziomy zf?d&_X0&~CzBz)7=|=~MOvSDo&FMK#L(&Cwp<@p_ekb`o!3@rtUMW{A325U4Ye6An zgd|Mb0hE$y>-*nXB=zaTkT}xaygXMqIoCJ(s4G37^p{_w`833oSpkocHKd26uvCoU zplQRd*b4J%4hLAevHG}s4H`HJyuN<d(>!r51<qPp8MW33>YPbCBf(Sj;07!DwaCnr zsUr>E*E*l~m*1PZUnB45Kiy_`Gp%d17uK)sE_YjRk&!pcx2W5U{jO8_$ZDAWa(<d} zxGTk~Ly$3>J(uNTw-UHT@_49cK*zk4Y4lb|2%H^>CEwY{$`H_YnBeL1Zt3DH1nV&Q zAf$LMEp`9mt<$(*Bj?r}U=H*+4#ZuwYeq@s2MTD{SXdCMGO~f9E5Ugo=R1dApWn+? zgbTOJ#iljUpG%I5jrYX3PeOp|a*KqI#yy6RL-@k;=wvWyFpq+(R@%pi#R-1jgBGsT zKFh+oPCv)$SOT`Siy`pw!KpoZ0~0p!R;ch^Q3k0>B|{!WZkf@hDqy~`H>Wl;^Z-7O z!GL&R-Wu?RXfAeb)_XwO<?pg@*xXs9Zxo!@-3_`IjAR;MUm~0u&2($)+N!=YU!({q zOhNl0Cu_?2kU+oG3x-j|HfzyePF+3OIOt0`UWsc>oxWxGX-EQj97z_!t<_0Y2($y- z^+_2iBkstB5eH%3thX*bJb;kLDLo4j5)#dHBKJ&2>hAYg$sL6rmuwwM81PfB;hlm4 zxErcDXs9p)EJ5~Yu=Rct4wVq2Tf7DBLWqa*BZwg{h~37uWM#001A65=PTHkqn1vSz z_t=`-vp0_wH%n{d3s+l_uFE*Ssq{)t*5-UjcR|#2ElwesLzj1qU%e<tw?l18R!=us zYRaqhR(4d8<a%!Ft<O&m7@!^2A5B)Y`^AdngD@Z=XNuD%LqHC8Go;(OcR;{rNH%zw z)MaQ&-G!iR?{>Xs85Vt3#pMVB-r$esBT~vzmATs*f+ph~(GoAqr`aO)sO=5XzH(?t zM%5hYGk@E786Q!<(6-+3YbUU&G&I>_phg#sy0|#V@dhRWfo?!qa&|a&%kCnxg}hUx z9Y4?C^epJ>Y3M?;+{cT`aWw1oVnlUv<^9-=m-l!zZlki7e>Z%0W*6{8^^ZM!WIEny z10q<}R>GS`dc7GB`HWDN1iP<**`S9sjz4)3%$vGL%ut$B>o$$?9v%%SE-!64mr^ip zt(a~lZlBHRx4s-q_hnu)<!Tjw=yT|fu;7xH9gb#S^;1!A`-&y&Bi#7EJO@UpD7{G% zL{x`TA$xgn=R1Xby<da8o3lUl+poW|PweD*75sG@D_t{Qe5QZqnEu;H`O?!P{gcNX zD+BAM@fwo%?g$Fqrkdofj{;Q($#sGkD^G1w@(R?5GUeMx=%tuexDPsB#*Owveg~_l zjr7h#d5W3SJhClHRL?U0GqQlL|HKRw$VuLnigW{{$;X(Rf+2St@)tKqlNK6-a)xOi zB4sLY&Ha6qEv;K=gPPRVPL_KbYJZ8+M+XI~r`jGIg|-48W-fie`SGzF*H1TC``&;m zNmrovi;^x0ANQ34xhj}}wYrjz5KBCe3jQRZ$rGqomxO|c)F(>hOR23Y(r4;aS>Is} zhK1Q}FL8u#s$?xsLC_!+%H@)cQV?J+etWRMiz;~@{j^c+_?QrvBZ@IN8W9f_OwHC! z5YFZ-7Jp~PbyJyA+PN^(hhbT44+}JwTt;;A!vk`_EE4@qdpp$nALFYFzY?WArPK`l zSRgk`D8Ygc38ewv3GPu)ms}{7*M%H$=+l-^q37x7Rs?deibA79yY5Xe|5}UJ^fpwh zu;E@uQwkNirmU3~P|@hpW%#A({B7%AkUg;Bj?gJ0YouQd@!y<zAW!lMm@y;eJ&g=V zs0%{I{L0_lySSh9F_m9-t?r*x44@$X0W~OjO(*&NH<hJhR?TtQ)&xpN7wHBA2%d0? z!u6KYn?whfxnWIJDPiHy*3DL%4f!1k$Fk1|+jACH?&<L>?<0(Zc?Sp2nH*0Bvewq? z@T|>8<-<eN@>YtQ7SoB2EBS5f@gSPb&HJSN2VZyM_QaEN5vO8gX~%>@cMv(;Ri}R4 zrb>?Y9#=jm!0xIVDO9Xsfx<lgwC@Ftej*8tex3P}#HM!jU6*-t&9;ced)u#LK-buB zwyd%OCDN+y<|{5u-|y)5Ps-`YD3-<I%FHdJO0-4rY)^FX&(CAs?k`>6dOvgQ_cv!U zVNpJd4v{Tp&FhX-<~%I50}9nlpd1~XUfc}5>IKSW;d_1<<|uthJ-j@X2RZ5WG<QT= zx<P#TWvM}!NYpgd_%0HoPN*~-?-4n+q1jG9eX$3?ZY}8hqt3kQT5F6tXn`rkuWSbU zbVn2~zbB24*oW<mp7+@7r60j-{OAX=YgONOk0DE@+?Mt1=IE*FE3}=iuh?zh@B5jL zAC0cpYb|A+i|T3}rrhs~e{-MKH&^EyF*-K|OJ46SKqQs6p2IIDm3J+MDxcS~mQ1R= z$+4NI-FTlUB@6!17{@TJR~Fxdh4d3f_W|iU8QUQu0#NGSCT-q_hq{16=NuU3R!kwn z{KrSu{sMvD&O@na!8;DdB=Ln;gR1hkh)8On?tuVkFz9dO$2cac&7k1-AH7yGp`4~& zUn?D=WMoM}lIK{8g8zsgQ#$tAXz2f}HAu)RfXHJ9AhLv+NVSIfk-<b8ahNr*P+IWU zyhG>mIz>26-Tt$VfVxS$&%l_u+RfrOo!#M^QGDh?6mHK&NYOnyT)_7gIi5-4k`x~1 zxI=Gm#IT`XOb|@C>{{q~UdZl5aOggx84q(w#)1`=T%2S4lBxl@4frDjyqgYa$BgGk zW&sT7XHCZ?{kfB(2%xVY-|H7dr6Ks)2YqP%pgV!*r@5ONshiXK<E8uAX8YZ+9rE+F zfQdx*xP@$zbMII`TyD%P%%HDy1XOyyUXEDd${Z~>gRe1_J`GG{U(A}5k<`WE;<<39 zV2Y!~juxGH<seme><5s2>YcH?he5;ciFfRgu3pbZVH$1Hh3;jnSG~Nr+^%RhHdADh zZVDsf4v{LSHJ!qWGYz#6k@q##4BIcSHeT1NCUx`8uiE+SSm)d3yL|EO-MX>0&>wQ* zvw`#-IM)5FSD2U1RM!~`iJerVxPkxe?==z=T+FHn)(6k#A@_Re^gM`Wz92sv0LPDK z<Zv`IM9BIFl>*DEyzDfs9g?o8F&}g;shr?Z6R+C{l)Rv2B-e<NC_lHnk33u&4eW6a zUELk;v99m>dM<OtwAK~2<33)+Bd^(QT@NA-tPK)0n~9GX`GI?IeWCk3=-J!cf$(Tw zzLP2ku7YQlT1Ie+bFdAVQRcqf9OTWST&%?X-Nd!k(*v^2bFT^&Y%zft`I0o;2GFp9 zq?WZiRUqHBalJjD+!F`vUf4)OW9frwhBP>)!E_<v_O10pOCkOdTjPFJ)<9z^Wn%2f z2+AYHVt{igt01KlU|17h^nu0BeaV%7lI1qxF}PlvjhrUDG-k2nU!84Tz#$2xRVzcr zO_-|Il+tJwJL?)UATUo|pNrxACkjj<9%u?xO?^2%gD~uGp(NO3HUhoT2NoSoV!lrh z9<1lPKMez05^*-(FZQp+5Z%mUQq5eHYu4Z>Fp^MhQV2eACs^RzF20&&A5<#L2qzB* zHxgB>iuEgT2>Bt<aCxKtKfpv{$`gec-|9C1<>@}XmqlLDIW&_;28(e@9LRpcDj{3i zD-jRN=bq4U8ru!avn7gtp+uAM><m30nf|uD>a;x=5fo{j-aLYC<Fd&%`RQ>D-`MN+ zV!x8}rIs>6L0L-LRSjaKtNvQI*?*|mrGRN**gCg%){r6!e^5HP{s9(;J3^<0fO-@W z!xU&A3ZS1Tc;k0re(g0sqSDBU_=A%`G`p>-RA{xg7<JVw8ZbpnNMPm?`Z{BYwHn?B z-?6At>d-3qqN|q9!HBsba6I|Itx8O^I*Gs>8JaRqO>cQ~d$9*(0C*VJsA~%usig!n z;r;zfG&}fM+MDKI2j<G!Oh%8|$4OicXt;R<V&B4y0ZF6=jjVKzs<5OKK|8{k9Idi2 z>aF8(LbqClzF`Hd^RY&a9ZrV}vchD$v}-*E{>c~s13f$dL;!AgUOD02%*ynN={hib z3DkMYZ=+mdlo&KY{wfBDG92*wA&S?x$uyDBc1P(SFlE6j+By98Wbwlh1sZKCUF+Um zBe2O5U2VN%u`s99kj-a|Tp$2n*PifwrQs~_R>NCAvceTZP3O&yx{zp$Aeublpy=*I zmb_*#=A}c8C?lGgilAHOcp<E<jysfSTtPJP=|k<<QI9O-OLA0s+51Q_M++Va$-!)q zOGVopv3TS$LAJ4seLQ%1H{6bO2AAY?$m*f0EiRxDg4+184~$RCy3izB7vmjes_acb z|5`_guP|SFuk7#-$k6*AT&5jUVFz;hmDU$Z$J}Yu9lrnl@#H+urRY*+aG5i!T;!I@ zBQ+<*Qd1l1dA$6?-|Ye@ddCC>w&kSd?H$s(J6DQIjEu^`K^LMJrIlR1%oFB_P~Ou% zoYV%GbkC`3PgWq26Y58^kZ-%;#i{{igNLM0fhE>N%}LS_-PHl7KnUfo`1YpWcC-Cb zjQI-jFA~}g%1VLj-T<{w0Xe|34qhqo)J9)hBYq~O6_~7)BqEh=GBE6v<dnUio75lP z|N8#99(kj8{g)oX_lvjsKQS=>zW}bT)HP)f*pPkx_Vgzjw}Q-_(N#53nNjg;GF54e zr}SIoP_o)%&9J!)yFixh_uSaqI47XG6zS)Z!ZC%<-2L-D*{|cV>ak?e47Ihp$`@pM zf^Yy?39<|x1T@d3Y|4wmr-o3N`-HM*p8t=x&*tsKh)<+MPDoQ2&U10?K~w?P;Yvz& zPM_bam+N-(ASb)f-lzzWw@CW}h2UnagrkL$0@37PC;@TuliC5eWzUA@XQ=5ZhT^G7 zh9MsPL}3+*Mi-2*5TX)7^HUf#Y)i<eA4bAy;Qn+iwe5=SGoAx(L`9&2$POfZ8E$6Z zN#XRcXW_RHZQjwCT|k*PS@cZwP>|ALgbu=758p5~DvfL0UfUa*R5a$VovN0ePQh9s z$>(fQl-{yq128%XJlgDG9yp=EX$=@cYy8+?gFbUxl_;;pZf1Yggu2{{m!D<ZFTN)3 z>Uh(bIzs;0-)`FUX%4Ia4!;hk-oYK|1FN}1@(0Os$KDEkqa7KrJoIKm5dc*&GFRNF zrU}>8ZTEEGNSS;+oawo+=R{4H&cIqEJ5O0<N7xCu0UrYn3W)!cN!}6gydIuoZX!{H zI&_@M)BtB0`2|Ej@G53#c;cGFu*sgD^MyiJhyLRa6GfjZiUD>dVDEOxLU?r#VrL<T z@EhQIF)R@2+FyC^TN?(VqM=uX#v0!nvP-dBihUM6_};R!yUj9JvIK$!)^*V}HE&gz zUrbRkka}U|QQcF2R{%gW>YSH_ess&rd6u;=8dCQoF_L!t>qo{WjMp#v7z0Xh2zC5U z9qxp$a;QKTJ4(Q|Ngs0?{oBm-hw@>QF8NQ?Gz~(2xXdw7sl~jR7jK&M2uLPkiB&8! zU%1|is8V8HW0*5P6h(l{`Ssq?)gwE}UrDVSGHAaR8z0^HSqWh-QyVF*6!)b7d35^a zsEMIr5l(R?_r>~y^9a4OcgC->3yc=%YngMbrSEPmDV{(RbEAqqKlHpf{nXd`eN8^5 zFE7TlE!b(YF4-rdCV#}klxP4s1~rXzC}$H0`%D@>G_aw#Q#L$aHgLxFLmaRf<v(ZB zVS!!-RnjWSP6T1;-MGqmn+p_ZSxR-8VzsB9&RsBF5ccwW*=52%AT8-H1mqobk=(Wd z-NH(Uw!LC{>&6H8t%bmx)Fkf`IUE%2h_56*cso+H!z-=qfR>i+d><kHUV<N_e3`|R zT>jJe_$;U%iUj=6NCs3j#)koP{mAaxy)QQ#1(9AG4gppSMd*zJ6wD-O2(bb@gZ}^$ zMfskdB{D)LnCPFnoFDJc+ig|nimX5yjb^0zTve9lL5nlmDJs<M#XODfo`Y2$JWB+j zqb8dMmjgEoLmD)U_jQ_*2qERm_trwzs&;2C$kPTMkJaWThcce1y5aHv!E+)hteT9J zELF79tWSf6fGB!b*$}IzLzo!W{qqt>#W_ip=+qRMP?0~=AtpIAD|CmZZ+TvgC@q?u z(Gxn{*mY|1wB*Y$7N+=TA$Nb9g+Tk)=Pp~?TA{?UxZp|vvQd5EX$&%N$;b#GhuXap zy6MLGj=3oZ?_j_6;r8cf7rC<5qfJcCEg~4@nB3Ai@ojla>l$0ZbIg5m@`lqK6uX^4 zo?W`SIvR+f;gH}Ps#-SSAzwSmt<;41<Qd}GVWEk7;sbahm=XYcjoj|OvN8K}8(AOZ zi#Xe3-kku{i35-ydb8H?E-f1(LB=0LlF~5@2GJwrv>zT~J919Bb*^~GVQkcT5@ROm z=0H2#^$_@a(#pq9#g^Zzd1p(IRx6k|{~T3_Y@uo_Ar+m*)a&zr**4EYk)Eh}OE<be zc($kbabnC(Dfy?MaNp-ALx$F{pkVlFYe+Y6+o_a{nlV<Fm2pTTVMDX%sh%Cn8V%%y z!FKo8z~@QJP4-QEHyBpi6G75FnldW7@S#$FuS#Ld+0v%uEvt9M$^ck~&r&aFE+lh+ zS<<e_Z{7jGVh}*64jt{H4PMQ8$w-Gwrw_xuMWz*c@qQf|kQ4$4fda6UO<hU|FN>QA zmbH}kB1m;colyHQ?6p*zOXUo-u#09WWT1%>_nZEv)Wqp#J+#t8MSY$K`5eF0B7%aW zPC@p3@c6L1vHKA7m>Jag9Z;zgM`FWVec5AW1#sNuMN+9{FsnefoU)WX5%o?rtD?oW zM*scqS5=!}Bn`XHTv^%{uLkdfctyUk5GABWa(>HEks_|V&+*I5=l9+z6Szf|*K2ye zZBqYoYm@;;tM%~eT0lAl9v{@|=2PFU#$=SVg$o7Ywe^RSoZPI+i~@*`tq7bO9fdZR zf)VT4O?&dE@2>8D-7A;Ls5VM}fxnmt|D6@0VEpTeVs2~WXl8ErKhd_XRCgTL+2DO( zeTQ;LRTHFu9zA3sjzd5*#*pnm&1|p7h%P}YlSy)^#n{Gwd=S6={h7>5ryh$tS5sV7 zJ9d0N#;T?>da`p@W^(pa{Tb0i!Ml+$gJt++_(Q4vDGtDu2#6oXL?4;W%ysaonKJVO zD)sSfPLQU(PU-Q418xD7`-}Wkn^jrPA;xs#79?LqrwIxq;S~lpS8ZB*J@E`-q|%TJ z(ikbdf;dYCrfk&1xFl8UF_4l5lA+<%8~~2IHqk+d9cn&*S-^BtQQlx^qsCUytWP*1 z<NJ$M2h~dJ$O(S6aTd^e4U?_)ep+L0=AD8tWU8gcJuD}5O|*#U1_2iS{@T7Fx?i82 z&Mh@cD&Z>BI;t6p<%D5!p$vAT)ts0}dEGSq1bAlwq}}ujXi#GTiNj|k{zA0u9K?F! zlV|q<5YxaJ&iq7;RdEY2fCQ1^l@3h?ifq?g(A&<OhOXM|92OQFdo9xbusHV>bFbNc zu~{Qb;Av^>hq13b+TsT18_A$jMUZmrFi10?a+#I?AnxgWF>_TC!`*B~TcWISne-TB z$0Ma;a+}<B<ak)2DhZ1-1a^dUv0mC?BYLY7g#9uYy7k;l3#(o(Q8nb_(+cj4E)d7` zrte6wOId*uht8JgHp>PS$W0jo{}EJ+7{kY*{%O3;C}Pnh@2bCO=54a|xMJ<9S?R{y zX$zb))twFo_5Tqt%;sQ1I&}H;l1UsS5Eo)6!w<$&pl2k1lvekqEF;l3y5=?{^)`{X zQvf9<b6K@WAt+7#(9_6*_yhHv((qeuVrZdv7#06Dd2&bMQ8fZ<x44m}tu1=LZ@Y2X zerZQ-U=qW1G*;k05A9_VnMT!0qr_m>1tkMI#4lGa=fBvB3Y#jk-GAH&e0Fv{ZRW(O zHImU0Xa?4M@;ACrZ*k{5H|M=~SzcrEcI1P0Y!);aF*Qtzjlbyj^zEQ9G0tOhqIV__ zU47Djso=hL-YBf+JU!;hRmjP6_H{Vd;bpP!D9g;=)HemrwL2^F9-rGOd8v~%Nd+0b z?5=>XK29r4n~~!16*lZKeqDgJn2hrNYnpl1@rOg45EXb6T%%snyJN~lhF#{##St>2 z0>h$lBS`TsoUhF8Tqzy=wi`9{PM5+yOIhUV396Dz#*~PLRsqIgJX~3G2&ok5Fqe7T zGRB}pa0YI!l|u+m*4}XznLWi{2FQ~%nZILa%5IDSYpEeKBiQyUjuT@Gx@O7_gOkyC zOUK`;#itW1*D5e+$bmKtVZ!Siu96bj(Y8!NHd%n+MLY>cy$>r=PF(vXs5NcdR(T_r zx^<?Yb%(Z%SIIsXeiLYDD|IvBIAv8i&N3M5AD7VtTFmi^@T#{F*!+d!Rj7zm*PcmR zS8E6z|5IL2c*PA}&DO;~Usu*f!_Ygh2kI}%r|VT;B@o_7Ygv~&`{^r!M=mMPbE_Yl z3S(PIGH;pgY+4h#XtHuY9_JudT+V)9gm<+3+~iqJ!jq6S<C6hurX3aXQJvC88EFzY zYOF|yo%Svn*R~e!_jhu62Bag~uJ2Qi-F0+nO})j6s`E46ogaYz8v2Z2%j3Ag{`^VD z|L>vie?bO?jm-Z?SpLy333r1H@t1@PnKP@s!H+|>rE}9#55pGI{?te7e|4-ujS5IJ zhrr5IjzU4kL-g|%f_#)ZDs#!QMbi$tE_Z16IypJ8xA9r_9_#SW;St3r^b{OMFu<!1 zWlw^TUWBp;F`9x1d<1yR=#lg87nOtwo<Zp$ZLoOhI%~{euqbMMj`SCzov^+rpm5<p zvAX$m6|~eTgeM$W`WD(gUk<Qgf?zaTmN1wc3_LMRe$qR@rW|t0Ohq`P0d2wZ7nLN9 z055c;*%VQVh7eOEX5c%QKU7|T@5^5j6b=p??d>kDGE;x;MqvOFB6c_eOof;?M~x-I zSwvBQ@d%4T$s$?#g&CFKZ4*}}OB`NGJo}`(r%I7}A^H*;>R4`oxrL_!#39Txps<XM zDCaCZW{pG`K|xlp$jen0Bh1CWy5h2wwR49oiRV$#s>mO>FMc-3k5nLlu$VQmt#^tK zNwQ)w4+*Oh+E(1hEUzPG_lGBZ$l84p5flAipv9}AH;*#?af1I#MDP#v`iZqIUsA!R z2C7c?>EmCXrmcDJX21dsXAq}M0rX5>$XGuNm%7J+PhH$_bdf~_{r(<xwJ;-c8_g_! z_p&2u_+o$z!lZ+yJWIwYkuguhAfQV_hW_2Gm6&9%vH(|*9-UT^jrq%t===+3%<5<N z8^b*k4f?U?`aoqRGXN!OK<(tdii&t}6Zatg5IZRdsC74?RYc^4-1J`Jxz8xXUync% zGB!{hEYzGFAy*mP&tB_}sr(f)7Eio(LEG1}dF{yXxt>8hD}Lu-bpiMh`k<d4Cb>O3 zR0J?_X2U@`p<vs&9vL4tO?xtZj(9T*_r&-%Ai(<3SDvMd(4PZiDq^xUdN7FV&@|n^ zVc3$YK=$QCm<m7<E^~?_{(H>8ArVda(v*3J#lVU%ri(cxpc)j&%+WRI;5cA5NJp0E zCKAiP;>=bHZrlK7AWWr(j|RKXwVOVzbM^>tKx-wQNtht<8LFqRK1cz&QHR%o({y~> zTxRP{6M4D+@flOEv=Ob{bj|SCA?5Zm2O^c__AqO{@b}<3>hPIg9}o-YA4HtYu2qFe zlC~Tjeq2PF6HEWX=)60E90om?=L86usZ7Luy*eD!v2|48O!jBo^S}9W=|N_&`x3?9 z@}iSA&e459j-CrBmm!bX9d8CIc`PCbHyQB+l*v_4XB_BudQV+?i<YcrM6o9rh}s^5 zm>fCZpNXKrD}3w9(OUX9qI|ta+a7i?0CY8p(QFN)OeO>3S*lHV%;}-*X;z{Xzgj0m zc9sC`=*l|&w!Gqze%V8reQsDB{AV5rkU$i$elWrjkA=WDsUKlNky73s4j%7^n}gU9 zylfiePalj|fPzZ%+sjAKAd5PT=<H+?iZ9g9kja8Hv!_a^*lkm2DIYh}05|?3-NnpO zE=45EsJ-)6v7W3C{aD;g>b$SnTkm+gX2ggdJUm+d6Pio5A1NM@);>y{DbpOSc;Oa- znyPaw(zK&R(w=Lvzu3L;zzN(YkyE-kx?a|zb>YURl?&7}#cJdLO&?S#%Srh3uw{13 zV<!AG<jdzwe|3v-gB_z{N$$wx?Soxg1nVCWQBHwHYaxp@s$CpzLI-;Y_@##+#IrMV zWoU?cntmkty0^g&FSz-;r~N-|%-PX<Q&z3~j#j1}G=Zo|6iYIrY0)S(Sy+Zw#xrj* z*SPyPP`2y1S962l=&xh!c)ex-VY^*{!H&3l0o1>F7z@P>ghv)bA#W_~$6qf@!r|N+ z3a1F?)rHktc@Q6#rb%xtaa!g7Snv8dgV2Ak<yK%-@9sBVxy?GmG3bJefu2Kn=5TzE z7(s^y-4e9Y=sX_8nuTX?%9j>{w-8-(SIZ-E?1c1ioz7ExAue@^x^o9SPVa<EM+F zWW&doS+BTFx0g;hZ`guwd4yA@Tv8Bqz^~ik8Kng3tZaROj=!A={owAM2qO2+HpP-2 zk13jcpE+x6aqo7%L9^MqggScM1Lxda)KK>TcHTUJ)|~iQ!Gu&_({6X@eDq)OZXnmE zCZ7olP}a+w)tjr!u@~`YOuDSU*`{eE^sZ4Uw`Zw5)Q3Sl3ksp6FDf9-v7sieM?M<H z6+dHt9jg>*>25lr11(!JzjsQ%Rj!AQI~?Y!QZIf?JpyGCO`_f9xV;x$SdD(N)L`|O zqb$PBh3ue#sO}&VOzQcI|IjM3soFxZ{6v}Y+7!6%!De(=ZRW*wiSo<y7Nzf#XHQhZ z`9+fPK7vr~Dnjj^`%Q#fM%Tn377r3`5)C1IQcVoLgeM*Eg~|UM_dVg{{MC(~6r8K~ zL0hU7*4%jqjiy@R{Gr2sZrACsziwH<NPMnPQDCEJ!Qs*~^pgjN)$)wv*5nC2E45oL z`80`S=UIqVf%0s^a3^JImu~Ia@>AXf8-AfcYCu!hoOLz2EAlbxIZ1xpd;9sX8}i#7 zoLK5F>)-R2T}b+0uu}gUOiIw!+S=I0N!8rQ)cAkgoST*UWHx@e|40-+bj@-=^3p++ zPk+Q0chNDKW8(b@m6Vs)arbF1v{yQ0!WF)|4hA9e@#mmCHQbM<COvIOB3)jxtzFk` z?J{7@28<)%sm$dtVa`#d#+f%A{CgpRwMBU8S@e)W;7vkg>;I75?si52$LdcSCSmSj zp=MA)go1@mG<d4u)IZ1Wi6qC>vx^z$6&;S?y5Skx_(^6EOn{g&h`dfow_B;Eu1=nz zd5x1G?Un)iUl6V4jLyghs2C&g5{e{X$@mdW%avs@q$200RzTrU$DdTt35f`5;WMW3 zG3l~a2-z#~khxjt&8+zXVuJ(lqs+nQ4I6}vG2DWd8g6_&3pUPKQ8!Vz$*kD)o5Dkt zIM0lSrPz(C4wImw-WHk04`Qr&O(jxbR_<6`eg^9G%fyoiIern!sClu{C{ZL*;+-!< zOBjw`24R?xX_<N{_G+X?1`|H?*%8&5(wLO!DL^SW)-v;8gif#a*lB*isr+>9VVob> zm?}46T9#(|T=E9G1<tKvNr9T$z{7?N%qoUA8Wd^b<sH%g<s!vM=XdVFp_He;gda*R z7okiK)R!M5^k1&1?ei2wZFDA0bvM5hD|?+rUBUv)W_%k19Anrd*QhkE22Q8%I}?B# z6%mh(x<8kF?fNaB)6%`&4aURppivJiK{V`wOw|O=6=Q9`s`8({=A6j<9iX+@<sq|u z>d0nJEG49V^GiQjm2^*-?XL<8O5eSoCWkUxY+$f@@q(8N1-t06Q#OL)#Fg&$_`bEc z?2cGb{I|8#!It@2>u-|^X`L_gbvFy6QU{V+Pi|gbi6>Qiq^y%mX>2Ac{a3@6X9jw{ zHbe==(PX}G%R_EGSEEGOv{~Nwznw#6Fx-OKer+z|f0zD$WwZUK)!zSf`EHh<vgqf7 z?>?a@$p?cO+-+_SkfselM4-4TADl8Pv2q!>wpxexda<c$5%6@j;e7a-vO<%#*=Gx{ zk^9YvP#^@UL`Be?;@F9!x)38c1nO-)<A4BJ^75IbJ)7Zc)9N3!Bmh&3<u!oMm{FU9 z9L%+;;sllQvvr25UgeEz%4PJqU)F;7KvrRhy@4y!P^bd#1-5auXA@6TFbaAq{0mY- z12?+aWsp@V1gy+P;0^jmNE++g4_aKqecQI9TbwvuMpo0L-xCI+PiIQ4w~=H09$3_F z!`)$oUNj)NEhVA$0t98*WQIxo{*6Kzeqind9x&aI{|+xDwlwW4uX!M-rXZgO$$ymW zi?NB(bcCfCylxM!^toW=aK_cvp*?*ZIdVyolY@^HJBke#5=xg2s(o+$3i2Pp=RXN~ zwzf9^#S|9&H~3iTyW2YdvTy!xa^1Nzh1&mvCG3AH*#9>LsQ*pDh4nv0uK)jv{D%S4 z{~E@xh_$Vev(^9N^!<-wbyjx&WlnhiXR-e+vi|2N2au@$pQies?vS-!graoGbE0Iw z%T@I^QnUQe!vAk>at7na%Kryn+-61T*mXMit_La+`Ql3jkn!Tss|E#-WDRqKur0zT zrF1uZMGVe{>^}uxH=M8#z*i1si|+}84|m(0tn5xZu0L;Qd}uk0L5pUw>zs5{w;1ed z@dEIueJB&UX&$#BK;Xrt%o^xZWOP(15ejZa$iFX@^PG*CpgjU-pGYf!=B~(I^&wZo zxXljocQ+Y<uN5Y_<4hnkwc=+f`cu4A@|S2ZQxqjF=LPyk#ef}LXO9`D<OdQdtUM@R zOU95+V(W#B9b~GGJ-5oQ7odU}4Y}d=@teuHB-F04{x8bjvAY+j`4Wt8Y&*HJZQHhO z>qa+rez9%aPHt@5w(VrnJ-w#8XFaq2)1Tm+7yHzys=cdrD&fe;fmihu&j!G5-8CmE zzyp#awLn-qANKis_v6$BzED|};W>AYVGUE0!sSy`v?K=x=g95TJb^y=@>NGv$A!Ku zNCoORMA1PfRxG1ZMG#pen_Me#R`}OTBXia2Qp>Ima5kh8O5Py&8;YdKOAQ4H8%gy; zn#y0Tv>xf0PDGo3(>gB~SDPkWUtceWD?8oOANX7)zfkON$v6SB;cDTZ0H~<w4!q_2 z0qP;3qsgnDDXXubpel4(9?r<eTVYr|8cFF5xP24EK-LNVWS&~h;Z7owctD{DFQAK- zflqoFT@{*Mt9&V;Gf9(CHu`hB+QP&FgK?eNy7fZ_J}OmFcQ67RH#u&p4+p2|-)b^- zq$4i#Drf2T2H8nE$CvLsz)>!2`T4k!8f8JWq1<=(b8sOdQy<YTFlXOk^Ny)J#D>YL zC2bkzf4<@WH{L1!YgjrMI=NUH+We0<{$B!L!j)HiXJaLX;0O5dKP^+v|AP~hElo^~ z44ouQ4SziN{-1z;qYAC|AF+RJ|AYO{?4CVT)xBYC#P?RT!Z0y39DfRhLaX#xNBGv! zmE_Ap(Xj8o@Nl+8KARt;OPd{kuBYfru2Qb}`2{hOy}+sqg->ZpX<K<USK<W>AbOKC z_($+K4pAVJ3h=Nok10(K#SlX&9TU+FgNNed8BXAMEV*s=43D{a%8=nNAeA^Ncpthz zyMJ8iBs{@?(S}Jz-^kecS}rNDU>}FLk)-+6Q6Y}_1jbk$VUyCRSiYd~#~qCHU)Krc zH4f{Byvr=iJb3FC1MY=2b|BLFLD+_^6Fjkui(<OnuXA~?yeT4s{W_zyM`rWOYHxPG z9j1E2HKn<s(3txfrs^L_q6p$$vCZ>h!jVIJK!7ZY9KV<~<;)OhF{5*vOyjmY>#EkJ z-H_xH2DOV7==Mxn|4HZq$7r%mr`RJ3Y6D<LbrW(X)JAPMr*rg>&^&&Ll2F?dn?}P? zj34vI-*S%*A=+^^tU&wZ1a<^a?etAE!?q#E@rnf2C~WK5{596{8VcaJPn<0hv{e?X z_kqjd*`$dtJC?s%wq)|siP<;3+ab;BSKP$sV`Dhu1QVCrVc^j;&!lQ<5$SLWk);06 zZn2+x{oH413qG1V)d{CFQDgQneW!tIhSf`PFd%`KVX}{Ma9OSy$L9Q7V~)y_!-bqF z;iTw^vc%udz*Cx!YVlqXS@)Knw)U^NCl`c$VnC~eVmy1EnCJVy|6BieC`NX`6xX=0 z^nmz5B==7!X8u1wq^zl(>klITA1u-=t^LP1tRidw;|1AutPZGb^lpUT#SSY9dWeMv z3uv~IANg5?Q2tom(Lg2`_MP1nrQBUuuGm4I>cM>7m4#=&MzHq%p(B9PO#&%I9XZBy zf@$+(JRuo0L+H@`65bcENatT$-zWkacnV4ODirTW1f>GFfrCp>o9Q}3*Ui|X+imi^ z5k8I$u~t|Ux~lD=ywNl;^G{5OHH#M_Ma&){BVDf+t#Y!lkfcgvm_Y)$g}XS%GA}hK zcK)pggO8@^^zut5Zy^md`Ad%b@=XUV7{#`dxsMPw1pT*0rFHtA5CoTY$Jv08^UPXJ zM*?!OXn<h^z${o1=^Me^tIp7xVqMRV`!h^UV74mdj3Q;kCxYr(U?ldH0n(DI{3}`t za=mFl`#PLBV?*Hi?M-(YW-QxvJ9k>MG+^@Z<jT>V|Lf|PowrypC7brTPl-%7dZMUk z>Cu!E<>y^>r|<%l(m_a5nuXK!OlygdQ(n$7gmGY|yTK^B5IeQC(BPbG(JJN^!tp%x z%nM{n!EOKYZpqRUtn#QBt17M#?wjj*?sgvY+7t)%lvmSE<uf`pU@2ZJyXDS9Ej3LQ z(I*fmFU5EFfMe+zHGwbH>oGg?$)hfL&GuH)OZ+a{v@IBw<nLEf$Kb6iX<d7Nf+9Rs z_TPJ7<dv`{z=paxUAXP<72!)CJFdm_PN4r;rz!A$ia|;B9U}i&#`3`f0nz@~koynD zqp@tQ{|RiDYT7@657p;bJ(E}^m%2!1Z5&#HcBTrM7OipqDM)7TUm7lVJ)T;~+xD@J zpFlt^bry@QN7&xW#`N>6yU*R#!Hzt<+>W78FS3quH5%lv2QV~_5eh^}!PkQ8g}L0| z)m(-}j$&l3Pwm!caah`ue9^Z2n_#Kn0O89@bPd|W{V4BOkZvdf9VSpZmKQO%!vH?b zg?Yb?pdC+Gs1}M30bZ!CK{9m3Cz9wm6bM>FWr0Ve_}d4bF+)OcOIkEL4l9;BTdpD* zcQJ+u`X47TXLO1!m@-*nXd21zVm5#o47;G9R$m6zWq62EMdm_>3G7>MNC2Ozid-4q zhi~99XG%r^Xz;mS%jPLUwzEMtry}$)Zm|fP-Bq=xerU?2TZ!$`L`l?r<BagP(+#I| z=~aW-3z8K_Ut(`MkkuI*am<dyF5A*3{h_RZl=MRo)gW>b895zol6+p6H%WGc>CXlK z5lsl}zF<O+I!q3|whwNOE<P!S3CFOo5lf#hV+9NX;>5P@ijeR0a`VE#mhrd(R(F?a z1%2>n!-^cG?hR06sp13-+T(KU+sD|Ir-VYKec>64%7T(WhHsqw_)p)RuPL`H)$2Sa z#K$_qwpK&LCSO&g`_PzAXwf><Hw`uX_b5^Aye^0BN<MUIqML*Ac=|Bn-1&@?AkVAc zN8sQul5g6&iJwwKviP*jj%%7_<53z<J0qr=Z35wK6@xEY%LNTAjUTD{0X_8RdSdIv zo)*%37ER_IxXzvK4G|nF!)tl>S+vq61ZsZ=x2$Bg7i-iRy;hl3K$+?D?@VvWM|%X1 zuXb%u{|Ib(3;@C-h9OHr&rD;#`GvY$M7N*XjHs%~%G%;H9XgJsJn^qmspI;#K`v@V zLb-GM4!#RK6$#tsG^SHl*zO!Jg*7e!Tw;IavK}&et2)W)*>bKtKji@b1Yre<Nz;;` zN2O!xvN!_eF$Thtp<=(_$zx&>j8ifyX)1?XdPBNWXP8r5U#Y0TShrEf@r!)Hir<A< zV6y3h%(}2Q4us?W7qXU46ib{bcOLBTPpoJC5jXw+$Z!64%hsKZ_5bwdn*K+Czo#x% zBO#>C!!4JhB_tiHiX{{iD1R_XdjwLZ?O3{61J?X_u8xA*Zdr<_XTCT4acy>U`@a3k z;YVu?Jw^7HG*rNZbAmUM#6B885(>^uSS2ul05n1cEzE$RweAxE;<3mfK#eF^`sh{C z3;mXasjs!1$AXl<;d@L$DjYzCuqA9R4Z*6hh9D#~pes_9DKPtR(o7kvZ0gKUskLGu zIa`^82tVPXUtbuZQ%6MV{s`#D5@~PuqqYHT4ePc|OX{bE;c+ERFNm>I`(_Nl8YX>Y zd=S-#a3b}vOWPieH+~;8Orc;8l`0lt9^QW6*ifgjMeNyvUnB%;%?k-&m&^Gg!xFp) zl7F+_=)EVL4v2XKWOXpDo$RGI&NjWluahB>t8K^v@XRF@gZh9YxZqC>B|appyYjav z-#M@*cdv}bnv;l@TR$^dExTRYx%HYK`jgg(HDO~Yz=vo*qZ_my6_`7eectMOy|P&S z1zoXekeL@Jx5tAnHzt(|g!0-JYt`_0-~#fty|CN`r!!jjzbw|Cb1HIn>@ceA*C%mZ zoQEDc8wN1XU!B6!kPNm%<S>P+st&`a54dJ5V8eswZM9bmHFT7mKaYR5pVJ%L`&KHO zkydVQOmcI}-+%ClS6sMo@_JO;%h{qu%%m?jZTm?4tRmYEbc9{ZTsr33V2bQ(6Y7G6 ztx_O6GDr@*9E&fjx<N6%JZ70rCt#ij<|bD)jc0$!zb#tp%3px;EMy?{?x<g`9#lVW zH-^{4)tJ`)jueiR7V)Q|_f=jt??GfqbqAf!^6cvKW^e2|y`w(Q4vBu8;{PYLMDvaC zzcxaIj2Xpulgc<peh4|AA3~1$zy4SLTj~10N%_D`-u@H9H#NWQ_c+kM|9(MJtFtnw z7n`~`YbowTgQ(8VD&3l@Rm?)B4fq`cvRrYsk`H~i&B+D)z~<zrv*63n!neJAuJ@l8 zY52cB_cMI?a$`#QNk@=$kgB~&h9qRmVulitf=C5@7~TYNgA@J01CAo(!bBdgcs*go z09>WAczu5Zx{*(ndlhe$6{RONX9JRY#CpPkCT~D~xH+K4b=r{zVV)mu4$Ta|Ae9@8 zSCN&qLzH+)%Z(&UAsVY3CWY|qN41?3EzWTkF2IEof?g5<@;7h-3I!h#`yHNC)QQh> zNSp`_bMLn}a%EVgSmYxcc5M3%`afP(3iavXS1UkXwcd?l%8STUc*S;4zxku#DYazR z;xDkAdg<d4!<A?1WIk~j&bVMkn9@j|i}pnM>Q3_tt1vjwLp>n!_8W=8bfsm|4WWf9 zjfT}KRA!h-Mi_}fJtYpLf8^%+D;Osi-Ah&&<;J-qhxgRn37vW;yxMX4aC-gge%ufT zN~fXp?g`wUITn#4hxOM^*YfxSo(R@h;c2HWZ68z_hlIugo1jF%B|X1_+S3j<ppTHT z5}em9+0!?LlJ>DiX^QBha{`c8XUn*UO*!S<G~pn_Kmj`LX{+_XB1518NC`|QtQ`nV z?`ArE$Qx-tYbi#hs<vwuudgx?J`KB=-A}|bImN+re!MuwyLhN_Pi)WgHa#ui4Uquj z`5Lm6=3Id!8p|L?XP5Rp#uhYBh3*k1hGSQZ!#gKUGvmq}xV_LeN)$fPRV6bY$Oxtl zktDFzyX-O?-%aI*(gs|VM+Bo-hW)!<sWqCNesuw(E>MXfo~RVySo|W)-nC2ry}gd6 z!!!h}ED?AY<~p}1)n5>FO{R+-nd|~+b{y~RQpB<~BIlX^faZb27$WQYm-Z|?E@rlQ zbAH&`N=!o!bw4^*#D~ua0$JUoIWEnmN4k#5HMv&GC}ynVkPBN1^4qw`u!M3)C&aIl z(<NL(Rq>YmA7v*m*H4WEl6_a?*2gQq<$856{G&PbuA=YUO98EshZRpm#h$0PZja(Y z5gGq1Z=%wd>*<vEE|Zz2AYa^+$A33bh%bFenreHbOqN`jF`*<*K%mMFbB&L_+mmCj z<r?)^KYJqlyS3Pk#Q#7q1%}^f!U+VQ?PRX?)>3headHNNc5f-vbX}vH@y0vDQ`u^% zmDwz~JZIBsZypR^cF+n$6d?bvqB+A~SkxXRfb{Yr{!FkK`F2{_6}TPf%nO!Y221`n zT^(<}nOpF^O74!1%(Q4+n_x&9o`~|(hK9=m92q?4KJHpK^!vG?AhcH#SB#e>M6FBw zn=nTfT~a2I5*zzRw3~YFc7;;Fn#Nk~$|Q<aP)4#J@d!Fycl{42U&<M{>sHlAxg(5D z4Gu&Y@}8CiJn*hK$RNT~O~XGiRpvok-rcC0`|ySq74{?rh-??^Us>s#NQOfyb$Hvf zONnKR{aU|R0|MD2Aj1Va(2cn#3Yl8-?<b>|Xg{5VdV61yfF+Guy_TAtNhUAM1BZpy z2*{zaqMx3W!@B}E+-J4bSQLy?KaiDGZTA_<oh{z&zoIVI!tS6hc`LQ3P8#mv$e$cV z&t_EP-@%1U+*6BtvZzX&X3;j5PgRrpc*BXb2T8^Fc-V0kAf`#ib3+o!KPR|ckKpOb z`tm6QsQ3{U7_^SaU^XQM^hs*Q<!v<R^aM|^%R^a3TwBAQt##|e9vEhWj9znCh_LS5 zZ4hPqU<#DP>ra+`XiK1*(Nkk=4f;Q`n4lmoT_MqHtk(cVjL#~y3f-Dt!^rJIIbFxr zsSRmBObr$pZ%In5bdG&eA#~fFQkaGf(^ZgKXvz^2O`=jI$eR*ysHXkgeYrd-Qad2b zl`QHxQxcKXv;QLT7by5fFLgY12uVTXXR<quBEmDqAd`*LIr4``<m68rbutCsg!rJ# zafaYncHx5Clxocz#2FM<<9@CF!bhbW?u3B%>FJ#%G2~BJlIoIbpu1fm)@^WjEj3e0 z=u9zV9g?G9Umz(#qcIrT5**bg%Bgjkchy0`U7QI8j_(X~gX;?;J{=Q1cihZ(F%3SY z0t93gx*GE>FZm-8uIHeOv||nLFLYvmP7LUMz%ryNsp{)5v!C$LE(r(O1$E5u?#Y(i zuAe>Fv^=L8y3dj&l`yd#q&c@I_{~ccubJ4}u5Hn*QDU{HuT3o{_U&F)*z4oEJy=em zOGU}kwV5ty@2ZYCU_w^8IhQaUDgRlHy)-u7(ffm6JPpa}|7A1-(27g7lhB`5rLnna zk<%{>s=Sp3q`ufUf62;9H_n^sT|#Ojc4yfh{uMv?Gmw{W(g9=X;`7(yk5v@W$lG)^ zoz_~;H(57mgWV`RNyEHo@_fTc2nl}A`Fb;yqIQmDuSm)|cwfJjmG3gY)Con5*T`+x z(r>y$I*+dd*)HG7ARK{wO|h?9t{mk%70c7d`@ApN*^MzZ7mnfVx=fWDvEID#jr(01 zKaH)8PKYD%qI)8>A@F2#?l8OCjB>2Nbc2)&!SCjq$S$d}NA6!}+~F=4QN1%+c;ph0 zb-Ja0-$I{S78qXn2cB2pVy=4A{$0h5U(4*|1TZt+pUB@;&AL@{s<AhB&i36geH6XY z|IZ?n)tOcNs8ukr;HT%&{3BeX|F4sU|LA-MKlJ^d5{4%A|J&R;Tc6RX4ZB*LW3F&n z8i?{&CU!WORBM7<c@VmnzwL$YpFgqzh~Hfe)}Rou2jvw-B175B=4Lrq^jlwdPoete zH|P+`(AhibPE`T`LHV=*MwtIriVha^l$8j=cnca9uLen3JYDBu#DE+LhI%AYL+h8R z$T*Z{t4A&7Cv-bVvERrJAjWe#<PnLjM!~%8%}RjoV+vt{0~})dnCF$xX<6$c>Zw<Q z9FYZ-Ur<xqLu`09!<^hv>mHV%|72Q*+|hCs_=hRX9JSa}HaXj&dI?#{i1?FJ&Mt(` zdLIq}&7scXHkDvUOe(2evq9$C>rtF2iyi{rj$XeVXs6Moq|s@ofojsH&33>=%G%Gv zb8%(H7Gc7|u9^8f2)bI~sLe!GMck>*D^1k%@wk@MXCoVsTBrcxjLE+EiY)v^Tk{f~ zt^YpSagc{Hjz-DvNt&<+fzw5Q8uv{Rw_ZGeZ6>7akXST=g!;JwFA!&x01RnT6M2RU zeJDfs^R%^1Lw;^DF>+XKmfZ9$6m*W<G<b_m&51@59dM1!{PoubEHb7mZi<aR+WK6V zb57(zVBxZ`L)>c$^YwnJBB{airK&4(Hyv#~Adwa7Muv6GU8yKn0a1B3ZR?gz?}re{ zR0@N0bLH&l=f_BCGu(XWFK6a_O0%+e{BTZ+hWm$n@C6#yJSWYhnFrz^Zt`<jD0OFf zi}I)UEDLc*e!iwT(UQ0pCZOTJX7Di*4%`}*^8u8`5TN(rWTq$<o15^RSkmEzsx<1- z(tiX&MN{~cO;8m8rmn{;Bu~4e6{Vra+9i`6>LZ2jlI@)K@Bw!M`VW=@Pe>Z4L?8~x z0R)i(Yf9U|y>)aos<FA)=KP5j7riTIi&0xcgHo5jk^6s>&SkJUP7zrvws}?Bgn6}@ z$!KEJ$QOqFmYDqVc}caq*{m%osLMZpiwTAuH@lERDpUzJf5>*IESCuo&3AP;U<i=S z=NT1SAegLk4l~lj;)U_q{RaT6%WLe*(O>)g(czsY)j@hwaYD6l4Sfu`IT1mJiI=F6 zg~I*X_PpH9<@UDOe#-F8G#VU}JW*<;V|J*5nTsd33ODzG<PV+ztcUiBYX$=go%+o= z3m^P0)Kx~l((jk2^%A5B%*Tms3u`K$;8R&Z*)Q)C8c<aYOWa!(_dQ0+X(iQ>7>gI< zINIG`#A)^ZJ~BfqEb_O0!R*?=4V%<~q4`a^g_>Gy$V>Pe`yWcyvaPBCji?4a34@zg zV8>PeK3|qy5j8P$H=Ae^`*<QQa=`-uMJhBcibZJ-?zIgX3|p+srd86wO`HgoCD|+R z9#O-Vp6Yj&cnAM8<xZchx$7JXlrla~IpzEs90_hYAR>bqQ@!eL!kf1%1OdaoHrtCf zhr_LfaQ(1N20v|mgV75Bh`sKswIx}`YF?R8@{^w2hgZhVX<fIp|FiaasY`BK6WG0+ zev&0CqdfYyxnH~8ZCeDVHi>oB27GO!c~TZNz$zavZ%fx-D<5vp+(4VAgd}!}gRB+a z7Ap7lr>0o@?A6+8%^dx5*`{2Z><`2^Wor43G}98g-+Y20yM_6fcaGgtpn@#^K*Saj zpYpBq5kbJUfWj&gxba2HS&e%EOB93|CSJ2?^}%oB(oqpKl<$Zg@ks@kqkUkkQL$)| zySCK%5F8EXUqf*ubo!yii$0H@-ZCg2MZpUU21K7$H-B&<8-Z44UBcG87se0kzE()Q zbdKJ8Yaa}|&9qukGN}xX4l-^+tDcORZ7C}^5XEye!6K&gH#~m9@APy9kX3|c;TQc@ zZMuTCCjTz`2>l_MhB@b{q(|M5rVb70U|q%#?Fx<*h0UX|k7!;@d?|Rs@{;g<*l<GL z>6meplC(@sfA4Slu+UPCV!ZYIfAc<+|Mg$+|FS&$FNq&G2V-&di0+mWQXrtJS0EsU z|C1wRES+8G{)Yitz5|Eae>6a|RbQ8wJ2{@HnX#D0OEbV_dcOJ;5PBjqa7!JRMwdA9 zkYgJbAF-VgN#==%HEj5J)?TDn>XE8vBv}nVk^w5KXm9UmFK=&ee_Ne@EUEDIxyklC zRv(D0ZzQqQbYC5yuG#C$7=XI%%XA<7*!zQ=q?gwFYfm@jmUOghbN=`B<Ogy1?`wu= z2`$8HywOMw>8|5I*@3nD*I&Mu!O#4w8yO)jdg)19xMNGIvGPc1NqU(eQ1hC|p_U?@ z8Lgf9O^&DmV+lOnfO&>nw+6=BJ)`l2Q_i%w1@7@94;5hCLPsp&S6(OCcpC_C%Xb+W z+-V@-Z4(bDILb~6azn|Xt--2N2yPShj7^XS)ze3}Ws}w{l3Tf3;oYqGfP-Zdz%{|1 z$5TJTwZ&jTe=CJ}4?6ER1t6h-0j?;;XZzjz*Z22Mukd#p$srxU1+!!(mDZj~{<n>l zeH2C?Ir$-veAo6jBl)W>J*G_FgBVF}Kodsefo{)Gy2-9Pzx2>QAf`E}zoZ55<_*1Q zk_NaCgQ{-#WYcucN~pZvzPd+-S|l^Oyx+?W{mY>R!U8xYDFy6MP%unyv;b*e+f4#k z2tIO<oO6a}=y;h<+cDL%P|eiPc@VxumK_wChFcyYV1-Ck;TqgojN#qHhov{G)$`O1 zgV7yAyaajwC)XeyG$SudtR=HQc?>;;hq+Q)#vE#bsvmNv6`3E5<f5FZrlPCw7cu=z z55Vb7XLhzgnXsEQZy5(3$<Kx#5m*lNtATUYTKz@9tr5e8*g$3cx4mDuBb{^FI5K-K z8!%se*ct$25-(c^Rk?(0rTzNU;*R_LiDGlbY|>HD)Mu43tol2Q02G_?_j7&r_n~J8 zJ+prK1_nHJjpk0K9FztNK^R;hK|+G&&K!2U6CZy)D^ZAk22ut(27%Y%sP9W^@GBeM z_ylPS)=?~kivY||j!uZz3Iq|Jx(Q-%6bH4j+OT-45bhWfLWlLdz`*@w@^8G89lNzZ zxn6RkU=ZI@WbaeNgfxV7r}G?H)RbWQw3$Wdbo-Q}N2I91uS&6?C!5fEHwIH-Shw~6 zLY58ZwC5S>qQOPDJ`A|<>S6*B)1732faT`!Q$Q(4P};-|IlxtGI%WUL_;*dOE@wAc zCk_d2;}(iaE*>_g#N$lo1G%{EvD`d;JS3=ZO+i|SeC-X}PUi&11`fs5*;il_w4M2r zyj^~XYxWKXMxEG%scc<DGA6H1k9xo9cxk}9G(g`-1c^ulXkVYDpN2q%C8MULo*OfT z9eKdlObI5%DxDW%BdTHvP-<X%G$dIdi>b3tIubxE65<jFQh0-FGEP>H+93x-Lk*zL zk^r7sq#QZ$*@e_MCe}LO&f0OK?j4lS1q&uN`k8bdXsMab)3cNsB(bjodNa^WAR*N5 zS|?sGDxFa4-ei3m>k9hg^EZ{^v8?z%UN_hme=|4N29e~`9L~%b6-5|@D%Ib6y^Kc3 z<_qH}T@8HF<Y+|*FaHAx0f^sXUMhco{*orr2qn3%Q<A__ibNMzn>oKOx+gikzd9>L zpO(-J$kT=$zWpph_R$rf0$#;fEm7>1us9A5W!M#E#&(yfUjYq|1aT(JxOCMLYFPDH zk37onb0TMu5Ja(_Nj7PCm6@CNu6u&e57ZmFMbdXYE%2-78)D~O;`~bw`NkRwpk?c3 zlah7g<4a7a`DZ34F&J8k4->KhOsMe(;Ydv~8WV#Nr5R>L(|r@#Wtqv#hGo1#{2GTX z(Bf3rvfIJ62q_l>H6VfR{N9-%!=PM%R1nNW2iZfWaxIgldicB?D59VFeu0LYKKFMm z2dXH9e~;nBIL%o6+vMsh(eRM|Mc-NIm+6U0n;nHixDoNq*QdSwy917%X`1RR73$zT zqS|Vh36K;yLt203T-0iG7IBF{G}V<2$yk<)L*xC?w+7H+Hg&{+o|ubSdN1bSKRJ`% z0qV(p@LSlBoGjQVFR^~W1#9vg39j!YPy{P-j7d79rO1xf@uH^v!?py@JY<H7N^}-@ zHeATcv244fDw0YsDI7xsOd$L%(E?Ds_vX0%m7PM|omKB0uJ<{9v)YPmE3a9nc39Gf z^ndH@tAyQ23PW<?3_MRR-Yi)}t>MKekGlZ^C1qGnZp?a!H@tKtEq@{O{G#`$#lHIk z!XPH(%&jZ_7&4JpeXfJg<5T9-Z2+OjWs~#osnpjHX1v8rYHr<G>Cycgw?XAV8!G1x zPKuEx7Xody6_jRF1||(%puwQwgLcqJ=EP<vd6O72pv~Q%pM&<687!wi)n13GFE$}t zv`QZzTv1=sN=z1VsjeKQNa~UC>fq#_2<{79KQnF{TQ*(my%mFK$Ru?1GC`g~=_lw} zIZJ8AqIh3Q>6CF}qw^#%X^}d=ZBC+*LBLuEN}f6FbdZg}F^In~i#0*ArB;ZUI)>Lf zu9m~I4S&Cpo^S74WZ-rtJ61l^ZCnn=ulO_KjjlkF;hB3+NpZjf5&ldcK*xlOtE~&? z46G5M<*psw3tQZhs7zm9KT)hFL{=2sWI0+}NIGt_q*1wb6EbH+uVYm+hJucPcz9i~ zhrCuG8M?FFFnfAKV2>ad>Q(R=xVxJ@h~B&9ML;1o_zU&1+g1Ol-CH|AP%3ziyI3o? zCHjOI@X(${^BG|h`L4vn!(o6NaJVs>j^4QYpqtz*)}eJyYxTjWpwHO<W_>{^wo3dN zRQv_%ilQs(9n~cQWqnaN$if5Z;bMPXxIfE{=$Nqn4P+bRS*W<oY{@~GBL$*M{V|7* zaAk}IF21_r5~(%Tgo)7Tl+u=aJ17V8^yH{El#sfL&@~Nw?=eeMSlWsLSV4zuN)cz& zd~usdsn>LG-7s{IB!Wh0CxxPAcO%^g;rwRBl*#eSB#u?%_$nqUoRFQg$?Ws)gdL}` zcg4e;!3+s1|C{n7bcQrLF_fZ5=+#?EL`v(0c)Y5`f(peMq=2U1-R5_Iezg1$E$RLn zX3LHlKoE!BWqgZ=SX<W8aF5CFF-KESwLYt}lNHAhQ*8hb=7}ojMWY|M<DE*uhihAa z`fKR6CRCT2dEW`dcd4rq7VZ$y*`gL<>z8ltk(rDM4k>`S{)Hcm<*|tn<YN%xn=oLV z>ugXWf<`sVMKRfiBn4;M*DkA_EZ_6YiN^Ob=m4%Vv=y>8enB!eb)gYlk`6hEQshx_ zNX^U3gAFt*w%r&~l>ul~v<E?AHJXs-0}0&@GSc7F7Ok)`AaV-Lpr*$^e5US&5fdK< z)f}X#3pZh{QMzoqR9OFxh-3P~QADfffS~PTopP&~lku^cQ$crFMd<Gs62He?5PF0F z_yL!`_G})dp!K0R@W!qz#5hJ{%xkrK+Hgt=Nlo)maF<~nclItYn0L14yH5NLCum`i z*r~qBzBXV5Az`3k9(o$;#z1so8RVs>ROODZfTts2!0s`NmKplm8EtDMcyr$Tp=8Ug z<4#W*ja4aVRw$`}ENp(Y^8kl9AtDEUNVExy_|XJz$`=Q<frQS>M<2nyC+7&JK&s|a z`w=@tnQ@$e2Br)H-~^DN8S`C)Uf@NuISt&Qe7h7xogf+aTG1tllTHjs7A1)$$YAbl zn(1Pic#k2Fsn80*CKJJa>5(Z}aqMrLuov%r6OR<t>tF0ml3APiq%8lf5|Mn@pgp)^ zERG>(ZT~GaTYYtdN$RqAWSfbeGOXDvocHIBr*knlll4jVqz`;g`*N2j+!hoZBZ<d> zoX+zLecSPNSqFw^DWca#Pe(OYF&>RUo})K$FrcX%4$=Thn>|g;3^$xl&sb<~{BF#v z%{HWH-&p%osOFK+IeL>xH?tL<lMf3n#tj~RTFkt^fA{LufnKAbDkS9w#1a+QSZ>c- zs>)d^wG(?eyugcDVCL1K(aWjR*TJ*V*~h^N&}gYtQoz3B^DeMwd5aic(os?xVDX5l zO4<~R81-_hqC*qDQmp+O&@Es^1#^*Rrn1k#_sJVMuQ#*&alO~p@TaoO_GC*Wq58Cg znA$WGPgi<x_e<SU|7V_o#f~dO94XhyJw?XNOlIf^%h-CDC4qoy_LzAi&}`|%j_nus z{PxXqaBa#~Pd9J==k(y9*0wYLlY`1#h*)5q6l&UhfDpxFswc_Lu(UjIsQUT2EGQ{{ zWOBSJoA4Xo7h$ru?C<dDEKJ@)csyVenfDPV8OVzG!v`2(E!z`>y~I-*D8(Fhm&tcW zul03zI!2jD%W0T2?Pu1@r53i&x>zJ5*rxhZNm9^#^39)JgNThC08si~pe&MKrzHK; z{)X7U4M1bvKE_HVEV>C4@6+5Q(~=B@Vq#AnCJ6JkZJ!`z?mBIN3b$?jNbuPGdew0h zko95@Oy+<jq-{)4@U&QBKR0d;6qTge{s`t6&IGO=?i#Yu*}i!0fS>n@3HS<SoXBrM zzHy5-<9{UTp*CP#Y?}>NSSx<r9K$MVWSXCZu8!L&4L_8aKEa)<2AcvOTF?fDzyyAc z36GT^V<{<km>QBfy80nSwpU$BVxVqEJq|N2DK2GvlEO9Z&~Ii*ZZ1!*o9UM{Z5!DW zWOZ_Le0c>nZT8OTO^jWc8PXf*YSUO_2Od&wP8LIWVaHymo0^h23b{1@qg{F~r@aQR zvP&84VhY63teRXaK6bWJ)>5K`gJ{Ol4cw($oa+_%L!`BgI4U#eXGa?HMiu2^m|LU5 z!Za|HQKaLVOzSWHXMqSV|L(fF-Cpti+@jm{@DrU>siEOwU1ghL{;H;1cWea;s42u{ zoXkLom*Mqlx}<q}XM6seeFLY9mk;l%@x-1=sidj$D5FK1`s`8FeFb0SSC$VaoXeZ; zxA!vt_T#i~{nu;tUzf{<)+^4glq1d2t*LUB7}S)<6E5=skYv5-ai)gM#Cl6SY->x` zD=lMn+i)%s1#&S7Sxt?G&oIaP*~n<r2RvL39zKHX=qb7Akb*zlq4uFe9*}Gj)O^Wx z?jtp0l17-BWiLAWGs$-VySv)NUz3Km$-qs=pyys0R^HE%L$3xJ$#*u0+<q0=C_Dlj z87f0FY)98)Wn1$Q%SLoq$Rm)vYK-PA!L|M#mMMy+gN8SmH&CmOEZ$~$TDm&Y&9$`9 zHC&;^%8C8L$?$_veH<}XU3|Pf2IPoocYtG!kZMn;g4m*z8gF}D!o8;ql^cw>gqW++ zDnZ5XLuTL;l2W*shhEy*j2Cr%e(&S0njo)phZj?gXAkxz+heAu@LS8l&X|d6xAl@N z>)%%$+un6XW_l4(6hPWF>_siEp3_CZORjV>!2YXseFeI8-CG;SFAmhi<;GAKbdc+D zLBms1<#ab4FGT1YzWNsa+nu>7^3A$>ct&CuzlVeD#0o8%pdLogNdSCw(IsRjM^tp9 zKFQd5v@po?#3k*VJPh+dy@_LHY<Z`s^7T8<T`z9{a>&a}La8*L$;J`p$+O2YGkW2Z zhi4Z&|Kx0K2V5<zO2(FZDQYb=6btVqe+2YXpJSS{lNeY0b59$8i)|9yX-cKU)e8eI z(tS)}U|^<BlPM(a%5@`R6@cL8`Wu^VLBAmXaI-@Un~s@4F)n4T;=3utoG8S%dXGo$ zJ}HDP2Bu4U=RXfe!TV(Y%b@Lj@>;nb;=f(xaG>4?AE(Tz{CFs?qXy4xIPF9ic6>Ba z1_fAkV2*f+M%+WHX=pE)e99@<e`%)jtGh!2DU;gfx8x_u5cptHc{fAMi0(^p#s(`< zys>5TepR?EPIP8^G@dZ9N<|*Bp-vbd#8f7nC<1Ks2$8C*f>lMGaDZ2AGq!ljLbWoB z^G;3{%siyeKx^RE@s$|ogSTe2nB`yj?<}A}x?>J_#g!&aZcbXR7LIQss{<uOm-c=` zQNi&s`&I$^>0o8ucTv;~Y<qE*%6mkN7{$SaT4XpYP4GMvTyxk!Z4|6<1IlR@wlry8 zKx<-MhJ9#IQg^C$BH*zF@s~ZIE!_Kf+)yuYt*S4>R-XJhuhoSc{EAEi=$a}F^4q>4 z`h_^OpRjLE)1|}m%OU0h!ZrtqGyd`}PesSk6cbrTDf;k_+xK~IRNZ9ogy@~AJS0xU zuY*Tikw`jQX4aR0nV+O?LLPSaiCw{Xf+UUQKzBWo03|hgsWN?QvVqRCU;iEQH~K>M za=Nx7XV765fMk<XP4X5e$>EehAmiK;v09z>$cnO`WPs`*^SSFs!O_wLb^aXy&bfQg z58!UfMPdu#i%Wd&9Z%hj8eZq?yWZFDR!?k!T79zLbM$CB<lWx*(5DCb3opBUH%CKC z|DjHw!#Jb<R;Ty2q|p1NZ}nh(&CU-?EOu&7L%YWjc?3y#StV&vN?K^sIZ99#k=&!^ zCa+4Wg+R<2AB(vHY-A*@D=zLv1bY#qphGn<<!AK=8n|XfiS7RP$vux{Shy+Hc8!w| z0uU&qJgFo%xWId^3Vl4o=Lp|#3|>V#?fBsMI_)<J92X<3)xqOg#)qZ$gnc&y7Z;t> z=(Ff|&CTU+IrDzx(n`4}G%m=At6IA6YZfBHt4nU9qnkZNMC<@Mcm=$|&B4>^fwKXd z%74A2ToZrs;;L2Ci`jbqp?k~r_S3djm?kr=uSOWLp5NR1(jG;Ce0SeDRd#Yo7GJ&P z;<Oi`t86N4`^LFmd*c7yeWa);t8ouE39hRVBXHRa;D_COIBdXj<0dC;jLgKUU;R^( zV=jysM>zy>f5^05#dE&N?h#wg*uPmXUIq}_?rWparu1$P|9XOjPvlKy`35K9xRJPV z!qxXeI-9Z0S#4#(6;(Ouc{6{LC+GY0!18AydZk8kCaC0|CYv)M*fSxP$!pj&u;q1s zl`%k^eWuR=_OGG&V;CX6>gHHRRW_T|@;6F$KDtkJNiT*@)8i1q<<h-hmPR`4lqbVV z2z#q_JO%sh9%4hWFnKeoyo3Jh$i2sO<3Z|I8PmNFFE=N?g1)G{&_7wqVM>EtAeC^# z@{Aa)`(@WZ5t>#4J!M+`_#KdrqHnVz4uMc;F%notLITrn1Q<+{U#Fvre&&`Z5;cL9 zZ6i7UG7e*MD1%#5ud(^LwmQ&*tLw`>0kL@+FBWHX6g9s(MX$*pecncmdrIyHJllTM zt&f)xWL}TQ<c&v6)=o%7Q2*-Dpe~+O<7zvkCByQ`el*hh9|kzzp0D%!SzHtiEzF4I z9Yk+`e=(-RkSFNXey?w-)ecSbeN?3@r1E^4!G5=g1gk%!%jWDH!m0p&@H?|Pe;+)w zWX*TY&fZ+u9AEd(zTWgqm&qCaEnq`bh0E{rFkiw+HgyT^hN?SXb|E$qr@V*-%RN^u ztag^!&U|Fs#U2L!XM5}}WA7+cU?a1YjelV_ubGS-*S_Ss*2VTo6Z@gi1e$oC2-Cc0 zfWgBQf`i%SH0o^&yyo2-pN;NaIx^ia>A`>wkJ?v_P^-<hU@U02MUxDf;i+VUk*OL? zy_L_a9BZg;cYdY?h91Kht@}rGZjLj&KGO-#zH-y1p=H%_RUPj(jI$h=IgG!BCxxJT zx<4Uu+Zx=q4QdKnJc1&|d<A>47h<Fwr?<4NPCccu;v*zvo}2dM(;=+=`foIyj+z}x z9azXWVQ`T=Hj+<jV%^3G<Pz}+Zh<}yw;B&q{uq&P)V17B5}ZikBdBvnW15kf@1L6K zmW5+bJ<qVb77|6+6?8XZ{y(y>j8}0Z?ZVBebX&V@;E?^?!eu-A^wWP+*2+lI=*uM4 zEs4gw4|tCr)?ax)7W^{v%&zja-gZqp=?LqNS@zhwU#|IEBjV*1nFw0YSVPMr<QFW@ zUUj73_l^`&Tk0b!9}Rod{_0HA;_%P}=-~f_lc~5m(rKi-rlD9*@$hD~){bwfv7%L| zs?dg!=}LE{L$;k-85-Q{r_-M-R*jI3E}6-7&!gfqbx0UKsc`qW9n(J+ZolgBcDseP z`Bral=>xX?<Gq88-i4ptGo@Dd)uou7;}B$OHXOq4AyzG{m{qa5dAKMN*OlIJnBh0> z6pi<4l_!^HYU$Db;siA506)IJMPhwMo2!~FFn}leZ=Ftps&4#5Aa8wM{<|@rzPSiL z7u?UYP0S*6-^Nyf$Yf7=am95`ev_U>6cV(TL~gOjNsNuWv(+vG0$Iw1GD&6|{UV)3 z)hfKDxKMilLsQbGaNpj|zVJx0608~6h=X9!E$AVi`)BF4ll|kyR~fd58$0Ew#zuA# zw#LU3`|Y~t41xdvD5)Odw7PiN4_w$gISA>L_uahi>!Lo!qpk5tab69=Fy+zks-qoV znhpViJf2J|!DA;qGTD>Bw-i?q?bpsDz59D4r9P(>37AC8`}AgVOwlQB``FHNzVtWP zrw>q90Sh*>@SV}DYU*|3Vov3(yEEKWd^aQageUY`;v^rN26p>dy-ijAB(yX80JM^; zcgk}nf92}zpm8<oP+t4x)in<u*G5*!!0u%wm7;f6Dd{Tz$s=lS&pbm9V7_V+;{(F> zWzyF*-V<1PU_^RBK@*`fgC|hUPVps@B$DroaTo&^2?2M@ThY+Oo(-9avL$<(&qFkM z!1$U8!Tx-V=i~Z#mAo|ZRc<y$>$iB<m0}JfOrB}nTFFAfzU8T*W;lr)e{!0~CSu3E zGmGgqe=VU_Q7wLB#AnZwCfK!}F_3-~f@-w4I;sO7Em6GUSWrD|?FBQf_wfFo!&|3K z!nIbe%Vw&}R%~0{V30%LbH>rC&~%hkk->%TEm*1c2K>%vaIaSa5X+-^eAOQ@mgvx% z`bI)kr9VGIk0-cLe_=369u(wgK`<@yyya4=v=P^#0A<J0z+GpG+Tfy0@SnNEDuw4P zN<)m_W|~ro5pXDz0CUe5>P&Q9IQn*EyHTCfjj6;x<?HlG^SN6?#^jjZ%)4BY0J}f% z>~;qyI2@eOY+t)HYPMSfC;%m8T;4OFfSe(5GN>_`?-|_Ug3x1)?x|ILr1O*X9NNvc z`W;nc8qw)4u_U!u4^2S18Em~lHv=B|L835cA2{prEB6EgN-&f(iLqw}Dt0IE`Y*#^ zMyN}3aboOES@B6TE3&!?j)*Q{yi3)|`0JJR8&7_FyMQz!?x_i!lP6YbI^2dOxh3pj zYrEMB3w=u422SaVMRd_?=YLdC&8WCppR2lv)B|)!0-~R_q1<{$u3i_JZJAIlkvDo& zbLJ0ZL<TF-J}~=p$d91V&*Ft**X}-vKFZ7DO!h2PNVQvPnNKfqrq=_WzdK1!kU}-K z_2I;r@y#RnZJ87bJK4Civ7~(!V8YQI-GN-X<MM8CME!bJb_fpAJ<e0h_ar$NP)tX~ zoZ4>Hd8c|nv)?*_#P2?iNoy6VavMuQp`|VIy}hk$OfpVd?TaDuxf?cF1B06Zc~OL7 zcP-7(G?Y`=f~Bx5$}^4qso`>Kh6{<<mxo0<@0Y<%1qf9wa4<5me8%F}AHT>?G<l>W z3q{M$bPBD%Syr9!TeN#D&alg!UZEJR|8PwO*5sx<{*I@X721bgJj2ajq-BwY9(_BT zrmEg4H5wkN68+tbPoY%7DP&!t?7bwlSDy?R_N?Tn4Bo5JFgS#udtiG(ihtsuw)ReX zr>j*<d;QeQxqg15@u`{as@aKK{1AG+ZnfE_cNu#aDZkDlm+jFvF8%${pkw?JcI-pj zwEcZS&xZ$MajSWO3Ke|f5+9U&;gc>xy>-gN5Lm{J6EJ(yj;q;aNfmZqEZTwmM_aRk zhmppC&ZjhYf7H;sk~oW#Sj`*mcLoxzI>XlQflkG1OsE5sV3ayor;mvlVV&H^f^Zyy zW4c42O6n&^M3AUu5{qtadDp^{6Xx{svemPU=9fvS_3WIf5)2Y{x;5l~XT8mBM(o-} zWJ|CEP1z9@>reO@jfyQ6IG~Ux`Yb^LQW>=53$Vi{zL<#z36^HYh&brjsP~cih0Rcr zp?AwsAy!dU68g`cR{h}h$A4pbcGhe_V{5RM)X?}2b4?1ENpYz23hU^O5i4|5zn@|Y zC{L7*<wP&3=iS^1tq$<O2@b2bhdvNQB$}WMlnlc-&fV^RuP+jlRhURart2b|w3CQ= ziniS+KV$@>ZgOgmm-0zHjix`PVY4Iq^>-yV<fc;b$UcC2)#V)K7to$7qdkeIKG5u~ zGojs{)GWXvA~39J2DQ9u41$FsRjpLxddqrd&*|-&?yf^e(V2_lL1`@>6PW(XSH5WP zlg!hk{H0mGwxmUz%1+9eqzI!R4p+=NTQ@a$-r*d!0FATaJfa537}(NTSBv3FzoSw2 zdJzO^?H;orMddMTL`D&(A(T7A5a*<7&eU`EFrCF#I|4XZMbb2!Y(!TG+Sy(^EQK)| zZg>L02x-DsTgA;88qSTh=n#4z>(Ga3sBaA9-al3)9cpUC&u^0v+#3|2-PW=W)a;+N zTfUQo(Sf9e>%w@lx^2?;S$BKEuo05W$%)ZoNxO+IG-FWWCpRHlp<u7ny_?XKtTz+U zNGXh}*p|*NPVN=iG#nOqr9_c_aRtNSHP6a^&@<CV5{Y0IJ;NMTrAcTmmKndy%V%4% zth1?!GH8*aGZM-IH*t!7?SsXb_A-q+y(SWWjhasK9}z0KowmLc*!Y{MMDO^lk=_{6 z|4W7=A>;`XIR8}#)^p~1k4G(#xN$X1f_2Z#G045MgCDv>ZjUK^3!3^8K20J=`7WbA z_~?k+ZYa9!=R!Hb9MPL2-uSQz5IF%1thxWgg;9*9nn$wqTDf3(^(u=;=(KBcZ!-Sm zqS*_x*IsWIkuNXc1XS1uQVbAYp6v4-V_qaha|*`&9HCL@F|5-h*UpikPHXUCy9)bJ zV3xqFz|_e8#+pA^fNooUv^rmM@veNG7~?1YI&aMCrO_llES&gGFID%9MY@W2*mwrB z4olTJy(nlzN0H4}z~4kRDizgCCs)%D6VxKFYG02ojMoC7)taC$c6^0#Jvz|ZWJ`8` zf<+kaG#mm79ZG#+5VW78^#$eGVUqlSu?nrF#9RoGyy-n=*L>M;g``JjdU}7XdAgKX zvpUk`OT#T(ZViUpx4z#DAMWB5fBonFI|y%RX$d68Z913G16K8GJpCjw4W7z)Jh05E z3(Ef7(@h1VF__)V4HHKVghq=nNl&DP%xsF2LQNp*K?3tbc(L1G#VY-!i4So?WQ{HR z;Df|Rzk;7x9r>NcrzIv~PUU$-B6!Ps2#iY4PL>0?_H40J{W20^;;(3tMZtSHcsRyI z2$bZo;Z<(I>6~0Mb<F~y2Ni$(Iv+RfS#95K8HCN>^?TpDWnhcV?WbkR%)op#ek4A% zQ~PuR?Es+Xwau>4%5tCW>Ni1>7gWV<zSSpA;HlCQ@ViXcMTg|ODLAPddxbY`!I{R_ zQb<r;)_ZV*#{NSU5d@=>5TZO`p0^!h6e`ErRU)*y$-Uy{CD&2m2nl<#3iCq&i!K!# zt)+Y#w4Ws}X_t}ob8AcWeDUP<IKO;s`vYO%aUi_6L97ot(EeQrGqXHzEO>;okevNt zr)$@wz(@*M_wFB`imAO{sSR0(V#qM2sXv^+kcxr+g`pYF1B!Q>i3%1x9#i5<E4 z%P`jkt!Z>!Eyr$mbA}j{^*r$kdAHKPsQp-qy0gRC+uMn6ZFL<7E@mt9d)ngp;Kah+ z+s+1@72=m0?vRhD{5B?H6<<f3@wT`<EbxUyIy2i2wVTw*;X*TGPQgcUuQHX7{jL3o zFLxK_1$zrh(6^_33n&d+yC)u3Q8=3UO!5P-!g-Y8zxzpPI<bzS<wYc4IDc2-%eATA zT?d5Ym)_g$L9pkj+WaFw!i<iaU1frWj*WKu*@et<AH?-Vo}K>sY$h20C-*IPL;SAd z*k4fr2Qx~Z;i2QzA#l#e6p;_OTg}#g#V??=GiU2Mi<C5MhG*2Ha9O2O=Tg;RBIgNf zn`msb#kFRx`1*G*^u4bb6Si=F3~EAn+}#?TqkXeu<f20h=6A0~PqR788k=3U8l_QY zm*AtJF(BIKlztD>t{+rmSvz)f2&vQ#|J^1gv?<d#I4hkhRjNOEy6s?sc;w8ta(b|4 zoSDDr95uVwv@fRT&}GujgfYTkb~>tojx3HkycY;zp%)E;k|y8(eBai4lrr(Nok${# zpOPpKb|Z*nbJfEcI<1b>V&Wcqgd8W!Ujk?)**kNq{&LEfU}LnF_=B1>J4C@%=m>_) zVrDPUvP=WT2o)nJgvXWt#9)T-7XMjx1XW17UpH8FI2E(d7KpQdn0#s8+0+Urk5UsR z))Y~)q=R4WU++}F!xMG!HhJ4NneF-0{yA54)n&L(w3pVQ9|WBxxO*xkm&bk(ea<Mz zuKg-yZjsA%u9=Xbb@inXBlTJ&f{J*|ofUnuOl-iu{FVL!vC<_xr5V8E4<S~^XGny6 z#F|MN>)g6{=#GR>Qgg8AWyH<vCicSEq>HVy<{40V-z~FADRolr#3UDP!n*i?>|gnT zYx*Q9-*19{$=uj(lr(?)FHnq4I&+zb6kSlBaI>z-7I^`P27zD#GSv}G^U#zLMw!tO zX%u27=ukOx>gaIDG<(wgBI^6hlx9p;s1}`__^Q05Wp-Z$Os2+W5r#g@NdnWRmRHbu zwu0iK8yiVhDBqkx)S)ATvgU|RL1}_!&6c=dU{TTkoU7Yz^?o&Z)ai#Cg-~Q$PXzCY zPZ4QW&I+EA2uBKem}zO45yVb$OvMdpS<NhApS{va5-|~0J+i?FzV`9Ue*0gR6-^kb ziJt?ak&7XLfIbNR4~Ag>w{fMBV2b}Z{jd40yvKw6?eSbQ^59+5YA)*XY^RTrW(X{P zCBW00bz3550eWDQp_kCkh5P-^D>*+W1asCtaWeBGv7LUVH+(&{&)NFCNBS$204@j* z0|o^qZWA&P;KWjZFUUb0Ha!20C{EaG;GZilcuXRcwNBI?UV`sB<Htp^1NKRXR6-*V zwI3o<h2`1H@ey*R3Gn^^fRHJ`HlF_;Ne~wDw*aDf$rE?nL3~Jv2<DO%F4T!8<|+Yx zQV4AWQ}l_x`v3?b=Q2kACSRXHD9shvCXE>|CPJioZH{A^s@rhyCk761I1mAY*~>q5 z_5`R%ga%L7dJ!p9Ij3$fKk>LwV{o*SW{SiNBwhRdOe;B#ii-3vii718OB2NH8&1*7 zgnA^iw_ul03{*=8zDmBBG^3^w9}>Z{RK?8|7lJaO==YHu%T_nf5CVEXrip-Gz#Z|6 zFGfWcx)}b-1V($`>vqqU8eRa?2pl@3yLw#Nv2`DCY?%<r^Yx=+tau3AMaE=u?EPPi zonxC|(UPUpwr$(CZQHhO+qUh@N>tjmDs8*cn!MdJ)3@ij-96_A>~lWEiP(Ebtas6L z8lrr#3-#={m0Z2;&W0V%-+mIt;r;nYGguX%LtD#YoF$zPZRBakf$i+pu0}P;UxHHy zLsIboQNt4r0lp4=v_9T_@55`e|2F+K`ea+b#Tq}?@37R3{ntP|ab86K3+HaEgMsH` z%BcS${=4D<9P5_r@h<0<3lhn^WtW}<F4%LzQl4HyTn)*l!caK+rZlUI;EnYNAZqK_ zEvQ+Y*V>LWzmiE|g6Ab@-fHFSCaqhVhiD8z`Q|E#9HTx3gW+Yss8`+KNrLQBNpdMx zW6hKw*aLEXGL&4M&#*KRR}J^`bUk^VZ_kM)ld_F;&F31CdEWZo!LX#7l)}_XY6`Fn zJBUWNn?12YL|2u9BWg{aT5?siqD{vWGzqvvUqi~3YB<%<jYJmIEK_j#eN7sE;_pc^ z!Hf}$`2^H5t+|2bB@F`VQ14t+w&+yvTpiD8JbCp(Z4_|)bu2(DUANR?#$@o}#stj? zCGe=Gp@w?qNIH}xl+rxreK{KnS3C%-?`EPWdq+!8R(S1VvQ;D$0}^o_kW84PlZ#gp zU~OD{{PTklkDQ)|URB0tfh*UB>~hV46))?BUg!ng#UH}9`RvEFja&;orRwjm0j+L0 zl!CY0y<is0W9>O!51gFpc3>(K{tU+AR=0t_xN~2u8TYr^_xj9HQqS)F`mL)%X)z+( zl_w%GM_q8yz>QCKNbT4v-F;gHh%yHB@<%AEyga0N!)BzfE-sc6FjXCNzkHpspaE%H ztlDA@3CDri5j{(2j@b!z+&}fAc~Aj^_$Nu3al8|f96)Motwc&a6$H<qr$|#m0P7wU z?d?RnXLgiIUsYc>Ba0zMLbH|unn*ZwChnGq`>fxl6@+@oy2xyeMc-tW6q}SPTdeO% zo~UiKh0l7P=jPt2Bt{pgSz4%nXS-(LXyNPgiquFpWA1}c?PctaX}TCBg>(dn5N9;A zQL8EAwhw#4Dac~4@EAEpu)M6E+cdANcu6pVWY9CSnF#G9E!qz8=qeH3z&HZ1MIpr* z<}n&H6=U!OaU<p;xxc~K1#!C4aAbm(gLw_<(QK3i`|mv3-KdA=DS8Q4x`*JojS<yW zWn&sT`4e-~cyC(oxYa$eYCU#WEuO#SD65;Lwm{Y_;D^hhh51zC*Rjb6q=N15Yqr@b zpE8$90zKn=mR9po#Qo0FWZkc5lWt>j`ppP$c>RkAX@Dj6>*F5$&F6mfSBfO+!^!FF z?b$|LUcuTP0GAiREILgJZOyd{5^bCv+2{PDhrH%8Hgh)6u2eZ-r0iETT#4fkmN_DO z$Z|UX98zS)Y})JIDjZ?il(W&nX*1fU_s;6Ukvl_Pc1xb@E1_hFMvZ+?rCf#e@SSbe zmT}VRJ<XatJOlL6#;hD?_M*NNcVK498H#T^IVF=pmtevah7>dr1$Y9KCaY4LJQXR* z%VT?OhE|#*Y^F3_1pSjy<m_=sj$<({`A+f`L&<lc=ww}$=7f1MsFN;Gs01l2kp!MI z@JY94hT%BzmH#{(&w1Qa5LJMbJN6AMJ9G}C?LAoNLceI(rhKV&lYlhgnb=f>G%F#U zAZtSm(#o}3Csui3Qr$(O6t98tBdCv8;$=26<gFz2MjA7<n!-l7>zRS{SGpE9U%q~` ztLF|o+PF4+=GS5{6<HDcW;beE`p)1Pg*xDEQgu6!$*_c0=_y#qpFftKgkuZVAhkli z);iR+rlv%ujfJx+Y!bl(n@v;M0;Y7@>Nd`>J(}(A1@_fP)lesnM7ODUJ%s42SPK5m zr5VsjawgVI-hZdTC4cevV7A;`T|70UljVvaG7VXqo1+3|8(MzP9@U}8l+qgsG@#@3 zy7x`zv-Z4y&FYye@t9qSdxK7Ip;}ZBr@*~dgwD+9k$WZPZjugw8H=ADLgePw%)XiC z9wx8&r7gn)w)HvdagSv~OI@>Ap{BJ;ymR=h>xv^MXfoJ$M*@!Vj9=@|sfvo{(B53f z=p%++jhAe7U<tvX`XWOEx~``4XJ0+e`W$uP{jK+AD{!le3ShY{@VD%RRojy!yP7$r zGj2`OQNXD&<q$zzpnu50x#p~T(=%VC8!q{K0(-6JmfFS%9L_<Kcrec}UY}ozdPI@4 z3En;EyHQr4z|c9jC|4oxC*hi<nfYGm_tbm?@_0$T52$}~;<PkGv^570a<PBH*zV6z z-%-Wd^UG&aRQ=>{j<7upAwdSf0!#T?()q2z$`miS%bCpzJd(|q)UB>6zw!WH7H?y@ z1eKTTI+uA`P+Zwf8`@}@<&291^3!Qbj5B~Nbw9gDi-#_-|;&fK$i=C$QNj(*Dp zzdt)o@Fo>)OZtCv04jgN#~}5^3!5yiPb};mQ@Bjqh}!B;ysq<1$clJLH|H50%BlBs z)?DO!e#8HV7^_JaU;LgFhIjo3i8PJ#|0TxymuPv2yMuov#=6o}blzt}@SCk)b98o; zK$hU@?l>bY84UDJ<_u=;D_tZPTLW5x7*91t8X5JkHvw*plqG<4XSV&@XCT@2_OxjA zh*?yeAFtPa)sN^Rj-fL{V#Wl(2f#@L2m>)301`%U`5mhZnN$r3gDe@QA<(@Qa`7X= zfM#=Kgl5<@Kt!0?t??=A#>095EOvqOze5<YfQpfZSl$dLz3q<ng$$vDFwRFB(t&Xo ziQ8X3rbDB^6$}d@gmS$$B<L5HIB@itDi{>rql2x(NEDg2--RsOR7XB|!Sl{~r?eil zrYnIW0Z=y}X$1c~Gs2XW$bDBf<xO(XpfA0$N)ghA2bmiIL_@wj`@(Hm*F%vI{8-1U zKuZL?+)%HjS1Z0C(e2drFae?y6;xo={n1R`9$uo~CY~U&@jTv4PaZ9$o{jjtg)iA4 ztQ`$pv<E3$39PWS!TSuU;h3y2<87e);k8A}Mmi3sVlL;a!vgXQ!S0*W;Qc$2(x6?L zM;;MYMXZISA_tU-+FxnGqb(q79D3ItTRD^I_FDoNoKC`rJ{J-Vc;bdeDiS}T4?vP+ zdjGybBt#CPXK^k1_ROvCEzm#D2aQ`|mMex#i2%*QCLA8k_&O8?f6(u~w6vXiT1xva zY1Lm*u|p+C*G~e~)q}urX3u*J(k*kjyKb?1YpL$?5BbLV^7$5Z`SR=WeS)OH3qD6K zstsCMr=2OX&`A`a!0%-`cuAKa9pBsPvY>I@qIM?eXMtY=a*udViQe2OQ1Q=*es9Ef z2vA-YN-Rf(FjUF#sk><n1wtbh5y4PMK|7uwajCv+EYej}c@US?TEM;C{@}fNJ>2@~ ze>YbN&?9Yi%6_f1@UKHhO&xreExuT3m#&MFGEzNZ!M0PmT|-0+9h?hu^$FZMwtC>- zcg$WIPGtU}ZH}Wb!$UguTFg->PN~*pvm=iC@m5;4Zd<lm`ZL0qA?u2j6+t->+5rg; zI;n;1%ZOHEzNJxXchXTUngRB*>}gTOYqg@)I;+M#l9BagQ-I1uF@mXjysqqkL_MxJ z#d#3FS(g&GWX#0wy2m+_UcXui60=lEDm<N3f#ua=yKJqyQRUhxH>tG=0-RFFll?p~ zV9Czq5M91}cu8~b@7hST@%qtGJnCZurWEBsO6x>1b2ia2xT@Pv-+iwyv@I>6v+rMa zsA1jP;dyC<4VeU@LKeDjeC8SpF%Ftv&S+p9+9a4`$#};?2|<D+OoIyT8?{yoNE`^R zn#=&dlm40b?X8qlHUANng=?{{WIF_POfcSMmBsKN$S}=Kd2U=asb6-GZ6>74Ak2B* zL43Jg1r$#AODLbSD7SjW+;xL8<@`_c<&oLU`^jx=xwVH{U~Ri9l#Qe6Np(GGvpmU2 z@_}z6e|uR7I!t%bm^N)NXzG4w5QA8|w_?QxJYtxm4>w{s<2yHEMB_<%<WNpSZ@R*i zrdPNT<FOTU{|k(q8v&MapLM7)lX0y_j4&li!mxCWA(dQvmMyoxR;->ARFCkhgrCft z{ZiaXw{T580X6o$8vFM72z({>#_uFE&FK%g>cx4D`B3eiJk*RDZ&7IyyEqo@$48Ak zRF&{wMw$4V+KoQcY2WWgna^+;S6&U$J))_H@zwv#zA*I`m*ni*K!y8ZUwl&je`U~r zNvL;od{+M#IJqk=TW2hGgs(jPLOtfzTrlHu%Rgnim_X@aa2W6i^7m(An~)0L<hrD| zjp0AumybYvdcGWo!;70TIC4L1X!Th>FHYI~j~A1hS>nGSkE0-=Ig|q_B0dpI8B#1I zjDi{nB+dQ$Bq|b)6$BPVrx6e;H*NExY!Q|bS}Y_oNG_5gB{_xvK+`|Y{Y<OQ-<<N! zDg@Od9zdBAcyEAqKuK01m>LKrji59q6u_&*%G%2fPff%X5KlP7obwPxOr(1{b5R;r zj57ZS#j<0lp!Q*z2pQ!C=h}Z&jh%6>z|yxX?1qaJ5@;ksz}A^>oq8;JdcoF?LgB8& z-(Oid#&mWH711S%$Vik-^7lJGoX)FI2`*-fL*z+`kW<7orl`{IA;w7~a!iYl^^hQj z@GS$!P!bPtGsmv5yD*H6pPEaBpE`D}*mR%&rp`^Irb^}E>C{YMbSj99!^kpFv~|a7 zRhzSa(&qa;idiX_(kC;5urL_BQmwYjp7q&h$?E}y>w;yk{gw2GGLrOlE$>{ncjfu! zx>_b&nlvTU5e#Bpq1MY5x0oG7oME3Tw%eaP3c#!|pJ3SP<KD6Up-nqHF2>D7riyQ7 z{Z~ad(;<-{OO=<O$TBG@K2Hh)>#>5<{Mlo=nBivxtcS}LCaL5Cv6Ld)!k?H*YZMGp zD0qU09ISVvuOKGCo?(#*SXo==t&?LfYT`C%jY12vp@bw3t3AL-!e?SuKffe80@v!S zwHD{B1)4Z%HhyBDh<H~WeN!pNH0i)ICJ`^c$@=GDt?q44?`?h$E^&!cn<ezyvYMhT z-=3ua+VcvMMl&PcwJ?2=Z!XepnfzK`FdnS*eZ{k1L0Yk9c~%qL)hS!?y4syX+!&+? zcfisZyuIFM?z7gm_=)}r)t!PXG6ky1cG1Ll=JN5w_+m`_Ao!Ncta#2n+f>@BLsidW zPVs86jVeE`KJ~Ol8yA_kc+&?A@==d%>s3Tyt}%zcwN)v$@b40Q3GKm20nK*G;|P^7 zG@)ayiX82jixC*B&?SG+Nw_o2GZtF<M3<3C?q~8;COR)+YHtm&Q$Toy>GUZfmD0?h z7<2kUa7cjtP&MdUl6Q?FFNRp|jFb8nM#4VQ^IgYqm%7ic_D9-6hGWA~5~yY352ZYR zD0T@ko-obCGA#(j#@$-Oms;QP?E>Y!yxe@gcNceE2kxSMx3G2Zffw2s^su4e!K!N? zD1Aq?NwptTa?B?$ZY6a?&`*W~hwUr6(876)snJ{Pr^ib^MyGlK+wcwBehhQ6{32Zh zs}c1;?5=hv0o>G`(7)m8FNmIB1EY!8O#7w4M*Cp~sn<+9h8KVZZ>eNJ)o~C$RR@>$ zC3Yj6>=B!1-Z&l7rEvMOul@`(&&K4d5Dg`TNP1-e*IGMx{6)c?1Nm`Ri>q2bAD87I z+uI?jqDow!*G)c^CH{8#%p5d#xO}CH<J~#LXz5)sCxApFo{(b1tV%!qOVa(ewXyr~ zpzHIMmix@zcG{0Od0BBdD5F4WoXS6>LE}PUrZemW9hLhVurYCqkbBm1&i?T!H!pOP z>Us$+-EDG`{)p-~x(lkGy^AZmJ|TM#<D44nyFmdLVicTZ1$=)XhD8WI19s@{)DTxA z$muXv__?N_<f>i2dru?atI%MqgMP3jx}niP&yCFXy!Xh>)wj~(r-ODdaAx&;cm)L@ ziYb6#SkTy=(py(S0luHcv*fhjwO57Ck7tGZ=XQ3%j?KG1C1ATeh3DGrh~#|8t<2S( z_XLgd?^61Tx=}utweh9BMDD{3-12%(S$66lJWB5<u-{EN@~4gDhAA_lqb+uBJ-K`4 zyYrk~-p%4R`g6mxsH3;MJm19br+@W}KVD%i-GNoQ-`vCOm2RM31B+OGp4O&$-RiN% zMA|8Y|F5tf_sGUGdstk_0Tl+8+^gWIGGRIhxX}ozBo%#kE!f`Zupsi~(Wg>%n>z+} zPe#geIq5SSKP=nbUm8_}9@umjIAe7_0y=7K+~zWqGdn@jMFX1L_JSu6{T30@DX^ZD zB}7Z?R7`{&?Yk+J>zbz@N@B=|JS7zi&{@l>f3xMvPrz3`L!GC8#!mTM*dt&N;|%vq zzOioDbidb8FE?`Gu>9)3IG?Q*x?b_1RnDOqt?71Ch`A`8=*`DE{z#;V(yL4_!^6nV zcwtb4?dnqw*suU=fecneyth0^F$%!RB;~}aVYcr5^6|x;n4oK@v{s_rfMeI_b&@}a z<2FSLdy`A-?g%3HWZrTUF$)f<TK5x~T+1|!#`ZE=+j@Z#GuEI`>ApF+#5(5=cZ_c8 zHDBpt3JPFsi0vzlm<X8}b=`t%chh^;e$_TjWugng`LvZF>3H|}MRa}Aa(Vsw3H~1k zmw%L9zxU>rkRPJj%nwO|`+t`8{u3?vUvudHixS+btSG<1fZ!LV@7R<8WkYKeA5&y% z8(<|FEQE1D>2zRyG2O_#L8(&u?JJj6S4wc#^hz3a)AN4a^ZuLT%i&{omJdgmNpviw zg`yUa6^#1`Y($4ZA=Y4GUVe&3;|K_Xd6K-M5Ix*MISyo&U>8#=_!hTyPinyOq@~JB zA`5`?4F<j{BxgpD3c7T1OJP?zEEJSZ7uu7MBNcOi_}5}qEoI|1(}K?cDe9auOkj5N zm0J-I>1LIZx&H%rlJ@n&JBM%~RJum|bEkrGxiX-AN}C-VaHg15V!uUCS>@l;N~7yJ zW$5tkV%r>YkRjDRff%qy7){r2{23>I!<yq^r|+CQOp_q2MbZu<m6ptGb=k3DzV-*M z&C8C+RZbnWQtg}Heb*_>$08{#qjZwa{YUiG5K|QtTf_UiBhjCRO)jV1?uI`sb}X2% zoq-B}^p~6dX%Rc;uwUwfr?^uZkYQfXE|{Rc{Cak=9lK1(rP^*sopg}YtaXW88lz}I zJhL=h?;XD7pskC|!K(EMFiCwkGc{!kD)WPCx2zJv_6Q-{b6xibOBc_|>b2$fzr6%% z<L3<G)39UpuMA7pasbS?)Y^caHjOCKE3~uo+zZ#a%6ZX9%@0kF?b_7hS%Js5?4_C~ zmMBeWY%z8MR!M32G|gQ)4N+|wE%W_|VmD#^Y)i9@pJx)Ytq{8@U~)|thQ1Ry9y}~} zdjDPrk;E3iZ;%3#dxkA~`O^8SpS*h{yqpQUpqF0=t@>TsTW_AZKrmQYYNrEjVEL!( z6km*;BaIKgj(g>>4{<qKT~&PESG{g|Tjr_R=1G@cPVm&8(A#&Jn+B9gJZR?B<Xz+c zN8sNX`$|qN7Qxg01iszRo)hLL@NEt4EX_=Rr0O2FHvfh^pCRYf_!pbWZq=QCu!;Tf z{6n8r610*SO0iNUQ-#{pie-$>231stNJeiDIV>*;-gaig00Kh;RBYw%wtRP9{kUG- zFqvBdWadJi>1x_M9WPiMazr?R%kKaOnPizLEn(zFTWYAAy&uO#(mWR%?JuouQZAvU zBj5OtCh#E1dkF?dq>5=`WCE|USEx*-CBbyK{E`>~V}+EwUekhrr6G01!(&rx{))E8 zEngcM6I1wtP~Jj#NC;AB0+On-%d#b0w5_v^`VOzJQdc?l4JXNH?wPtSl@s*_;a2PH zyV6xVgV|))1x2YJ@5ax523~Z{em0)G;oWa_6@~{LzyU4U5TIC4mMaFJkwBl2Si5y? zp+y;pIg!nuT5|keYG8<Fjc{6Tse$6Q;2%YZMY|W%#~0JP34Abd2nYMA1(v79U)|ha zd#~L(Gkm?jIo9SfPq{EQgmUzg7{-g9)kNPZppv1-td!%-HIZ)4R~oOV5@h6r1{}Z} zWt*Xxc!7}-Axpcc7>V+~!W8m)=p(m*NS1|A2&rlUkY=k&6bmDrF`J9*R0~oNCyWt< zmb<~qx^u*ia(a#x@^-RflyXH>PHNlsVjw8TfQUXpa7TR~{Oroio5VBcEGomSnKjeF z;k3g|aA)*$RAXwt8x=*QkY<b@1)`p7RmbPoyHs}|iv}s-ja4USZPXj!?7j27KE-xE zb2&+!^z^77`tYvd^*?z&veVGWAEEn4j@{q>E!X}#AHTszOcLOqo_`Sb{}a#NnCMCU zza{Kb)!F~275?Fr@PAhLr?mX<5c>#L>i-I2|L@;}Y5kw+_}Kr&YCmr<{Xc;4afJVY zjKAz7Bbl1FaozP}=J52x$EEu37Zq_bG;{fPE)kuBg~Px7b(PRx|LO?Ws%&WeQ$Id! zzN5q)qH<}j?p-C7!@2|uHHF#0-dRxIb*w3p5@$4p&;0XK$ZUVRT~3lAWc(1pyStLh z(Pg)W%!BuK^Ybx)eJUYC=Vh{RWkBmng-KBbHG-_w`6~<>?jQ%kj%YOxCpposq{e|( zn+UET^vAg@Sw_ka`m&y$BK6q%*%ysy+vdXNy)K(UwosQCN}kYGVv~f>L-La@a{uJ* z@7|A0Xjg^`*+~Vt+{9gNvXtz}SVxn8q^8mEek8G#$Q%TAJ?SA`dCCdz4QM?1a-gJv zC`T?o5g;EYW}979TZ?6xkGkHZ4lt46q#cggRlwZ+V8Qp>6$Ut`LRFj#Lx0_VE<{D~ zW2wH~blgb2&cCIm>8gM`;EyUkv=3D+i=JY&IzUTjhl-bHii;$Y+SQ6>g_OpcT_n6s z4KS6RaDX^3T7k*Qb+-R*UE!ymx@DUrbNqYTx&Pw^LLY_i5^1S^Egupau75UhxsDX> z{QYvhaEJZ-*mf>bZ?g4pkHbM6GE}N^aR^r5Kup|4-mNI)ZbN}=7PezVYFhQr1$WHc z&Zmv<>I2V=K9o;9FYgd~^9%Zaq}^O!2g%w&000|w0DyG0f48{#R}uWbV@}r8+1b$C z^#6uNAtTMdOvpU1?i(ZX{L=ozVflIxBPf*Pk_Y6WPOb{ATDqwfEU!sCd<Ys*5dr{! z0*X=>Ust)AybaO8X-FG(#>n1NGgC9&&_2&>nWPt=^?JUK^WQbi^=lR*nLjgP@%J&q z%4xGfF|xr4%<M-r+A@AedNcPJTpZqG!Q6RG#TU+Qtr;PKqccG9;+W<;4=m985w_25 zh*gV8xV1BQ?~Hm49q&U$9Olp%+BE(6ym^N-5dfi{NMLq{j%_gan6+er6g2dUyL1to z3An?2=7Me3Mb4SG5nDsiON$5c#RTvMFO2@XhB<u#MD<V-17~|f)g04-aWS5h?#|cE z<H=fJuZ}3>@(kW-%qJDbGu#luZn3zSUB{U6`0epm`MdJ|zMq5{<N@W2UpM~m4{Q1% zJQq8+Jn%(bHU8INdx|)`w=5@?{>Nf|5Z=PmtDDivz2Nst*O#^R-i6twFx)d+W1vza zCp?q8qc1oZ$OG2_DleGtd1E-}2pI1_%x^7x5DQp|@Komgi?dBxg*2iBj9o(4ug8Ab zb=f>1tCvlEedz^`aKOGlv9E?7?dAep?u*`lR&dsU#Jauy*n9k-HG>>*9oWkNgN`<R zWp){N-CQ3D0A!LT=+Uns<)E9&3W4173PIj^Te?Hj0QSYZzlNoEx4?QJVV|fb7emuW zDYa*S>_@I?UifDB@D(yx@|3A1({(5vmEGxHsb9v~hFLy5OP+&Fy`Yy!A_;y}jX%`O zYU6keddyk2GM;C%<Td{w&R>`bAR~m%_#Tapf-JF%9n#RkCwGPWK@FITq9h4e@w}qH zg~#A69y*c8KTFhUwD#w~H^FPRt^*kAYC)CB1RCgjQx>^NO0BK2E$rEzE1e5MW-Q7- zOYw3@I|tStJ4j`%tv`GITr3*1IVL)p(1fG0XeS<O0AjFV5r7n+9*FKj|3$II)e3J| zS%Q?ZC~W5F(I=rH2nKaCKQp6|d=*BZ?_=rMhC$1Zt}UVj9dL4N(EEavn7S)8E-2<C zPxG&LcoCXW$LNa-=3m>YwMh`#*+c=X4n!k41`7oy0b=75b(({Wn1T93Azti3x&UMy z>jmiy8h&B{ha-?XX(<YC+m0;q8jQ{5#0?eJ=YIqH_>o;26Hf7DptLTSH%K=%Z@pqk zWY<|4x&6SRcu5fvo1?WnAiWpQo}>kEn<3t~#J0<`c4vU);GaHy&$E8@9BctT?N7h& z>3=N-&3^e%QIFCTZehQG7bUA-f)oC|lWqTXf1J(r391}w%_ZWnS^(g8&@3Qf1Gh_@ zuW0{kLw9Anu-9wjK7ZT#1+cn!a~9nYZ}*mNW565+&t-$l^0#rI{zgVu{OBDM7jPg4 z^syk^WX23^%^piTa*wS$I)nS46L5YU{jZDt%lqAz%fBBkOKMh-1?<n{@|?44?lnLf z(AhV~bxMx3Z%LS7^dxz@ZcJGEu;JeU84-Z&P);eQjBqPrO2z|q;MM^b&$eF>9t|Uc ze}@`Eff^u1bP~b;4(dQe5v7ID4e4=mc$vyJ(M=kGJq>q_5}qMj$hv?R!h9gUfyEFK z%<*9OY#Bn$@1X7Oe>egy<aQ+|#QVlcb1upIi0)Sr=%EwLReT*?oQo6yhmh?LtVY;9 zT^*AE?0FD>0bVc#X3+U+p;ru~R0m%KKkQj}_yR-qM;tVqO@&ItE`<sEfE<SP^NRE_ zvx82~l{T;h@kNDh35`qAkz%u1c!5E5S)TK8Mi9GE{DC@EQs{ef1W>s)HCX!b6qOlx zhm;k@3%^S$hjX#H9(=Q8&^*j>U8A=kDTK9I3A%}dWkY{duRr(yZCYv&D+VrpGZT(Z zJncYhjndzhm5yN~ysO~QT+I$*BKy31T|}Z}wtFZKX|9c%BVB}R(%}tHbTI*-7*S1_ z5m!`RyJGu2@b!Q%Yo^WO${@f%L3RwHiDVA=rv(lhMx$DwHFV149v-POG6~8Rod=@k z54n{l%E(jb8*Ai4W&!%Q&FL$!TDap0ZFRBnFPV|N7>S8fi%+l_vmEFLM)+eN9$<e6 zH3cel@jo5(CE7UHP1}a7u>m)MX>M1t(}?_^MXW^vxv)>``pkH8j2Q$xDQ?w-xDB5b zXDlk`JP{+14c8<dBKBA&m>{~7n75qzBO*>CW*90a5}ZJYFlbN8S~mt(HW$upyb%Kg z`?OF5t&cn4HxEbYT0no<1^~ulB_(<R?A=`59K7b$l&ACDiyxS`0B6=lcl2*PllUQ7 zKI887@s(NFD4sw>0<1dZ(rw-MAjzsi+1<I6;#>+O&&gB}3IlN>e<uO*uv2qU<RRk- zV*-y7f=VfsxvRfR1$V+u1*jmDlSl$sBT>-bZUleAmJ|{AHGDhGFW8|u_(qO5i0mg{ zu8}WS3>XH?W5D_+sBO56Q#1wlqajKsmmE<mB<mr$D<BeN2Y>}#22}xZm&Ais3yP8) zCg4;MNX6Hm-iq`a)eHdbeFVmB%#R;qM?gta7`zU&OfcC_r(jMcF%)zn4fQI=jmHd` z5AdQ}E9`ES{>_r>X;@rfCxr|*(3hDuhQMd=C46Rs+&axGy;JHWIEt256Uz#kF_<ee zsMf_$_e%4Nc?5&Wxz+*Wtyz8JeB-pbLWNK?sVJMd_q3Qo*}QD+$u4<+(U<15k{rMN zaPaWq;W0ZI%+3z(g>4-To5NT`rKj+Zb!L#yqn^;mL4wccv8|~xwG#Z>XR+l5#SYgG z#NEy_I3(w0$1E;hOb}nxK<L|1A^8deD<^-zMD!kf4+M64zLhG+obb>ND!^}egx+Cq zCW@q@{^6Q<<g_DFlF%uAIy6vFWi-Qh+6o*|g?FjpWpH}(@axJKF?xFwPl$udXmzl7 z<05-;GFoaV!(6RI5f0NCu`N=>2%5&QX|eHl(nx(uvZm!&oRp}S?Mwbdew&`HyNOiO z*2dYsezz_2E^X<MIAQn}ftnI!5aAsWemC?1WW)q23`f|AFvKY#cjz1}sm)-%MzI}p zj99dtePU6W5i_Y}E9LcqZ&v%ZFJ8hTdzBObDSPrFiLS^8(gj#KA{t6eq>(rvZi4`n z>J%>pwaQC`KzR^~4B_w5A{48VWbx8OhybIblv!g<yur6H`z#y`0-FMikW!@H3R(k+ z%=HRn83Ejq{a>Jm=5iMv9$=bq+#NkU>8NLnYJ0~_SHnA$dr-*Vk9HosBCN8&{<mqk zIylX9(@sLr{labUZOf^A<wEbreD|a70)@0WAmw@y$<rb7;Te=2RXQDB;(9biv&nB} zf@aw;-+_=1Cantm>Qa2=0rpeTM3aH33>rj^z(kHLNjW1NGpK-O`$6o!Jq12olA7f| z(RXZM4KK8G1MzObh##B`{<NaJ-d|X+M~T08yvhUI>yAs0`nl^rG8E(}r3(QEYlbW$ zK!dQhM&;`5>H|PUnt52t!7-N4AYd+lF<TkeISt}pkk14Vj0$GQ-@42ukWhs-c$>%u zjPPs3h&ZISTdjB5Sk|DxTjz>xUpwNLV<@A4hzg(cUneeM4FeuGdl!~elg1|NC6nnz zFkguxk}vqq(sZv<QG)mir9AqDF}~6&G`Z>XkAVt@YT)qM@?L;|LufNf*w1s!x{zgy zJ)b~+$|oB2F|{f}8DbFz`}9!1N?9Q0h(;|Vz-f}k2`oT-@@Si~Ci?dp08?{e3*B)n z$T{8A(XmIuKTWQBQ_GN@9x~8dWmz{G3l!km=F%P@Ai<(xVuoGH0<V>^G{CT%%(Imv zB!j?D-w6G2-+9CH*L5<tScSVVg=1hC4$haR2KVhiLl1gTLl0B}WDrN90%TB8kYF)n z`r7@{m*i&qIIfO{0jBs3zY$u4M*<?x+cc^-AcW<r6BGif<-1M&Bkg!-jHsXS!!2^C zHQkt#RabP46cY#qaO5Yei0PcI7(>pHJp@MFmKn{Jvy|Z{aEb!2)C4ovt$-<vBLdY> zmxAC76f4ypRAZ?h&@9VU7VJ$F7)!zgA*8cBE)~SY*eHEu%|pY*1~e6y%<yoqw$E<| z{m$b}<((K(?fRF<JhZs-+WFA_u&-mb8_|Rc1h-!Wx_i_B%le+ji^dZ>%8zk8i#vz} zN}|DC9q8W;sJlm>!%6DaBmy@W(RDdQx5(*d&e<WWGovZtEeX_87sBy1W2asVqw!ly zotF{?>1wQwO0XP~_9%B^{?;=XapaWm@J9)c_6!NoVp^gzvX80noPz#H%V`-ppH!4+ zWz3kPsv}3>2lQ3L6Xwe#C|+G9735+plJvg(>_kOnF9G?cEB^Q*eHHMPA_zi+K1n;f zX7y|vRL?jsNMQm(4*_KXn;V@H;PoBNBD-l+uU}&DMcg;-2*lc4z8JTLK_SCLs^6=( zl?j4S7X0f;x9$6$yOY#oOnfcQ35w9~na&GAyw^heFn3*n+Miu?hLw%_@du=kk@K|i zseRfDN*MH44$|6WAD#kTK@Hr?HYM2142#??%pl&DX>H3gB6vGyf?g<@x^Mk@g`6Qx z32!1Ys*dl<U5F#ee4mMHkYaO2EXKUga!&XoRwfM3weMywxsDxxj-#-++PS<*xbm&` zp6*ndsGqdnj#f4mZgt+>6mx<Z-Np&tTtIsym?$(061nR^svH|5WN7;YqhiUTgyMrq zzt7Ak!2Z;&q@JkOFBNR2pcLu&B123wK!89x<HTHM_|J19%P~j$rO-~PsA~Ep-#Dv_ zqV{MN=h;TO_1cGx;o3T-rfRzz-#RH(MG~xt1A~vNmLiY!B;vd)A8xTcYM*VP9IGr_ zu?b?hV_fF(>HrJ8yit0LOHX<Xo=QwxGaXr9rUT3K5sJ=Ac{6(1Ezz(AmH`=_tPu=M z(M5z*lA0nx6QEQ?tpqAwp|)z(x5en}y~l`Ly%;)v1uaJrg2hq{urD#iK>vG;uX~;s z=(ZYZurMV(iv;gL-2f&y<<-m>7kE6Gp8n!~A{`kg;UKz*n?H}sbyb5dYtP{3zXq|7 zTfE$P_9+P-W<h5aj?Tz_QBAmb)yi?c3;^?^)9dX8=KC&JtzL{fyhX#0EZ%3-*g@o` zgA&;R3*Y#~vuC8}tD9kq=Lb2my7|VGt<u$TJGFU6?U;5Z`ouXMTrjmmG&R<BRjG0v zZ^0LLL?G%@Fs3TBlW?~VKP~v7ZM?Ki)_f0^K~~IC?<-bRSug=7D~b2>7b_02=?XWy zU>I^9X8{P>Fx}>l%u6~Y%xf~Ac&PEfDvddvz0E1*JYy`7!94_@_QL|}cc%~`?_Ey@ zArYFfhF}RwYMT5VXJxNjnfmFbEA1ukXwwG?qbe>zY<qhi+E3~k-~KtPQEx5hswoix zglyzG_o%xE8G@B|6-kc###hPYuV(ZYFr=`zTfq``{A$@=LdULVT6ryCv&{28pDJev z_J7+~^bEd&mUz<RSKpW1%|6N%*{U024WBi0JYNi(rJk^LMP<lUw1?swLtkoG$Ke~W z!i8<CvP|-6%xHJkUSlOTweWc_lhcg$`J<yyp*`WR4MK@OIu`gOz0E_d#>vl%zkqE) zCGtiS*sIuyaC30D$UYLv>F7@=afFa?(RV`5#F`=zP?(Sz%<)Ee4Yab^Pcdcr-Ojo5 zcfD)NfZaM6=#*VPPce<sqlbu4f0ZpA&J7Z>K%>OeK=#j3vf&*Qa3%nIHWZ9j)I?9% z@_FM*yD6G^grSBX0~9R~(CMQS(XL#&WdiYab5e;yIr<2uYZWz6A7>{zncjHAFyL%3 zgDH!8RmX{v@fK?>T&}yjCR_P4+kpzt&}2kS7lh@}BttTJ=Q7lqi(xr4JuK2vc%9dg zGFXRGi-(j_-k!FeuIrNAbNQ;;OF$Ge2ZJuQ=BKLP9{f{l47wgnbNKwPO})RILP^v5 z8@g@Fo_Mp<r@LkxOvLUq9d4Nw5Zb?o#XHrW)jXE^wfj@3<e_My^`$&^%Tx5U@l9Ze zK2x9aRY;TqLZw5<AOW>hNG0i)MnoG*H55|f!QS0e6{9KygtQES)4Nse6Ig$9sJYK9 zc$gVw`n!fH1L+vw#^yFjIRUq*wvv+*F?oD7LR0n{NwC%=#84iP4#*jUig#c`E3k6u zj-O&DqO3A;I+x=#>qjR(X-|;im_}WlRt~X@lflr~W5MTO=5eH7kPXKI!_Ea%NU-bc zcTEQ~VD}yv4lHiz=7_S!HG1UFF(%HX<D-Db_Ba*%CCsDjpNy*Gdb<4(bCw{w1KQ4z z@w`s-j@(|pvGF6JM7Y^ojtHQwGKh0j^m#1C_*_q@(cMB(_Z2tjTZ-;E&Z)AfN}0`g zK^j+Cq%yKxdd=btJ}&#R)qF-AAd9A7r|L1lolb1NrI2?5&Mr+r_oQL7VjH7Oh?pTa zegu<cl<h5@Gkk}l{tSwM#4(>lcbZz))@8MRa0RShy?*q%Vj7L|q<+Nk90~hN_Z4^} zd};KGH80qZwfq{=E^2x%lqf&6TmnW*XZ7bvw#@94H<3ADh)hZB4jgj)z>G<(5%?1f zve+XuGLH7|g9qt-u}7;^I^#(uY4y^HNiNvtL%W#Tg9bD*b%PFVh1CodBkL}fkk*t> zWJHxFwWqVoUvrNG&qu_dpG);df4gPL#inHVn(7{`J>xncPSH0X?YgM@M`&zt41AsL z<ITFikx2^+`$~~s&iXW^JAe!N-4y=&L40Kj{VF~WCZI_f;;a5PAqzIpwybSn<`Y9l zIrq9+JkGUvwvpTfw*;z!KEpu(8TPLah!)?GLDc*a!G7{xyq<J^G^0TF##M?q;FxQf z<cz<{ROVRWh(L*|IM9U*=(FZnB15irdF1M6xC4OwWrSEnZNuzG*C{66X|1s(b0Dq3 z`EwQu>UPtFUPyKe<pcYcyQpnaFsxmMx}+c+3>@1c)GPz>2$qOlhUo(tkr}4oaZWAa zJ<r87C2}~qd9dT@;^F;7E{XsdU&c`?x{L7a0+Z+XuD8c<8L2M43f;U*q3NVq_@Eu8 zXQHYk!&tHgCWfs2j)YDS{VEBQ@uL#cL76)Bd(I<zaso{MHl}c43+t;^5w|!FCjnK* zc|}?3Vi_ye^c;!sQp1WrJV&|YV91xh?4Lo?;QQi>&0yOsH;MYNoTdi#D52y960c92 zu|?9apyab^-Q5+Lv24$S1JnRW`O1oI@-+)vLU{At2I1zx=?59{g7{Qk&lwdk6vESD zk^$A%7*<2E1F4GQH$>1|QZg1)D*#RmnTNSxF2Au!;RfuF^q!Z-f1b9e0Jb^FT30}L zD*Gmji#D$i6c$?{oLRXhAX#@1g-cX(N!V41I!retGKzs!NTDrrpbD;<1eL3>^l#2E zHu1mBgt>*KEKg{;&S#c<)IlV@zvwyYi%(eTn4*~(jB~i(FqL~MK>nRo1U6un9}=V7 z7RAx%jBX1g<toK5`m@P5<o>kbtpw!=5YoG$t>624ykVchW40frjYUtigBbia^RzOv zs=ue7E0=y%VSR{n{%W{^AO(FtbD?SgX@I)T4@d3D0+-H*09L!UU*zBh1%p@)c|SwP zB-FGy4F4)~P}DV92PbwTM=wV=I*2be2<=0y8HFEEIH~!PLL0o9ty$lC@Fao7%foDa z67PxKYgIrdw<W7%iu_zd`|$`u^CLND9FFJBFyiH38PFK1?8Rgkc;%I#q3Fogn%()b z<Lw;pe&m59dhdXN$9Ahp<Hp{vF9ls(csRIe73rvChsN{xxf~_?n9(!GlDP_%nsqNd z8Q&~BTpa?-5OHtKnE%Ctbtm;<c|~JkpTjJ#r%g?NQuleur!jk{%WHN$0KY$?iZ?iA z=995JiR|aZVgu5AnA`zs?q_ez4tsSH?x8f$6Ne=Xf)9l4XA_@KuAiQFBQ;Ap?%|uh zwD5}X@;gqKFTc|Rwbx9_lp%|FajVaxN%&@U=lY+Ap8wJ6$vIY+Q~YV6HvSAglm7Ru z9$|YsGfVUTdzJrRc6oH=u^AD3_`ai1g{0z$fGSWxKv9sQh>jqlPQk0H#vGrJe(}AV zyaTO9eQ&oq1D2?%;%iC!-Ca-3T-WU6rAH^Z{+zNu9|jGe?a(0x{>}QB^Ci?JK{~XL zHmJHxU(w?>3<yG+{=}k?eP*{Ti;B{K0@Nz}7O*y1Y;b!<&%oB6B{23c$h8b8XuTjd zJn9i&dLMXTDR`x%kRsK1t3Z3YA7V8tighY6^@)-*C@-^c!u3mOj$$NMPGyb91ir-? zY3Z|L<U~pe#>RVU#ojt(AGR^?<DP)VA)Yxy?W*Yjk5^d@WcTgdbt%20Zm9td5ZuV= z9GxTD_V?f!0~v}t921@D2rD^ca^8GLjy#i<L_hop(n$xoH(T?yL56F6mwNhvq`k|h zodan3Qsj|qHmPK}Fb%vy>clN3h31&WNXyeH#pXn3{`L-x_|}(00<4{Oxw%8bx7YWn zg?lz{@%yo!_=iJmFT{)OE?pcq$JPE{1!yD=Z!b{t-ef?osXxO}B4=vVD-n*n40ZVm zWHoVtgO^2#EBL;@{V1;;*z;Q31P8ItplD)h$*EU1H54|*l)F!i6hp4!Ytq*(eAqP^ z$(HP`zjtL<j3m8;YH;6}ATxbMlSFbnOg%NwDLRfoy@+&rm9wSms6eV%2XoXXg6A=A zann+&cNW`I)U`yiINzR**=v3oCNm)VXE`4+kSZsO9NV5*;Ms;#@$-Gfc35KFe-Yg| zQ#_FB-jPL$>TA9U_{;G_cEsDbVvi*&K=Cz+yZJpK|L5M*t$5b^{ZCsm6y|@7*Z-$0 z`Cqi2TGe#r55!P><@|<0Lv^!B1@sJItrlxTS}uv!YM01OF0GkTnT@Ao7DZIQy>DX7 za~y4&eJvD4430OQXFpr`x7Dhxyd2;5{_=lk4p91N6Pg5BA8G|s2-If;1*Jk%iYPoz z;%8XS1<@g}Wpx*Y93AlTEYXur?lMm%P>1X&P?2%a%%F#{a=D?8-m!krS!tAW?+OXa zu609inrT=X<dD=<CzbLDza*cfJ|0v2o~TdiX39%zK;Z;ZRxiw{M|JW*YMs*hz%|c8 z{6OC{priu&bNeO|ce07W2T@502bwvgVhl&meKT@sOj(7iS<fOe$<gv&NwYVvL*XG3 z>J;3;`Hk;KSGHIqlN$7%lKM<3FFEi~Uo>@gkq1PzSAXWBBw1MLfYN94NveC``fNdI zRR=%Q;|#@#-^rM_)V~h=s=K0O1aE7X=Ry@e!++<q`<Gd}nK0k|HBjBu0vv_tx$~^u za;oS!vyy~|U)h_Q_CiLSS*}uIyEmRvJb8SIW&cC0kPXv{&Y0-SJ0MhBgtXCMgBS2s zwM`e9VnHdBMqUGO9<h$P`{AWs(0vz?GAUI7&lyZEwpI;BG6_IX>X3GF^BW&1Ru5^j z-4>T49LbfIlLIIkgd|h=*9l=Qaj85%vJ9`{baq&@4&I7NP5yA3WpBx1=J5@BqpjA% zITdLV?6#udRE@aWS51S-2qUKZ*fD#k^HND0G7l*v(1zWdiUWQa|2-)dO!Wq+p?^&` z!?uZ81#gVmQPbYTdCli-Or~P8_+5l9Gk|a!$tqwG=A<glxhuLD(>o$yruNlV#8qtl zFg6U!@0eb(X`Q@v&XS!{O!LJ#p>k4R^XaV9PK#e49fmsg3k&lsw1@>3<{%hO^TKPN zhz2zQa1(an0EVTH9-BW~5WP1EC@TCRhqFOh4l}v=SZwwSr>Vbj=mYWv6i`**l)XF{ zDGYVQon#+}`$e8$i{Zq_ErQCX6PEdLZ4iHX$dYB!xx3o6o<i{}GcDs?J7dwz84k}; z-ay{~;wad>vnXJQRe2@R?r3!eP-$OY_pu7<<G1-^0H}Imc@oT58|DYvEeQ?|=kD|h zZGqL@7Pt2ti^qA9{+z@JRu;&AB#-12vpSk8r<Rma79AjiI&(DMD3PCM_)s%rhz)A% z9^RvMz>uaF^X@TknmLEKrdH9nvl2&bfknR&djLl>I*L3HI6l-{#3c=0$L?))(Jjb4 zjQR<N>6jlod2oDi_l@Z_t+I5dbvL{H**CRkSbAqKG<@DtFGWNIq{sqI(G>)o7_0Ih z`-pn0w4D|7%>7k@7$yG^`|?z;Y$6Bpi~akbe1QK^0O$Q-^izJ42@xFt0Lgz}0RL^) z;eV=s(^#L*e>k4ZU#L~!yVz(6CC#6o$Y>;$g~~3EE+iJZ^~eS>v_W)Zr~edDx?g?! z-AFdkU<zCO`sJOw1u1c(Eq^2Z;lq+Y^E0`l&+~o!eSXN<k*S14!dT8YE5StQGr`1U zh)C)uCE14Y9SxRq3&KY6+P4lYD{1c`SBG{G0eTn%$}&UYDZLm&%D8TSL##Thh%MJF zyiE$t^pH*>$Ds*e(;wsqbDD#U77WqsIrPC%aF}>kxmzZ2sH9hR893}G;w32oISD7@ zNO!_Qrr9I`49g#ZX%65g#6L%o30$CHpPEp#C^l40a#SEL7L@Xq6K3*zYQ2EhYupEN zO<C@@-r^8<91+t{Yz&O0*djd3(BpT1@0M5YuwV<s8HJ#8$N9!}y-Q3?zs36X4myi& zTfgJx4B8xT;l;}CuLlR*7aB-(#DJW48m?z!{3&BUHI7Gu`{o!7?Be95{M&g>90`#x z<@!~oYiEagF!^@;$Z5T%2+rM=<An#5ArnM!52M4tdqJ3Jg78%ktX3_lSE5)+8GK2x z;>gv@CF^`>AS~x35klEj;`%X9Duj}jJnA$icihLApVk?wfCR+@R&T37{ZY<9J|{vb zKVmi`oPQ~a5&+vB2+EmT<bil1ak_QvC?%-;B@k@8ICr>%CvzSh5FFiFv`@Q1A7E&u zFBwbFh1!TvmTh<r?AHqUwYyw4i(l}~P6r&Kge&kG;V3%!kmV%krd^0uq7Vo}H%pLu zErJgMNQlZr16UzzShWhwrxsQbqah2FA{4*uXX!~?umRZNW?D6W#cgQ5PkSP9UIRi; z2n)0ln>gM6npHB%BUVk<Dk1EXb3oiN<-M$q*PYNh-fYNT;2Hz>yH)QBL`Xr&7OBY9 zHtSlqrCnt(14mPv+}Y&q_)!7{*7>f}h7^_cW#^S;py`1q3Z*r8G)pLsBebHx_5xl1 z?7D?SFbV9DDF+9@em7D{yL;=%QvBf0-VA-<*q9Bd&l!<sd+c$MB~$l>`MkrI=l2vS z;{*?BA?6X^TOJX`<_*pY2|h=WIgrVT!@0TedH5(GNbQt$6|)js)=OeT0z+b7Q8TB$ zRQ6%R0@K3lEmscg3^=<3K2OJ;4$!Y$v~9%37N;93%F9#)1zN`%2&XOni)TB6@*Ft& z*~k{KL~^0KNeiS`c-`l>7u)Zl>DhB9j|Kds)f)&A1F$$`C${3l68|mYG6-DrN2KTj zgw5qoE%VnZZ6$>!d#FAo{){Yu)3Kr16#Y?$l`Y}d*I;~F3%}6YI7<k`kEpJT1o?ak zOLe`cDqK{A`##Iurhaw%RV*VwnSlZfz*gP})LQ=q4xG;<(z|{^h&s4xG$-*rAlnEv z#MtgIrIUn@TVug40ysfP0#prXU%=fza@b#-oUOARB5kkNP_Q?5P!LE^;zbfW+O33U zmxv_oDbUUdQU2Q6C$$vbV&oF{ZVte&BAf5XY1731k(2g_3q*^rSfLY0b;@u!!qMvp z?j{IWj%El?1)VZRG>+9FUP5G|w|3up1O9BpbWp_3*_}5`Vb?fjDf+JpW_%ir`@?>C zcFXR#-pf17)}>V;%Q19P#MF>GYr{z}5xv?Z<6}t0cFL-*v6#^3shN2-@{-g|lP$<` zf`il)g?+Ujjro%5)K;xCzs6)8A{Oo%Wq3F!&~v%4BS<N3=1=v}>r6jB{{ZMzr^UNa zZ<ZM!c3QPG3G>4K?#L79(IYPXk*s~UAH09p(FTw)8!OI>KN`=xI3Z*SQ650H<w5`0 zY0(dN{Ml|Ae+E(C-Ev%^dRHkiF^qiAy>N!p^bLEz?nd?g@!y5SkQfRka!5P7+}bI0 z3mT}JN!1;A8&mA(lrSgwXrr?b0|@;?@}vkQB-tQ9M+FdakUQvk#5va3M^WrJV41c+ zK@Vuv+CL1MV%e($N9RPbD;`RoFd3~n)%H@rGZtnKEh!q@7De{ld1!%b4QShdx}(ln zC)FHD(b5$f4-i+H)?Hd!v)>yTE;vG9U(*&l+eSqSNz)#5RB!(__*FH$cdU>D={k<L zNww~F3|G7#>=5n2h+R5PTsAado+WCkqcV@(SL^iWH;+b9yGHKVdoW4}cAQccEs>pK zVArhH(6C{4p8}~oFgnwd{TnF=f*vwOB=OT_fJ0UZGXp)WJm53d6YsPuETTa+c&M$3 zQe2Z<NylvY1~T%THAUf?K2gSz%0&d4fPR6aW5`k5cO^$8Z_3z$zg*bJlx56399$43 z?Dizdr}YF!Y9xx!2tfh!!N`hk8D>HSJ5M_2@`?a*qGAsD99XFW2(TCwzL_2+@ZC^o z7B&}usn;!t4}!+6acl#apA8Yg$fkHGcp<Ms7gDuGhs0~QkW;97$qf>CW1_bnG5%hC zz|kOM@}`>ERG{M%2Cdnh1Z<TK|Kyr5O!pg*oPCOZX43=2lftu2kxEN-5SZWNraO0Y zu0t^Z$6pOWZ|6QXBFT4a$45sSfpOVz2od*bE7aeQ5f;t(2q#2@tM}Q>lBUKKnu-{) z$qpUsFAnqkeT{oQ>Ih@<Ho!9=o7N<4B$JZYcG)iUWR*<2Cw3ix;;<&A+#vFU@v<Rz zY#5@|q^{~$X}TMg*v0RhqEM_&pBv}Rs3|lRsF86U%!B46yOP2qTQkThd*55SI^+xU z5H46viXlnN_jfPaFPmwy$>L2J2OAkx7tB<`9bUspr$i-@8G$UIB{4X{5#6Duw1f3m z$2!3_5;&<Q;B52s6m8heq{#DeeksOmC&|Xp5@Xlblj{6e{!QY|M-R->4w~7Be+`QN zD7yn)D6Ic4#?G-jx3<mF*|BZg*|D`_+qP}nwr$(CZ9Cbq?atFZx~fKx_pRzbu)f^u zy4QJ~a~^Y|9#K(W;Ih*w^_#Wh>}JfX0hSzyAf%N%07;;x@nAUl%J#?Q2j45+|HL+| zJ7H<+^CD&!IC&j45|c0gVo1ZH6n8a^O+S3U9>W~!3pgaA{6JH{<QF>=*by0%<dTBC z=0`)&27x6G2O``=jwaP-N+JoXWNNlFmed%3Q&sHVBAWA8Tvwu6APkPWr?_sAzojao z0F5q|z1rPx=j|j2h{%`_kK-bcoQN$D+s4h=daCIvSe9GZ;wN^f24l^uUs-&8VS`qf zd;QLHfW^uArKG}V$<M_cuT*nW-g&o)w?Vt%@f#T{L`zGMxgH~@0C%8#!DZ<bEsZZ& zbps<AqohHy&Cm5xS|rt_UBr4DZ7j4B6rF!~-flzx#Gu775$Jg?afYxapTAiwRIXhE zl`AC|eKnp7$5gs^Q(r@?o;>O4@>ftA!^+T%KL72p;!Z~gItg9HXqz%F2%Y)i7>L0z zQ9y1<!3ZE=a!j32qZLCvi*QLm!xytSNlV|uJ@Itpv+3Br@`Zavk$GID_@!ue1@jH# z(Sg)$06?3HJ|sbXV_;L7DM>B#31T)XoCG}6jOs`Bp%=<JkQD43&Q$3@{9QDI)>2k} zO(Nn|nDt`iW^44HV+!edW=$jI);Xk1Xu$R72{7l9jlg$#Edvx@Dp9laLO>9y3>BtV zquRWcm<twW)}8$}wXOTjUXa^jZ%+1Ma-%~d&od(B7$rt+dIwj}?!&NXrTpKy1TwYh zb#EKwV%xNTTbV+QY@ZAn!B;It-jioRtmGhTEejP=w`bex&&-y68%)I1ZCe4(je9`q zu~kMn^Sf5eH8%3q;()K8t~aJDK4o4d{vIbSmS+uFHkN-3!V=HZ<WfrD9*LHH$1SLS z{H6W|358^thnTs!9p_1sqYWdw=)1w0;pY7sxm;R1x(#zp1w)ffdq@@lbQ36G$0g+f ze8DRsW*fsCtVzk-U)32jiHuR<$r%qE;&(4cwG6v?MlRAp5{oY|$g5Q;%j(|dC+Kia z!77Ta7&0rnc~#WwA@w}cv#<Tc@2Xd2Jy#7dR)Wz{J3JaV?(A1E;H~I%P@mt3u5#a2 zCba3vmY(m257!VFp08o{cMqkL%ssWT0`M@bg3@vrZ5>0W3b$kkyvRS4z+KSVy8gPH z0gfivaBd##U1ID;Ojk=i>fw*0SL@RgoyPM(F3A$eep_4gR8z1~!&>^vGD;sWk(oLW z#HfWNt_Z0A4qaMOj#cWIfmpm^{bY`jHC_m&709=u!u5y_M}ryS*UtH{B7);UG2^`! zTqb^(g8TKB68*-vZ&Kg$d>3Ne^&lQMML=~QcI?@*;>~WSPI1^;`^O?KWy*L1C*oG( zmIxupo7^<qd~W}KK*#6flvZcl9L<cv`&!2$*f8i|MeaHF!$A*d=unek4kpAO8T4C| zm!tCgzu0#fJbqSwx1BrEpa1|eKNeon|Nh4Fk0)K<#`Qn$JSpJ+(%Idms%CTW6L0Xd zL$TEDm0xc2<sotM$G4jUXw&7?Ko%kxWw2_PZ6ZDzB!B90aXqU&WS+H7!jEGgh`EP3 z#{ayR>K=!iiRQ)oKAs`K9&i-GAD8Eo?<3IgRh5H<!bAec_@zDhMHmMVm*?B7K1-r! z%j)gFqK~=&j%y|;FTD$;muXC)nW-(Rcs&Xp{XzA@O@$A^8fy#)xk!_OkB2Y@GK(xF zdY2k(Cb*jwo}@nYN0mwkU2C2xa_@HrQtn5+`Lu+z{H|IbVaa!_JfGZWcBNS6QEBOk z6%a<I0{bnq0ic_0C^`g4+JL1&O59iL#2w7EHpI=<$64nFTW}q+Ejp6)YWn2S3!LjT zEL;KGA$B%DCU1~gC@JurSF#td%qV$q4;&nveKN!*yWy+^={&A;P=Nb_`xsVwYA{4w zIaN2|mB;YkDLv1beCl9=2fS=+9iKB+WYUC@Q&KW~6t<X*ea`;D6uM%Ehf+nchNf3X z#Jtin9#Sab7jto>JNeMyn>@2j(&x%i03M|^S~aeeL7aP`IAMDq`a5#8&HFhOFtEr_ z|Du~P;<i;+Zj2nVmDcze2``H@E;59T!~S!ED1X(+8W1DmQM$k`9;t%X)Px59+0>jk z#nXdDg~_AtK<*PUnZiRHVd)bJKl)-3>1wQVM^%GapH}85Cyq+Fx|y@+CR``GRUSFh zwv`2R%zPfSD&$B~X`>PZ22y8?e1l??T)Njep00Rq9LdVyl?G8K7UioKwkFugO~c|9 zMm~DvNoy7@U#zD*>k24>hT5r{^}j5JTaDUTD9hO#G*lw$#-pH7#;3+k^Gr#_Ti4C7 zmvpn!*J_2qenupWsA^5WC2^rDEwxY0eybweBa*Z^lvDTsX?=L2!-m*an^+2ED<^G# zFC(T%uO|_x|2ojwSQ<r82-b>6FM{P#^RObYc5!X8b-_|vx^q`rY<G)d$+fC1bE%QL zhG<eZ**m9X08WwzBdq{xp5HMS1TR#dZ1!qjXk0H6+G#M!`(^H|d#BF}r%V{u#i8zE z5+1fOx$PNT(H$SV6+)P)H><7vJIqzIEf$PMYu7`r4;}Z*P-wm+gkaPKH`30DWkm#% z`L;UG4B&4=!uf{<-|8@DJ05p*G0}_B$DN_H2%o=50)AwEWh~j`jyFz}NO>oyVsaQ( zt5-J|5sQEb5SK+AJg414bApB0_vSsA?CE@#9#ZwUjEZO=W*ihqdLSOUpim`Y{aFRX z+nIGZ*#TTl=3jx)BUxF#vxj1bM0>wepjLi$;$IWnZ7RR7-esAu?&0CK7_J|HjpTBf zsS-eKqnWF$rFK{qDSRfRNLz3+3n9NLwOkzwKVn0m-!uNW?5D2jaOYVzTWefW^usis zv?jNL8%R?gREH$mHivh_xnDXAOqJ8o9k6i9)iIJXn>9f!vlfG?igb2u@8~->k`5a( z1+gEwVOs-=Il3|e6y<5jVbxFD0xhE)`QG|r(;ZGxS@(%|k8k+vRS=6(%u<K2K2qbb zI5@f%I5)Nz`FyA~dwL1-zJLO^6kYj-9FLiD1%(`+N>reAmV-6Fu&%PUvZiuwM>|E` z=kmMirkR7|?rI_ErLZl<FQ4nx!GoksBlcxd^CuB5ZGPInzp$kHx-hQZ9<+GabVW8` zkQ(w1XNch^z|t5dCjQ-(!<nAmZ4)(qV~|K}!>?(U?>3Mbe=yT}=l>;x+{NPd-C4sN z+I!wexZSRL3gyvTrp$!_lKSU}Sfz=_$|w@5NO@JfDaAvc=8fP>14(6d!@Rv3?fnUa z4o)jKO^RtJ?CAd5gMt|<V?*^A<)@=KE9=O0hsTmZGvxV(--q15)3sYf<jRt-`uilR z3A&}maU-g9JIK5#_c}wgde=&;{OM0)*j%tm+tfvrNrfDh_WfNQTz1+*@Cw(}bui;m zElla7?w1ymn!?5`?vs=1f$W^`8prfCkXqRdWJ7WmimeOjPK3o8rFu)BSDLSD=3vBx z#IsiL8>GI*n$7li<?zz<`m%46?qBmW(3>v^uk^szQ~BXpvqTcF3~wikckw(Ovz013 zNF$``dP}rq`PHBzUBrI3*22^H!k3f_K+Ql+rb`Q@$wA1L;?spH8@HS1zi<DA@%sn3 z8r&+4`iDhw{`q3z{+q9rgMq1$mEM0)fB#@u|BCuclKY4H8_Ag{xygo<XVyiWkL52% zuCKz>mrvo5R1$(cR^?iQZK4hJejlPvO#BD?vq9Uso_6`>9NB&p7HbwZ5Goc)`F!r0 zu;@8b%gzVvaoR(mCSLESlrqtB#YBFyK;)g9L;)}RGce6U-gSk#n*SvBw%rkOOC0JS za;t?dND$$lVK%yd0HMEZO^@19qe)D!5wJ&*`ee&?Q45?BE1}=;e)=%3w@D5LA$959 zGaU1KhCY8uZ|~y%k{Wx<JWI-YmG}dBQ-+A;3vts6u0T$DA|@uLd&Mb>4X2%!Ka&<> zM)FQsNi$kLbu-`0QjJEc_^I6s9r_G^T$(WRI*zYKC4_of7ZJZQQ)yz=^A?Idi-%Ss z+d#NAuYS<KNj2<zB^cryP(i+au?kjQ3|>92Dd-9&b;3S<yvcREuDu5ar%Dq^Ord$$ zPomaPFA4%8Xr!%XFJ|j$QYUCqsGcI(qD4&w41zPHuR60wznR(jYa|MgaJP(K>d9)Q zJpSaOV~GpG_DC_M&ic?Kn(9kod%|sK$L5J<y+h@X*`xX+?8nFB9rN`-4~Cf;ij3$U zbxzXGKN`@#X5O&>%`2g2;Am!J?eKp{y8jV+GmW(uqnuf*tou<yWqw|?e>WEW->3dR z(h}6;?|(%#H7RP@ApJ<8KVuQ1&{<Keu$PosE-<AKp%scO0zbLEXGUh(43DMGdg-{2 z$+PFHDdjH6)e-fztBbSq#fnXMrRh_&4(|7T4aCR|yFlzRFjHSZmcVFYNZUMkKf#Or z6OfUwE`@I`w7DN_a02~iB4ZV?ry^pMNUP9s60@zl{kU3!GLEU!^lk+W0U8w@%O9~- zEeOw8Rbbg*^1~qIe$hY=l=^b@Ed7DI^|Bxa{(;$I@bTy8Q%y9}-2|Gf&3zGJ5TTpr zRzWK$K;=tr8O3Avy#Ur_kh6gRM{>YoIt{DwT3i8*$`eOad<^HO87)&7Bv{wfT#=T+ z#OLpU6$_Rk)a?OPa&A;%_@L9GC5q4A#0g|-W|?In8{s-#oH+A|Sxf2aZk8-q_w#}e zj^g*veMt<&IFQVkAWi1{J>SIk!hS3<)ttQ{{qEQXqn7E|uan!1DSD1`2t+IIAcnzr zSD;$eTpq+_W>PmMVLX2}hJ-3F=@O>_P=+{U5VD%3RM@EI-g!&Rj=47OFRfi_d+Cb1 zRzuST?f~xzE8`*8!b&j78KIm~#;GrHyi47s&W)*VDzs>(l@$ISaWGuXEt$ts{ANu& zeXA9xYd8(pA|Iu>7|b-hxAggSZ|=WT*HYLsy2tuSU-+z<6hQGIg~J~`N&p5(LIYd6 z*s|YBR7MrYo4{apsSmv^S`E=^BdI-eF_2ia^4X1FFM%Cb_ENr5OqhV-Zdl35#<_WM zt^E0g`Vo{JMrnZ^UR-uTZiRjcyr&)HppOzUO|xZ_##f)j?`nGNZD(Xb)#$*0al1R+ zBGduoE()C>N%&H0evo_C0{%X&b{3fAO;nK7=W-Y_YBJ@B^VWZ7;SLLW?E)Iw(WH(g z>#|EPTe(Q!CVvMX+!nr)QrTwx1^Ay*tERJ#Sd$EG_uJ2@%Om)o55)ftL;Fw6?*$s| zUmgfGD~Amh#4pQl$i;(nMd{}F8hhduyUZ|7@3B>B4jh?apt#sTD4}wIla!8opB^ph zKmMpkY;D@bQWUy%9jhx~8!ccHul5c%XLvPVPrMlyC>_~Q$;m+oL35Rv42&u1Qbxbg zRs2uQ?_}aIjm1~tFP2BsWG_zcBE8B<+a%Y@B!%)o-U$<vjrz7Py7;PZlQ&k+E*p3! z!f9TBsKf^-bFBnJ-xaB05<p68RsY7LmFc?7PgXIF^jo;)9ZI5dnTQyXrY;W1W<?Z{ zr~al&T7Do4VnQ6<iO`5kk-%?U(J(rEx!CKIDPpjNo02DKMZn15a-}zoDX@P9C^-%u z66w0x)XQ#=*qptPH_fva3O@f1;SHFQBKayWL=+4A8;)wEe8dk|9Y|lFdfJDP@+zmc z3279FIq4R6w2RZ>nRJ&Ae?~VXamA-A^!^RhB4FUkq4Vb?Gb<B^cLH{7#<j0cd#{DF zA?>fG1?o?SC?VK8Ss?{5B(Q1m8k)te;SuG<PDTdSPalJs(yV&?A6<)r^2I^!+*McL z{9l2epllbTZz(AI(KxieI0}R`O2hiC_!CCAFb3YFHUyQXC185#f0aOm^*Xy-n<u?9 zj*fr<&lp{`8!j8=A)gSzotM_XiCf)gV0=ahV452stbVucLoK&|rp;pV#50D@W?B{a z7Ye!VkCQ7JXINri{Sn4S6HW(fj#5cWHakLA>Q^lH-K5hO9*1d%7FlLTb6IAw`$^xO zI0x&ja$;?60*>+O<}xC3mSBx0>Op;ciW^J=g%NVWiks`*8O{35g*_d}?#_>a1cc^G z-oJSY3_erIfoJv^K#6wjNw7a^UR}VW5hoUj+HbqNk8u?phf*1b&2Cip6G%VP_9f6q z1G|9S2^jY<5y~eE(f$zJaFTeezB?u|fo<4Bb^VE=Q5|$G=5}o}-gnrt54?{Yk<&p8 zD*dbF&nLffhe6K)_!yaX<V5t(e}_L>6Sz$p3T%e~4YX^dIgfg^-TM`r-MQ`LI@y;H zb@E>V=e^nUI#_M^=v45(dKCE__L+VbpibzQ(MC_ycxk^<s-FCIoOeD<A`&s7t0j`f zx+e2BMgd22J865*R`p1Yo_ulstXlSD2<Y!Xuu##@FxoOvZ;O|LGLIqik9kpQL^2q^ z06%}q%saqMnYP8OqXJFz1RTYzn3POw6)GsOJT4GX0ZTE7XW169ty%<?9`oC&^RE{> zEc5lVEt04i?q^30TVg?`asp9MFe(BiTNA!ScV8`VP#4}02I<MVQgj9n5UY&_i88#T zg{4j#sEi=Ztz;kYPY!VYrc4|1)~G;!J|C|eX$Do6x_|~lrY*qta-J0_Kq_1nt1WY= zR3$pZ`}k|lVs7pjf3zm;uP>52E!_`O&bAJymjvi#@ww&HWj$RYL1G++2(OsR1w=PT z=U=dF?Lm#Ht2@BFYr`eGv*C{aD?h{cQKgf*QY~LZher8;8;L{7KFlSIe;B85mhGq# zKJAhvk$?(iW>_D)&)5bh1G<Ao5j-d?hIjvDW^2g0Ssv6Du8r=wBp{`))%5<2Em5u~ zL#~8_<vQMM+N75d5)eOMai@9hmAD>Jv(wEA$Q5he9eAy0a;`(p=Lomh5eEXOmcp1o zEd9wHY~~gKki}5W5JPI-5vO3xg<XnYxj9h{3SS!44KxX|w*(Q`m=dH3OfQ_`-FDi$ z-zOAN?(A9x?RXLuYRgKiQ9&Ohm+-~nhb!_m>{CWo**30lG&^hS6Iz~?#LORaF9&%X zQRm#bZ9m~_TTStH_PYJj9|Z>s1fLr4))+GwpZJAZo(+TK8tMC)K(#CMC@;HbrI!sL z1&kSM3I?!V&exqKn*_y225DAiT!5Zbz!Q*ts5Wf)xu5@IEKa}n7i&4K%cGPi_3<51 zP$&<9C;DRA%=GP48eQ|_Rwq@1V$Nap#J>!?gs?Y88r8OeC~Wd23sgYHCSw6j^twVZ zngBcG1ru9W!-##v#!<q97C*C;>Drcy9T??4<vQdCS<m}Z3QVlgH>9>O(jwYPv)qC$ zN2jXm0v+YkH|0^;SnWt#AA^XmofBKmeKgD0`4o;y#MCpF4@+$M-hJiE{|Dje<1>9( z3b}ohkMBzKR)?;=BDIelfa!%KLR@u;6&sC#eH%UUsV&w=2~ZMkj+09aMchvXP7Ql< z(NT`;7^O(+2KK287HRn}OjV0sSu(yH_n-#ZvC2rw%EjTwn?H9F?m$Z5>=G2G06EGh z`88x@T6YlGt}4VMM+R4K@*_LbxbQ|d9&c{2*Wa>Jv|R+4+@b7I5co&x3EGg7oR}I_ z&sh_T?^CO|mnZ@L`0euQ$?De|Nb44+2T<sq?T5AV?3R?pX182Fl?dwfGoY7(q5zlJ z_lLeeANaCd5^!2|Cn?U3ihT;((us{9DY~4{DAjV*wLQq|oa-GoXD<&gCzz0{Arldd z*MoFeUoWnnZrI9@SYBWnUc(#9=j@XqnE8SE>cr)p3wA`CM2;!AIjw0PUX>iav`$GG zyTGc5>(hwfT1-TWeFPY;9|8mU-X<+jUW*$QAeVLO3ti-4Puax&OIRw1cC^gPJ0<#< zM`G_(jklxgSW{bex;qI6P<={`OMY{<;Mc!rUAO~Aq~10>-jR<Pm@*5a{m?_%3xVNo z>Syp{wB8RVNFG3f7l<NAm^Aof?z8XMrc#b@H`esL>uxPCSs?Y?Uzt}-r=PK?I4|*l zBJq5EQ(z*!>qR=+V55vB*V12CGi_S*PU1-~hG*Ny71uFW&HD$Znlw+-sa}vvOw<n* zR!p|ux0xZy=Txxy14-pp;6dt43_Y|y!@<_wb(gGnehrYB%%b>;4AKNvai@;ztGoYt zEX}(oc0$M}?y~Zot?$7}u0WIQ(`+**)wAZ9=K{vI!4vnB2pKRBs~R>AZs2mw+sdWd zIJy~v*2k`q&CN<%^(`<Dy+NSPw*~0OSFT2p>ERR9)dn7bjujZ7iZrosr*NbTKW)cf zX9np1(r0?$XJm;cGg;@;M8mU(kkXQdH1Aq0v|@t^Nf7_L=F#yDg8PyBj1y@N)N7;J zZFgbzvTOGmo=TScF+Xnx)nb$jos*bUSCMn^aB5Vr!U41bbdo6p4)-l;&SMaViT;dZ z6BDJesH@op3^K{I?LL9gIo&5yK%REk`GQ*4hPWWt$l(5}v@jS%d>xCe8uerUZ2{tO z_SIKHBD#WMvoQV(v3QD{NV3GgB8wMwBFcoh60-Hp(n~VKRzG4l<lPIX1=l1{Bf_?9 zzVmW=PUYB$w<mX7yVhsb=5^bt?Ji<~sVK|keCg(_O+(rp{w;Vkm1z=Yre$AZ<Pph* z{nzNVO5J%mdfcc8NB>~$sWe@_QY%}=@=<U-V{~7Iwa;TyGtKtf^QyDA-04k~#CtJZ z%cVY2`$N4EjyX`@VmIF-Hz>6Z^b3|=-LC-1+4XCi=wa?0lsTR!%4a<^F7VxW&bk!G zHttJ8HBRyV=eHxtpn7{v?<`m0l<n4u*a|2ixer!8Csz;g&4vnYam}l%sdsr3`!oA= zk6>4lAiTu3`_Lj3=p>B}hhL8ZhYlU}4g}MU1>^+gv3&h>iIco^C0OJ>60s{}AZLH> z<MXAMo$V+f8!wQ7laQlCZl(5^5x~2jf6X=B1io#Dzt%ISQPY82z{<pxcb;OOfNiy; zY2&uZh5lbR@D6U0Vnhols%Q`Z04JpX^JJ}LYiXlr_#Yd1Igo$3f&YoewAo<$XR;12 zL#RB=w$SMzJ$~36Y{L{yCzNh)A&2x!PEFNNa}=dCbDsP5W+Wz&xRbCK@@O3(A(zcK z?1alni~DF{op`PPY2-{v;r*zAq205eCP+@(OPj;5>6;7+wurOW4G)+$>A7F^jce`O zn-0aQ-aXle<~eLo9JHm>&o+a_Yn$gczG?qXZw<!jnLEYpwP6SW@$i+z9KF2|2mZ#q zFZvai2N_{Rsfy~*ie_wG<c1oQd@Q~h8d+pZj0DSnt+K?fa|hixsic{mW7rSQ<vn@r zN}1w1o8B@#dVh+v2UZ5Xo=2ek!-4c(<iQJkvBgh-6=q|B$FwW8%cb{&Sedr&rdM!g z&%VjLU^Q+KMl5jc#Sy!JK&2g0tOPKU&NC*{E1LQKRvxP$QTVGz_m<_=rCuCQ0;KGH zVIU6zW;JBvkmqby?)k)Y$!4T3U_@lkB|}&E?djqtH)JW!w7K2xbmjaP^2@SC18A}X z)%{|W105ZEf=x&FZEdM%r_eq)uZ<tid^N(M$d;<VQLgC|F0;(QcvT}9qA6u^vv{9W z1w&Z84on@RQ9~l7WW^0tLDx$YDoqc~$-F7{7qmn+<6&Em&%hM%La;o;1@0_C4Ro1v za9RRkm=a_AZk^&!ss_!T+yU`V4&6S7r<~o!mp9k(Z3^T0qfQc?C-R8qIZ_!Vbbqd_ zGMHA0wM7gS$r47k5Kk#+c&8%u0!7iqB6-|aVBhJ+!pTa+*by5h4o+0b!pY$W;YkvY zlYYl1tm7NjDV2T;9wC9r@rX*v!HMgKHv^A$%AalvB_bqHj+S810f7Sh?SS6(fFI#W zZQRC+u-e$np8#_=3(rJ26)YzaS)hjYtzfe%q|Q7ZW)zn(c*r3Re+sv6zCvK?>SeUL z{ev8^h2u@1Ezly_{3?JR9l1@@JlB$cRaB{Q{KYHnV*O~*{Ci1{dciYJXvM!I><bxR z-5w_ofdY;v;FBszuwc6Z<Sz+Vf1oVOKmtfelw@`<5RR$6mOV!QIT?HrgR$fB<Ul+! zIzJr*E>VJ6f0C&A8;?*js!wjDa)t3WG8!H;T%F{mAy*wblG>brYR7r<4zb#?@N0dx zY9ew8;rl*SnG_B+sj6@S;wAM(Cx_<tUrp}7tg-jgmwiOi>z{T|y)Y&dBU1AqI>d?~ zQFmE26frcOXz7~ag&V1Bsg?zz?yBX{?S}AlLFHoG6{^?KB0+OUFzs=Uj9gs-4U&l^ zttPHZkiI4xl);?*3ST3X#~grD?*&X?k2V_eIp~P-6*5%lnpt3tOstmXJW3{;PoH{9 z*8(0oOON1KTStx(e=#U+P$Pt`C7P6!Ge{k37~xJfHRW*1ez|snJtb1QW4bh;9FtV# z&Hf`w59WfaQ#fm^Vn8A4fwWOk&O?<<H6@=4`7!~xD^1(}T-27_a~rv#O62n~LSnpx z+}JZIg0j(NZaiYN0uKEU6tX9YjQ1??wZz|b{1D?7k(~u}>zX6t)K)zB_x=~X*Mz+y zE|MtToyq2X(4?SnW>nDL8pPMY+uyjekEiYolLADVyO@e3Bk{dZ>roI!m5_9^P#g22 zN8O|EkpPQ(04$DxcE8iOcTvf(ulR;0wdaoF!@0?&J8UF^yr_%W<qEOkoM<G#SbR-^ zG`^GQ6nAA2Vz*&+Kfk)9!@6tR2XG3@($oX<-%g$2zSe2DdwQAg5I`f^8&PT+#@1YY zc=^Z%|DL8jnUYh{!7khy;Vg%oh_*vM_zc0miF3?<ODO8S7>CrTpw;b#_s`=hR#M>X zAv7EsR=qy4b>|?PhJQ8v*qwxgT;bmn!~-8tskJG^oJIp|^CCOWr>?fleL0{v={yX{ z68Jj@NL2hCqAn?QO}b8!-V^LHkXM<f;ro)^hOIx>$ZdX1t5-2<b4`>->&B}J^6BJ# z*(}2m@4L~vjl-x%5RleYzFkQSN7Nf~z5Eh~n}3g(fnW6r90k*ZqPDzEe8nu?TxB2f zA#yCez@p{A4r^mwxF{zdCi4@<PF>$9TDyv_`;KM&)ToJ8yq<K)cD|=O)y-^=Kt`PU z-oPR&qXtW(q-TgO{vxoHn$}vdeO^H{|K4@;^}^N70b4!(wY-BU#b{Zu`LRjx<fi+X zgR8m*m!Z0LKl;X1|5X|H_-$&u#X>(HAxomb%PucqEpb0hPmjqis4W#1_{&?~vhyxJ zbda({uL7B(p7V7mZ(00|Gt+cl-_zD1uLg%&>WEurm^f0q_3RAeI}+)sG>r`fO0QWl zhCCcfsoyEN3o@XZIadh)jg`nH-IAJu<>n?SpO}+Mn`=F}xPPam#8-d<cYxv!?_gpH zT1^>b<Yax1?J-Y7hqoQ_KzNCAXV~%W+P>JXXWSjhDNZ-hkrQmSEz0Idt*@92!1~yA zK>+ZZ8eqhuTT*RuMxnys(yh;QL_(Hq2Lp`-<T2fHu0CPz)bWB#xJly#4m)oXe^6ON z#IkBQj1CW^2M)8K+h%Sv6?j14L=|@Z%hcB!z4vPN(lU9T7PJz~OFg&p1Q$$VU0vZ( zjzGa3siwF3Ap(s52nY_I0}2}X;$3Pk>4b-n+?5tbv6ow=0_@MH?$F%dk8-fwg(%z{ z!#4#1;8zji^-*w`<`~Gcbk5%)Mm=&}Q!;yIg@K7>SlUZDxf+Hmh*so0!BPgA5iMuG z7<YhBftUQIarqZ3ukQi*PkeJUvtpSe{dBzj&<G<kallQ4=OIuKRVaHkPAFCI-a(LQ zQPFFFu?Qu1aSXAtftb8lO`JLY$eK_z*A~%p!-GC({xt(+gk?B*Fi6aW(+=VBu71PB zN-LUtQ14EhsU7#EkoKk=$(c#yY38jE>fl-%td&BI;}cQVXwO*mTE;Vfx}>$-MBFTx zqlZB^8?OsAuv<v709%b4!=_5u9~&10i$SfWv!X`)y{htExm-6?IRx1X(QTdnXt+Ss z#c&E|K3}|fVzvKbY<GSHRiM$@LJ>u1+ya*_%u&Zv6~4p!`mt($JZ#@Fw%O!ZHL<co z<YUp+0(z#zebbPsQ?0W6XrbXMno@M9@jkWJ^Ixpq|42#8Zara&KO6p~AJ*yLNlE_? z<n(W(q$Y*yf1*%7Ge1zs0vCe`AeYd=K}#E<mCVV{R^gbWlFqf&ZK843qzN)!c3hkn z=FJkC;WCQI&9Ay#u0N`4Xv5tQTAZ~nKJJkQU^k}_T9sjw8gdzJ9rOs05dAQKHKe=o zU3QsJ;8CR~XaBe)_FJ*X`49ZDRYcw6#-wWW59k7_S>G&&(io%IJV&%w_M3+l@8@ah z6^RZ4${Xd^7VSe8afP?WZC^s9N)aG3=BJ0y;ueB`0%rMyhElvyP6@7o@FK~?_k=?u zcjD`%+o=(6n$9NMHa{?hhuXw<U<(p!GC!a#tcVC-bpV^Pt{*!Wg&@+YrQ?q<_EY%& z<jqu;+<>o_NYiI*d_b-L((_DBOHB$6q6c3NZ!>fbE9X0~2IzZc3nw}UAJ^l&d;l{$ zE_U!@#&ii`wRu~y6=uXzW<DS{ZxY=_80R-<0im!*u+LD0rAfjvJ3i>x=&N18dRX|< zI=H}w{qcs4jJ$W;GIo^UDel54e@M*ifEWwVc~e-nnkZ)0r&ag(qwJ7V9x2r25s9rI zDK8uUL>y*}7d>ed?~!*^Ry_veS+h*xT!u8<E!Q{&XhyfOEV-7Yn*qhA!S^^s&NzIF zK$NST+B))TQwlTL6nMQ*S`EtCi<k4{g%Y-tO7M~Zf-q8xw8SAtwdvLi=4vZUs#4&X z24(N4k0d08gMC43IlNOTchpMl{^6QPZA^V(BZ^}VDvB^wPh1-tvyqoVjCqIJCENMy zP`?;O7*Ndw`31oHxLV@+x|rA`N69lJb363<zspGewZ?_{Z!|7vGb5M(UxiEKN8u{< zq@1ewX?p{}|M#(u|L2)MxxltI4n{&&KmMQpxOzN3{7aRq3d7=OsejkNeemsT%utjl zadEHmzMoA!$E-0nf4V1eerrpPSU)RE9OJuqQvG$^0ss!UD<HjTOxhgg#ar6}@O3ND zJS`nP^OF_U^*-^Pg<arc+C5Azi4=?^EZ5F&DMhXxhhBg`5^9~&vlmN{3<ywwLnOl{ z@_7m_)jW|JXe!E|DI0lZCoPtqd%xh&*L+{>+j**;uQN}x4(yRw2yOLCZK79)Ka*Y% zaaJ#3h**?A(woeZW)Ov1oO^`bjZh4}z#CIf@Fb{gmTdqcy=a4L5m=ia{ny8@?LD?B z00mXmV?{a+l*9xk6J01Fy=b6dqQ*@szD=@ErVXIi^gQVv3xubAbSd`0e2QYWojp;& zuea4MPEK|ncGv@7c_v6vF35O*hnx4^;Y58GAd4^VzMg;xf@TDvXZ|_Rz;8Qgk+jHT z^NhevR|L4;gHEttP#iW6A2~F|l@qry(c9MZrdS6Zx&d<{hv3eOZOFMOeRfQUw!Reo za4IsXPS`*vj<hh!wZR6xv=52o-Kt%!0P?hXktHG{@LF`fnd2pFlJ}zYYQ2z;N9lb9 zJyQ;%j<6^ZS^mFJ%oZx^HI-8LrX$XTFMDGkP70{=*@CqKh~Pf71(g5f2rjz8Q6z!A zOSj|(!XVfbpo)W77AjiWv<AS1CfOF5MH^)A4=|b1O#o1Ski)cK+3FQ|gUaqgL0)04 zvinZ9boF+kNpKYXh8cuYiJd>BIAtri)ungrn|AN5C}qv&#C}Qd6|F}N_n7&7*0Le4 zb(7SXHU9ag&TRQz!x&>Pfm=cay_fN7LNf&+%%X-5O=j6|Z4r#r9NK5txaWKf8M0l$ ze55^7wdAj|K!I+&p^nI&3l7Kl(?(DS15A(l)TL-%V-y>WE4E2*>BV4C;jk}Mqm_rw zhDGrtxe?%OPFu5ROTJelB#ZNhOC8&UtLGvHSIUk^HstSOcfp`T^)qjWN<YdO^}u^I zisvbYSY#lAAY<%=$4TpV7$f6WqQEG*RzGVS-W{LnE=KVqY4`~6t9|R63hDJmP;Z#% zvb}+WEINoky8eo~1z^;cf9*Cia4wij#DlyA1)5skf5%5Ah`S#pQ3W_P*)xXiu_Og6 z!Ymu`bnq3wx5h_7Y5a*M{er~o9_Qs?;euMl+${--`t^eKEd?VXeq}yqT+OY>tYkWK z*YZK)v;6eOhUfaxM&xQs(~>Nq2KiYtQ7k-wOY=MOSt=<b;A6(M<{e6>4Q}5`AcSVt z1-l&l<pQaesm6dx)NgFzn6q<iwOawvX@W+z$(qZqr0dmnT#BlWR)dQ^bMvWstIcNz z>$j$wqy*J^sIj%pde5Vev(FsxZUO0vlt0%h(-Zezw4^UqB~#f34GnVILvh!f<hgvT z+F5U<r3#tqo<U+tr8<6R!yG|gC1mnt@kx`>d!o}H_|3ypW6G(f^|DMQegVrND!ouQ z5;6cLPx)3sB=Zo}NlB8VwF!a!WUwQe4B+27iR2YE55fzI$xxvL)%<ed3@JTTSc>T5 z)YV}O=RLLoJ>dala<6$0Gw#n<e^Pv?PF|pxuEAY0c{A&`7Tx%*1^E2RW+~L`Duu^o zD)6Ig0&W;-v-u?L22kll1{i?*qsM{An^Hn5^X+b_5AQQs{yghjL0k{I4P8FAVF^wG zmR?!+gKx~_aXK?4mA4O#w+xBdnVqhUD{?!ZR;z)eWs5Q<Tc<5B&&Isyr4wstvLu*1 ziY(C|RZe#q(0mFm3?7;ZM9|z)VV`?OyV)W5xyO>gNQ%>}15K}SvrYKw)3XTRF$p>N z)Bxk|=!QVhT2V4q-|Mndmb?gq9Ab|qteOs<F{x!TW}KuOK>-)=Dfg@7r{+t-sZm>o zVApxtctQEql;I}B)8o}px>2k}Xfj5sEs6U+$p<OAJE2ntsjK^kJx1zcAGw`|Z=id> z`9xSHoU2)pHoqP-_RH#50=o+VSD^YNwJ8})WmV5*W4Q#Ps*ZUlkH5+gX{yUE72u9z z-oG&Lt=&{8)=#n1v-a`f)x>VDeWhFN7gG`=@Es`}=0d&rggaBiA&$eD(lxod@WN{4 z&}K}#*?2ka5Q)G>Xy%@VftHl<UaYNzzgkRe=Fr;L-zvAI{umvnnyIOajSt}Ug<Ji~ zQ|WQ>bVgQ01JTm(rlXYYbr89f`#<7~ixeub*0IS{s~bAJF)9DXG%!ln9U{|VmduK_ zt{+Jjua?m@MZpQe!TLw11_b^n7^0ijq(d-#>|CD-a5BX8cf^t{5XkWydT3gC4vZ$D zC!S7&AwB1|kWrYj(|AXb&wHD7Z*ANIjho8rQ~td-`{0ryHk0a2UQ3RKt-?08V{NU{ zvnyu72HIrhr|#7hQ(uJyGgZueorvtJ6@lr>tIo8J#0C1}930cDt`qB6Y23mra2EWg zXkOpk)Jv_+jul&Z!a|A>=6wv|h;B+ch>Y4Rzu8dzm`=~%CFG<8l|v6kJNF{TCKHZa zKG0!*6D_8+TZnrN8j_~CndAIkD#H3abAd3)6)jIWa-_#eM{`r`7?(hwPQb@SFU`6G zrp@OL;o80Qe6X4!zLOG0Na0YUc8i7DS{H<%Av0^9LUpTTuGo%&9{vn!J-YM5qird^ zv{E@L$Yy;wzB28v$wJXf@TY<PYarb_uUreiyS0VvdPFk7=lMlVcOSBC39H!C=ec(v zD2<zRd5inWgthb9az)m|iZL^b_x7$6al83(6-8>*a`@@}Y0d?m<?J{?e(<*t<GVfV z`_9+*JUp<7hTqwdswEbiR4({FR`wPeyV~wWt@ijDBLVwbG%|;-iF2EnY{>l{D=S!| z#%T&psGIfP<Fn1>y4)l&d=*aR+;@C3d)JeQ`O@>9C;pwqACT;kos$vwcO+TEa);pK zWPgs$9~B<KBs7isuTVT*%`EKi|KcngiL)28J5gX!h6MmfW%;2$|JxDk9~<<4j6qq? z|8fjk!m?1<5WQpk2v<Wx8N-6!<Jsy<uQZq(Qdupu6r~)JFRx>2CYu{zjmO{A`g(Vo z5x^8<3ATJ<5h?O7JiR(yaeRJ&?&;K~QRxWb?fH1^_`ZnG8C!}+;0<F$HK7puORRC1 zIO#SDjuKh;dVzG$7*9giJE}E|CK>x>D7byp5c_`U|4uE9;Wi^Uo{)--gH52+QUs=c ziF8LlCMJj{nrTQ3wrUUgG-Of{d4sMRs!UK)H#5pTlWfl-)o<%Y@!~(iMEpst8(1>J z!kI#anqU?W)#Hmd%yj_ZJ$$8_S_vQ<zCv7hijBYDA!vv%BJSB|It<9*LAQ|0^EP(& zt2PD0?%fKj1})goABZBYHZhD7b@!Qf_t@4YWyCubY*Ip2E83g$qt}>?o}7mJLgEUp z*C8_j^F<5wZf(zF>}@a9A7jv&%}N`l^*n@03W6}kRPtBvfXOwt$+ND)O;Ik#dPY%N zu6Hs1S64?zgZvfai~-)GlrrJ3ZUvR8W2seMhh$?znbHsz{L70A5XO0uYjhM7rUJ(F z`hx?IiD0|*yyMnOB;Y#-g5Hc8J`5r{TX6E1Oh7qa1V1uf@j-7Gd8E*Ie7Ln#VQ5(x zuq=f?=wk>lq^j-Wv(G;|f0?BlnL9Yauf&<Kb6>Dw*i%5E2OlxmOl4W*9x_yGg7SDL z6PxV7Ur4u@ESe(<0nvxRg3|lw$!3J1Qr$M)?Wi<Eae2`<Aoj<KUeph2LKTvW>`|pJ zkqk2EFq<46a_yl=C03*n0M#rg<v??+c~=P{CNnC(*k0NK={&Cz%x17)iWjzbz!tuH z?;l+`&?8}xTy{Mw%k!S^6w2O^plW|=Jg3p>&NFqiGhs-j`{qDv<!oI2{*YgQ#-5+* zGF(N0f)}TT%7Qf<Mm+Gk3h6WwS0kNhX+6H#hy>g&ElPp}s0n`>1tM%_EzlWRMR7~` zgC(l??PXMmxMJU>K8g<_R?-*Ry=)$pi3H`sStISZUQToQ%^uLM_`;_nzF^kU7J7(3 z`C0@3B_I8=2iUR3c6GLvc>wUdP07{<=3pbQ8EEqKyl_K^Nk!|m0Dz@}&^70SK5n)e zCBGBzB|rAlh%D?6$xA+j8rZOCdh1xW_x4jhfkoI4N=aqj5HerpM2WCAgP;WuK*N<@ z3L4XKWfF*PuL{rvZ~$pgZ}!Kss!P&^lBrb^)kEP3$&E8O21s(;#m?XIGkd}FlYl5{ z=k{%@1K$}}8UX@%bXxgXv8~*D(PzVT-PIB8A#U!2+tJMSa-^hYN*Op>dklJbV8}L~ z%{&hWYGZVL!K(dJmO24fuLRy2Z3OB%C8!Nt8)}p|avunQaFisDG_6S-N2DdWhP9&= zN*4Xw_=5fuBAB^8oCg)y6P*kZC%ZTENfp;26zfC^R4c>?LLr#;&oreVW3Ff<K50zv zyu^1LX<bE8WpojBKxKSLnnr^2!cPwq6n!mNtlr16%-t#?`!Qr`E#x@l_!2Z0a|?pz z?MD(_D1%@zvm}s=xW(ZR6jj95T&w}`H@@qzd-vogL+}T0VRzJ6NxW^LJ0um;(VwZg zMGC^>Y)9tE!HWsXLGZncgS)j<b*epOB7?}J7-dVVzZVu`Ny6qEeSNCSPTqpuWLT|V z#X*9T;%_(>Cr5E=Lc6SL+2XR9%0o~{;>#8OjTRGQPPyQ^7#{QP?!)%}uRlxZhD0VJ zGM|h53Jis@Qghy+wHD$2ktq|&dF~`b%=YN`juNvs_PFzoa&<XimYVo`LgS^={+ril zM%efUDWV0JvECd#iqL$D3-X?pGWc+)h7BcVad*=ttdQJ#cAXRM8cOzjK`vK<7`Ei! zPth`c>K+p0MxX@~V<Ol3Y?#_+8#k#Q6wzymhGB+XSU4tOU>(M|w7QhP;N-k26346% zfj7u7w{JT+$t6LuOv(&M%5qd2$8$?*NvQ=qk{@R6qgJ*3m;2lJdR?>C`ZR0dHz?93 zk&^eLV+M#{Giz=Z=#)Wt<o(#s-e2+;Q7or*e-f5jvhRM!B9Gg|TJ8KYFz_87feKwN zGl)HI1>kYg$%^fg=@CV55w3|6pw&UG6flwyXu7ei&FGRbPLP+=rzmwCwx2MBNo+*n z)w~;!@P-uqu)HU1(euDg;YVt9Fa*NPGC_~Js()V`P=+9`23IcGTv2Of_4s%KmFKZ8 zAGb;<tj{+M(u<|UA&+MjX#uO!iBTuXRj(e^$|_e^pRUsE$(`Vh8_U9IJvE6q-C7@5 z>CdlS3rZ5-jBm7RhQx^~^vQ#yc5WZE6Bk6cT#w3(S3$irDLY(JkK&TUJ1?R;O6ei_ zc=0Cr*u84%UGrtI*iVIJH2cfapi^-beIx^f8X_sFz*1ZIRVFdKf`-Pyelk;I4dLk$ z{bihH0+%@45TYlmkTDmxTv4Kl>8pE15!6W^>#71rwaSi;8N~hsnEd8nV_2ZDADOCJ zyIc8jA-?tmwfT7_8JsvBmdvVjc#7%9va$2p<Zx)ID|u%t?*O#P4Y&Mo{U_XkaS;lT zz@dU(5tja)3r=85KuGm7n2keoqPVhwbXH=2b<b%7C48LPA}_>G16}8;&ZsKTO0B{K zIISqRM3<vv;Nf!Vq@Pl!l0IpnMAl<>*fzVhh{4xFV_1s66;|McsALPDXUQ85(Tul7 zpmT1Eb3)V!9uruhJ2cM~ao1H`#F*4ETAu-kSZmwa)uSG0i?Bj>@w4ywNLq%ZL%*v< z=e$cX1A9e02yqw^$&63mcy3itf4Pw0(R{fK2mBBKZd|oiq(W=D94_T^jM36D5MGP< zG<c|YBC5c^OaT?S{Elx(cj@5WO8?;DooyK)2gB9XbmPVbUXPR>QXp9gSZl$)sdQew zqsg-c37SQ8&WiWO@-^C6LXs(hE^Q9J`BMy#nGkunln}fO3^fYN1Y~yF>JdwRAo-GS z!a_-8{5U_)Vvvuxr7tu~zapHLoH_1kY*=g}QdQzcN9rjK3r?SthuUT3jIsQz8Xyp! z3alzIFTlWuL0&D_o%CqbRSq>5Gtc3SOb>S`7aSFoqLyZ(nEJ*R#iMkFrteD5y!G6V zL_mo2bhqN%^FlC7mx>7EY2m!oCgxRHFslywTnKXA-?;w6Y6vnZwpH#Y;6izBCo#;j zp!+j&$FGTDbPaJ0-5d(H7(fPAsbp}lSxVj=>}d+IAdh;@fA{@}O9*_^pRpm%SY{|* zr^`(gO&o2Z?`51G3LvF2dYP1EeNIq8@HBl}yFwMx)Cs>}ENfAOh$|J0MHOJ<VE80B z4Z0;3-gd|4Qca_$`H3ck8i(EeMrhCpm5;bI|3W=R*vzh7*Y{bBLSRE4!44*hNG(js z*}$W((xKg-izN4k9ZM6s8uZZ9o_$^gyc0QM6ufzGohr|e2yYvf6ezwwaciZJm50a} zo|o-Cowwqo<rqD>Bw!2$Bf91{UdDmf^}ahD$<_Jiij~OeXz^O@HVeI~0zg?~6CzXb z#&19m*n8*Fmbbx}q5Ba`jhO6V-3Uqt$9t9R%f+Q<=y@Ol#64V`PmpHuideZ^yAj|V z-dN%pREVpwLlh*t+^uhmE<I)LP|xM207R!Pm{5o=7aXs2vo~p_$lrdU3b@*cTtoMn z;_<jCA@rkFTOu9Px^f;iYOVd-@Gt|1*&xU8`e3eA#7P=Om;?qL0|NFztP#6-7g;Gx zu(}bb@_sHZ_Ta!wqDj?0E?C!UUY+|-0-y1t;FMynvI%7Y?_T-S*D~UR(-gR@y3Xt# z3!PMcVDZK_dZ$HP7tPn8r4C`mIEi=e6m2Uh-MPU0cnv3I_wceS+;9Sf=oirX@q>Fn zW64Yn1VBo{*Jqu2DaNZ6zV`n7TE_h2h=u__$GAosmoqgg212Wf|4IUlThep2-MP02 zJxbl!3ain@|2Lt#<f2vnuq~dkF-{>(JbW&2Pk?zbL@^ofK`p34^a8F1VHUhYUhca_ zMRC`TItcS$TBLeyO)o_yh~k+XPqtuRRxVCFZRqlZX7wo~F6IfBw83lvX?nPO$1(}o zr=SVSD${TF-L(24>WbKFuOFHjwPljxg++a%kBw2_k?PNmbGMwd68pfPD&48O15*JP zd2ua#4|$Ac!e%qTLk2AysirQ{m};@4wx95liBJ8RZEhNHtFhb|M5Vk%y;PySE)o!; z=UTjBtkQZ&8x$nPslsW}iLJjedJJQWg`L)`TvAQXBQmVJ1|m+$JQmPQo*vnu9+chh zzi@~Z((qTD+#cZJ%E`*lDU<gX=g1GkjtiE(ibQH?Q8iJYfoLYxug$!qSt7j#inyAz z-+E|a70tL1p}l>ne7W+eXlMTVeBNHasYPZGrF>6)@+hce>~>b0w6+<%WCttzOoZQ} zz!E1`eQ8vX`96=jW~Ou<^vBYnIL}J}xosnNRyoEwtf5)P?~o0NXz?doUAem;o5cDR zm;3HFJbE7#e(0=z&xzO?4IGq=6EH8veVI7DZ-gryht*cc4n(uvI+TfZVi$!U=JVB} zo%D&Q2cdq6;Z)7l`)Ll#!<CLUC^=9XM-(%)WXYEq>3e&Fk$9yXH0L@#Fm=+&q4=!D zVsXgyCL*XfFNQJ``AzL&WGHn0EwZlWigG!H=HzsGU3$LU^t3=~Aue^-KoKGLT@F08 z-;>mZGn<S1@z4T4PF@=9Hz6BoOik8=mP`J6u)K>=D7#mRT^)_jQywOQaMXC%Nkrlg zTXmG|+=xIehoP+K({1PujKPomY80l#slP*ac|9kJaY}o`lAxw~NUp>hTdA*Veq$@! z_D4J1dtYJpQ8s|2{(NSN`F4{MYf#SKYm!jN8Vl>b>gM^R{ZB{!Kjbdxs2OMMPx#r? zk9X+5zp+Z1{j{L{-#(^)L+v&x$=PiDP`k<ALrZk{>=K7pOKM!e*5O8>Dg9PJ&_a5% z^K1J236x@O%)uYeI22>a7u4GW!)Ozo*POUL@1kFK7IA2MHy0%h-=2ZCpgHz|ieeG- zn6eVJ?5wqifPQAc3cqpbn{-h?;8~JuWCsjcg5Zw$Z;-EC!{_n2a#=LRUfA8v>xa8I zX0bH;bIJpmH~bY*#rv;PdhsYwQCkZUmxFdCi@|r=rasM`!i&c}rc^W;ejz0h*fN@@ zIOya87l>zF-L%AONZ+`$^5sDSzFp#wmERLbzwnt!ywk;+8=^9*T4oq!;vy+ohGl7l zk_E6_tAnSu`TAjCE@Dk?etgpf=MCGCtgxv_SD9AT%jaT9W1uOJVkj{!7BzZC2~Za0 zPU-TahW{R*LzzT3B{+83Tzv%^xn6|2`?DOSO&hsHU4`Hiq^C>Wu=v#75UI>ByRjEu zIA@6!!Ur#CF>EwO)QSnVWO<0@gaqH@u+Z}1dCn*j;4q^_8JG7oyV7>eT{}?ZBm``m ze%{R~8Rg%WEuwO;lGcE^s)yB>Jdwmc_N590w<=lUb~w&6<lM{c@@ES={0#cHL|S{h zZqO5}Vd3P6;(dSmOCMGu<hOEu-R#QJh_5;Z@MmXGSJI-|UBbCBpLB{d6Nh-qfewee zQ77*zX4pdD@8QApH_;0V=(m`^+%>jZ6~NqmXz6Crq;ACZ+oY#R#+#H~?<ZL~{PmG2 z$(pKQnEYOp@#21h22QN0hIft&W19drnSPQ`Y(+e5Cj_-iNvP{t1-QRlJb03uuCKZx z?9vV19BCTD;;|N=TpAQwNEC~1c$r5n*mMfC^*$I*u%jhz*qPVmC0x^le2>vAl}v^D z6s*g?<=nOy4@|n!(w)|M2uXGLKa8()GSk@7JKozlk^(5dtM9~z+KbcVn=K|xR3@Um zPA1<;;Z-27Yw9%G6a!hvlMCeD-QVkHo*sP#T*aRE`I2cLF}}`RSh3@AWgKr#X^OxC zapx7uzrhK~pG^_e^3mFt^OLM+r=^zdCdGnO)~$Y>^`+Q>wdwhrJa{kNU6a`B^IOQ~ zx)Wx~UqVYQXzVw;b<YNK{x8PfDaz6=Y1>WPwr$(CZQHhOSK791+gWM5(v_9g&bNF2 z-Tm*;@AvI>unwO!#(L(Q5i=t0>s~ACz&Om@bhE4_Bo&2wZO*Dx?!M;TJzf2Hvacl$ zvONQP$f=4IxdZ2Sb?8!Uk7jgDsx!fnz1j8c?TS1zxI+I$v~7>$n6V!}jCO$Wio^E> z`|rKZ_`TQbH;uxVzMIuF-`<9Q$0hq`v+lb(Wv43nuic*d-!=LzD*tR*Z@r_IK~+#5 zhCg%tY^+3qtkBiONPVnuO18e(-xzR%S{eT8Z8|Kbjgehqg9dEe?eTuPro*TEZHkwJ z*USBWN**Nq+$bWE`VSLN@UA1U6CDDESc9l_b{Sd?QFsXJDfIG!yqLYxbjaMngfa@) zL6E;pJl7{OjAOI*3)cC<>na0KHv?4Apa$)f_mrbLK<Ok0snD}0Q1%lyOXkohs8Wq* z(7!jj@ApQ(_fwzc5Qh{)<*K<`{cEF3>l7()0{VK^MFP!5LU$`}DB*%B#ZDW6HOZ!q zzAUJ}gcbfkJMi;nuO$Z|xgHP*0(-z>cK^2Uv_vTh!UQHB9f^<>Ln{5#*WHyX$HA9W zu{>?_)x*xL*0h`!aia+0BDW3FE^KO@O617p&BBLbK{K5i7L%n@5BmeUy{on#A6;l> zyjQzwduTw)G_+sdCX|)PJhR5&;3I=9@RopKl_Iuv-btP!;|KMwOFU;RmM5phy-;Z_ zbHWd$L-z4a72TqSB1o=>O-J`Yw<G<7$By9hggAkun3s&C0G(t<77&q>(N$*IcU2v8 zHx9n|HUKQCne4M%JsZRMa{=d9h1)-R4xaXzB}b!z8p1z{rrow&{SVVF><0L|A_}58 z8aga+udw_<)X>jRZKAoZv6@xH2yJARs@BQuP`g2M=u|p3OeHKtaL?)T06{SiOYS&T zOldP5>1LLZF(ZlWz#sH_i|s=<*emq6x$t@ClUEGpIOaD1sVc>E`DZxw$J<#Yk{l1D zb|Q;N>s9mXjO3XTr&GtznvRYxLqaz>hFRQpqj-u+`n)1NDo(6;x^YO_<m3&iKvLvV zM#_XRx2XGsx`}XN>2Jb<Khna?KFugTjZoA~v8OyeiaNw^$&ry4;<dHEE{=C<Gxlb; z>+AbA^dZc%NUCqrf=zpt{lO&Sg89Vf7DS)^!v)v+ySt48zC%3nt=-H*{oXYHOF7rs zS@0kFP(drhf5R;h|3=064Y%0jK=5nz2W?}Z>X2M|Y_V)qurak>R>$S;5=DS$93HkY zRg_kej1m2OgM*h$A$<aHyPp@!_C7hBX2AEGW7B+^sVY+cdXY!(5t@P(LzD%T0~P-R z7YVz67Ds{+3PYS**LNU6AQ%|15KQotUNB%3bn?PQh=`R8QHE1wJ<U-->E-@g&dOCE zV=(%Y@>R&W8P=Vm1n9V5JELD7aTbJ#vb}x=38@rOEMCMWg|(>g)@gK{S8@mh)*=RR z|Hjtc3{!3abw*R=cf1l2L_Pc+u$%>03{`h2QPHUg)GQ@30=PKhP(eSV)(sRh6FzX} zm4Fv<0{7XblU`DOD2YRJKTZ=k&eZ+a{;6ymHYwq$1yYg;QYm3Og3Mljbn)rV>MdnE z*)w7iv}i16r<z`C<NMN;8<QAl3WiY6l(MM!lg6|5yq}~4(!HXWxNeb2;MXi8dimHN zdS8Ww^FQrU?;)d}L7ZH|c*gs)S9wxeLW}m&m6ifjB>H*5sH=%8f^AX1C;*+pw{~yY zkh$B)HdkBwG2~MEiqhF1P=^DCbuKQp6e&!b1?^;+j>^T2ij*;1_@0P5J3xi=KdD0C z`B6nK)4E`&Ax#VKw^+Y;h_eBPW6NMkS?yT`%g#Hfok`0fl0oArqQP0@K_$9*Q&FhH zv?@(e9wifrb?EWWAghvGytsA=f{+PN0TjanxqQFy-myz`#<4ZotyCCr5@Q5b)0utR z$}A0+7>4o>&6nMxg;-plRMRd%ls|mcQa2_U>c*-aw&`Z<FS{vNi`K4obFa-+q^_N< zCPPO<i_&4=y$nJ05?UH`D=DCr#>#EQ4OwFEkh!?U(Mkd=Z{+-BhiW=CP<1^?;$<(n zs@QTIJimroLi8cMMph)2rhd%l0bgD9!e-<dFDF!}xLG0T>?jPnI%34-7?Wt&A(+xF z1cq#@H0=BguF>spRcfi=rmaVtuvVM$!p|vcGY!k=j453iA1FEash$!KiT)$TPFCGz zs<zy>Q~nIAREB<%a7_h-;Vr%N&riZJ>5NastuV6HL>M8agtfi$CE#tFC-CVG<`kj( zPa8f)Xi!r-;YhH4$8Em?>9#>Gj9`0@v5SuRt<210pTnOZ@rg?Zxs^?3<xQ&?rfaDn z?Nx)0o1XKKP6_O|gDN{o7_p_}u6vhy;PL!Z#Y20UA(z<hRhbVZI=hTisya<F^Ex=) z11G<fMvhtR;?rtNLmaQCJ;;3<F=c6qGmkcx6?ewtu2B+J{6?%fvJVqrh08gXdv-{p zV;H9IMLhB9^z+Ooo2z&^#MGw4cxT!Gi{iTxD0+2^##!)ibtY^C^&d$%QC47r_(J&d zljQyIaa(qrTqz$<X56uLnrc#^>V`<hL;<K41-SJ=00WZ`#ZIf3^fK#gQB&=z6j_7Y z8!)uJ<yIOezp%}yTw7}zb@&mpSEwo-9>IN_UCuZCy_GXJpaoxCwA{ZsdZ(JNiD#OK zO)@QTgT0D80~mq3nzniBRup?Qv3gfe>x+}#mR-?44O%huK!ew<Izu=Y7^?2P4RjNP zt0;thM}KIWL=P<Z9LfLqZp!I{eJ*!lya{^?tpln$eGX&C22UmO<LPm-(l}ii2@9R) zy?!!i%m%IaoYDHC=1<Bq;;#H+8sX4egzla+dO@pDDt$N9IHD1KQvgW%)2wsy62=F& z=PKHP8IWS@Uq5S2lhHHSu!C9Yyz;a4=Bl~pOpv&{w{Xg*IA6PMRbThi`_@e6_cMUM zVDocFzh<-%2P+H=Ia8N0Rx5`!BChh>iJh*Y_t*L|*l+zl7`D-%g+ETM;4GGvx=u{k zwWCmas<NA$b!Jr~{qR(QqqDmR9e6MPay^j;X(fF5Yxr-$r1`$Z^bx8zzzd(O7<FN( z0jjrdfh(zf32|@62Koa@L%`b<)#76UHv&nOaND2o-7B15ifSwY!f3X9`?}aZq>|UF zq-)25oU2+L_#`X0Q~cWFSG5y53YqaIK~D86Gbf*e+Oud(xk)e0sVmrX{9fpvOzn@O z)HwlELBLGvy=@piFnlliRDR=eE5Z-!JSO|C53^M)CQ(~3b7*`Rg?EP6wA~Y`$6<+$ z_*=4XL0V#gMfHS_xeIf)&ziG;>Y3I82moBeKc5YQCs1^tEuQg^=9kUPY>dH~fhiM( zYlU27D|-sX#O98q#NHeQ%=Y7XJ>z?q6mqKo_1M;j4mGQ==ekc6)TCVU!aYg-Jx?)2 zIW`njtdhTgIaI(KwH_kJkxtuv6V~Nb-bF$jaW47Xzd-+;Teg4ePo&oll%u|L%b{<> z`2RV#R5mqqGPd|vZn^Z|)h8_~vi4Yv2)s>wMj;VylE@0R2ogkI7L|)4B!a&nF_{Cj z>#m-IQB+@UaJ?Zlm5voEbRh@4cDg<7&8A;MHM6R{-}j&M_%U&YKCl9<j}<+^y&(N) zacDwC4A2HbU)+!Ix=R5DN25`-Fl0v^uuqg6o{2c9!Wl#_Lew07az<B+I-^^(zTL`# zQ>>$<JR(56X#x2=vEYReL6#&2QO4bpymP5;Dt4E5HyDwkBr_~RgY0{`a<YS=a^TYJ z9@eGa2JPWH1}k9$k$L+gU3qXZ-l=KJ^Wiu|PaguEZ2n+sz$dnCP3d`5h}n4PrlvGR z0)`_yo40d7ockJDnqi{LaAq(Qipww}F?0)`{{3J>bsL!}HKc<xN=~8qN0rdeRI^C> z&|YLn&DjM`*D7{oEMRs>N!uZk+3jcP7D%6tByZWzoVS_*!e)>9G_}(}n)r&WMj%Wx zO~|EXyh>fiR<|S6;X-(|0Uhf|8b|l0u!=M*Oq6)k0hNO&_w<bk$zZ*l1xIM`{PCTF zJ1P|q?E3BaGuW1ZQO*E0o#CZ@s1FugRPUV#WN8YgB3TB(BZl&!C)$q2s@3B1(uPxh z+|e7L-&QO+n^6^qvD5Mdb(YhFE8O)BCX0srnciT<c?rt~lA8V{C7JuY8%(d;qRM)S z{3oj060s$Bn}uNHVM9mnXG}N3ZO~6xYhux$#W-sWm<&7BBy^vO(~Np{@oaj42lB7* z6Pe;IPeo=-8x}n#3)4Y=K&n_PR+F{9Ajt4^tE}*UdC3#h<`;Q7+oCr$NB7{p;PhzD z7jD;1uCyHuK%blCDP(FuO7HXUZu`*gP<Xk^u#mo9vU%Z`-Jf1^PSJ(+0secP|HXDb z5`WJd{9fZ$NdMb9|Nj6z{>Iy&M_t?gfCI%ZOy5yO)hWHi<&{f@dkSF14WtCRxyq^~ zN{C^(DxtV_s9Ecw?}oD#d9bD=bN$=jb8WX{_i|2uF}&I9b^ixE|3}3jI0nB1M6$-c z2DOA)K7L40Mg#{)Qt%|1|Gh%6oI~)CQZ(m}Zz|6|S(XS<NG^nDHOH1?g$UA+=3z{` zm$=<w`OlCyl3>wW7{@|F;cs!3Ka^*s;BfgMQLG3;I8HD0he0tXT1Of%<p~iSkp;Oj z-1h~(idn)FhHAn@W3SGr0CbSsXQGHiG@sEvEAeoNU@%L>s##c&!ZZH`g>0?^<F`1s zWM1N{VDM^f>iKu4PIyCs;V5c~G;i_M|2A8#$`FMD^g}@8g8)te^ouF7^tluHotq0a zm{WJxUN$97u$=ZF&#J{KYQHXFfC-Y*iFi!nGu^SoFioN!C-B`2$Ed$=w#XzX?yWjc z*$?nrWLJT0P1)YL{~L@{Qw3|>0MLDu`*WU=*KLbd#3^UOLstBccBVo%qJvgVG24Kd zCQcGif|h6xuZ^{ZYKaq$nUWFJt`Wp5#x}%kpda;ccx3jg+1*kZ=js(~vAQ)<Fl}<e z&|>CQg9ODD@!%=iL6Q4AiXcp6q!t%;0)?3P4HNy3WSOQ2eQ@Z(6R~Wad?Vi`V?!e_ zydjKXm{~-zRAYwpYbJuW=A$iY9RptlPQNXa^9FIVXVo}!vf4Yi4!rv-Gq@50`(TTe zjOgp{&i@<miL_>yTko&b;hG6@4?%AyL-abMk_uoO1w_o3KzgN*OI-dFGqqOEgg#X{ zy|LcH9~iB&)Uy4*ZX499ZX^t=PN8ohhAcoMHR-Zr=#RAFbDGrZ#$XhWNyE8!bAZ27 z5mdh@+GD1~XaQ_+8<YH{cmWJZp$-X+x7G5*dm~4toLrv6rX&N==Hg*D@3<U-*o1~L zxp^HI9cFM#mT(q|et*CBs*Vvr^i@IgE&+2e5u9k*N&W_kDZ0H5IQm&)3=GLiBmmiP zzO5#%N2(l)hCQ;4nO{-V#;}JQV8O&cHGWCRyt5=5iA4%lTfw@efEVEm0*_A>Yrm9u z5DbC;(2uuRm>X}fsvz=O(_*Ux;?za+*3)y6zTETa*}0xxtc1t7CcT{iorPwM=Vj~d zJ6Gb7!DDw9^6R^TyMb(45qLz<f%D3_PC(`JME%)?6^jT(TJ^LizWuZQV{^~UhqWD# zv78!jM&=MNLjgvKIjx&l3)dI>CFf_mHz&rU_F)lM9LdNBLxckh*rEw`Bi0mw8sf|g zVi<X@_odesn@caLNYPWdJNGZR)r5y3C@=V~&wS@i<^oMvFz^|3DAIya$|TVZ>a+7J zz$Q<j@cb~jB3Cxod8R`H(#^ttxRFw(bjyd@4yUzgFW=8@J{5?>je<8bLtKua^c(t? zn`+-N1S+z*xB=t#46}OOMqJ_vX0yx6k613v3#B*A&CeyuR$FAEw*3nQ#T#paP0o$Z zU$HXm^vll;Y4w^1$A?LbD>&-#^siqH6#nhj*Js1_=$%#0Sw?SEJvwIwa0w#>ip%!9 zs=vd@qB-+5#)b1K5|WQ5a;n<qti7dHQnO9fr2GnS!sL4v&!<j)nw7Mx)^V_>JT@-p z7O)|7Ex9*O>i;;UE~~8w2XikW`B3k4)LNT|vA5j-be^b6fPS!LX@8UfXme*Iq&Z$6 zV_u$gm~(CHZMlXi61igy$Ew*Kzt+up@8Oipcn}ji$m@DUwQ>9?alypRv^}=_@*o(* z?z-~HpAG=)hFBycU0Xe}yrQ#2yl4}@Jnr;~+`1-t+(=)OhtUuyQ?Ze4)9-WLG<Ne- ze6Mc03+TP`&+)}|xjrB2zH8cM(|@jHe%pNS#({hNW4PlgRujp0t~5{6F%-$Z1K`7U z)5`$?YFgX%r`HV}?5UdP$|&ppSs02ZI{bt#Rtn*<<W=dzN%7-9NSJ@chYfAN$G^;P z7{6l#@&8yd`2U6eZ&CRNVC*jpW`&THfv%$dxy5Rj+AkInQB38$1V_5z<Ob$VN>Syn zw^=d;h4alc_P5@*>#m#G7bn$J)vYU^U+?$yVQ?~1AhoH&$24a^I+QdhLPQL~1{W{% zM{wESNl+6qG)qEk_^rZR$=<E*w;;qYY80ww@BMPCsgzuHuh<t*zB7zeJ9rV!YOpu8 zA3ZJ=xIkjCG3h%Csz<7YS;2~`nM_24E=UiNIfWQ}d_0b!QZaC~eTMU|3qc0K-(!~2 zMPz7x$}QjLypM$6;P^EJ#6FI5!k}+I<-yOSTSM99l3;fA(QQp>cnOR)YO%m$e0}qc zdWtos%V=RR5rX?G31VZYc4(^TNA;9ynuZ@*b-sW(ggubQ5!cQ16Y0FM8u1<S8%$lm ziCo*e!K&c~)x#F{CUh^F5}sX+!fXw(Jo97Q$uC$b_LN|ctDNye(f$nM`5>s0tt?#S z{U&g=6mT+V0S_*m(J&23=gWm?&DT~k$Ou+hzcXY}f|6f~l|kY-*uvQ2GqNOXl4=6G z1DV>vuV{^J^`3!tjw!gRgw{v|PnVali=QniA-HF<+>o5>lg0Df^=_LbAE6*kS-_gf zMQ?$V6&<lmEI1Jhb@p{(!sed2&33G!*fqw`?aaE^=qt>W{;)ld7H)Gh)=3TGVT$$K z$v1$2v0OP0q`p}-59eg!dljXyQpn2t!v$P_CxnvF`X2r1)A1+8`2%Ti{^qH`VDSJ9 z9T(h}q-d4+<^~lu#1GQaVb66glvrmVarODv@BirjG=I-4<{S@nZ+{oJIyL`ZHU7_v z@IPow-}tkC<?Y`8eP;2B=dYQ?*1VazGlf~HTvm_YsW6vZqc-iqz`!IGlu=HQRj^nl z6Nx4`k7|!?H=ZtSouunLLXUh_W^HEmF0a{3WpiC!4^z7*?Dw%d^8O#^BVX$X{E_$A zlw_7l<Hh5mT&N?mDbbcF(ugKXN6}UMN5u%DQ1r#^)P>d=kpt%v*)+8W7DRD{kupw{ zd=oVBiz40Ye!&_avJXa0_iFFCbi*|5=#p9yp#5niN2`(9=tNQhq3b+xK_)~aOjLFe znL-5}JhO!t6p%)Y62g>)K4WI59(2f#X>^T|f&4OsL_oK`p5%uvZ~-hmTtuPf*x<Rv znt=D?BP7X!gu;%lbrbnKVCV06V!J4V_%4@@9~@|9&qU~DOh49hVD4VvpUc`B5J{6g z5GNg@4t^UvlrB85Swud$5hv@TDVFL}_U{x%9Atmh?CGFjT{m?L?Fe3b-n4~IU#}X~ z2<A;<n6}y}>`b9aBF>oDBgoht6?Lrtcp-_dJz_jJCJxoaqB8>c5UE=1N@T3|+<Aj& zvLh+lpEFSunQ+~~236#dNaoH!<=~ST#6a9TY?4eMVY-l4;OxcL?xQgH&CJlTuy4_h zh8q+gMADC`>0iZ&oy;-rY}kXbgawd%D4(bk6c}h2PABq3Mc-(k#4zk{Z`16x2c?xi zjPI=A!QiTqK0%uS73clKPZT~;B9jO3^Mh`DxQiv$Q~=%!yT&sO4FC{g<HeQ*KON9W zT_%|0hkZr@hrFo653vG`(sf#is4HKvklKKRXsb>MjIkCPF&IXmtk@5@+ifdR<^8sW zESswi7H*>C5h7`pV>RiI++alVky$xd{C=M%5=WF{&`#(Un6p+1rl$P#dS@)6F(QZ| znG;XS6u&gkCn*w7Kx#(BtA)GIv7&uU2%`SBL3F%&C@O^`J#~+d2@=q({JwY-ghl)t zL2toR`@5TDlpf~x#;uF)mUNy8C5G7SH9_SBPEM=&SIf+qJw$6EKjazESN_kDZoRQ{ zR1X1-I~s6#$m+t47V>Bq(2#gZ2DsZun8uHMh#k<5=24LSRA4tXllE$?)d-Ps1cFZk zvNZug<&5LjgB-zSA>EG2k%7_jp=|T(y8ht}#Vi;afEn~Xa!a(hbHek%d?3l!c_5b; zo{_UwY9t2K)#>L{eG}-3d3OUj1Twc!CCUD`NW7OYdL7<HEqg4|0&+LoJ>wpckIPP+ zL1)VcFCzgpOh=fkfj@zWF?xb91ytSWjwxG4%YbK(G<}~CWUbaBLMT4=F!X4OXNY6{ zkzZ1?CnG&|U=~(2Y{bB}8#UhOoM!y(O~A9{IU;BG@c=veqA?Y|%J&>D=Jha6lQ8K< z>cf^^UFpyYhOKPNB{66;H$k`ubHPi8ik4n9imdQ6?wrT~TEhrwsSkIHgZBh+OC>Pk zlY>{O^(zJ0KD(ItcK~@v*&VmenDXv!F%3i2%e$G#NbV^y8L$tH)KoD5hv{*m6G1#? z(I%xPjWGmM?MX(NCCr2qfF%TzFh`gqMBr%?@j;gd2)Vz{*x=3lSMm`eWX^#B?&nF; zC%`oPG=Zwh6FQ~%=jDB&wL<~m7>e2+p9|b5V-E}8VNTo)#F)o_=6>kZK}x`=5Cw^n zXE2m6(4b`}nx+Jva`2ywnHAu8nSp9w5$RHn6R{>W>>sUq!tjkeb?!|)+#}UDa{c-k znfn2CkYy-o?ZKHZsJ?umT=d6E_nGkmqpR<od01D-_`EPyr-%hhZy*-Sj-RpwWI8D+ z-v0PQ!!J}L^9?UtuTC3NC61}o3lNAGx*si!q3z)F-H%Rp10ByJb!zr_gj8<cuV~~| zR%ok^SPfa1eLjurOPlkthWFNO!S%pfd~B@GkB4)pf?{}b0J6C9L(X=2KU_cj?R1O; z@Tx>=Z0(bnKOpH0_{`_LitP(kTwOCkGy(GS4pjM4FGLI|LA2jr?r!c%GsWgB(VmG< zz!hxbclSJ)={aDD+XsnC#<@S`_*UCFHOmTSH~!;Oc-djo!1?|Jr)-~?#fU`q+w;4} z*4HvW&#yjithl$}`=LYl5D`j>h$Eh>-M|x2^@bw|U_Cd`(a(j2yVLzojSlU)Yw@hH z*xAp!{dDzOtjeTiZPBZ}X9%+$1{rS=QyMbkfDje5YRz6P>3v$Fh-dFXgR!r{LuG3D zO}Z1tQXjRoz`S(h2)NJqaSGld9-xuOGae&hakr=oR>WKE<KbKc$XpC?6)cB1U4Uo) z+rg2<h+vqDOVDTO@gUCl#3q(5{ILZZDyoX{fJr^-$lwv&xHx%#e0<zExH;FTWRXLh z-Su<_!mC}chi2qfBIKi)i3lH)ra>1`S`9?3d0gcq!&(A{yZtbcKk}5-KaMMT2zP%+ zM*Jo@68}8CypFV7!a`rT#M9pjvxa`eZ_~1)i~X^{AABikDv$-e2tT7%LDL=(U}^g7 z4hoX!m~s!b2ee!8i6Me}_oEL2`>slNANEFpotHbhHZp?rXo5zX+1~x8c07ng+&6T^ z$DM_b4>R{sadQ+uZf@)rxcawGyZop+lKNB$w2N?gOiX(0`Vw7-@Mu=qDJ+4%#2|p~ z{Z|lWGv`YnsW)NW8%*0<5ZtvU=esh~GaDO2{ffe@OzJ!MuTaMTxm>y6DW4UC0Tomy z#nwZDu&5ptC{{}tB#5OI1gnSKy`1gl2ZoH&UM&x?H2R{T=SJK3mvjT^5}VfuT)<2r zQ#^=(LiP&o7T!9Dt9i*M`5L+BOBKXelgGP@JFflldC{Va*#i7~>*`t>a_d&UxN zw1bnWh##mfGV&LWE*@yCOxUvm-UYubWC((u$V1>%M4?rtDyD?4){L6Vbpj8zdRx#$ zUNU~hJxqI`X%+LM7c@e&4%Q*wvggoiL$E&8y0bza_Qo8uu4O&jBFfr<qX>b%2FHhc z`B(PCG$LRWRxr&ja-4j-rjE}v&>wq*;26N`imOo1+d$jfB>wtB^eIW}cv5@H)>C}b zRd1)hOCz*^HI;v0QdfRgGsV+~oz!$nb|Qtn(o!d4;A>s16Il<AaLq#0rjq+<!v2ii zm`z^7UOs^{jxT5b^OT*mRNNFG;rQy>Gky4DUS}`-8x%vm3f1j(5>L~nm%rnsH1LoO zcL06NP}8a!lq&eRAgX;4>Kx40*8ad3y1rI!r}FKqm0_$YRqHfJ*?Ew?GD1M&$dJ8T zfPd8B3co3p?!i(jy~M<FS)m^yU4;UQM|_<{@H9nesvMu^I~Y<~I*9hJjg7_3cKM<h zXK|KhbMZumIjEqG3Hgb_o>4P?>Qs2-4aaa8AI=dr9Nh;A;$37;&`+{_|EfY3N><## zG@HZeD(bt{rerJ7#5Zp06TgYkz7Uz;e44m~2?nG23Ic?@keYBzSRl6<!Vi8P<Kon0 zyrmOL9iQl>Td5FAr+9_3dQ_Sw#o1Aj_1FyT(p1U0S!~-|Mp$jtyt0^iKPk9(Law^C z;|W0N=q$9rpdN0wdc6Fnd7Uy>uva0%cbd4L6iUZeaKhhCaU3y1k5|!FM?d5j2boT8 zvLBP*(LhO{d=ym9hdWkWxvFHynFC7Xm25+Y?r%Hg7((qk=|+M=r0JbHgj~Op3a$fd zgr1QA-sKEC-xN~JaCG;YuzCUbYLqi_K@KLDWAIw!IpdI--`eAhas#>qPA+j$y^CC$ z3)=Z#LS8`WI%LyFz50^VB$}cqOK^-o5kwJxiVQ6`4;f8PJYU5oWIA+@Z8jo?jSPF4 zGA&VeIHN%7o=v4%tNv1}_^AQKDp?9CuNhS%aIXQlBkJjbI+EYvk`NN7$T6#-YU0mE zh^P4F=e&HTO8Qnoe5LX(%&YxeU<+d{TSGIji6|?WoO#5AL*LI&)l-F+M+okO@tOlJ z<1m=AT(D@B_sOF1Qvh!;LdKU|K3%$G{V9L^+2IglvPrC{`jIW_vbUPs)?@&;q*l%_ ztbm}fNY*1iTxk$T8%uED6v>IpH)_npMJ=M^fK%l+lKTN8NvWZf`1ztJp@ws3rig&~ zFcTMT3V@13yeWY^#O}0;SY14Zh4-j0Ap34}xA4$Z<GJ1MuhVO5)q6?nK#gu%<CjkT z`pt1bnJ?azE*C%e(D+lq0~g9$it!vPGlvFP`STbN;f|VJubkg1v%=?x(j{@3kL{G< zJ_GLy^9{(74YUOE0sgDW6X+5oo38<$vU|TmA=OllIHf_Ra>%N~OY#+AYs{ND{!CYb zT(ru11&pzxyFC9U8C~ivaLq0&C{}t0d>#orxKQ%g^b)%m<x3&wCzovf*ieS&T6{iL zb7^O|)@U7CgX{W^do)md5k`!a2=V}2Iu6?PB04jvKM(VR9h&1{)BoTQayQeE7Vqrb zXgAd;bniyGIb7WnQ7fUe_MKN=>ce_I?9MP5@O%@Z@v2v}^CtN8L{%Df=-;u3v7#8I zYE>&PYg9cXY9J(BUDX3C&&(!1vLIa%)-K61&o?d@(xN|H8W~_)t@@1Hu>4)dmIf_b za{s)XYDN2)5-`QE$82w4$Ilr!`MBvjMbGnv4#;#COvP%<agX1o6e00ncaOqzX#YMV z#;VGCqW6{v_L&8l!+8_#Ob>a{(5~I)D|a%mB}5Po*s^L`?;^IKG(?k$Cbv!CS!Q?| zJ?t`)@o?^m73h<j+Q#Z~jnlb2^!8pdUop{@0nx}&w2b2S(du?=Fw;9`%@UWL9Z}E9 zsnkqUgvjQ#bdpUQdR#Mkdn8+pDv}}pSlSQ2UkO%+dv`3u$F5+VRlE^a0i%p=sa964 z&XfE$fu*LZ(zFwCI<s60Zn}BSUbODz8v;#MR+*{xrk3xd9r~dISI|6i#oDvk2AaA_ z1J%$lH*90T_qlzF4O@BIsOnisM=#`(i0A<~Ft$=d&766VMzn`KFdIe95`RwLJ<Xb_ zrCV`1xYJl{7xvf$6XtDVx6<BJB-b!hG!$}ygXevBZz^nB=T0KcMQVoOxbIl}NLN!V zD7d$h(PfkoU-1V-76kMlq7N!`5~q3Ak_X+ME~f{dy~ed5btfn;P0A~OReDz-*mcPZ zAS867f!W=x2n3!tk^aD%sGMxGwRQoPb>XvcmH_N^Fw@W8T%5SKXh?dRS3vyua?_6b z+M<THzJylIGE)`CsY{VpVYQ)n=e6dMNPTOy9F9V%j|a7aMX1sn1%ye>J<33WrODn_ z!r6RCujfW^2z_AkLj5O$NYUfF?D4JphG1LZPA7x|z!_HDNY%2S(^o-|5w@ZQgH+{4 zK{gn|E8H~SF-7`e14z!&u%O-^L|seQ>Oq5nMe!`&%t&w_#gwAE+NHaF_ozD{yD6(y z_%@OhuL=d0V7nCtx*{UAjFk5BTSqUeWU&aYfckAs*Z`FE6>6lewr%qB&*5}|(}5E= z%5k7Hra|%7LP{|L@8rjYlgBfkT-n%jLSln_AFPP&7eI}bh#4{5SkFaW)ujOI_O?oR ztmpXrIB^8CM>dwTPGqPvB53(v&S<C#Iu!QCl7h%o!c#V>I?rMV!F{Z?8(NpC#H-aF z-Cj9{BWdglM`CA%<8-QA3ZWz(oHY=3rj1u;0&;EE>J$T&K~;t`@es>ercDk%y|}Q! zb>oqe9-=GeKl5~ZpZ=@_C>3HjIx^1F&4m7XO?@)0<yR2MV|Ad*QbUJqj8Xu6i%ZZW zSVH=&qA05&t(B$n(WUSrJM;vQF&7Ner#)0%Pow?)P)_Z{-(M%BVL7`(6eWD8sR#K1 z2_g8jdnqHT&te{v@T4@Z?Ae&p+qD<^9(Del0mD?^$80Rm%3)(>7kU4dl29pgaRkOR zP&+we%IFw#Z<FJ=n37KAOFKkw8cE}tQK$q;d)J6(r-Y5-S*PyTXy{3N&R5SjmMXdV zM1Vn$WqS{)a85FE70>1YjfsC&Wc(PbIy4??4(Lf0eD<)&ok6=00NT^Kq{z3FG9N0| zT?w%t6vtX}XOwn(k1FLq_JFp$h1R9>*tQbRQvIF{o5AkM1ViAm@c=0Lt?=EYQ+RG? z2{or$B{=~frV@GJqypi>0HA;`<g8oa$i?lU8@n@Iv&5PC02^kR?=-Ql0qtCnaDWOS zPWn9=0PDUGN7wPCNa|+@+szVL=D4k@bsWi4Xt*aunqK)p?(mV0SGi=K9?d;R&m+}u zA>Atl;Oxf)!5S}ZI8>fA$(8zD2}$XrYdGeQ2o}}LrS^<4KT!oI-52H=;r%@U^Aqe! zK5w(@wj9*CV*O?w>~M|@Wxcu0U6c=eioUdW4W-W6(dGF<!J|&UZ&ttWaro}sEHbr$ zGHX>=eAPLveKt&dXn@nGSRSw6pT7@37j8ekEntz34u{jNvm|e}pLE72OLu%aPM-JL zqjplqC5)@mC$NBqCFf+gsf(l*T7L;CQNEIQb=QqOH}Ik%wZT0H+v>d%<R(~>$hh0G zF~XRx?Nhi`n(Ih9&$OY0AVUuLY}{+#9jB?W0o=<FPN%6A4~v!IJi|@%x?fs3{jC>% zW7o1@usSE;=x#V>S1=mIe)6cE%*TzK4tH$Fi}zNMfiVy}p**~qF2&qMl;|p+@U8`@ zB-QIRL*<l8h9neHA@FFm<2-`*kZ(hzDCWvq33$R5*`DJUKHmAyryoimQfa;mYSpW$ znl~UkTvZxBkRu)>2c%6v=ivJ1V*AzFy?tQ(>=4wjgGNiIorq{3hDZgkz9;r<evUb2 zDXPe*Vo<!JlOnjr(lFVu!#b!T*tHZfpjTxUd(rrp312;)$2;g`T7KiH#R;FxvI+BV zUO5vwJidt@f?j3^cvofGG47WRTIcoW^sW?<Db}`Ay+mFV&uTsrpp~xVofa(UJVn2< zW5H%k+-PBCH!v4Su#^E|HS5x3JS%&xfFoQI9y^*6=uhrhfDe9wXl4#S;Wo2^nu%}f zx7XB%r(PPK4X^7*-181iZX{^`fIg@SUpp09#Zx)mBV0=O_>CfUgPn=enpt6AP1XuK z0nPxnCEbuh)F+9)=LBWLyw9F!V3*H$o)l8o3Gi#mM$it6B@SkWu$x3>>?8tItdz~e z>?DkEqRiBoT{jK+L`9alJBa<Y%1S*URLR!9_K9JhiT|gr<IZmi{^)UfH@A9ZKMbKs z@0DXvl}LbX)<t$~R=iozY3kkclLX!rp$S^d^ZAl4f=61?hlznk{({rnYd@3g(HAsf zUF-(P53sflFQZ<&;t#l>%er_Y)M0DjjL;gqDU^<<c-c)DLw2Aa>0(rl)QM_NZTOg6 zs2^YK3r#ux10=fW(hpjYRK=5@(V}%rHRq7;pI6O<by(EVPl<(03~IQGsx6qa`xVOC zUgYzeB%d)4yXY5PuhB*<%N{-8L>8<z+n|mpi;uuL3L0Oc6G$aov-#rMv^Ecv3-;Ll zn{Vv@cPo74gSR2{n|n0}`@a>B1&y3toW9HK|0*8;T{B!w`Y+QjzOg<dHU<OE?cud5 zW%COT?0$i6$s96Uc`({o+E%8Dq?F|RuD4C@;_@HFpxzeN&jgY8&t@lCn4iy#u}eE= zN8!o-AFIL0&!l1yB@7fXU>$(S&al|I1Pr11O%M1OSPV&U2#;a*iUT$s0bMpZw+MC~ z5kkZ~g^M~+&km0RTCi~+19!JLem^iT*PtOR35eGxLHWYdvG#%pE*C?X5s7#lk-6=6 zL;`=S-O-}c1ZKn_wBxPrZ<SIAOv!|nyz4j&NxnlprH`k8=z7$_dUBhq-N{i2J6b@X zG6f@6>qD`#;WKCSCb-!Uq{Ci#Es+G4@XptZ#9GBCethD;i}mc}-Y5-X!u0xLUzwzk zmWxA=CW9i!0K}@0!R+o^MEaYS&tM{2F!0nZZ@5^^g}z(-DHV%>Bvp;agOUH^{tICV z<W4eaquS###65o0p<#wL;TbQr!7n2M>0-@K&xk@*CH<_Sg)Iuva45tQmUXqNf?tc* z$%p6!@sJoczBZ()BjT2m|D|h{TgutVo(WNlO`!5tZUSM#WRKOyuAuIB_|trRyBzYt z3rNhQgG5?f+%s5EFX{XF2pVjI3Zu1SWvgHTXUK#J5U?2x^dauUK9y9VV69*AyonS? z@admVRE7dLCvi$drS!XYAoOl9W*05q*ESK-7D^WG!q=~$azjenpY`z;TDXdNy6Ag( zMtGwF4$T*q!7Tjch67DQkYCNRN13nhI}`_qe}-f<?V-o&bOwd1kVhH`*crTXn4Qw| z`f?gRcOVf_qX4K!#60wF{{)>)wh>{_l-_4eZSI1p3^E;}ZENu%+sOnOcJ0i;FJ-+v zyf3X-IeI@h+)rTL#%0GA)_`^N#&2eE-bgUT`dXo^Dm0dJ%?#L@QNv)9y6^dBAD<Un ztiy3BEseK(N;Yth!N&DuoD(IORaYU=6|^K5Am+`GKRXF?hC6w9mtxsi;Aq!NVR@C! z%<ra}tDM3T%jMy7bbM3r5+z0KKsF7J1-Zpq)4OL&v@ca>-<fjhOWpU>WWinJvr-Rb zqwBb8HhAcCt?oaGpl*A%D>m9mWvg7$+>v<@z;r`4*H!I<D^`0a9)|#30=y0!-z1ml zmSIhJW`U^>prSIAe^-v|0cM#ohWT6Vy&MnDVR$bTR1eE6{Z8=4Q%s0+d#W`+C@5gx zmRK!Gfn-|9!D;-Nl>Ip?zRt?<>*Lx)p8ht&x+r*Pl!9tD(?+;6v49Fw7XQ@6P~{QI zwPbDd%<CR~=;!?>3Lo-)bd~yNLo&(sj2gKFC8`H`@<9H<L|37SDujNo%AY&fM>{0~ z9Is!uvW9UQpkq}lxo+vv*K5)^58K@9tWso=*2;qHVO}6~_;#U3o^=$O_-Nr_a`cnY z3w0?MTH9DtjSJu<J%rt_B9BNFxLM9HyTXZX<u%6@xub_@M;%>HreXI2zdkhMIO!J` zTuZWMK~b5#SBo@QJqY~lab?ERSPz$}=z4NlT4312q_s1-8&AzE`$m1Pe7m3jV+6d| zLRyj$i7OuN+bc@xyQlj<_j4ufOiceh`Aw7d{@)CvS`=mFffx~bZt6VtLDB>CR)*6b zgn$BVU?RztI)S-Mn`OD7ZDPK*>FA>FDxELivd=$)>wMVo^kBbym|*U75SyEX)QGmg zlpKe{U<E;is#oiZK@X4w)}ZYv3Fyr<maT`dlz*BK8%h#3Hnn5ww$*;<f&T$>_i$u& zs|<7v;&SXGJ}aMqUMq#-w%5><<)~LFYo0yWa>DbNQo}r|C2{EPsb+pMLDa?lgYIvn z$+3`UAwT*e!c+6KS$>b%G8hV-^cXQ8n4%Er>KtczlgPbG;!1jU8Z5nC#7Ln<P?#@a zC~x}q3C}#sWUCUBPRYh>s#;l}xt0`HMY=?|&GKRTf}HD=BL4^WX8k|@>NPDTNf2_^ z3ajsULiG($`8&6ye>NkPO<i0p?aZD36;JBhLI0aM%!=B!{ec*Qe^{T9R}>sKdYsrV z<;BBEL^&x`ArMI0y!lZ)1MQ}ZP2J>tsxNQzRqOglN#*n33jDVX%=cOGIWMvPpV@Rv zW~a|Xckcd~4lr%fArer*gBA(S4AQlRv&bN&2rh14<YHhkB!Gh(x1dyK@!<~1+vGe! z)OZE+5Xvf<(tu_7^0ZdBv(P)Cr?=tL1|w_)#ep#{?sT_|gUbNuDBnh39LR`+!0ghe zGr}l}aVYu@14w667=af}P8>xjpcWYw7FGU~?fb=kfz~o6Qc-k0rviAVMXcS4lL~lP zM4{6LFi%;7u{GlQrPz&nSP-v<>$N{f7+Qf~jhD-RVr<^CdvMK|r7+YOj(aef1Svu^ zL1GP!2+ft^;Fnjs<T$DZ`$cz6>3q63t)I<5u-gnuiAh+rGC=j2mcve$1OY9msWGY} zmwic3qG%5+m+)bGM-$s;R#C8IAfY~~q^N96k%Y=MC7x_E&xx265Y7}q!1afrI28$g zIUziQ1TB^i!4EoDbtE~aY4iXUZ0qJ@b}s3J&JkJ|PRl~`C1zepmNm(?m7xv%^gpvo z12zUS1;!phf8l5bf`%<QjUbbre^=n0BKtUCfiH19!V=SMN`+p3v2b?}SE~uK4&F6v z>(cR-hyg~YzT_2m&KPDXMC&y<m46!Ya}unnP_4&$UdFwebkb9@aj&3!5dx{%KRdX# zn&$%ahYer$`k}5b*5}PD16M8!c6e^!vyII)tgHAa-DCgc>f*|XAzz&+zr;<^Ij*** zuxk<t+4}P_%jfk3U%}sp#j<hg_&feFG@~zC@Bor6$JVB@Xdgb=mDHp`yB;XPQ{mz^ zn^k$ga7;}tLgis@CyK10Rk9MZ&BjiqUb;MzRhhW|LAMi<&VcR}8%J4TCDLcC)=WZl zrT1)ZHVU;IB%&hp8Gq3!i%IXm+Jx0z3084rZDsVP7?j38$V`c7h>0;#%2WDP;$m7e zWq5N^h7~e#^vf+7uRQW+Bw;~ISsv?8Ulp@SB)lcR^6&@=<11F0xP+0uR@4=PI7d0# zj_zY>9Me)f)nhJZVJW7~g6<$=s^CJ)6@ORchPn7IJ0!C-cv<VY%sF^u_-=prcBvUM ziWiT_IJ!`_WwbgI(zkgtAvD@xUw~5RX)bqAQ>!ASimM-qkuEZ6*ezXlVuSN~T%kKq z``}o|oJDthAR5Y3RBQKV&UU^p#jkbCL>*aDmfIg+7jzaW+OZl`;}cVi1%2LE*Lr9^ zrrvI%H_({&$9!0RMN8M@H|FLeowam9w76;qnoPV3laGeB<oT&rtN=Yb81~M3B3ce? zt9^1}tAWP*=0cOiZQLJse};|U)*jEa_N96$4VS<(ZEN(U^4$m-OV+|#qYTNGP|Tj@ zcOn-Q5bP7jt@Wfn@oyl%953|Slkhg)T7P72My?$s5#Z}SHGKJL-}dR3()XOAB{w+l zg*W#<%Q^=4jKk)WXOx{N-#b732L|ddDr}M<VsXfK(2)KX)>8e=5YS%$C|N^0LvvFn z2}3&*8&ju$oo0VWh*i?HMiE5t+4(>fg*du~aX(Ux6`TzSG9SbQ;(MHZG}Asc`<b!M z8veYy)U<UT#P^&(G$^F5uKqAKRaJX6xpJ_6kk^L<z10G9sB83t$R~JNN`yE~Fc9(W z7jss~5vl=<Bp!!B&-PwxT{T8G`Vbw{HK)iO9QstWj;os!fZPfF?ZngC0^Th7pUgMu zAbePN$b;p<+9sh{hF(c4@fP98qNywb_=9nyE9<b~)AZMl^R@k=o8T8ok5iJ!lfM1H znj03!%bO>uaIPtt?gv6kVni|q(ptr<cqUH*>)or=ZL;Z~-)`V7Eo){3MpKDH{jPCe z;cZm0B^V8a4cJb_a63s=HC#vH+s3$#{_ebILh<`IrkX50%pHu)#ty^gW!e7t7GtLz zHIxfJ)3n7I0`1+y>jlcNk{k5Yc0PL&z<H)(iYQg6wc<4K$yB@X?8@h$mP)>HBKjDC zeUC^kr7T*CJMn#rMP%o$ABxo_<wTt?6){VUGNgZ$bE?#jk^i~@{gbHr*L(ivp8o6e zcdmgJrZx_yPX8}c^{+Pz<IAhz>H!S^2y*tlJpS?Z?|W6*_bC0U!FXowUy|%^nI`Gq zte$^8)y2~0-(j%vZ)WLLW&gTX@ox4RAz;*}kTC`6Mfnh2%n)e~%OaGGv_^*tBojx| z%0iKtj{W7PEY^sFx{1Qu+&hkDzT?g8!_3!LIcdeg`F?%N{{^#;kSh&xZX<#X+zw<^ z0gSRi01=PyYs8*{SVSBg;-dV=nc*u-@R*ljbBH(XH;XiH0sM+4+k`wO6Xy~RZjt$U zWThTSyPi%+wxJH?nW!NupH@;sRScRMk&P=2b`!2p`DO1xN!!ri7fKLZnJ*_isuo1; zqZ7Wrx$82@C*G=sj%c8)=PuBd1CyMO3!f4$V6ix&;(*cSf&+hP?S_&YCSgYD_cWRD zUL-sakD)-H*vQRS_?!uciiSn>#PiZ6U!QO8_FNsmFFzkpNe?Qu%<uQ1?GM@9vV;MT zBvWLocJ;B;TSxAK><JEDY%6Nn8V2{R-~Oo+GV3}h>4}76=0gQ6L?G#qwq}D+zeGNj zm&uOWEZR5yVZwteT_qK@Cu~Cn&OI^J$>0~PyJQTO{Uj-U7%=V-mHR<8wg8k*-nj`! zf(J|%>p|V1j|KL(q3m2)X+=YnKs+=tBa9}(v^ZL>VsZv_y=TqEzTzDGMhYxSltEk^ z6~+#p!-J&})DmR{vCz{44xvx6$6DWSemz%4-36<eeDE?SQW#dC*V>(9EF4bOFuFJy z1Ud#EsWTDB2Wx~?i{@GP!g^g{>-QFbxNHeS{od}Kv_{4`3!0lCh&stAEu69&{S`F_ z1Vta&3AlyW{NB^vdyOZl|3($uQItOkF+pRiY^j>PbYDJm@{Lx_yil@WIAC7ku|?E2 zD@Bf?4@O=5&}1hyZ4UIfpMPKrWsX8|>CjEqs4k*DZ;90IU`FkT=sl_t%KRZl06Y2I z?d!H<Y`@ZMY1GKRcX!M##1DNl!e-y~BgP%!D<Q$pGGVj163!IgPaQwfFn@N3U9Bgh zfzowY{H8E@7DOsVt0fZ8_{vrvTGpn&SbcZ34^ymDtxfPDknL^;8uA1*H^zhUo@q^% zWX>;N>_FPoLYM3?rfLVAk(ZM$v9@)&my9b^n!|DlocJ;UvWWNd{m0s2GJVX#N`gfe z`!RVjFBjTbvU<WFh@aAjXoDn&nIMp<^dW_Zj+uiaBcLdQA!;kDtD`LRyB0vTF7F)v z&y1KICv~+eAJkf@{xGw-xp8Oo7rHgF%a37Cps!DBJmvXk)}y%jG`N49GDm{E$HOwm z>*&5f{(YoiT08t-M+*MmY<^>VJ3CWj7yJKns{F5Bq~+gQR;{l9X7le#jT7D9Ygzx} z!NULNH~tlsg8#dg^%(1$)jWFF#B=!Nuunl~5nPzs97~)LMH(f?QGzEdWyfs^1{@@g z#Hu#}n1mYty4mIJ4UQv_kYx3y%=#*@bM@xh<?eIu+$fdHf6?RdauEH+>p!YjUxjL} zhhxe!2@;J?qx}*@`yRl|ek^m;<nKsttO<jiy>0TDRA$4#Y5e1b=9ZW3krxkgcIRH@ z*>U*s>5){ks>DqzNBA+G!@R(ItdPT)6W|BWvv@o?<~?x&p$yP&EYGanhYjgEB~oZM zdPUzKVs?XIkJ$`*IGI2?B)kU8>@vMbhN$;x@MmSep<oU`iHdzLQc(+eBfU{euuh1R zlC7EN?3rs8;^qkgxoZI5R7UIh3IaTEz^uJE17tc6uc1??L+ba3Tz>D*%TajbgjCI| zuaG+)`1Z4$4nKzzF}m^PU{<_-By^zO8$p5=?(m3H&{~9P09P<al)yaWL*%!Rd~RNd zWZZe%Jud@xd?3;uz%En2?~xcmPB)PgGX$uvGV<9ykK2oR%$V>oWOElk*6eP6ye2+t z*QfQZ9&6l2z4%C)8KXh=vm%yDlF#v4a${MJ0*p;q!w)W4xGY4TB#ffDc!9L>Ls^i@ zHDh&wwNSf3kIYfaz=ToEd7!+TFyXDWerH5*=ZI&rX7^@LE&4412U!8-h||wO@P2BB zfVfeF@yRQ$8lX<G7>k_t1Ze|0+0q2KMyl~szh)Ju#&Oyn(?xItl0sW+sLBI@vt|5( z8WWi^(;&JJY>Ccc*+4(BM}XxvC%|#zch$j57<C+-jKK7wMeTr=s``}iB^puC0}xzj zz|~YWqo%=UElQL0-!$??u!J*oCa~17GJ*w#Zi(V3+__<2*cRlVEfT=mQ_J>k-07&? z++9ppuQp%u{No9DIk@@<oqYyqA#LDn4}&86?(y?S4d~!%V`f(*VJs#eetA8=>VxJ# zsU^?e51=A+<HF5_$8(j7At_-zS7kIJ2)d-(i=p#Y&p-btQxas!jV+FGcX?v<mrC>x zuMb-JzpCN*P<y?8eQGbXY7Pj$;%G_~9)}g6B7rtuD4mnWmtm&B`ole_)Fz8I-~jH# z7&&A~=&KVX1s6t$zM}#0YG_!Le#^gVQG{oUlLT;kVwXB}l(m*Yd4F&u4f*m;+)g9W z$d@BwhRTrUNVJQC0*F+Qp?4}AM@Ye@W?v*oIl#i*wv*hCRSTqRtIE{m21ZKD)Y^_L z<MmK1p@XtHq%_BtSji)8b_}usehO}IYMBf$$N!3>>WgK<pwv5RJq)lV^mn3P(pyn$ zkY<&}e>80gy(xhv<e2)CH*pV<=GKrJXc0vWFa<_Ek0)i#71NE8+Nh?9!7;D(vYx|y zT0c(u6}R2n>-A)ezSKy|@2)?z4wKR8RK)p5v<ZXCCYM%^S$+uxrWFIpBq@I`G$oWo zL7XItWhva$^uBnUv8I>?X4PU76h+eXvw@z83JIn7Y`KGeOB2As|M)znj8P&fcwG=; zPV}CtK860<GCGhOfU)T)e--&<QMQK##W7(j&B`8aSUPcdJs1C>*T3aU*#7Gc?}#=5 zUUW6S6UTRbgv~fZ>cG34(eW(NfX}4#9Nl3WsiE0jrbckPEnORq#Xqq`X6e$m67Wgp z=jI%tNz?ts-J01OTXS@Uw|R@a_|jqW-8^S+?<?xBR|^LpS4PXGPeki4rW`!|xQ$An z?W$K9A74UkgsKiVm>>-Y!oxlq9Bn3pSyiAj0=0r@6Ff6TY6a{U3a4Qp`5JqVbQAY9 z!$~>umNbxjcbB@Q#BLlSll*lX2DdQ(zHYuRQ;DBS;>N@*tew_;F~14s)9mKmM|$9e zN{5JNenGF8-FB#H<q*Mov2S=3YN4B8RI`?3wO95l<fhE8IZA2IvpZGDptXF+>boXB z@FWhCxFH#Y1~s+XQdiSzDi#7NqvUXCrz)uZRN$a?_m)Wh@U8rngoT5kkT@)+oPyG( zsUO5+^L3>rj{5&l_D)fvMA4RI+RmG{ZQHhO+qSKnwvC&%ZQHi(?0m0BS5<e{>#iE{ zAMp`qpNO;e+G}RItE5@)?oEqy`Bk${1j?@JkQWT+w<(~C^b5ZFULgB)*<pB;7Aqcz zhb<MUTu{pR$BqU`dpV6Y#Ai6uR&a#F*erX_&F`t$QwG-Sn?zG{bwn9b7ZixU##>^8 zNl87pf!c@LMM02IyL<=6WF?UWTsTOL&DE25zd%^kRzP_My1zP`g8BRgTJE9x<TbPn zrEw?A9nI-raZ48aesmd&N_jTcQN~<%d61?$6_6US<{z(Xa_dxvlFQZlRJ#f@y53vb zOXTi%0yojv6O2PxI;kS=xp9vEarg7Q)XtR)8+bTJEC{L-Dg@hVd-W?z6vCK7f0q2W zA|0@;_FS=ysf25z*dbro&{m))C9H6Uv>`aATsQZgCV3ed&{)ZGM`cub?Ve0sT<yfz ztRL_L=xJxeiN%)#ySMsd!frA<$2$%QD@lb`#_c2ANQIO{rP^e7sa&va8&iTdeX-*A zUEZ<tS2tOB87Z#{(+;-D3RDPE-7U2WJNRFAj8r!Q_X5`LtGGR`fCNQw*wqC@zZq}% zgE`K<J#ulpZJ%(AYK$ac6Gss#tQ%~yKL*QCSVo@f(d?2=NB^q!!Gt8C6n46#&Zou| z&5AFvjKhT*hMmkB<g@}Ct_Y6Kg4cMycPqlwY+>&vi5Yu4q~s>a>2jHE0+(FFGQ@}9 zB+sf8Qx+E;AaZ+)y{gm(5Ti3+?APoJz_WHBiXgAPev&l$8;Qm`i9ohF2)<Sl;V#c- z^YVd$HP-D`;e$N2$l8lwr$8*!b-eEoqP}1dAu8lULDEre<TOzyW|hJP=CJ$NGyIfp z2h>~WmD~BMPlQ64n5c@mp^ki5#N|#K_V>6{R!ZkUf>`5Ne+>c!*3%!jHD}$%I>&W4 zLx9e^H=F7*bK7<NKQT+&fvRE;=k1#TMo_UcvtRyn*yWz_2$k&c$M*?_V4%mq-IATD zEgyaajsae1C*}m2F55xc+&t|5wr5Fn+T{2~kOFMH>yfGfD`wT1cv?7=uJ|~~Hd`cD zi|dy_y|dZ@6g1Jt5!7TIrIHe$gvxXNvLv7u$%=Qo0FDy3QT>a;11Uh{JWxi8{|d_j zl?^>`txVjC(s9U#sQds`R6K`h^SDA@O>T&zY9$3Ab#3+|ZFa3K5Ha~_O&}`<t%O$3 z8f!D}WlFz;igQf|#+^n}9MU?@&LX_IF(~wTc=-`@b+UA8Cz!kMP8>J2UnjDDWBQ3& zN+%$7#c{E%Jq_osRY|(t4Ll&KFD0#LycTo-%n4z(@;Myvid)L<>qj$$F!h*xHSp zA!fgdy?||Kh_}ulwO%Q<g#r?z&`Rt3EE>ymnB=d>yNewJH1a{AX<z{jcl}Y`{aW8E zmbxN*%*&GP*}si;<CWca2B<xzQ40R7)Z>gHfeTsSdM|jS4)6Wh$C1b!qnWS}*z34S zJD1C%cnmCrHZNaU@wF<1$RA%L?YhIL{PHR_Pi+YY>YS68Bh$qNS2fUKH)5?j?-fu0 zT$FShFED0LrXCz0x9>5fiD{|!FZLLuE7RlTVUSlTcdwXdTo(_SI@-;SecnjEsYZwB zpVBDg3_6R2kd*loq%qtcr}&iaiACz(uk>|#Ib?7e*%hN9iv8>0o}&o`8Y_w;z^S0= zu&Ly&T|L5k@{!w6ef1;<hX(4c9MJiR5yPop-+9vOUi{9(4G%73`-1q|sQKwoFg$fU zH~K3!(Nx(E9)l%Flvg89Z?G4yd)H_Y>(!aPm66@TTze9Cv#uaNK-4U;Khb(}_ktz! z4?dJx?;3I60x?L}c~&+vu;iJSyzt~|q2CPOuRUNN^?_3~fD%iK=(q}rVrB~MxMajS z$WV!U_igSE{F9dZL+2)IjS7@rBA^XKWtN&ut7#4s+n4@kB>#c9kjoIg-6*5jMF|I; z%t9J4KaL4$#?pFG&4qwYCyoQE2ZDN)Ld-MY4@XFXZmGysI)91W_GV?36<hg5^VnJ3 zqV;?gTGn>4s-Ai|MH)<jkh0&o!sj30<NU`O1(7yj%J)ZTxS~KF*;7-L+nG*)%9u+% zGefeorB?hW%6;#NL)@Vuc?l59nuK6yFY|5<K*Kdn5l8YHCY3Gw8~X!xJRXxkGcB{% zf1Eu%l;v8Ir$hisHkcT(p`3uRyNXxmpSCN-=c*-MPKP<OoIx7N3(%R}wuO5lyUC~y zX}Z!iSq~Qtd&bP<Q=8mJe0$q@-h2H!iQ+HcKRS@i@Mk{<SG{I4kCbt|ZaHxkMBG8N zB^`0=LOuyrfi(J}2LEu;uSFdC$}4hxVU|%^*5R=WX<T$*4(-TTlW4;s3c_J6-uSm~ zd24*j4Pacz6S^G->6+e~LZL<`qg;<DH}jJcipDvlMW72^FsO!GpBht{`9Yc&h3CPS zG;DnYsNC~Z4wsOm6uYT&-ZZ=9mbasFxn8<bJg=CrgmB!BHr0K2gbIc<+I_|9?tahO z2{_8A2c*G7_aUbWJJD*YGL!jcmX$cu*dl0#DW^?Ra+3Xd#=wgM+E}{#EIfGS8kzJq zqW%{vJdHKdAU}L~Jbur5|NWH6WGwZ6J0<>C!jq$mt+R!V37v{EBmnSu?C1Zt@bn+~ zU_Y03A5XusCGl?)hU~vMd;VW{RWxyMG5H??0spIrFhw1^1%3qYSihkP;R+mkX#f=Q zHw4KL<%lwsV9GmXo#~6$)1&Flt09o2pXqhktjK4?YX>`1S69~^pQ>@naZx$3pHC6` zz<(rxjiIyg;93C5<3jn&f%Xu*)IEj7_!D>#Sc+86^jed9oYYN!Z$%`SareNo)s}mW zxh<3r62C?y9N~7X{hL+;>p%kPMo?ds3`O!_wA9r!A&C$zMNBqq=p5`ljus^`@(oO# zK#odZuC!ImdpCBC<9e7Q{|wOC2d%5ZSdVy-H?Cl?4O(4<pWNc(K=os%YzSqN#-&#` zPtro}YdGe<NLZ;e<Kd#7&e_o0o&W5aC=fT@;vNg0wb2LCY|`F}@ylV8(=oo-FK}K= z^c0%QyFgO~CQJp_3Py&xwfcY!U`NHw0`Bo-<&Z|>!i0ti4jEx($l?W%oxmuA4vz0Y zoeZ*Gt4okEjMmRAJ78mlJpGX@u*@*Y3GQsbat>*JN?XZkLd~3PVEd=n&FSTklH4pi zR?=s|{MRih(iw-jT)X-WADz;9oz<H#`rlkJ?A_I&$Aa_eSlv|))&t`!)FR#G7E3cY z90faYANEgrqS1tfFy|(1;Pq25Q5n2}TXgD3VUJ=rv-aUYY*>w!7}|{PjQ-aush9nG z0Lg3nesH3n{6+iC_y2%MOaJYlQlx)BX8x`!{$ELx{Qq}VIoaFUI+^@8(E;PXXrn6j zSz`UBgZ%3@gb287FHikt)G2OaW1e%alFaHxSK)Y-j{c>b;$$KD$w^qV0lH$ClQ`}2 zcsRDG;SFXj^L(^@JQwSO=x%}-<`Nx&`~+()2EnR_;3O=v{X&KX_5wtBmez`<*O}a{ z(b8hP4S{J7wvS^-aI<IV9<4Z%fX`A+z1?!FT>!Vw$w$6+g8sCjr;kU5?$DRu3cBUr z#O-)O3YzdJqT#SHIL88!OiXn>2E?KEL7US1HWQN;{0a7I<b}9n-|i9Ynr27ae*4|X zfshrLSZjG<Y#ecw@Zc1;7?T#xO}50W3=#rBprz4YRu5m;*qam){apSy964#59Y$Ya zO1n&8Tb|(#^2M51P17bbs+NK<$+(teqjppV5S&f?V}rboGve;~QK%?0;etxPFcpJw z;Kwb1;}Fl@b>;YJKNPpk^k||Ke59@<Ot9fJa}4)a%<?cH$q>2I+jxS%liwk|Ima?P z6f(T&B%f`>W$YZktq3DS=GGlw=oGv8Cp3t!$J9z!>9lH|S&I}QR*akbpD+J^u8`yZ z7cbx0+``eA#@@iu+2jA*tp0yha)fvh2_S|@KegWw4gzTa0Gj`WJBusJNYg4AnEv;* zWq$woKWounaew^6$1-}{N`8Q=9y0#gM7U<y*r9AhWZJZ(OLe5PcdT%1Jn<6~7nF#H z;FECKe82n}_yF+s2kr~A+tL>r5k-J@J|O*hJ=-8q^?diP>x;AE(vc{T*`RUXD01mv z^@{KIUpbTlvP!7VN&&yaOD(?5CtbJbdiWta^nCkV*WmGdy}ew9O9Q(OB9I`ri@<Mu z-A7Ug6&Pbz^&UF@apy#8WNk8Ll;6;_x=on{)&XVs_BJqwBe%|Mk2vAhu}R?$Nx3G0 zF=h<yRdS^6k&nqPi~W$Br9-Usyp_hKzYcyQdff$k1sIEUr;#!Gu=HR|6<GfvV`5r~ zLTic00;TYBwZHX-`1!03bm~DV$-$G96Nb`&n0IDy-CD9_xgQd~hp20HD(7}9_*CG% z-Dv1(XgL=9p?c;#Oh*ESof?m+Yw-JFHr=rMw22~ZH+^I<M-3z+l0PFyDz`d3RV`AV zTMpx=G#$zgk4u*hCM?gr%lvnV%rwQ_6G<dTe{zDi)9#9I=&WmP3<gHDZA2+^D9FI4 zD-s<>pfy+?t_YdhGI=s5P3%yTh9>5oSxsD#jvoiPsDNr|gA;O3tQ!sy4PfmmN_0SN z!Wgn<P&N5Qgf@JHED2AEEa_i??Cw0VPay>ih#6RFIq8X9BW$PVCl?^w2?z3W#+4oR zNd0Vgmq~}3?~e#lizerbf*X^%5Ih4Z`6LMGS;dWjq!aR~O3X~ugY*z_OEWqqJ)|Mr zI!Al!MXM;wKfe)=U&^?IhRk&cR%T52B#N_n|A(1nOc9WKWbT^Rob2e;1*?3pQuZ^M zuC2u5l9uc_QjWjdsDA)eA}g>ZxPlXL9}XRFy^RYIP*3t!2NPbB>|F&ogkP_}HFdnW zHdGPwNE6y4F)*M!4G>Fz$0FLOuUzr<8T9)bV=9uygZ#?}EQ@hbm-0&s?3nWiGBccc z$rR>}Zc@>CghD>8fTvVjC(aR>FC)v_ZQvyD>Mntcp$Ne4-Esr{haqaP;x-ZOoj@EP zTFKo!6jtuEqvvX5dpBfny#M_N;@uzOT{jr0(<KY~Y@FNcDJ}jyM7zAc)-MSBcJ2;= zuj7(B23Z*@BW9Ut7=w}9K2{`UJ>e}{O{%8Qn7QFa+b4h*<WA_-`U6Y`g?e}n(H-Z) z;;+4<349=MS}oxx5J-$b6$Z%&#}zs(ajyjMN08{C8O10Rq8Z|_W?Hzwg8&3dz`5wk zBv}Cn-VsHn86_y4Deoy>fZ=3ml~Mn25X3{*N?iO9p5*Ep7^6^BuseDr$t!_8nk0TP zUKj!!I6{uHCSxb1r^c*`SgihZ?+<7m->N)r@OvK^(zwj(lne+Ed9X@aTDS%(&@17K zdBd2}p9?BF1g9D>>uDuAbCgjW5TxE0L$L70M1{Ba%S#7k4@nzwCG_FS5qEkq0KD1b z%JB2D?E(UT7xk==_F2QPZNwCdYY97h_)CmMc3cp6AmzR*fAzM8nJkIGpYgZoZo=?B zcf{E(6dvo8Fp~N*MV4&J1p}1;v><Ra-7kRlr%9+SQ(|vy9T_C}_^I8@GpZ`Vvl?2k zGbAO<So_*PF3(c(WxhpX%8saNk^{q<Df$B>#uzc8sktcZ^RjM}Os!^h`%YCtu-H1U z`|_0Ml=@|y#bfQZjqthRkRLFZ8zr+)d(slrATA7Q84@Z+gvWRH37p<G?P;4JG+}Mn zP|w*|NG?n(c(w#Jiq5qJmXt!H{OVGV*(&%-d-M=+d9LB%ve0u=A|d(ff#1B~FiRn! zo8{rUH4(ZTfu`s?47!LS=%-;EWAO150v@SBcK5K>tc}&40!UUJ!+NXDX;z;kDz<q6 zEoJJ4`28Uas|EQ4AHRtxj~A@%cczLPT-s4sdn&t=OSAs{Qm1rIaid=mzC*h4T%&@- zoj@Rg-PvHN4k_-#dnmoM{;Rgo2{gs(uvfE4WhRGl$CgR<dc$qRw|(cTV@p@oOmP<! zWe%Ax(x&(3ILJw|IM6@osyV>!qZTC;7L(~iQT~GQL7?1Q{m?3~>JesxF*tIO_4avq zN{={m%;2x#&gj|^5hDXo{+Vxv2GTG<P(Z7~_98^pR($a51kobco}1bkFKDURo|^u4 zj?nNOs@aU47aE2Sz|Xy;5$x@SD-!b3V}l3DZ9;l4(4*@4+EE)SS+6e5-(2AYeM*m9 z*H2JuhkYx9TRx<vu4Cc2G9<xw?EUm<zzfhQ)vecm2$BSUOi0<n{+z!{h`PEIgcBdj zrl3d7*5Qtzl4uQimfVZ34pQcWOnWDIQHci04M5&PbT_2;MwtS^LYX5{M{4|Q99-Jq zC%jCi^VigtyPXOQ#|xqmVW`RR$EoFRXog^j)H7o76JxL_&k3$`<5`>%>jNB&Zi{AL zr$5b_LF$IE9PDY3bJSw68Kgu|_??(G%(=zWhlQx-pEpM6j*DD+Lb<(Th-z|i2l^1W zC*gyi>ZaC+qDw_Fx{X4(E-lWx1PSx-^h|+=?4}H5?|ZOZez#({ynrH(+D_0%>~5Va zkH+M-X>iK%o)l)$m=sA`Baf&=K`?mST~)lKhH6G75Ux|+jNb~vQK91Eg_M~e?`JeY z5Myh)i?9HHE)S;iJvfI<w%gp)j>3CU;|s8;?BwaLbx?)|>7ma!FUq&FZp~ZGkUdBP z`3t7vahTkcNSX<`OMp|q2VSa*g>MtDI-r@a$+V8m274<a*ukgLnNuzKCieG}a7%SF zK}E)GePGVAk7w^CC%is)8fra{5-%(ZyCfaA>@L4%ntR=Kw*rvig&P7BOpfW^0#zZ$ zR81`>WQC1n(JlnE?K(@($lgv9yVp7v<F5kbkSjSnGFpW{z!GLP&~poeE}Y!*xn+&C z4g-1N5d0?UD$?WT1GI~SlRbN9E63-zW6MhcC)`BecQZGydtdVrqCHY%nVtTAbypYW zDbVNXYTl2Hmai$%^2P8|TZFLx99D;;Pt{&aC$W>Sgw!>CIrDSFl0#zS_!Cehl<x{? zGCWP8gEshUALQ*(>wI}ZV`_wW1Bj!>Ur451r^Kl*02&+dBjUj>;rYLgO|#gHRq}P* zVXC9^!4V2_GVicY9H!fC&FELK<DX@L+oEAcBV^WIV*}EQd+4O349cF|nryG$9^@?^ zhy3~|mG77~TetbBmr^dpKJzdY65X>Y1l^)m4QFQzt2m_$!%0PQEl_TBe(^}?ZQ;qd zAr8!rV3)72X*kUNBk-tUjN{3g-`?8@&`ouIAh;MBZI;r*>QFH&Bwy&xTBr7Eje%=! zn|jl4w+nr@cBx()w62Sq_tg-Pz1bi?&dYFnaP_cfSWXKop(2(7|8Qz|{K%AI>gk!` z!LJrq*D`KC!spbl>U1P5MfTcDh!q=mS)vY=1qb38FTqttf%C8PU}5ek5#`T33U)eL zPXibVN|^0pWa~rGkQ2~m@~_3U>;*31Nwj}zm25WDQV1Cdr2aM>>0ZXV>gis#Ybj^g z@oUqHK;O4g2`2F&hcm3uga+k`h8$rZo-ey^z}5<t46>*UaJ5Es4V*-wvd3ULn*)to zloFPC0pyK=jqCii70-8l$)^cQ;VUar?CrhdnC5aZ`O4zCP*tC}nnJIzzHeNS(~+Kw z=8LJ0Vc(J+@&<fd%$nMIi~A1gVROHmFDC3d0hQQkYh`x^>*~ksRrH!Zmd~^h(PsN{ z8in&_?_wr5X)C1k3y<gDeC=m?gz=;iqQQ77z2fMhky%#T0}C>(;^GpKWdrfYiy?5d z6L?L(m(SHwFD;`&shN}4Z0DP90cx*0gS1}zJ8wJ_I?+Lc$%m!E;;TvBaWH2_%HO(G zUR*1!&l~MS|5T^6pC3d%MW>5{=06Qjdo#&fEJ=!nahBhX)a@bs3VaYS4RYL|i~Lwi zy4tr?i<ZqXR9g!FkH7Gk{yefQDWLhZRg8~?@^#B;SwE?)TE5L-<8fx*p^yJXz$)f1 z$HwY1)|riTvr(MWoTG*Bavh`cO%ulUZV>xjd)rq1R|@V*Q{>#1c6Bvr5*DviV|m?+ zhSt9(4Zg)Wj>Tub3oz-08q{<s>r)0ZHEZzM&8`zNyWga5)@4PCglDZBw!wu|o7!i% zwKN>omZMSXY<kT?R3SGZHdVHfj3Ha%ZkBt3fW~Lu=OPh{aiK9vHuEmapk*tY*=0q3 zyUHI&@4NGtx(m2w&XQzjEs&6Ggnn@j+RMpZ(U<j^17Y1P)bd1iqMP5zvo-OH35=-& zNrhP+4Kq7n-#m<0`}eDjo9W?Jz~B#-(`!=}Z0qoKnl85bKwkpH#!@4Ap53wv>vt42 zM)33LDZ=j~PnDo0=?Qt)U|9vcZNg9QEuUNQ1JHm@E+4=5xR=r!U;g~rn#F=uW<iOn ztGmMwk)bw-Wt|%pKxPS&T=5U$<$iK)X9o39J0n-zdceiJpsN<UX<mSlJX4fGjZ>`c zyIy8Sp`CYaHl<Ug<4ZlFouPg~@_bK_SjvPM>~^b`(0PttBh_r@Z3sxk+r6U!k|1SU z;tUj8PyTFIoFOW0QoX(5LXI1C9@z5e0qZ|pm#k7ej+a-}QAJeD)ni}N!4`vR`9blG zl12^U%@Thq1u6!AE$|g2P5(gSkBhEdiXT&($c_Ck>jnZOPG4$}^-{NyJlZ)O?(#VA z0+RKHG?pcM#FD*V$Xg@@@>N^2H_3#U|0Ln;^;eNt=H&4LW4=z>p6bx-4|yW4Xs5u0 zxvT@unsmXHZ<}X`al3K+ETE-Mt!<uK%qDe9Wq7notAq(pIAAA9&@WpRX0Tf&E*p)0 zxy_umMq2tJ7Mv%I9tz>qch9JpbRGv=Q327Dx&b&1nkMcm-!Ku*6*kpsBih&&Z)e!F z9Cb2sTv5=0cW8_g5uH!Fhght6=ELrnti$sU;dXZga9R3kdXpL7_BAkKz(c+f8F2@i zL)^J{thHwpN*{#ow;LcXib;NR9XXIg|5!(CWRr2@RqNqMPg$Ik%?9A-urBw9{w-jm z%ZU40O@(>DdL|M2vciHtW9>3k_k>Z<EGl&!%CpNr;p}Hd|6}x^28V@W7z-&6EK(Ys zS6`wMt{OmVbhbk<1*L=O>RWMJBLrxn_M+>H93r}mEM7>sjePc=2YTa;Gfcnc@C(^< zR6VX=5?!XasZV`*Js&<6w#|zWF0-Y?0@1?$*%Z%tt}RcU!qRhR8pL$-O&xTPgi^ow z;Wp1&qqXT@><y~6Y`03UacwM*wt$K`vR~K9fPlcCocIf}gH=b(D^hfi;M_q-MVC~g z;HTF5o*-KfyjNCcA^LhvS?$lFs!-?y3g5K(YPo^DCUmxR-cEhbRws3{gw#UIH2}Qa zdJ${W(4H+9DfGdP{HC$7blE2Ml{#|LbGui%u=k_gil&7|NB8Z>VQ<kwyy!)8jB*22 z;pg-EjrGn1!}2Ps@fw@w7Blc31F$Wu-|;Gjq9{<KDv<<Heb4zm6Hj`H=ThbX>p-IA z447~2Sp3lNoJGlzY+$N!KfVayQ~H~I8D=SEV`ZXI3Iy7f51>F9v|f73ts`A=Xj2-p zf3Ec^V`})QFqno03r#!xkfBNlQ$%|LL<8Sr(0yz8gL@6S1ACne@xB0FYW8oZQ^03l zKr;qF4%h&$)XYZq#VzAzMZ22)AY+sSeJcYxrC!pY1)%=eA53d4s-{+4c>jHRc_@bi z*8lrZ_ZpTqR7;<w834fG=3qh*b;OEk0pl`}pOa~!{6?w>QSu>7>Qh>eFQjY-OF?aC zt)nNe8X*Jp`nsM?so?AL7U}04wCg$lhd8u2Sa<(G();Ukd_}r=S5&%0Rma&Gu<{}z z+TAhAVhMWnA7yNfurTuEcktsKU6-_-SP0%_eFM6h7EyqR)MO{WzkQKL<uV9>Mn)bd z$*ZMV<i)!~uph7JPSRO7?W39^q?B>iXu9x~Wu6uBt`xhq_0KCX$+tVjUy46$M5lP0 zaTqnozp&L@zK>%*c=&GDAa@q&1A;lOqy+*z%U+>dcbS9uaNKcoaX%Xhv6JH!$91+# zbB-sf$)^}iu=m;0FBK}W+1pr+hebkc)Cpo(GXiVoehu(cnM9Zr)EQ^Lvjg9qslGn* zTCU!U2ff>sBlB7|doJzA4X_vMSYUq;f@d+1nYG~-<LjG6;**~b*)N+)p;Q(RcMiwr zECry^W2;cnnOvQ~!)zlnddE;%0@2qSzyFMp{h#Y%RR0U=)qhY0RP3$o42=I5B{IZc ziEL%g7ULIf53u%&FyQ*%dx)upwTa7rKJV9;Y~<whpG^dd|G8l1qP*dFfDhvn+atIz zJ$>madEuNf1(x$%+|UyME1QO7&u~qX=%)whYRDD)MH~<t8yt(fy)CX~H4)-$@4wDE zPGwb=nBnzAi{VYa=k_PX<2wka;d1W}f8?^4)owhXuOLg)v0meBv$x5uJNR+{qb7z# z0sJ-Y!4TXH$3H%d%cAvb?t*`TDozARYl{5Pj$pdJp8ZYhn3|FY#YTwvyGIwxYs(Ox zS}K_`v1-s4wLpsMMUACW(RNj;K(-+WRgLSMo*zhjDKwN;+;8IL(3PN3v7$aw#({NX zHLtp7bWncT`|sbmi#PL?e|Ok6nTrx+RUnoWNVk`r6B@Ri5kJ@jpK@Z?-Xc>}+7oCv z@52QY-EwBPIEWM-=|aDQ*;@SqA$wEV0lA+I0%Ar7_@?POxbj^*j)jaW-U{RY-RWu4 zmf83aePJ+?VB^I$Oyvw2D~&>t%`JqF*0<debA8~7deJk>LV@iFV-WCB9FC;tji=ZE zgG(cWu}>%RTPpJBBbpO}?A5AY6W=u2D<aa_LutiPLOlc+VdC-Jh@h}6S>a=Ng+y~H zR22$)7RaRz{M^@T*ey43a!fy1S^A39s<97H)?&_YIkkxV-HZQ(1ew{_7<R~!lX1s* z9{Yvy_&+&zWjQNV4j)iTdYHq>y=jQng}LV(`y0ZNaOr|rv4r#eOGc0SCGfpk_VbpR zfT&W?+!*YdTbe{W8{rMdVw12HFA}K@AxgyG%Idsy(6(O}EA5oD?a>!3n1l)aI1fCH zhb976FYwt3A}oK^sw_?YTOg_d^J2p&i>qCAW)pPC_=_-d6`rj72P#YeI<+ojt!dtC ze;AX)f<?Duz0RTQfS;i0kr5-T@e~l$_Y?lVd#eAV6fA=u*wla9T4}$f!1}*e3ja}b zzr#kfW)`OZtqQiMx&EIX?&?J=X)P0Mu-g{2bw^Ee3yQ0Jnqo94Vq;rxeDrLJlPuS; zVj^Kqa&-qR7tDETcB+Mt_()Jhc?T<djSSc}>nMQ(=~5$t5(DX$5bA=M^iXQq2-3u| zxzNF4h1>xWDQ4fl4|kn<+b=KNKR-F1c2@)7OTscGkbAgZ&gYxTGj}<UYG?Xd_D?4& zdO>!FF$uGKv;Cif&%P-Sj#N9<#w&~w3lX;oxBFAS%-{rhFZzZQNY;;mFd<&L7Eilm zqt;(yMP2vmefAN)tlz{dmiHa<U5Ff7y`QO?uewB*M3Eg$DAz!D7jL~!?iHO$(8$i< zGK*)0+htOCu%4f|lgXfHMX=Ley09xX%leR-LP=tNWhbS4v9%|ulYMDM5h<w%;7gN% z$KwUT#{%CM<r{a=cpXn4r$mfRJY<n<HG>FaZu;q}pwWpGs}!9YKa{$UFE64KW$K(| zErn(bl3e*;^AWA3f1b)iP?@^v(XZ&)CeK}QJ}#MV4m_<=KVa^M=E4AW&%oHz_@K~P ziFl-5o?fhLH`GB?Um~0gs4slixg2aw79A-9P`jXB*7#r^gDsy^jQhY`y?wC=205SP z5yHE1(Yt&P*ONcssW@)A*4}qb{Q(zLCpYV^*{#<d_=GdDOp%c1u8sRw@zO})%jDp2 z-Z!|d9CSS?YX%!Q+11X<AuQf)Jb7dyRf~uEp4!Xz+`6)dw8@^WfoX5rA<g1q!YHJP z#obAct3jk@y+_PfY*Mt%6&rL7l%-|9QA!W+(-Gz3ZXmLPem9U`paAiCpd#+Q0P(%g zY##xDDCoe{&g6}AN~?Lh071y?dyO0jSN;5hBm3f_<lp?%j>OUA@iVSX>aM@W9hJ&R zxcldNcLPKspDv^NZHj;R<?t!(VopidLLCw@+U?3BaS}7$9HTpMk5bkgIgNLX$<B;# zw1p+YGpFT-vgM`OB0`wJ9+6Bf#}<!Zi4r538`8^UGN4bx(0}q9+wXngC{L1q6^2OD ziTPK%iNZh<-3UdfEH9tHWzPqEf@mKt1lhoS(W{KF+fYJx)?@5pL5hx$$RO+ukjZdR z4gjQca%PA+y5^AEfTM?N#AuJZ%<W2KH!-5ga&tc$8Uizw9oFsJrwQ_VRZ7vO&v}(A zOes;kds$HmaF(CKLT|JiW3R%jEozq3Iued{UW=%|ObD=SlGKbw5dkGKKBjjX>)WE0 zJe(@F<;k;=ZtkKkXN(<3;y+<TAb=o}ov2Cn!T8t;6X`Ez_)(_)n0a|1iFwi096h^w zx%%=z%4r8r0^sCO5div}FJoEsN2^mW4Xaa8EvR+e{GB+l<uW544hAOCKhngc!)W1# z?q_b@RqJCpsp`h{7FQw;D*>YKqBeXy!y>tvuCY;Dnwn&`Yj#a;@!U9-$Sg;5uGQ(Q z+$N$XWCzyu8Xu7?j{hnK6ju!yuEwgJLGJaAF(@4@nq#@||A(3T|JcXCk>vD=i2(pI z;s5|R|M&K>|Jx_s^1px4k$wMP^C(?BU%nfnj()khhEv<1`ofBTv!&?%nylnTXmLFc z$tJ4KZ3Tc36M_L^0??dU^T_KJ$}PWX>buq9Q*coDH47W`n410Ph4$Of@{sZ=KX&Qj zUftr6x_GnXOh<{@f>&tPRQ_c)r$nnwRE6&s1!t(g9Z^;;n52+XD{GhKP1TPkcB-Dt zMrfuCX{0MJxnm|1p`^~Ov5y}(XroR*KHv5H6kcCm-IRxUXp^3t^I0&XRD^%S6?%>W z;8R<Y1NVrVN$8T)X&wQ@ygz^7Ew%j9E90slS3zBZj8-Oz7;jxK>MnDr+R|!qb=%8* zryWa~y>w2VId2@L^7g(EQm%NpSwj4NeU$L&<P1KKP6~6-E+?N@B&@Dr<{OX@0C&ky zK5qnRtuR(StfMUHsb~kVPEv{Sn@zjfk^39P8L(eyIv8IOU9@$3Km(eq1i&jyUh9_p z8<Vrtt2(0Y4V3M`@Z%xwQe%t3-y>1r$SMYrzaySqjQ3ZYM5CU6p8w{FTR}lXG?hq& z^r>Q!ie+2vtXwj`RnbEM7+(UkDMI$AIeOeYpVzlXQ#$cp66au0Zc*!$1e8#_3<82z z&dh1Bmzg6Gkup$_DA2N-lZ62gKN^6VAIz0J5tO`^e+3UJc-$Se*+zdl7^i3u@dpU# znn4yJA7k<}9CM(h!IKu&{!fLE+!buw)-<B(G7g~tT(WZC$)k_i2)@LEnB;6ZU3afu zU{+xvQC5Zm4j&_0mE-Ck?JY|`$&kBmf;r?{*OW!R<FgNyd+auH>v%Gr18gPg1da>D zb<2C=7&lkA{FzFFaP@<w+dt@qHRf4mHAH!N0=Ncg2^Dmykh@%L<isY4<gw*(XcnN} zIZ4Cb9~HsvT(5X0DvW=?LcvrF-DL3<jP!bJEYSaW<hg3{$FKk@MI~lRS4*P~g&8kg zayR)_LNcymk%cn_FGVip5SJp3npl+_PiA=@r^zaq1KKPbxe97z@3ONCNC6@0`RENs zXbO9@YX?Y^a#WfuIK_{fz%qha3ggr07n6LhIM0tmRXv1HNCz+|Dgk<O0_KC<?u)DX z)HstDnccgK(`}h+V`V!ejyy0&WsXl-g4Ah=(Pym@wSa=AD(5-vmz`lF1YjaYrivsR zZi#LpZL9wY>dh8WnU{~~00uO4En9KXsX-D7cGv==49Zj7DM!H6(bQhEaQ|pla3frB zSDaK0k6U5H!SE~VmiNQ(e4IUC1dP$n7qm02SwfJQ_UIZ_R!PlMultTeQI>U57uxCa zc>`)1i}v(~bLN^Nbh%UJJV%Ulcn6F$3~=xNwd&FP&+DJ2ra>eIh?j9#2yha{Ypul) zk-*}sr~YAan8{xX%dN()k_yP1M_g_!gLwe1gF-5jE~VnH&;PuDviD54_}X!n8voSr z1Oy#o%qV^$aol|<)r<R?r|!~F@c<=pGlxL-rJuvu;#GX3oWOnxzpr4o87^ftP4u_G z%ey{okFf^nK#Fd&6knQM=8}0JhQkh_l(#nl;0~`p;)XH_CrV1EEA-^0fIcPM+}Qwz zS&fI!m!yaJJa1*#6|{na<!nq#7h5`@J{Qozr9lc}kSIFRzxj^O;^|Tk6?kotvkZ?n z6bU9(&i!V0UTpwTVl6)hi^YI@;d!ny0O09Bfe}yL0GpI0i6gWe7Q~{E$5hrDgYx^4 zRX+`MT=W5>r*1G$2_}(;*u`drcl~*mYI=bD{&9G*E&>Yzvrtj&0fqXo0VcO!1c3yy z@E>Bee?4Rn*F*)=-aa2>lZO@crwLv(>#zz%$|t635)&h6kJcO^Bl47vgJDh!45Rdy zfYWM-Kj*mkn<FEC(H)`^)^56^q3+o`=BP4N4DS|`CNCaGf5LXg9He1+O`oprW{KGn zNBiMXVsc;O0fy?}F~&|a9+q-g7h+LriY^^LGl^pCKR&5ZhvDKqe@$$PZ?};4s1fCy z=6{-WK6kWn3iAOCt_K%-4Oe7iV<()EttZLK{rUGwbbZY#&8qq8nw^IMacRwdS2{S{ zG!u^DpS4BM6r79>oYy*6B_niLMeKI|vqF!m2yf_!zZyzk(0#Nr%~>%MbFc%sH6{fi z;KVzmEsYhzPZY}Pp~gF{LeDo!6j|d0%oDGlZdM^+ZN*<;51?E>061oRyuu)T%xF_^ z0c`CUpgUdRw<8cqw>6@>JpUN;H%u;GK|MjB`$N3>Ef1&;&wS^M%pmKPCA7J@$EY=h zs*gmSde0&Bw->g5-FOdf4Uez{0#m9a8XjPV!}39uP>4mAe`oZwhfP(gt3XkX*8{}J z+fXME_urVi+!YT?Hg%FIUKB72K=`z=R8G+ZKK>*{u5s1esId#4-(tANg#7;T|MiI~ zR*B68r`-HHdQDB_yRN4kkQ^Y;9IJl;u(Dy9`pYntR<icReft8N3rx8N85@-COvVn$ z=>n(hY0fh!g2F1#<qDQTY;ewtQxTW#tCe)m`2e_*CKxDi4-eAm9+=+(I<u_*3igJ1 zh-d@;u7y_?kAcAICZdB6qR+;pC1a|v?95?oA8W$EhwPYJ6%d_owEcM(b`sZg@~@9< zO~u&%NjcDAVDB9ej@QlK_C+WYR8z#&#JbY9MJkM12~!5STZ6oJ3f@|k6wdEf?8N|~ zS6W|VZw5T3_^cjQ<%WuR6~Gt1gEmAaiI!8@Hyo}P*}!>E_R+BYqSx3%z49c26C4X1 zlnKIBUhjYz&rGCFxwb3D@tLZBnwcWs8u5rJNWjK~4QUA?$TEAiq9+?iZP1^*Un9O- zs^ffue<)*YSNpB)Qf+gMC=x6>KcHON;J7orJs5{;&7L09x)T5#1s@$}GaO@)A{+yl zu6u2u85+_t2(np58}+U#&~t&2!DFm`F?!mMMsf8NdEuo>bzt(_5RLkVw{C9vV<DS| zc`ztj-#l&9oaBex08GSHR#9S%6Rqo+Q5*p%ToLUJLRpdY7!xfzT-zZ**+brH1W1Ig z{*TXdapZw1)+bDkl{~J93TK0J6#|?OTVfBIl%u@>Xq1+|S->;2r1@tI1EgzYDjrfj zeE`V*Q=eRxw3-?CB^u)*9V~>QQR+qnjUl-?BUJ@3zxYQqgFQdYHm{EO;IY3xV~!YF zt;HB}Y#4S~2aywI;BRJsz<B*WcSP>~aO*y634ucKkF;)4R3ooH$#(4DW4lgJdeMGe z^Mi=zvG`P&Eq-z_MwRN4+0JtHL%Y*H0jZ2XqtVPqGC=`}gnl%0WjX7=*p>BLkVCU1 zju?kAV~OlX)@2Zph8Y{FUOQmoNpC;|Q8S4s*stB*I&OJW9-4^)Zuy|N)s5u9EkJS9 zf;35H7t(W;9G!}|si1QxW9Nc$c8usM+XPS977I{via(>ROljn`Qtj$A?nnAI)IX~T zU*lKu5H~jsngHlTRR?Da#_6&x_-p4Awxy5g(mT`<l-ky<XN9%~evYUCt3$oUfR6ap zTewl5B1k>}Q1JA%BsKsF3m`{b!F&OZd4{x6DCQJpRgRm*lbHbIV?P#zpBV(6S`4<- zh^w2O#_gEa1WB$<f+<NZO3QOlVX?X6e<g@iP9ZRARb}_MKqF(x%;YBH&6PhpHRx^Z zBce`f`zA&=hW#4IO)TDUQbU9WGV1v=YV8?G$A&&vH%^Es@7;{fXln>EAqh>nB5I%Z z+>E`fm{|m|i(ae}s!DS4aGmj25F8jDd-XsVN#8XT`CcINY8LvX04wR>ZQ<Uv#a;!b zAffk^?WuwpLWSwD^M(YQr-J6s0>1aFZdL2lA?9Z01})#wz}`G`W#`YQEZeBZIU@%0 zJ5cd}Q#C4yrc$Zcvc{9fWep}jIZ~Xc$~Uae;6LstcHblp_2<DfR6)~ez+x8`><>1x zHPU(Zd^c^Z-z#(q?TtRn^pmuvZLM6d=1oi3SwA=(S_P$1Gfy99hoe~yFC#w}_lQUS zIJ}Ngx?mi)pLeAuU`Eu{ycy^@1w4svX}h5Ip{kBlBpU0>ioWdHwRoVeSnPoMb?q&{ zGdDF@*#Vvpt2RT}59QUi(_np$8&losN6!|i1)o^pqMg(}?Df7-nmKi2{ae9v6uVW% zDb8c!f{S6P>dU)@xK4EMgp}zQ4Yf8`nj~XyD(*r)XhE#Lnu}PK+SZ*(JmVUWXRGbB zF{_E+HoxG~ToYKHj@{UbITYFWe3x2)UUA=)#gL%+eg}co3PZLwFi(qjEsPCW4eUH} z{Ds(UWarzjl$|XDEVh$ORbmnVaxE5ObS0W%p<J;}*6lHng6!G{(OQSCTmxK+<UNMt zyLHNx1g}J9>tAbU3KF3=kQwAflg;<fzemK<<2%QVYr&_Zpv^lex9~I+g`!{FNh=$R z-E`W*$bbjI{_)9LTXu=RPis)E>Z~N)nKGn=@#T`a#D<+Z&JNX2SDK_{8OYqyi9+Rj z&LChTJaP9}sc4zYFD(fTRS<ac$&AwdlVR)@f4WOcwioPWJt3~5>?RmMV@8WV&q2ey z|Mi<u*#efA0R6{>0D~{dt0~%25@u=+C#$blbt5ZcK6aZEl1wkO=hFB6D0QzU_%gHY zLzUAq=dnMv1iIs!ZO%fuqzjmBlR$&|JmBHe|Hrlg_c1IBMU?Ke_V!6|rWj4sS4unz zrX}Ro;%U~QA;i{Gbb^=oZ6MD967;XF!GI;_63jkUj#Cco?c;X4f#%ADSxis>idM0O z89b^&@`n%0a=?mvEiW49yU)y4FuH8Hi+q~xKO2C%+MwinF_ZdrWLGbi3GA(RU71*D zUFj;(+qRMwhGt$1z}c<}#>t`h{HIafkY={GW$G1MlLdOv=-Ncu*}pLbLQhP9oYr}4 ziTim8d(AM~`Ku1XPE|nXptfw)e)E6;5r3W?(ib9*;x{+rhA59i3wQoDY<XvFvsS?L zpRl$ic-$qJo2m1<-EeYKD#lr=xQh~QVwHc{k&82@OFMrjC&j$ncqaNb9+b%dA&Yk? zPRxnof*n~?qDM8AD_c5#1xfG=ESB`n!jB{($Fj+s?}Nf<@y1pVV;g3%)IRmpN}8cK ztB=k_wlrmCDXbeWEEH%Pk*rO<SFx6Z4ks`Ha&!BSnLV3-G4@LjG^c@K%;NVw);CMb z;6x2QfW2#Ivu7k@3XptvRX)F5dmj-io?f8<<{{6te)~L4vE^*BnwZcQK-aJ+dL{Z4 z5t^0`@A2LrINV+%(jKKgK4`tarTBK2<jUcJlKFF70g9g3A|n#7sPV)(XZ^Fpd1T0- zbmku8j2A|gLWV73&SK6bGtpEVKVf<Xh4Nt#oCF*>5c<2s1B?o6X-JBR;<Yt5=a{bZ zmmY&fLnV1{6x=9v{$HUqB;G~$r+|M-Rt(V!9Be^^TO{v|0&<`F9wOCd1&Ke)dc_!I zErW;@gA>jr0Jr_pV<4#96`*DUS+ar2_Q0gIq&gQSa~J8+E-ysxH0zLFCOIouv}n-B zONB|&j$a`0VJ#R!jA5wu(>87L&PIrD4HMAKA=pbg<Kk00uc}51^dNX|OUHP74A9vm zKO%yFQN$o5X>QRih=UD%iTCZ87I3-7IxvQ84>T65*eV3aiiJ821^Bb6jR3lhIl7CM z1GP=wv5BK6^J{9K&$H3yMobOc0YnLQ90Qe`{SU_195Cc8Se-?@>2Mo_Ed(mL=mba_ zY)GW+#Ze(_MoKb`6p1c!YZmJ2w34xXrRu<4P9(g*q5kf?nh&-@{sJWtys-X51&7gR z*1RcWZTj$;_-bDT>C9$EQ3OyXRu(7IojfS*lg_L<1mn2|?w%k=E?Jw$ACxbr<W$4j zqT4*+#+*{`vOuD2pmx|-OI9Mjd`K=nr(QAC21GFUb#CFc`X~|5yx!|pZgAK{bB1Y8 zNPKDoWqF|TU=y}5H<O#WEaAFp><je>l_kz~L$-Ms>t;q_@6v9K=QE`P5o>?j`gUML zRxC#igKXKOHWjxG`8qdi4I3e^R|;j5y8e-?(BmQjx|$TZUUhzw!h_K=#x>sEqiG32 z&A1jaKOwP!mb&8vy*IWap;%SBYf%_jW}n-K;&)Uzfc$rWu9z{%7=6J(rWda|>Z`um zzMWt`uFoy(bZ42@P?D;w@8$@*Mx)D9WA{!oYu>TL>(JVCR1*hTgR#>6(0GBn#(N6f z8-@4a!*-r1pMFVelc;{S@UOoJV64{e^An!xRP-_ioF&gQq^p$O_Q88S0iHe#?mTH& zHeMMks=MoG228P#Au@bOiHP;mnlby3?S0d=v?>4cC7n?jVp%}|Ny<%W)Y&edJ_>y2 zvlOaW<+j)hoWIuG`0d??*h+AP;kt(`K#`u1jP5xQ*iQ>yoB{^n)m#Kg>D`sZ>?X+n z$qIP3)*)x;cbH3)Zn1}zm|`6*meNL?6*hoyI2pw=eUo|e{2=qJL9o(_m9bkBqHLqA zgji;vG`N|D1~E+OLQte%w1mXZAm#(b>=+(v+vJEQ4}HQgk6aK=CGaxMK6`vUh@buY zIhqBB1)DtNk}>cTDuEM>>9*afro<lM77N9u=V#M`KSf6$5sh60kO}BJsdx0NnR+(Z zd>XHVt$DmoaS@{q6}ar8VfS2x9riX=cIUEpS-EI=$#5CXTRI0>7}>oMOJyH?ScOwf zFx{sQ&iAh6p=ZNb6E*qlkm_fiQH%;-HS_9LXh5358Nlks&d9*=7<SMq@0nQYqhH(E zAd)-CT{R{2*}BW;j9}Q-kBe?<t0T!itR>@kJ#sIV`nd>uVnfz_X-mIN`@u@S$(WMz z7D_Q+6kk1pSd)issj6XfN&(&&RgTY&AAl~&?!(bA^<A(8PG@ro`l#GaGjG^uo4^F_ zI9>vZ<=b&?OY1W<XZQHYIRoG+s%uE9%kHpXRFK}V%*4)6iYd_=l=;35;{~kM@Nj!} z8?DyYxC;SYO>a=e25XGJ6ti&)pH48*0AYE%^;ZhQ^htOE-9Zz~-+X0^L#23ErW<O* z+Q?yegzYum&Ek}I#vEZ!*;Ga*W0|U|yuc|SRLSIGubsT}djKg{IDv2uV~WYvgbD4% z;QZu2n%TY+fN=aC3jjYo%5I=?YOY{gt&SfU6oUIl5q3n*g3#>(Hjj#7R;1iWktBUS zj13s0Jl)Q3u9<d{)0SWb&(!Q~L7Uy-&~JPSlP|EKJua%?MIfCUQtiZQ`q$0eF?xjB zE~Kh1?Qz72eybe`+`o&ebDN_G*RRK|!8}{z?sEOoiPBL99kZ~`Cg$Ad?NM=RZa@Up zvO~rRT%#qTf&cuvrN#rqPzo<y0qxL)SwyHuy<2lh1(U4VY_zp!j9Xt{Y0{~^cfnys z7HLMX+L84WdY6eeIL$-`RVPZ$=U*6;=Vt6(uviQV%<Nplwh!XG-B!iQ!TN@j9EqW* z7ks2Y4-d}}Fy|MRq3uae=J==f+QgX7!AAbk=xCEUm(3+)&?=i8fa#h6X9%m&+9+W6 z@-x%istf(h42h!ODuyH*a7A7xl(=xqj67M_;EAr-G$xXgSs16t>lzaZl9tlnG~xcM zphDeD`vdw0LytAM2X{CwSgxbVvDEETZ_N=u)Y9tGdsp3ftG{b9fn;sCq-;U<Ty&#m zg5rWbl_7rcZW7weoRKPjYB4PfA-eN4!Y|;y&65*n9?ffH4}3B~51NjxsoFE=%GAG? z57&sbx60*V21Bxa*(mszM|nJBw0Cson9m9JtaJQ5uvd_k3st<J@o-Oz3c-k0$tDSj zEh9Pb6hc~ZRg<2|yXzB_zl3SXq0fb&q`Jw;&>g+phwtcRxiGndr#yjFeu%2Ug<NtK zjisAldet41XbQM37G#!kv)|!vxyzI6EQCmTXlOG~>sP`lFzT6>ZK@ga7c+Fwr3|^D zu5MkKG_D5$dtc~b;vG>gUs&XH*G#8~aC|<znHnXyEa1k)+&65UY-`&#W9^o&4slz+ z;j@h%+*eV4Nr&K$r%Pw}rOxfW5mqmFyv&yhj5Zc>`;f<RCsp&A>!tW(72E5|nC3>$ zZndUk{~l=*E`e35=P_w;Sr*prz5kT;!R`Q`g4Jqzo?lQKFcQOGfdFTHP~1`^O)s#^ zPHuwvACd?vR^J-CXk@9uDq9r)Bc)wv@Ti_;Zcrytn^EXE>ZOyT0|+QaEQ>REJMBQK zZ~tSw-n#$k%w;Vdrp{Ty_0T$Ezw=e!)z@H9YC1xs<;-~rJ=4N|B6UUc21zu@4}Y>m zD=qH0V#yIlJ1|D?JUYlH>g5{{H{O`JR+Bq@|JhcmWBpT(k>Th*aF@h#xqUbAJK`4r z-cYu)zTEYs{lJlTA8^tBh^OS5Okn^g|0xfhV4qhBCtC4!EtdL^qaKO1_>gKL=(Iel zz+!h_rG8W<W0$k|nP^0ob=jP`Iugbcmh&8Cd9l(&QM9uU#$5oco{%e<%2g@hlphTX z4|*&TgJZ8?Iv>G{=E6Go`VFzdNC!&rGjPM_WQ_u%%508siq=3Aeu8<t-RWJj@0V#P z;C@4!Q)`Nc4%;10`x+cs6qbW_#8u|M4<Cu9FXOM>{;;%_(C+kN^;XyOgJuQ;62xQ$ zOs=iV&QIOTF8u&^D>b<>Im0<)Mg@STRF-1C;fhpxn4@TZ+=6!HjXPmQRoUhjQ~|A- zspL+PmH@?EE%S1$^72~!bLtakQ5i-cw7K<D14+tGS_dm!naJ~e)_$k<^u8z4_o5}# zJO0C#)}?k@gXfh|&5G}Pk^T~ETXB0LCt({uiczitH<|gwMnOI(f&L%moF59P;5H zt$&|x?GB95WeGqG&zwE=mt=#{y?D8zsIpN^^3&>E$B~1k04W%GD3h87Ki2XG=aTV{ z6gvRcA+SJ~ga`=0q|>G#fF}6C7w%CWFl6X+OU+ctqf3&6HQ9bna`bz`9e%Y139$QR zc<kKXcuO7YnRZrzEl!;ed-XYE#?lJYF59nFRbM9Mq1fi)Y$9;I(yaGz(M`{h=%9q? z<T=c)`|bGW=exved#fnMRfAS*?eazqGP`mmbz&bh&D#ye4ulELS%IZc!>I?R`Cuce zE9oh%TEpOaApiHzqOs<-cPhUMfxAK8->2ws0;C-}$SAwjPtd{pa*@F}lN_x}C}g>Q zQtpy<^C>{qmTX<u7YaRow*}5S0O2yr`U>s|Y}O8Qvi75FVIfIP4D%uT?CK7(T}j1A zuXitVxkv~%v-I3v;Dj^pxn3`5+M5mU|Df!hx<rYhWZkM=wr$(Cja{~F+qP}nw(Y82 zwrv}?`lavaanODKK(43EH8W;Jd?F{+5vRq%?^^2j>aSo>nSfeQ8F+Z53_akWmg|hD zr{QdtGzFgu_SdaCW<<`o#ZN|z^=7f~I~UlnO)2{sNZTXwN2oPDaa{srI;zP}&-ev# z!7u8rPtMmAb9=3Afo1FjkWC`qdPbiicv86P@Z3|3Ke$6Y&&G&83kdFjn`Zl5#5>Eb z!=kRNd}H$jJE3YD+s1k_^0IwgYS%Z}4$(CWosOW^-Z$o(t^(<lj|IfMq{U+<o{)U` z^<3Aw2>O~<0}%Dy4VEgkgwt3S@rw@wIlDVN1O03QXX1Z8dSbdZuLpnsa%Uo$&0t?O z0?Mi~2W=d->UbimBAVYYv%m_q^FdQYCmLtcwkk<*Fl6+54<|S`ovKsmw_!TkqZYr2 z&Ow_Hbr7I*J!$iNa5wH>&?{nIqLCj^ZQ}JdC*lo0=Uk=USzR(Tlm~L4w#jn^OC?U^ z@>RV(t6966Cr#_0)&VRPr=kB!lW>B6`(LmA;k*zQ1QR`R8U+0)avadN_Qms@@;jM{ zW}0RiWfUt9I}zRKbw#Sl;1YpesWNhnN_R5bTfNzb?9{XqEh9e$h1BGl%tjAE5T1M) zuS{M3V|G#(d{HAZus$tn70%wf$R^PJFBw<+hLpglvXTdLb_Z2s$MXse1p}=^&HNG~ z;|Hg2vr4m|<xI{>_xAR5UZ$}~n8D)T7Dr3!atgU!WyU_XGDqR0A5_xMJEnQ-8Ao={ zaEDl+ZXujJ3)O<Lcb{n&m`R=#Ez@<Bc8RH}+k(P93$C>$wdJPtfhNr5f*o{cqqLry z7D={$bs`lj5G3q7B3Vmoj`c}hswDEk;}*yo2cEEH)Q(X2#vXd=tNW0-l#`oX5qWBf zbiwO<6XW`ZCeTmBy*9bg7SZ7e#pIC;Txa-ZDfQ`e1vwbVa1IY3Yg@^}th(eSfIDF0 zNu#YtS#u2E`k#p@bbFldIJEM)nvQl6SVN*k$?e3z6_VD^1sv1LN^tjs>qt#aO@K<R zLx15(7+EH&Jq<~;Q#`BK%zYA}1!d>(78MzrQq$RM*&Y|r+8u|^nac60*$kARTq@S$ z48Ca!__a4qD<%V5a*(p!c9;Hte`xQfMJTQO(pwhHo@Zp;S7L<Ak=s_#T|fv)^!&__ zPzbw(*6C<baheQI`JrT;!0xZE9y=Hf*jxRJW=f3rC)ktFs82nd%_H&IXclll%VG^O z14%zT6Zv+oqDTX$)B2yN9ya-TR-Tu#q@m)(Rw`|94|o)S5>|T@xlaR^2=GSGOYr1i zOS?u<-?mnw#!jGz83NM6#SPyz=8s;Mi(eoQmDRPRm7F4Mtv5#NJx951KY^<GSDqiA zB+A;?ruPbVx-%8L7UC0DOp?Z_CHTg4R`d*V4u-a^-iEYIqt{GQWsY)JK~}PEF&A78 z-WEK6EXG~QM?W3;PIyi!*wy$_aDwNX9GAc-0|1?F0qHb_TA4Q{XDqSpw}D&_#AT)* zPJrqf^qoQrX@okvoCdN&LL~aepuzHc(cIY4*Hg!)3owP%6gu82L{m#VYb+I7+3y-- zeHeo4An>kBzku4!vbK8l(W>eveCJOHUulTa;Dm1y3s%Y-P8MXn8L)EE90~$#M<;3Z zAx+&#yABoiW^;Xb2)Xd4$)CS7rWptWpCK-AdMH8P$EP`csMg&-O6bD{qEqg=Gh0|x zlAZO)+Q?=<qD(Ju%=|Vu>OftU=;b<JaM<57QubZ%)R#is&(no5T}$#Vtl6b8GzGUA zA2?YPmv5Eo!b##|h#>qYqxqzlGODo^2iCD8j>|@+PgfskYZE%>j#ZD@Q$2@(uMcpj zUC2j9;({HXYxhJ=)NhTEE-uLEvnNU3z}V}FC@-|D*hU_OOTUP^ftYl5sMaOu=v!jZ zQw>I6FTFzD&nN<YnECs_BmuZE-TDSPoo-`4vNb_olS4nh+lU@;45UkDL_CD0TvhcA z!!7^<qIy<ZcN3Y%-lr~SaKbkCN1*aX`-Vql#GTu^Yp)G-d_sJ$PugGZYiI3e8SJV% zb94Wsz3<WNiQ>p6e^K@FlB8~|+YLbUd}4Ppy~j_;&?9vFw&hEhuCsLSRf8NmMXx~F zh>t;*Y0;6z<VqDKG}0Su2u?jKd-%(?LfYAIN9YqyLUqwQqc|FZO;h!P=4cRDwC3ve zyuu2<z;&?>?#W$mJ7>aSJ$j`$BL60~c1}50$`&@nR3};iRdvIbz?*NOSce(oTaD^p zgeYqvde&*v<+L)Ux3<M2udSP7VvkuoO>T!R`Bm<x=n;gV{XA{JZtljMbaMvmRRfTt zj=wHmd7C{)*{h`3)H1gLPg?XD+t-I~YB?3oOj@B^Z#@jmRsvRn4?JFwUv8o>Th*y- zS|T8N@>IN;8pg(f;xxY&$i7GmcKGgVcUIryb*tQpF9@ASE)h=H4g~}>*5wZ@+ql1i z8eeqUcV<_+b*IaOR|r;FO~JAsb;zJHBHceU$dp(Vrpf57dy9Aa!L`HGvXS2!yt5bA zk*GNjL%(}aj$EF4D2Fnjj*EA5LwS-tb*2YiP%lPar#~!GRL<ESs2m*d6WQW$2yvIp zX5g^o6WI>=xj7Ydtv~*tnRUR@exU>{I0c96O&z{x_ut!ZD;DpRn4#fa(65DWqFN<> zlsp$lbI>0T^k1mjZo^VnD(F~xnkj=WD5%|Z0yoAC^v@c)#|<6i^84$XG*1@=(!BFq zGkxbIR(s#XJJ%FFyAo|@-)TzRiayY0|I;7XGEgCVLN|*Oj-=)1=xx#4@D!)5LNj9b zQGm7)R&1DY$%GH7F2-Rv;6N(bLD-G9OiOM_X0uGi*%=Dp+rsu1grkmA4yHPs$$1g= zxW~_*!gSS&T9;w7LzUi;RrQ{99naecOEvj$(-t43FqmD$+dX&@Z`XGHlo$Td$wl_@ z_*7V|;~MQ53-2lI4$nZxW!RD7%KUhDJ7Sx_Hc_;)Zd)TN$+$y)A+i7BmEY%$qgig+ zdp>qK8-S=5dyzg031>?u9US}t`mg><B|3afw_oHrKLP*%$N!rzN&i2s&Hvf@@P9BG zPpfL$Zm=Tz)c6jE>nkbkj*QRQSSp&P&X|W5Q^0o$`QyVYg~x=67YQoZH!%NrhbAE_ zCL|a2;ga^XQ0IIcaf#XbjwgE2r&-y;>0$8(am!LrWB8!BQx2&0qd@IVjuygcoRB>> z<Vg}88NnClE7-ZettI?>g?H~EMzjI*OHDSdu}%wBMRrn<SQ^-_%o4R4H-mQnH7`G^ zN;ng6c%cv$6NC<rpJ0H)R)i5&D2cGv_f7_gWuyxw{S_6B(xqTq3A^i>qYo|~qaYJ{ zyq`8Qz=Iv7PZIL=m8mpOAu6A7FeI{%C5Bnx_z2yvpMNETB8=Yw)&M@zRiMO76~vw~ zPJ$GvH1zWE?MvZbHfSvwOQ(O@-_5dk2zvcqhjLVAP!B0Du)K2x8vT?beCV!aMLj*3 zc(N}i@5WyqW4Mgb=gs^=nKFe6EgJ1jC{}3b@1GGcu1gUyzR_mV7x%_CIW0@9i7-X( z%B7L*o|H-iyQzxpj!GP~F_=gy$cUONPwX`%D;;#rjX`TX5V2$C^67o0=e`K1(%1U< z(vltWHvr9}5GGTo@>@Wesv*k20t$c0v6z145Du`MU@1z<y#P-8L(7cnm;+UA-gWS1 z!#jD?Dds6Z|3C;sLaJ#J2UYBk96`CEQn-6NTeyZTNHK`j+xiy{=HhDi=U=&%L<^(6 zNMJz&eVvS2djoBVBHRblt{TTS#&RLb!;s3`U&=;9S@VfR%O>48!TDzVDnCwBQdQ+` z3%%*$Ip%?LfBCc$1CfI@7SwdXYDk1W(jHLy(B(3A0}Lke`qq#86IH&iwhaQtXC;2; z8wo$RJ_N`JaU`lwf$oFpj4bA-U!5i`k)UFJKu$d9jJ6)C2*t(*an*R!wz1u%Ci*%e z77<f>s=TYfLFc)d(3-tAzZ6iXN8-EDbe58%rL+W<l2d3Qo1J8;O+oW%|APkFL)!oB zxh4cG*y=K`Q^njWDk{-DP-f}0s>t&0Bf12VAQfblaEOUG?d77c#qS1o8xaO~k1o6l z*zm18>A0?&?a-R-ZKsDt$(cd}-cSmJMljjPb~Bl+zu>ok=ILM%)(x-wD<mjQp0Vqx zEJ@JAmV1OKt1&HBlp3HPkJZgoZY^VX3x-WP)+FHEF1oIKb4V+=e9eV;a)OBL9GtsD z%ejKK3AyxDV%kK%O!qRoU1~7mjGQ2)UOO$`ev<2DJBhNjl$HDg%dCNHPU~^r31B<! zs*}JzWHX#Z9>u_Ysqel7%!Kk4-^g2m)XYO}n?FQpk0WK}cr9hsT)PFQobnuw6hS?> z3nP<<@$X=mkEFGfK^UAbSH|q;hG?-314<R~!k#J<fTo~Fi1wgH8g5^ml|<cNmpo>O z${NH#OYj%wMGKb<<3;9Cz+f`Umzdx!Tx7kgMNcWyCH0j|i^tYIC)7O`ywoAZRckbj zS{ByjHrGAKN?Q*rwMgDm)}I&3c|m>))P3I2>GgqEg}j9)8gozGYkV8c45CJxG`S_K zQk}0w$CkzMA(EMW)uP?Ygkc%?M-4WSe;#s}>em*_Tt>Nkp)@0bjL5V)dE~yETv;2+ zQBF!2is~WFh>H8s{hof_KV0|mL955u=wj@844WV9puiT%VT93pRKv|Ed{VbA7KZRm zACSw`mDM^n9KU-leAJR*yVB&6Y4~-LZi50jWy@3I#p!P|aW#?=Hv=;ukLe^89BO`~ z74w$k3^LODs|f3q*%@TwKPYR1Y<(-Wn*CiDSFo+TlO*3~&)kdrG`HSHB5O%ji5IS{ z@y|;WU44rT&Hbz)PWyW_2^r8TYDDs5L>VQ_xLB{MuwH+T;>mAmWar(4M0Oj#>Hh1d zo|Dz>Qw<IPfQ=de;C~WbvC}uS{B60Xb+fkmPyhV$|LQp%*7%Rw6~yl?UyvELt5pom zeIYu|2uGU?t#y0Ezn8qnoH%geeu$P4Mu77THpjoEE2sb@6UiTTUa2M}s1m>C(~m0y zSO2rgPLUa#;(2xTuGJUMZQeu?g@~%O?$w{`^XWUIpQE$wru}i4T#4iFikT?;*^k$W zogH|HFz_+d_u=oZn#x3<-UO|u3il-{qb;=NQ!dWY%z84G6}DccK`-8Cwu2j|7Tj(v zTF=Qk)e3dK+uw4XgU*LZBU-dib}FaoNMVDN8QCUxcOB9$)`D*Wrsq&14_6It_KL<S zKBf?}tK92)^M15@<j6K3&*0?SPP=us+FOeBhl02_^VFH9ot|NUEoxM)YT4P<qqSK2 zw0VX4CZ#Ad1|4vfWyh|F_A%8*eF6|5I?{<E^|6BG1s^G(!=T0R3Cj7E6k+OxC@fTl zl^DU$wZX;MG@AsDgLUx54Z}+dTJ`b<b(PyJK+pL&BPnQvdzE8j5X`%X?4x_w`@q58 z<7pXpOH@S``<ycl(c6xtdRnYxar#_|!ehzg-m#)(?^7tD2hFt`=dvv$5D2b=R)998 zNNJ=vb?pWaYyxeD)5!@D=m+X}kfB0l6OjZq6FZf<$Q4sOPfxYk4>;A@ACqMeoaUUs zT#<I8f__XKh<?n$pZ%-hjC1SN2d}}C&s?+<=)d?*6vgp-OE0O?;}t`v`y=4|w(bh9 zVHOE~!W<lHjA%}Fnf+;b(=)U^1g_c)*)$DVR2r1>l)I>Nfa5}>iLNZ<^XIUfKFbDZ zI&N-5ZaJw^z)+w75!eKN0(frJP!dXp<HRc%O_LzC7SwC?jOdpb3p-;dff<VB@a|Cs zS#wtDM;uKmjcO7;KpDOM%3^+1F3?!>)D)q+;=0hcE3X&za6_Ky0vj|$TT0617BY)b zZWl|pny@g#9GBG-AfDc;fF}2}@ygR<BrKPf_5$k)L3;G#=SvyFvD!@)x?>(Xkk&y= zxe}a(=GnIqR)uQ{g210&&-VqsF7EvR-vJ>Ak;HTaPSd9AyO*9=_USvFK;IV15u^ls zb)ehUnhvYc+6N^q=ljw^(a`$BfU?LqD%oH<fIQf;P#Uu3nty=d^<dLawECcR?<*E( zS;CEw3--7oDN~z+&LnqjW->Pk0lWI&wYDXkfpupI@(YFspvFg#+twOWxOlk-74m)< zuV~GoD#WyL97@{85Ye578$jIski`xcVJJXR$4!EZ+jiNCd;~slrLc?%jn<JNhIw)l zdHfHSmMer5xJZXdn$k>wUq{j+i~>Po07f`^r{SZliWuqXTYwSC4NN@*G~m-~?m7g} z8`Zw<S4ygKf7Xr8MK^X(y){qSh~OM_enb`S(~_&q$J>dgr0m55a_iZN&fM$^!*5y{ zW!5?yln|YWtyV-eMKHhjE|-=hu;fz#1aEZIc#J09*D$dlv*W!{xC??vqDBFZgS9wC zY^f7bP|TxLj9LqVwT4F4EL_r;!0r5GrCy~s5ut;^CG%FPA4MsHh_+<wc0BqtbY~}x zdBmpRk*jsqbJN}Sz<lV@F^F{3X#lcG%J*?pB?{M6{ruO9qofKasmd>CjyYDG3*0m` zTTJGhqveNQ=E(VpYSR3|NRa3O5I+0hw=$nQGpU|6_9J_3etaiU1Rpa+N!dKQe;O&g zM6+iUU)H(*Sst>eZ}<FwtrE$_|6oK*e>^k61d;5ql!|a%b>{AFx>l9`apM$$W#N4e zG@K0$d;EiU4*eOpI}|B9Fy3T~d$(@v9nz4HS8znZTAjmo)fyXOp4?n}MrOY`l|?8L z$rNynis6wtxifFR(;C##SbD{~UUqd^x7ED)@}<~kzRsJTR2d{MyJO^<WXa6*?CQ(- zn0D9D@%gWaGSA;y*y2Dh8K!m0%YZMO)cX7DLC3X+?|$U6@UuC7q<gI$DVp1tG&YSP z++LWNzKP`?bOUG;05JH^&fjnV?4L#vrrXeX{oKC22Ij;}uR}7^kKC8%9MU_0<0x73 zGin6kI#*1rFzNK_n_-{a1m!M?#?50Z(v2C%D7X69x~^GNgD|c8;cqi~@a{ROKnd)a zcImHiGkOU!o&9n4BO&6a6hasCEioO@n5OT4nJbZAx#f(lM9=C!v-i;fcjTC42zYMs zZ0KMT$Z$Y8MT1FT=J3(34=kOZ)jm)yW3Xe_u?M`8q4t<DqB(I61EGQ99^d3igxDVn zA!kNxFP?Fp*p{})(W3r0vF)iN386^2hA+2Y{LmxyKXC)rX`WY$-)_geD%dau`jlb^ z<cIQzFvi3Q^?c9!0>7+^2deNNqGRqHPx64dNFs#boLu5Sa#=TS$S;3B><EFR*Ut8h zUG3J*i}U!fhk0gc(F5Y(dLjbS%?DDXnJ<6r;5|L~tK%N(<UTCH_k-0E`}1gbX6XV5 zn)OWJ{5T1A^n2!r1i4F-51>^an3mXOmMnH0vhYWD!g)Jv=r@2#yr47oT?csUi+7^u zv|ul6A_}oY=Dk4w-7~p+z*wHWNr@m|!sGEe<HcpJuUcaTN*$sc7gbZAZ}XBtdfAWz zH|8N<!k9qhZ{#3}q#{O`(C`<ml2n$u2MTC1uftHF9jVd5e|E$MzSN=viQMRudg!nk zA*8;ig;vR$|H5^CNW?ItstC~uWJ!>0sSDX}+wovT!xq2Uw~s}`C!1xoaAzIhV@DWL zxwFA9!2~iQ2;d=|VG|(mO3zrOlG0X?KUjJ-O_gJfu;ZEj(2SE~NbIsCl|zrJeG+5% zb+_40Y_SS+CQ&3hIk^m#$Cdp9j#!blNbQ%qrVU1cU6_Vr)ixSF15lr{TQAK$w(R}l zE{=&w+&Ol#3E3IUTHVQT^d&czz{*)@Xjt;Y>7k9mmQR#a2~WtZLIiFRmHEIyOe(dh zj!QXgU@S~6modM0Xi4tF=&%;#V1E`J)v1#uUsJhu<MaIdogpMYJ1C0YOcME8lEoT4 z(~UySs4aUU^SpZrT6li`tr1&3jGKxB$gq`I$0AOVV<?gPKOtx)M~}})6G^0LwCn`u zNsN_Q@z<!y&6l!}I4RAqgN}9dH@-x5gApuL*co>iA@8h7qaw!F(O|^NSGGVLF;<>j zutH2^$<PIuOKQc3SiqOK1X%ZD^S>(K<nWuNq}H`J6t~WqBzKM$z{{&|^5dlt9B<!u z<ySCu#!nH#Ks%<(l~1rkDkw-Q|4OyMYzy1Iu0Av1PfFPWtCg`k-P_Z05?1@+igTfn zmA1THy*`0!E46gG+1gz_O^=*-bhW%bj`iOj(pzu@ira@z>w-+ki>qcfT1<1KP%p_M z``~~h9a?=RO6skiSEQLH8zj>yt(Pw0c_%Lc+PBVl-vvyU<W(*yDqPqFPsejfp@TJS zeEzjwAmSQ!xNWo`&E#dX_{p2sK2G$-MIrgOw1uoz8Tz>i0H*5I)dJo)SkrQv1Vs;j z&@<Cr@ZTVtS2@2}R@#_kO(vMM^LGUe)M}+~qA?anD&X=?-PaBa77CMG)9p#~6l&l2 zzz5w^rq%#cRO`^D_=2b`qEVI{m026#SQj^AgerqRvHo5)@iQz}mCwp?E@Nl>l2t25 zm_vC{{JDr4K5o_FPjNgG$wYU>)SJIDkmUg^*d$V5(7^#$Bnpw0ytI?o`OkOfIynB` zf+WZ#c37`r)?r({TW2DL!cmqUL}qN^EVTb=HiLzrao^6#U(GX<dXa&{6fQGy<pf2v zWIYY;?j%}q)^+`ydPA-DpD(rCi0=^<;15N2QWAiCWoCAR%kTf-HoGMR*bo1A3*<}% zM}Eh{Ow;K?w(bPPClk3XB){b;taReevXg$$2IngpnrOJ=Yk)KV92FJZGDD&|fC~zc z18fRg*C|RL%*mc26XUmG&E{vT<rD)Pv=0?$7yb1oof=2rISydSN+9$%KtPae?z};S z1^+6kz~|(6y+4nG#?-t9pyTcB;v7<sXC)~pMn;(_pR%wfC~da2O<eX5s-TRbs4gkb z;7eSPv?+1aWPZM(9h<pHPkmxtxVLp%X9~gWUe1jW@{uBSxGG1ntD#gb_s<p>Yv61P zN?sGV=ue^1P{=jwR$EV9-%uy8{WeLHgTyjlL71;FD{&D}kk)MUd;RRnbrJnSNBrXZ z5AxAXRCg}jeN2uIo{t#VO?r2UKC~XCSLOusgbI7ozAbcNws9Dgc>J$ecKn{r!O8q3 zy#DTlR2U*wEMKAQ`TYwYPg1Zcq8NL$0qq<QtlkRAj?_s7R{;ynHL$Ejd*V*M+$3e) z`Q{t88{Ho?{0XP|CROY(u~zKI`I{DTpL|9W_T&!QOg;9E6M4ns=pVNN{%ykd){=#G z+0`yp{zqqJ&<JNYEJmr-BCOjK)$Tq=c`N$QjFl_8api<GVF@7K8*s=LhA7((Z=inn zsRWGY$fkC|^V~KwBkKxJ9LAUj1xfZGk&N9Wa{*I^AZkwu73QJ+%qBd`EvW$iiE@(1 zLW=}RoX_<!&xgqZN!?ZWGiF$~azI@7FHy-sy{+;2xgmthnk_noNX&ZckJ%+{ltph3 ztzn0J)3yxFP*c11f)0lxl}-8TG0aG_ehJER^4spI943Ez0;|+QvNScdwI0E>OZDR+ z>-|%O1g-hQk7a8fkZY6<(LWDM-8D9`XE>$Cr}sGT^p)BAXm5@{O!1S)O;@^(D027q z(O{jeLeV$r4N4MkejeEY+G@&9vGNI*IRXhCg<Efl2JAJ{jvlj|^s2<|6jEttuh_cc zp-5$!6$!s?b(J)YX}<vS?`o+7w3<qmV4;c^W9z?`P_DDlC0_kK^oVlZD>J+ok6qHq zy*3{4+7yN?2;h*U38Z{hhnNT#SxU`U;9M^Ks-oG4Le>$ln`3<)&-t3lG;yq|=~LE} z9lOX<8)on?|JFkkLszTn>`MJQflX^%w-7CBh1;*~sRl{rud>^@m4U7@uzRct@oHJO zmDdiNlZObqM`xCk?WCYF*Zb~CD}C~mE)o=~PfW~{=+PUNIBh3QK$I`Di>$mC%&mFR zZSPoiKXE~rn5APi)v;43IUl4ccV<|k^WcU(+qp+k@4Kd9xwQPSFYStUtRY9Xn}<a^ zoyfDV=f*UFz*R+7q4b~cqtaJ3I+F?dL2pZ@D6V<PhVW|)S{!*i?WZ?;D=5p&E`c=D zyVcG)KNg-V&d;|0Z@m-5{{x*?O-A~^Eu8q@w_5y9I$8hY>HpEos;KYA^xqzX{EJ!x z2l$T=?84}=Me#2jt&{S9)@$)!juAFCv~|$`4|vjlCpTYdd?;>=pnmf(z2V7nLbvq8 z>14}lN$+x&+(84gxm<6unzLA%M?1wgb#zi;{T=`DnN=TevBCh~ZL$HI1u$`)z2G|W z>h!?w3Ew<Did;v9?#_dau-siifWn!6_v4d{EVBogcmnk}<XE@HUevD)K|BU)p`v=T z!ZK!?b6@fI{jFF<7y#tHcYL7Xwu~^N?v_#&`bXP;eX+u)^z7pDocGHZditv{^iOwR zef9~N96>5`u<wCmuGjvjcXK&!m|n!O_t!cK!0Ej5VueeoGxP2o*eIRo#s`a&%SC_R z6dA~l$nX)NU2r{DM(;ASKE3>5Qwgm`OAPWbu^Q*jdvPGBRG~d|GS4zVMBrT-urx$P zv|YOP0pAIzdQqlR87*2!iE71i*pU(<x6$fS@vfoT+d^-X$KzKY)_;c$9t=8eeGT(Z zrjB7;N{$hbahw2FhFilZDZIxdEW%Ya$~eqxMlOE8D7>mf1C?6}2Dg;KKtq41--G}d zyyTAaX&&m&wVSk~Zx{L-TX{pGTBl$IXV&W{=G`u$kMjW)Ly%Ai(WsiKmbS977ckl? zna-G3SkNMU9HHL~dhwunnxgSdT9P4qbh~%)?i@}U9kTaO(=nrxvL>+D9DzufYN_)* zU<(0!T4Yy)BWlbZdPmN2{H-7lJR>Y}7P}DYy4rNozXhYqzo*iLc7<1qdo-=VMws43 z>ojostsP+ExO|H)t`?rP`nIh;b(%Xrxbv_1&N%&|6^51<N0HT0kbPx+ds8n1lSO<) zq$nmr!k8ag|IQC2TE9;|r#x1;_%0eQyqOsE1IgZkJ&<!%b!rc0^hs!U1JVz8&ImRa z5n8}m;F=4*_j%!Nx!9!}i}*!pO=R+SLTHjq((KMTFH<{-3|gj9?h}Vn8dzKrFIr~p z=sQ;l|L(@7(vfeBaJ)CLP^qLMoDjr>aF8vG3Z-CWWITqf`kvX*yh%;60iQR?osND~ zgJ4Ilq&Jo{4Q=wyX%vvz{_bP*jjb+7%%o-XK<e?M9RR^j9VwZ~C{V7c$B26Z+Q_QB z5*p;8_vcCm#y!<GvkcU8pqiM+iM?6PLMyOkR0Iu~QUivK!%@wsg>Ix^htv@i`)T>< zb>k=J##KIq2n1mIHIsyh6L`h2#b>zzN@6ih>>1K$hOS`nF@jWK$dQkUQ~Ojo-icxt zQ}+YjqQ2=AS9_#4dL&L@t2m}<35)<$hqmpJ_03n?;A+Z>Gt17EUSa*aShHyeacjD| zCC;jOcv*fIe6#44E!IuEX?l$9Z=l?cXk(Kk*F(n)pGgpQ5HiMyDmnoNif>efK9UA+ znCeLr9`q=h3ESL23VD!N?0`8P>n1%rqp&J)C4&%T)KmKsanaMnxL-vpv3K0JbHFfj z(@>A}lPP5gzKOC+^sEsipSfW1xJ00(WTsoo+G}cggV19bvO{A{^p7gUp2gw);ra7l zeWXwA21a-Qnu(Vu_MX(TYZV<>Wg>ninPa`grmCRWjh;`VZtlqUfTM+7R|cEt2m(<n zIQ6v@K3&j;F$eO}Q)Do}#cLj<o-aWFDouddGN0<1TPL-=s)&T8+@m{|E-hJZ?W8A@ zO>?Cp5h%G7&!G=}im+MU_eYg~vpzZRg9jsbykUE(PGm#e$|usV1R1nvk*!v3uyy(q z;qpbNy-Vk~{pYl&S@vRZJMN{inCO=?8Rq&;8`Ln=Px*qW%`Weh{Ko+I1ETy?Yn`Yj zfX)2i60mG*V7(@(F*KDD&^5}XCv5bSHz<zk=<;2J3-Dfl4B(EYrzZl>eVk1_MZ6Xy z4eL3PM<3#kSoM}OLs7G|EoFb_0L%pi;<w^r!kvX-!Rj{kEuRO&ausp#3avF7SKcO{ zhK}q;msyVuPRm@)=|tI^gHTkSnk<>_-a3tw>}|T(;wGc6`Y5G@c83cd^|!YJk=mtc zjW^M#Rb+vorj-}?G<!iexAZV&>8T`MF*%5hIh+xvp#}-*dxJyKGk9%Vw73b#*ONNA zfN2>w7K!BHTApI%`Zzc&RayBA6Bi6lHG1^KdBa?`WBLgL>h>68vl>2QLPof}b|yU- zFFHyc2Wt#2jRv{5sn_zee%*M<WkIYfoz5j1GFGYL+Ag>34Y~Jv(A;07g;2PVV%e|q z6RT{4jHj5J(;A_f|CVWmisYKx8tFUXQZLw(tDu6GAC=Gqzv`!CLl2YIB}h4n7<{~u zxD7#W<EJ=YsEPVVl{L~WIjISZR1+;*=VRY{h4afTBx+3rT0`4IOgQN1Fc{JF{x)6o zj3x^GqOn7RkV!|Kl-lF|QQFW~5i@i4fGM0tC`w7#6;Z7kR3>#p^%y3>D$o$mQ{ik) zl5_SSl~KfuWXOukgeQp^bDmr|a!TF5Lu;HNTK6GFzQ4JGS1+^4vnWOrYv>-re=W%$ z7n3=aC?}01oDAhtaMd>{GPy`hDYWj#Oj+q<v+2+v8#@tO`$W&Qcl!vtr<B3Of<UIS z{CeiDD-}X48LA`bhMm~@9~Y4Dzm&EZzm-~feJdz{$pg#N)gq2<+df-i8hJyHX%znU zIYbDfE{9&}sVk4yJRP6@{MX$C$$hvy#P4K~P5Qf^_#cip|2cptI_WzZ|F=`Ymiouv z4RQGIZiSyvih|Un<Nk}9l{sL-3{*-;`NVDI6%{i>+qy{Ib!{@?;GZv(71DYnE|<Pd z9JFxM%XHh5x9L^)#v6?71+pg?^mG>>b`<_v?)}pMXaL_fyY6FJyFu)T`f{kk_6@&i zPKz=;H+7oB2L*p^p_ei!U%3&P6@TrvgOhgxYA&a42qrpcK;tVAt8SmKijMB~b{OwK z%E}$4m6van$@h?P|4!Zoa%h>zfX@ZI&%6wPy_f;B>qXXnoB;6YX6b0oER_Nm?E`JX zqW3;mr^s`9)?k0My9lu+DF^@6m;kwxENna%S<h@py>@Y$u)uf(1{y|w0bmr+k&^+r z3By!%50uJql~E`B8xxUBOlX2G(QaPcSWC4!me2@~Q$g<&uSU`uVH#U~t-(8Z(i*sq z^1uT~J*C29@M&O}#4LD{BYb^iFR?eGP4F}>c;G?<+K2i-IU*2$>?z|9%Lyj3jQ9M( z@?+Cf&=u#xfLK8l)p0b;*IAcj2+LT~Up@sYs;;00jk^G?BX#t-$pd?#f97%eu>w?K z>t@J%s~CDgOjpTDgs5+|NcG0FusV<yT}o_Z`(wZjk=#xcuM!5a49k4tw>^cyC$M!E zv^qhwA%gDCUDk7VNmgl(4G=Dg>`CnacogMkS#TJf(rq2hE{OKc)TS8=ZvrfT_)RJM zo(#JIdHl`y8*HeERx7Rm5JxNDmrcAsSgdSWTv{=?dIe9poNBn$;GWo6b9mSMX!~JZ zX#K$G@8|oixqRN-9DEjk+~$c?xz0zdJ9pl8qu2Uv&*q%STX+xBu6AGf`BhyfiqGz@ z=(tY0eL8pgeP=t0A+35=C*du9&kHwILbQ6naEn`*ie@^p7Y-I)@*ibG9{0x8ZArT` z3AWB~S~_u%KWT(+g*wT2e3J>5c|`MfisjHvrVx?R^pa_ezz3KE9s16dr3a3zB_ta< z5a3Ghhwm}*GekKQScOvl0WSq+nWOec%I`hAj^93<A+149P`^cT1|oP0NX*%&A${}r z%N}8%@H)ojV>53c#AW>}e=R6J7v*{NJ>|-X8?K_P`<&z)fb<~I+0>xqyWm6s&am@r zT;CT@&Bf8z;OU=hcQ})g5dBc;#}?#}^H>g2pa3laDCGx@SB%T<v`ER3%C?}QrRL*9 zW3h@zDx!+cbU19Oqmiwl^#3PcXhR4qGaO5YP23>_<mlJ0e^e%jetP&C;sEY}WNrcz ziV#|_Zy`E2l^}1e1>ZMJtI8}B;wIaL4@KF`3sHFq7$NNv9*B_n07>SjX;f^#8Ny7I zFoTP#LCnRVFC+V*(7hP8BIU78Sk#2Jf<Z4y`*NKB@*w0I>qx*m8%thJi+0@jnFcs( zl1EsJxPutol=6gw`*%WT`+$hZsGjbGGhEF9xAI7>QHv!@$lw^Hc~T$XBThS!H3^Eu z6k39j?XTj{WU+^3d|t5uCST$CA2W{$6s^34B%F2tH?%qSI_9Qi=q?R+QAygP*~K$q z8Vg0SD%QM#bD13Zv;fF1%iKp!ibTrpbR`0kzxm=fZMe?3d9E{mR!O=YiwgSg#*x^9 z{A-ujcV$<VwX9(qKX&0WO~#|bjuzfru-Z#<mgMdF%s2NQo@pw6Q4#nm1L0R}C@1F8 z?1_DpqoK5n^24c3E@>85uM2&n<S}b`^_1GV?^HqwYa5o+9#B0TJF9H<sKNa-z`2E! zj%E}vd?*SCBTRq!a<eXrpN174fc|~Ji!(*@JLKkC3E6`5#Jg0{>}9(3rCg6#78e!n z<I-#h+48aR(_p_cV68}6x?5{?^hsqAMpFlsAZ3fAMh23#NEjqaPv>NUKjix?Lu(MW z(?2-PT3pY@7Gbn{MYBD+rZ2y~G0cSHWp1?%+s*C+N4n8tY5W{SThegQt4F4KA!u2T z6Ay)oOEQQv{YieqU}^4>Gx2e%)W*jD;U(ic<I-+ZF1~T1$eFrV^#3lM%|5JGZfZ`) zGGo+B@ISl!-hsX!u&B;zdnv)$Xm+nNpM=RY@b*|uo<M4Ex2U1XJ~`ir9&Ekx!J=ab zv9BiusouwNK0fdX($-gue2{0EZM?W|rbD9F*>Yz$6EUag_`I@cUYFb?09snN80u_L z$SI*4`zOLyIL)a!p_fu$JE=ownw~sZbQ8%+QJn=S4XcxnIs(%r;j^#R(g`LN&TTrp z@&vdut?0>F40cZu#oJo7`9mTuK6Ni*f#cgpdO80BS+E5c<Qbdk)ChIqJ}))Ml{5|) zwPZmzT{JRboKU-Z^Re|eCn2#D;8^rn+y;=eB>9b!M5NpAA|tlz6}&T#;t0(<Lee8- z;?DWdNAPI-=tF#V>aR^sdP{|*YUHb6!|VK(?H9~{y?H~-tm+7V&0n(`008v=k2mjs z`y;O9X}ckc_`}EFGsp^0xRye~1tF)@yhYxUz<IJNShR_<f;tePrCvpmFdAx9c<0)i z?j1LoD*XPB)GX>kq`<}0)b!*ob4?rf^KiPm^l!(8kvWYAu^xf`3a;~1oGipAT2PJa zYXq>PC29>dQx;y&dHfaa<L*y<_7>RN#@-Nb;@+&#z3nkr%0-;&VT^AsUSOl)O6Ohm zq`SDr2<qC;Ug(Xh?&VcC{sG5<R`0{s*oP)N)@-#Ou+1S>)D(3l!Y8K8kDjQwpesf3 zTSKGRCI$paXNxgCnVxla?d&ZTO#KJ5gLG!Pk#Vr28~9&t3$1@rc~^FbURjL`2mNnm zbEJ8+tC2<F|45pxID<p@nX>}DXivHxCZ4Pv(VD`qYF3ebw}|U!jc`MBYB#j2RdD21 zV+IFmvIJj_jB1f|LbHDn;ptg3W6@X$3yk3hAw#C1jVXPk40`cUMMGrb-lBw|vt&*z z2G`6*_$ZcJ*c(HQ7$AaxLXzwiMG1S-zjpr_gp}kebcQk^RD9`~=EHdn>NN9zacgXA z>3k6>Pla~Z?*g%p)-Evjdc1Ep+#L?7hkgTzD|x2WZRfB55ZVE_>ai`5W}k!@AGSa+ zw)t(za!jNzP0v4m9ZW+}m44V$rk_AF+lBgLUSy}}*ZX16@$h4o?5DoOTt<5X8i(QD zc{4EXGNLMD+$#<P=@(*=evi{6&d_rvTK`)2*L3yLv-A!YgCt`3vZ7C)q!u@y6E0nK z;O%gBTwh)~=zQ?$o;_=yJ?V52I6N8Kp2dX}R=0iLjj%{TA&=$x0P+L5xmWaM(Rb-; zleNF^_pAy=_V~y<d%?gqAi(g}eh4SQFfdtR{-B28Rb!ZYn>M5$(Kjwdsh|E9X|^|u ze0#kElTi80er}S!c5iIH-<>6Hl>YS+@Yx^WY<>(W63U2pyCw&AhO>k1(ruO{o3iu9 z3<wy)IZ*EwNIX;;kCSrk7BAPY1JKHcTeb|ELWUy{eqRI+7H)G>;33QE!LJn_2pxsn zI9!AfT$Fv}L|_GUw8sbKQdlf|QUr~JQ((J`6tMP$#0HHRxFC6A>YBha@Tn%L!^d+S z?p-ZsfJ1ZPul1d>e}dqMhk}BQ2}P_UWds{+r8!BU&!h>0wU7=AVF?kln92?FL6UGp zV#5uD7p4opltG1_+L31XL-j{`*;F_#V;6qT7l<h2D&U!$mW+MGL^c9-tcYM(?+YC& zxQVT9DAbp`U1>K@oLsM+9oDC*@A`8LykCU3%!=C*NOzc<yP%5IL5aBhrBJ_>53|67 zugvZH7yjXo!}53_QS=8%gb@%=N=;8LmZxgtfSBzzG3qPKp?oMDQ%4dU*a>&-d3OIS za12DWAYL0D%n06@$ELXt0e>j?$Zj$u_jZRObD{XC1OqTi!nWdpz;9U?#*zHJwdEdq zuOh7mAwM)YABE`Br*eNmd8{V#7_Q%s3+ncwJm1@70iFrH5A2tDN7ee=qQDJ+SwjH8 zA)6D(bgU&PO3qY-4A+;)P#P8l;I{2;l^Gj{*B)!>2Ly&)1F;2p-8l8<<*YIj>v1(1 z*8`>qN)3H~K<Iu}oodv0bEkID!+qN@uiTL@5*vX@(%ph5wq6^0@UGUs{PQ~g6XN)r zI})&2C2O~qvnD5M<m(RL=jY(n)!{XZ-748|K+OEMCque2j)%7sJv*m2GwS0eA{-Bj zp1B0`tzt+jd^>!7*v_seWeLh3Uva215ibW-5l7=m-5V~yDQ(>|Ea2%3Ms)ORFE4H1 zZ#0&9dgD*y`!20|A5YjlGcXh8A9L${Ayy0^_p3(wdz=QRYDS=N?A<XA6=F@15%|VB zPx0pq2AESl5$}h+w-#EQ6;qVAZS~m~G2V>bP5-(CJ4#9>4l!5+9Cf0&O~vah%2_jg z?bP=Q7ASw^pvxlIMP?Ch@#axJjsh!UqT^f)N-nO}43iz36olk@&iE*VH(p2*6KFy! zYKaxU+<*C0oQ$-f@h5Ajdd1R*U{?HS7T|AiqE@2bhOiTu8ZN&r+Tv&sA4myUcPiB( zX4xu4fXJ|o?@2EpcbjnbO0Ub3k=-)HUoFHHABhFSJlx#GwjZX20ygRoL?w&(y%`y_ zzz8Y^5pF;!>+X)T^qzmacPq)H4t(Ix>v@-9Ln&Y+;u0v!Or1dG#!1*lM^$mVgPL_R z4L)F)qbts+cpwM*Ij<~i0M+ix`XlTNVNTlPefMO3kYZOT_ugSTn~DmR&Vnu&atY&G zVjkkWnP{n6_Lzb^6I)%88FIje$|H`bx2UY>_h$Wp)Hq$HqsXJcsC3SfEJI|weuRe5 z`^AB%D2lh)lfl0xsM^p5@6Lwbj6Uxk2M>$*uK&)^$$}Oh--L#KxLd{qD?xXAS^krJ zne*Zom@e<GuUEmH&z|#W7}FX!f45l&*v-nQ6OBZA-K2h&UNUmu#DgKVrJIojP)Gqs zq)I@VF<@XU0rb3BFAGQpp@a%dHl~a$NZy#7H*PkLo4QRFKh`j(Al5ys;{bxdzqL_0 zCwoi$qHooE(HL%Ac<A5g-!-~FKFIs2<-!<BKdQqpJXW<qR?PiZ>8Ux~_H&F|fW2_W zMiGDvc5<+Acc#bu=EQsHiwz@tO*{=K{4;0Jf0#&guDN4WIr&UL%=Jk&*1SP-;&xA< zrk>9*%E)E(9aikt-&*r21|S&HfN#$RObCgJG?l>3@3CY^cB88PUEn?}P9E|3w8HO9 zEF&DFGY(nQNHkU3RLxxNKh`Qd0+vf6tCfj$edMcb<|-4xV#Hen8p(XwGT^ty1iZ}J zS%mF!(89I@9jY~D7{byB?M^5tzrVBs9mcAa6B1lrVGmvSc2^SGH}8-W&7YDq8Bs#< z#k`f(Qt@3*nC14~$qb^8_Aa?;KxxcW5b{%F^chLu{>@$6AQG8g-9vogTA7^_H*B&= zv=DOzVl-jpDx%}8<MPbe<~sCX>IQ7R^oI`p&?^Q-k5LAPIAk*Rgd=596h91@BN!(j zyqg^oaJ*6FsAo_;+OK}T;O$U*Y(SOnr6TJfElXcYd{=Pn!vg1}tgaA0{NamL2SRT2 zRH59s3kJ3FY^P-lADwo?5x_=Yz_YtyySh!)-?cp657jeo!d&(0TD?m*(+||n@?}~e zwo_5uPv06d9iZyzXB2hed}*d(Ne#YlJ)p|r@nVam?X67?3(aH&b;7o_V#UbS<yt2g z1oJ3Z%}vg6;q=ZTLRm7*RV}4S?+BBJsF$Pntv7g<vTEM-MZMT_iMw8exRK8uQ^bTe zLLs0Du$v27MCJ?Y^5m4=2KDWBZ1mxuDq>hN=CQ8Mhf=-dPdDx}Ah?kAA&O61kQI3A z8vMS|?i@6;3Vxb_uo7@6EO2x$By6@as1PDM4=T38VJ{&+vHCY?c#i-f4x(|=4-|lK zb}bG9%cEd0g4;|<w>gaQDOCkdiP_<EMx{`uR?jC(f7&1QKCeilj8N)|g^u!-0Zc^m z-C-&aF63-<@6*n@CHYXoho^v8Bzd|exNQewLP~$YbGX&Zh_@(R+d;1E1uWb<i@>1$ z(^|MJxbvH|L9fX%Y^4;fblNgLI~F=_L`~fcvg>yIlv4*$jnBu1BR`nwHjzCi&LZ25 zKR{sv2K25(SQr1EVRTy6<r2dSc~$c21W?9B6gL<rhFbQXWA`{gr&5anbTEX;K{$e= zS#yGql7-}lA1$$iK$aTx``x@%>~lG>s7w<M!N&z4V$7FFSnORm_fg^AC-v-ib&n9| z@QR+nTO2FkBGWdbIMd#XJc}}LrDH)?oc7kLT<5Y$V|j9ibulBcL}1{C_eJ}`o``96 zZ7U1+=14n}<7}HefiEX3e5mqumtzdWRVdJ@&PZRT$>tX|riWp!{U+-(tY2qbTb2S5 z8BZ;pFx!F~OCrhS&z}ZleRxjK|4eHL=U<h8r11n1IvWO{;r6q%bhVS=HMgu6L5#z1 z6LuM`D-TK&FEn>twmHByqAjkZ<J5(s?^hWC&;WDgtxVXW#xFefoUYc?IAE41q;On? zXH!VBzA4P}RI^}Zda6W^xQUdCI@Z56*9altW7Ny_#g}~sNQniWeLmmyy(C_c<drfs zsia}r4j8TmQ|ly*0YJAyCAW(M!6M(p7xrR3`G#kwL!Mj0RIWp83bXy9Ttc&^0dMNR z%Se^0sMeyBd^EBS_mCMoQxg=!NUaLvi)~(6<v;Imbh<IV=PuqBA<=blu4))orE62C zwB(`18xu?XeW%^V_kk<b^~#DXgcp*-VBL{!tRDc1Wr6lHffHzM*QizE2$ct&5pd+| zsZAxUC#OW(d_HSHIK(-ZMO^OJT4E+5L3ski)*qpPUk_LrMINus%3$(2Qe**&Z@+#H zBN$^>)<Nb1X`|E`eL76$h+4RTQ2G==$l1sA%FXW&1J<*u3W}h^h}xVDhm3=9eG4Tx zj71dwt%-A}GM*M&6nYg04>%eXmH|hd@R(Cb5L<9aWTUu_P{GuK+M0iqgc-LwT#`#- zs#>ne+xEm^pK%@2t1#iKRb+%YMdhwDF;ptan&Lc^D@eqaYUAo{lOMh}c1HdLuFh(o z2fV9lz(T9oM{!Q(3JriSTcp3Hz+UATVZoRli^i-;IR0CT(!WfQ8jC5agm=9<al+_5 zCeDKrRe1z09*X^nv~(dicA6j9+=$R1hNEK+T)k{hw0d}PVV715t@9$h`<st3ggm*D zK_?BNK`m>BlLdutIU#18A($bov5#h98~=seYuzwf&*~Or@z3nMgSF5iYQT+H&lbqt zG7<E(CCoVH?zV2|=2WI;bvj5}QviJoH#nYLJG&CImyv}>7H`rupp=d{WSlsEu>FF$ zHO$yBe6R+kxM7<kF_#Hag>L6#ke#xB1#C=92|>XY<+KP0p$CdW$QeOj9;#^ws8gq% zK@xIZgF~^%x4xtZ@~PYlDLH3@gdOvh{N4CX`qa)AKNhud#u(dFv0b++PGTDf{=Qw( zb-e)b;lx^^K+()Fy>rd7n%FrRu+<2$tzpDLVK=jp94-JQ`7t72<9SLKL`~JN2P(64 z7UcX=+5g}Z1#gkUZCDf=Flakk`M_C{?M0xZe*G&=2@Pp9I@S)k$BTQPW8lcn8B*W6 z6k#`ClC$XkrU@3%d9OZB!;bt0JJkY3R$98Jg5&IAfC5>z8uG`!JJ0S9%atFU><Bs} zR>U}O&zh0qc1Ra5elwCmTo;<1s^z>bBX^g;a4L>?$X$lh{v_Pmn+n6Mq%Hkk2kK2M zQKQE;JeG?bonKYG@h3LXf@0nkQNv*WVWl0r@FATG*On2`-~u5Ke}MJ9aR^X#+q~bb ztCG&F2XVK^0I_~mL`rhc9q~Wvbeu5aVW;TZkw|3#1%%9q?&1v2mYK?P$r2%0AFbaq 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 diff --git a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js index 01b903202..b4db3b16e 100644 --- a/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js +++ b/pkg/vtiger/modules/MailManager/layouts/v7/modules/MailManager/resources/List.js @@ -8,968 +8,968 @@ *************************************************************************************/ Vtiger_List_Js("MailManager_List_Js", {}, { - - getContainer : function() { - return jQuery('.main-container'); - }, - - loadFolders : function(folder) { - app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); - var self = this; - var params = { - 'module' : app.getModuleName(), - 'view' : 'Index', - '_operation' : 'folder', - '_operationarg' : 'getFoldersList' - } - app.request.post({"data" : params}).then(function(error, responseData) { - app.helper.hideProgress(); - self.getContainer().find('#folders_list').html(responseData); - self.getContainer().find('#folders_list').mCustomScrollbar({ - setHeight: 550, - autoExpandScrollbar: true, - scrollInertia: 200, - autoHideScrollbar: true, - theme : "dark-3" - }); - self.registerFolderClickEvent(); - if(folder) { - self.openFolder(folder); - } else { - self.openFolder('INBOX'); - } - self.registerAutoRefresh(); - }); - }, - - registerAutoRefresh : function() { - var self = this; - var container = self.getContainer(); - var timeout = parseInt(container.find('#refresh_timeout').val()); - var folder = container.find('.mm_folder.active').data('foldername'); - if(timeout > 0) { - setTimeout(function() { - var thisInstance = new MailManager_List_Js(); - if(folder && typeof folder != "undefined") { - thisInstance.loadFolders(folder); - } else { - thisInstance.loadFolders(); - } - }, timeout); - } - }, - - registerFolderClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.mm_folder').click(function(e) { - var folderElement = jQuery(e.currentTarget); - var folderName = folderElement.data('foldername'); - container.find('.mm_folder').each(function(i, ele) { - jQuery(ele).removeClass('active'); - }); - folderElement.addClass('active'); - if(folderName == 'vt_drafts') { - self.openDraftFolder(); - } else { - self.openFolder(folderName); - } - }); - }, - - registerComposeEmail : function() { - var self = this; - var container = self.getContainer(); - container.find('#mail_compose').click(function() { - var params = { - step : "step1", - module : "MailManager", - view : "MassActionAjax", - mode : "showComposeEmailForm", - selected_ids : "[]", - excluded_ids : "[]" - }; - self.openComposeEmailForm(null, params); - }); - }, - - registerSettingsEdit : function() { - var self = this; - var container = this.getContainer(); - container.find('.mailbox_setting').click(function() { - app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'settings', - '_operationarg' : 'edit' - }; - var popupInstance = Vtiger_Popup_Js.getInstance(); - popupInstance.showPopup(params, '', function(data) { - app.helper.hideProgress(); - self.handleSettingsEvents(data); - self.registerDeleteMailboxEvent(data); - self.registerSaveMailboxEvent(data); - }); - }); - }, - - handleSettingsEvents : function(data) { - var settingContainer = jQuery(data); - settingContainer.find('#serverType').on('change', function(e) { - var element = jQuery(e.currentTarget); - var serverType = element.val(); - var useServer = '', useProtocol = '', useSSLType = '', useCert = ''; - if(serverType == 'gmail' || serverType == 'yahoo') { - useServer = 'imap.gmail.com'; - if(serverType == 'yahoo') { - useServer = 'imap.mail.yahoo.com'; - } - useProtocol = 'IMAP4'; - useSSLType = 'ssl'; - useCert = 'novalidate-cert'; - settingContainer.find('.settings_details').removeClass('hide'); - settingContainer.find('.additional_settings').addClass('hide'); - } else if(serverType == 'fastmail') { - useServer = 'mail.messagingengine.com'; - useProtocol = 'IMAP2'; - useSSLType = 'tls'; - useCert = 'novalidate-cert'; - settingContainer.find('.settings_details').removeClass('hide'); - settingContainer.find('.additional_settings').addClass('hide'); - } else if(serverType == 'other') { - useServer = ''; - useProtocol = 'IMAP4'; - useSSLType = 'ssl'; - useCert = 'novalidate-cert'; - settingContainer.find('.settings_details').removeClass('hide'); - settingContainer.find('.additional_settings').removeClass('hide'); - } else { - settingContainer.find('.settings_details').addClass('hide'); - } - - settingContainer.find('.refresh_settings').show(); - settingContainer.find('#_mbox_user').val(''); - settingContainer.find('#_mbox_pwd').val(''); - settingContainer.find('[name="_mbox_sent_folder"]').val(''); - settingContainer.find('.selectFolderValue').addClass('hide'); - settingContainer.find('.selectFolderDesc').removeClass('hide'); - if(useProtocol != '') { - settingContainer.find('#_mbox_server').val(useServer); - settingContainer.find('.mbox_protocol').each(function(node) { - if(jQuery(node).val() == useProtocol) { - jQuery(node).attr('checked', true); - } - }); - settingContainer.find('.mbox_ssltype').each(function(node) { - if(jQuery(node).val() == useSSLType) { - jQuery(node).attr('checked', true); - } - }); - settingContainer.find('.mbox_certvalidate').each(function(node) { - if(jQuery(node).val() == useCert) { - jQuery(node).attr('checked', true); - } - }); - } - }); - }, - - registerDeleteMailboxEvent : function(data) { - var settingContainer = jQuery(data); - settingContainer.find('#deleteMailboxBtn').click(function(e) { - e.preventDefault(); - app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'settings', - '_operationarg' : 'remove' - }; - app.request.post({"data" : params}).then(function(error, responseData) { - app.helper.hideProgress(); - if(responseData.status) { - window.location.reload(); - } - }); - }); - }, - - registerSaveMailboxEvent : function(data) { - var settingContainer = jQuery(data); - settingContainer.find('#saveMailboxBtn').click(function(e) { - e.preventDefault(); - var form = settingContainer.find('#EditView'); - var data = form.serializeFormData(); - var params = { - position: { - 'my' : 'bottom left', - 'at' : 'top left', - 'container' : jQuery('#EditView') - }}; - var errorMsg = app.vtranslate('JS_REQUIRED_FIELD'); - if(data['_mbox_server'] == "") { - vtUtils.showValidationMessage(settingContainer.find('#_mbox_server'), errorMsg, params); - return false; - } else { - vtUtils.hideValidationMessage(settingContainer.find('#_mbox_server')); - } - if(data['_mbox_user'] == "") { - vtUtils.showValidationMessage(settingContainer.find('#_mbox_user'), errorMsg, params); - return false; - } else { - vtUtils.hideValidationMessage(settingContainer.find('#_mbox_user')); - } - if(data['_mbox_pwd'] == "") { - vtUtils.showValidationMessage(settingContainer.find('#_mbox_pwd'), errorMsg, params); - return false; - } else { - vtUtils.hideValidationMessage(settingContainer.find('#_mbox_pwd')); - } - app.helper.showProgress(app.vtranslate("JSLBL_Saving_And_Verifying")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'settings', - '_operationarg' : 'save' - }; - jQuery.extend(params, data); - app.request.post({"data" : params}).then(function(error, responseData) { - app.helper.hideModal(); - app.helper.hideProgress(); - if(error) { - app.helper.showAlertNotification({'message' : error.message}); - } else if(responseData.mailbox) { - window.location.reload(); - } - }); - }); - }, - - registerInitialLayout : function() { - var self = this; - var container = self.getContainer(); - if(container.find('#isMailBoxExists').val() == "0") { - container.find('#modnavigator').addClass('hide'); - container.find('#listViewContent').addClass('paddingLeft0'); - } - }, - - openFolder : function(folderName, page, query, type) { - var self = this; - app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); - if(!page) { - page = 0; - } - var container = self.getContainer(); + + getContainer : function() { + return jQuery('.main-container'); + }, + + loadFolders : function(folder) { + app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); + var self = this; + var params = { + 'module' : app.getModuleName(), + 'view' : 'Index', + '_operation' : 'folder', + '_operationarg' : 'getFoldersList' + } + app.request.post({"data" : params}).then(function(error, responseData) { + app.helper.hideProgress(); + self.getContainer().find('#folders_list').html(responseData); + self.getContainer().find('#folders_list').mCustomScrollbar({ + setHeight: 550, + autoExpandScrollbar: true, + scrollInertia: 200, + autoHideScrollbar: true, + theme : "dark-3" + }); + self.registerFolderClickEvent(); + if(folder) { + self.openFolder(folder); + } else { + self.openFolder('INBOX'); + } + self.registerAutoRefresh(); + }); + }, + + registerAutoRefresh : function() { + var self = this; + var container = self.getContainer(); + var timeout = parseInt(container.find('#refresh_timeout').val()); + var folder = container.find('.mm_folder.active').data('foldername'); + if(timeout > 0) { + setTimeout(function() { + var thisInstance = new MailManager_List_Js(); + if(folder && typeof folder != "undefined") { + thisInstance.loadFolders(folder); + } else { + thisInstance.loadFolders(); + } + }, timeout); + } + }, + + registerFolderClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.mm_folder').click(function(e) { + var folderElement = jQuery(e.currentTarget); + var folderName = folderElement.data('foldername'); + container.find('.mm_folder').each(function(i, ele) { + jQuery(ele).removeClass('active'); + }); + folderElement.addClass('active'); + if(folderName == 'vt_drafts') { + self.openDraftFolder(); + } else { + self.openFolder(folderName); + } + }); + }, + + registerComposeEmail : function() { + var self = this; + var container = self.getContainer(); + container.find('#mail_compose').click(function() { + var params = { + step : "step1", + module : "MailManager", + view : "MassActionAjax", + mode : "showComposeEmailForm", + selected_ids : "[]", + excluded_ids : "[]" + }; + self.openComposeEmailForm(null, params); + }); + }, + + registerSettingsEdit : function() { + var self = this; + var container = this.getContainer(); + container.find('.mailbox_setting').click(function() { + app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'settings', + '_operationarg' : 'edit' + }; + var popupInstance = Vtiger_Popup_Js.getInstance(); + popupInstance.showPopup(params, '', function(data) { + app.helper.hideProgress(); + self.handleSettingsEvents(data); + self.registerDeleteMailboxEvent(data); + self.registerSaveMailboxEvent(data); + }); + }); + }, + + handleSettingsEvents : function(data) { + var settingContainer = jQuery(data); + settingContainer.find('#serverType').on('change', function(e) { + var element = jQuery(e.currentTarget); + var serverType = element.val(); + var useServer = '', useProtocol = '', useSSLType = '', useCert = ''; + if(serverType == 'gmail' || serverType == 'yahoo') { + useServer = 'imap.gmail.com'; + if(serverType == 'yahoo') { + useServer = 'imap.mail.yahoo.com'; + } + useProtocol = 'IMAP4'; + useSSLType = 'ssl'; + useCert = 'novalidate-cert'; + settingContainer.find('.settings_details').removeClass('hide'); + settingContainer.find('.additional_settings').addClass('hide'); + } else if(serverType == 'fastmail') { + useServer = 'mail.messagingengine.com'; + useProtocol = 'IMAP2'; + useSSLType = 'tls'; + useCert = 'novalidate-cert'; + settingContainer.find('.settings_details').removeClass('hide'); + settingContainer.find('.additional_settings').addClass('hide'); + } else if(serverType == 'other') { + useServer = ''; + useProtocol = 'IMAP4'; + useSSLType = 'ssl'; + useCert = 'novalidate-cert'; + settingContainer.find('.settings_details').removeClass('hide'); + settingContainer.find('.additional_settings').removeClass('hide'); + } else { + settingContainer.find('.settings_details').addClass('hide'); + } + + settingContainer.find('.refresh_settings').show(); + settingContainer.find('#_mbox_user').val(''); + settingContainer.find('#_mbox_pwd').val(''); + settingContainer.find('[name="_mbox_sent_folder"]').val(''); + settingContainer.find('.selectFolderValue').addClass('hide'); + settingContainer.find('.selectFolderDesc').removeClass('hide'); + if(useProtocol != '') { + settingContainer.find('#_mbox_server').val(useServer); + settingContainer.find('.mbox_protocol').each(function(node) { + if(jQuery(node).val() == useProtocol) { + jQuery(node).attr('checked', true); + } + }); + settingContainer.find('.mbox_ssltype').each(function(node) { + if(jQuery(node).val() == useSSLType) { + jQuery(node).attr('checked', true); + } + }); + settingContainer.find('.mbox_certvalidate').each(function(node) { + if(jQuery(node).val() == useCert) { + jQuery(node).attr('checked', true); + } + }); + } + }); + }, + + registerDeleteMailboxEvent : function(data) { + var settingContainer = jQuery(data); + settingContainer.find('#deleteMailboxBtn').click(function(e) { + e.preventDefault(); + app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'settings', + '_operationarg' : 'remove' + }; + app.request.post({"data" : params}).then(function(error, responseData) { + app.helper.hideProgress(); + if(responseData.status) { + window.location.reload(); + } + }); + }); + }, + + registerSaveMailboxEvent : function(data) { + var settingContainer = jQuery(data); + settingContainer.find('#saveMailboxBtn').click(function(e) { + e.preventDefault(); + var form = settingContainer.find('#EditView'); + var data = form.serializeFormData(); + var params = { + position: { + 'my' : 'bottom left', + 'at' : 'top left', + 'container' : jQuery('#EditView') + }}; + var errorMsg = app.vtranslate('JS_REQUIRED_FIELD'); + if(data['_mbox_server'] == "") { + vtUtils.showValidationMessage(settingContainer.find('#_mbox_server'), errorMsg, params); + return false; + } else { + vtUtils.hideValidationMessage(settingContainer.find('#_mbox_server')); + } + if(data['_mbox_user'] == "") { + vtUtils.showValidationMessage(settingContainer.find('#_mbox_user'), errorMsg, params); + return false; + } else { + vtUtils.hideValidationMessage(settingContainer.find('#_mbox_user')); + } + if(data['_mbox_pwd'] == "") { + vtUtils.showValidationMessage(settingContainer.find('#_mbox_pwd'), errorMsg, params); + return false; + } else { + vtUtils.hideValidationMessage(settingContainer.find('#_mbox_pwd')); + } + app.helper.showProgress(app.vtranslate("JSLBL_Saving_And_Verifying")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'settings', + '_operationarg' : 'save' + }; + jQuery.extend(params, data); + app.request.post({"data" : params}).then(function(error, responseData) { + app.helper.hideModal(); + app.helper.hideProgress(); + if(error) { + app.helper.showAlertNotification({'message' : error.message}); + } else if(responseData.mailbox) { + window.location.reload(); + } + }); + }); + }, + + registerInitialLayout : function() { + var self = this; + var container = self.getContainer(); + if(container.find('#isMailBoxExists').val() == "0") { + container.find('#modnavigator').addClass('hide'); + container.find('#listViewContent').addClass('paddingLeft0'); + } + }, + + openFolder : function(folderName, page, query, type) { + var self = this; + app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); + if(!page) { + page = 0; + } + var container = self.getContainer(); vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'folder', - '_operationarg' : 'open', - '_folder' : folderName, - '_page' : page - }; - if(query) { - params['q'] = query; - } - if(type) { - params['type'] = type; - } - app.request.post({"data" : params}).then(function(error, responseData) { - container.find('#mails_container').removeClass('col-lg-12'); - container.find('#mails_container').addClass('col-lg-5'); - container.find('#mailPreviewContainer').removeClass('hide'); - container.find('#mails_container').html(responseData); - app.helper.hideProgress(); - self.registerMoveMailDropdownClickEvent(); - self.registerMailCheckBoxClickEvent(); - self.registerScrollForMailList(); - self.registerMainCheckboxClickEvent(); - self.registerPrevPageClickEvent(); - self.registerNextPageClickEvent(); - self.registerSearchEvent(); - self.registerFolderMailDeleteEvent(); - self.registerMoveMailToFolder(); - self.registerMarkMessageAsUnread(); - self.registerMailClickEvent(); - self.registerMarkMessageAsRead(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'folder', + '_operationarg' : 'open', + '_folder' : folderName, + '_page' : page + }; + if(query) { + params['q'] = query; + } + if(type) { + params['type'] = type; + } + app.request.post({"data" : params}).then(function(error, responseData) { + container.find('#mails_container').removeClass('col-lg-12'); + container.find('#mails_container').addClass('col-lg-5'); + container.find('#mailPreviewContainer').removeClass('hide'); + container.find('#mails_container').html(responseData); + app.helper.hideProgress(); + self.registerMoveMailDropdownClickEvent(); + self.registerMailCheckBoxClickEvent(); + self.registerScrollForMailList(); + self.registerMainCheckboxClickEvent(); + self.registerPrevPageClickEvent(); + self.registerNextPageClickEvent(); + self.registerSearchEvent(); + self.registerFolderMailDeleteEvent(); + self.registerMoveMailToFolder(); + self.registerMarkMessageAsUnread(); + self.registerMailClickEvent(); + self.registerMarkMessageAsRead(); self.clearPreviewContainer(); - self.loadMailContents(folderName); - container.find('#searchType').trigger('change'); - }); - }, - - /** - * Function to load the body of all mails in folder list - * @param {type} folderName - * @returns {undefined} - */ - loadMailContents : function(folderName){ - var mailids = jQuery('input[name="folderMailIds"]').val(); - mailids = mailids.split(","); - var params = { - 'module' : 'MailManager', - 'action' : 'Folder', - 'mode' : 'showMailContent', - 'mailids' : mailids, - 'folderName':folderName - }; - app.request.post({"data" : params}).then(function(error, responseData) { - for(var k in responseData){ - var messageContent = responseData[k]; - var messageEle = jQuery('#mmMailEntry_'+k); - messageEle.find('.mmMailDesc').html(messageContent); - } - }); - }, - - registerFolderMailDeleteEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmDeleteMail').click(function(e) { - var folder = jQuery(e.currentTarget).data('folder'); - var msgNos = new Array(); - container.find('.mailCheckBox').each(function(i, ele) { - var element = jQuery(ele); - if(element.is(":checked")) { - msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); - } - }); - if(msgNos.length <= 0) { - app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); - return false; - } else { - app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { - app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'delete', - '_folder' : folder, - '_msgno' : msgNos.join(',') - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { + self.loadMailContents(folderName); + container.find('#searchType').trigger('change'); + }); + }, + + /** + * Function to load the body of all mails in folder list + * @param {type} folderName + * @returns {undefined} + */ + loadMailContents : function(folderName){ + var mailids = jQuery('input[name="folderMailIds"]').val(); + mailids = mailids.split(","); + var params = { + 'module' : 'MailManager', + 'action' : 'Folder', + 'mode' : 'showMailContent', + 'mailids' : mailids, + 'folderName':folderName + }; + app.request.post({"data" : params}).then(function(error, responseData) { + for(var k in responseData){ + var messageContent = responseData[k]; + var messageEle = jQuery('#mmMailEntry_'+k); + messageEle.find('.mmMailDesc').html(messageContent); + } + }); + }, + + registerFolderMailDeleteEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmDeleteMail').click(function(e) { + var folder = jQuery(e.currentTarget).data('folder'); + var msgNos = new Array(); + container.find('.mailCheckBox').each(function(i, ele) { + var element = jQuery(ele); + if(element.is(":checked")) { + msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); + } + }); + if(msgNos.length <= 0) { + app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); + return false; + } else { + app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { + app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'delete', + '_folder' : folder, + '_msgno' : msgNos.join(',') + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')}); - self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder); - self.updatePagingCount(msgNos.length); - for(var i = 0; i < msgNos.length; i++) { - container.find('#mmMailEntry_'+msgNos[i]).remove(); - } + self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder); + self.updatePagingCount(msgNos.length); + for(var i = 0; i < msgNos.length; i++) { + container.find('#mmMailEntry_'+msgNos[i]).remove(); + } var openedMsgNo = container.find('#mmMsgNo').val(); if(jQuery.inArray(openedMsgNo, msgNos) !== -1) { self.clearPreviewContainer(); } - } - }); - }); - } - }); - }, - - updatePagingCount : function(deletedCount) { - var pagingDataElement = jQuery('.pageInfoData'); - var pagingElement = jQuery('.pageInfo'); - if(pagingDataElement.length != 0){ - var total = pagingDataElement.data('total'); - var start = pagingDataElement.data('start'); - var end = pagingDataElement.data('end'); - var labelOf = pagingDataElement.data('label-of'); - total = total - deletedCount; - pagingDataElement.data('total', total); - pagingElement.html(start+' '+'-'+' '+end+' '+labelOf+' '+total+' '); - } - }, - - registerMoveMailToFolder : function() { - var self = this; - var container = self.getContainer(); - var moveToDropDown = container.find('#mmMoveToFolder'); - moveToDropDown.on('click','a',function(e) { - var element = jQuery(e.currentTarget); - var moveToFolder = element.closest('li').data('movefolder'); - var folder = element.closest('li').data('folder'); - var msgNos = new Array(); - container.find('.mailCheckBox').each(function(i, ele) { - var element = jQuery(ele); - if(element.is(":checked")) { - msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); - } - }); - if(msgNos.length <= 0) { + } + }); + }); + } + }); + }, + + updatePagingCount : function(deletedCount) { + var pagingDataElement = jQuery('.pageInfoData'); + var pagingElement = jQuery('.pageInfo'); + if(pagingDataElement.length != 0){ + var total = pagingDataElement.data('total'); + var start = pagingDataElement.data('start'); + var end = pagingDataElement.data('end'); + var labelOf = pagingDataElement.data('label-of'); + total = total - deletedCount; + pagingDataElement.data('total', total); + pagingElement.html(start+' '+'-'+' '+end+' '+labelOf+' '+total+' '); + } + }, + + registerMoveMailToFolder : function() { + var self = this; + var container = self.getContainer(); + var moveToDropDown = container.find('#mmMoveToFolder'); + moveToDropDown.on('click','a',function(e) { + var element = jQuery(e.currentTarget); + var moveToFolder = element.closest('li').data('movefolder'); + var folder = element.closest('li').data('folder'); + var msgNos = new Array(); + container.find('.mailCheckBox').each(function(i, ele) { + var element = jQuery(ele); + if(element.is(":checked")) { + msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); + } + }); + if(msgNos.length <= 0) { container.find('.moveToFolderDropDown').removeClass('open'); - app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); - return false; - } else { - app.helper.showProgress(app.vtranslate("JSLBL_MOVING")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'move', - '_folder' : folder, - '_moveFolder' : moveToFolder, - '_msgno' : msgNos.join(',') - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { + app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); + return false; + } else { + app.helper.showProgress(app.vtranslate("JSLBL_MOVING")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'move', + '_folder' : folder, + '_moveFolder' : moveToFolder, + '_msgno' : msgNos.join(',') + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAIL_MOVED')}); - var unreadCount = self.getUnreadCountByMsgNos(msgNos); - self.updateUnreadCount("-"+unreadCount, folder); - self.updateUnreadCount("+"+unreadCount, moveToFolder); - for(var i = 0; i < msgNos.length; i++) { - container.find('#mmMailEntry_'+msgNos[i]).remove(); - } + var unreadCount = self.getUnreadCountByMsgNos(msgNos); + self.updateUnreadCount("-"+unreadCount, folder); + self.updateUnreadCount("+"+unreadCount, moveToFolder); + for(var i = 0; i < msgNos.length; i++) { + container.find('#mmMailEntry_'+msgNos[i]).remove(); + } container.find('.moveToFolderDropDown').removeClass('open'); - } - }); - } - }); - }, - - registerMarkMessageAsUnread : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmMarkAsUnread').click(function(e) { - var folder = jQuery(e.currentTarget).data('folder'); - var msgNos = new Array(); - container.find('.mailCheckBox').each(function(i, ele) { - var element = jQuery(ele); - if(element.is(":checked")) { - msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); - } - }); - if(msgNos.length <= 0) { - app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); - return false; - } else { - app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'mark', - '_folder' : folder, - '_msgno' : msgNos.join(','), - '_markas' : 'unread' - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { + } + }); + } + }); + }, + + registerMarkMessageAsUnread : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmMarkAsUnread').click(function(e) { + var folder = jQuery(e.currentTarget).data('folder'); + var msgNos = new Array(); + container.find('.mailCheckBox').each(function(i, ele) { + var element = jQuery(ele); + if(element.is(":checked")) { + msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); + } + }); + if(msgNos.length <= 0) { + app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); + return false; + } else { + app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'mark', + '_folder' : folder, + '_msgno' : msgNos.join(','), + '_markas' : 'unread' + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_UNREAD')}); - self.markMessageUnread(msgNos); - self.updateUnreadCount("+"+self.getUnreadCountByMsgNos(msgNos), folder); - } - }); - } - }); - }, - - registerMarkMessageAsRead : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmMarkAsRead').click(function(e) { - var folder = jQuery(e.currentTarget).data('folder'); - var msgNos = new Array(); - container.find('.mailCheckBox').each(function(i, ele) { - var element = jQuery(ele); - if(element.is(":checked")) { - msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); - } - }); - if(msgNos.length <= 0) { - app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); - return false; - } else { - app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'mark', - '_folder' : folder, - '_msgno' : msgNos.join(','), - '_markas' : 'read' - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { + self.markMessageUnread(msgNos); + self.updateUnreadCount("+"+self.getUnreadCountByMsgNos(msgNos), folder); + } + }); + } + }); + }, + + registerMarkMessageAsRead : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmMarkAsRead').click(function(e) { + var folder = jQuery(e.currentTarget).data('folder'); + var msgNos = new Array(); + container.find('.mailCheckBox').each(function(i, ele) { + var element = jQuery(ele); + if(element.is(":checked")) { + msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); + } + }); + if(msgNos.length <= 0) { + app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); + return false; + } else { + app.helper.showProgress(app.vtranslate("JSLBL_Updating")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'mark', + '_folder' : folder, + '_msgno' : msgNos.join(','), + '_markas' : 'read' + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_MARKED_READ')}); - self.markMessageRead(msgNos); - self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder); - } - }); - } - }); - }, - - registerSearchEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mm_searchButton').click(function() { - var query = container.find('#mailManagerSearchbox').val(); - if(query.trim() == '') { - vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE')); - return false; - } else { - vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); - } - var folder = container.find('#mailManagerSearchbox').data('foldername'); - var type = container.find('#searchType').val(); - self.openFolder(folder, 0, query, type); - }); - }, - - markMessageUnread : function(msgNos) { - var self = this; - var container = self.getContainer(); - if(typeof msgNos == "string") { - msgNos = new Array(msgNos); - } - if(typeof msgNos == "object") { - for(var i = 0; i < msgNos.length; i++) { - var msgNo = msgNos[i]; - var msgEle = container.find('#mmMailEntry_'+msgNo); - msgEle.removeClass('mmReadEmail'); - msgEle.data('read', "0"); - var nameSubject = "<strong>" + msgEle.find('.nameSubjectHolder').html() + "</strong>"; - msgEle.find('.nameSubjectHolder').html(nameSubject); - } - } - }, - - markMessageRead : function(msgNos) { - var self = this; - var container = self.getContainer(); - if(typeof msgNos == "string") { - msgNos = new Array(msgNos); - } - if(typeof msgNos == "object") { - for(var i = 0; i < msgNos.length; i++) { - var msgNo = msgNos[i]; - var msgEle = container.find('#mmMailEntry_'+msgNo); - msgEle.addClass('mmReadEmail'); - msgEle.data('read', "1"); - var nameSubject = msgEle.find('.nameSubjectHolder').find('strong').html(); - msgEle.find('.nameSubjectHolder').html(nameSubject); - } - } - }, - - getUnreadCountByMsgNos : function(msgNos) { - var count = 0; - var self = this; - var container = self.getContainer(); - for(var i = 0; i < msgNos.length; i++) { - var isRead = parseInt(container.find('#mmMailEntry_'+msgNos[i]).data('read')); - if(isRead == 0) { - count++; - } - } - return count; - }, - - registerMailCheckBoxClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.mailCheckBox').click(function(e) { - var element = jQuery(e.currentTarget); - if(element.is(":checked")) { - element.closest('.mailEntry').addClass('highLightMail'); - element.closest('.mailEntry').removeClass('fontBlack'); - element.closest('.mailEntry').addClass('whiteFont'); - element.closest('.mailEntry').removeClass('mmReadEmail'); - element.closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected'); - } else { - var isRead = element.closest('.mailEntry').data('read'); - if(parseInt(isRead)) { - element.closest('.mailEntry').addClass('mmReadEmail'); - element.closest('.mailEntry').removeClass('highLightMail'); - } else { - element.closest('.mailEntry').removeClass('highLightMail'); - } - element.closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); - element.closest('.mailEntry').addClass('fontBlack'); - } - }); - }, - - registerMoveMailDropdownClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.moveToFolderDropDown').click(function(e) { - e.stopImmediatePropagation(); - var element = jQuery(e.currentTarget); - element.addClass('open'); - }); - }, - - registerScrollForMailList : function() { - var self = this; - self.getContainer().find('#emailListDiv').mCustomScrollbar({ - setHeight: 600, - autoExpandScrollbar: true, - scrollInertia: 200, - autoHideScrollbar: true, - theme : "dark-3" - }); - }, - - registerMainCheckboxClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mainCheckBox').click(function(e) { - var element = jQuery(e.currentTarget); - if(element.is(":checked")) { - container.find('.mailCheckBox').each(function(i, ele) { - jQuery(ele).prop('checked', true); - jQuery(ele).closest('.mailEntry').addClass('highLightMail'); - jQuery(ele).closest('.mailEntry').removeClass('fontBlack'); - jQuery(ele).closest('.mailEntry').addClass('whiteFont'); - jQuery(ele).closest('.mailEntry').removeClass('mmReadEmail'); - jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected'); - }); - } else { - container.find('.mailCheckBox').each(function(i, ele) { - jQuery(ele).prop('checked', false); - var isRead = jQuery(ele).closest('.mailEntry').data('read'); - if(parseInt(isRead)) { - jQuery(ele).closest('.mailEntry').addClass('mmReadEmail'); - jQuery(ele).closest('.mailEntry').removeClass('highLightMail'); - } else { - jQuery(ele).closest('.mailEntry').removeClass('highLightMail'); - } - jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); - jQuery(ele).closest('.mailEntry').addClass('fontBlack'); - }); - } - }); - }, - - registerPrevPageClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#PreviousPageButton').click(function(e) { - var element = jQuery(e.currentTarget); - var folder = element.data('folder'); - var page = element.data('page'); - self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val()); - }); - }, - - registerNextPageClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#NextPageButton').click(function(e) { - var element = jQuery(e.currentTarget); - var folder = element.data('folder'); - var page = element.data('page'); - self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val()); - }); - }, - - registerMailClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.mmfolderMails').click(function(e) { - var emailElement = jQuery(e.currentTarget); - var parentEle = emailElement.closest('.mailEntry'); - var msgNo = emailElement.find('.msgNo').val(); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'open', - '_folder' : parentEle.data('folder'), - '_msgno' : msgNo - }; - app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); - app.request.post({data : params}).then(function(err, data) { - app.helper.hideProgress(); - var uiContent = data.ui; - var unreadCount = self.getUnreadCountByMsgNos(new Array(msgNo)); - jQuery(parentEle).addClass('mmReadEmail'); - jQuery(parentEle).data('read', "1"); - var nameSubject = jQuery(parentEle).find('.nameSubjectHolder').find('strong').html(); - jQuery(parentEle).find('.nameSubjectHolder').html(nameSubject); - container.find('#mailPreviewContainer').html(uiContent); - self.highLightMail(msgNo); - self.registerMailDeleteEvent(); - self.registerForwardEvent(); - self.registerPrintEvent(); - self.registerReplyEvent(); - self.registerReplyAllEvent(); - self.showRelatedActions(); - self.registerMailPaginationEvent(); + self.markMessageRead(msgNos); + self.updateUnreadCount("-"+self.getUnreadCountByMsgNos(msgNos), folder); + } + }); + } + }); + }, + + registerSearchEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mm_searchButton').click(function() { + var query = container.find('#mailManagerSearchbox').val(); + if(query.trim() == '') { + vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE')); + return false; + } else { + vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); + } + var folder = container.find('#mailManagerSearchbox').data('foldername'); + var type = container.find('#searchType').val(); + self.openFolder(folder, 0, query, type); + }); + }, + + markMessageUnread : function(msgNos) { + var self = this; + var container = self.getContainer(); + if(typeof msgNos == "string") { + msgNos = new Array(msgNos); + } + if(typeof msgNos == "object") { + for(var i = 0; i < msgNos.length; i++) { + var msgNo = msgNos[i]; + var msgEle = container.find('#mmMailEntry_'+msgNo); + msgEle.removeClass('mmReadEmail'); + msgEle.data('read', "0"); + var nameSubject = "<strong>" + msgEle.find('.nameSubjectHolder').html() + "</strong>"; + msgEle.find('.nameSubjectHolder').html(nameSubject); + } + } + }, + + markMessageRead : function(msgNos) { + var self = this; + var container = self.getContainer(); + if(typeof msgNos == "string") { + msgNos = new Array(msgNos); + } + if(typeof msgNos == "object") { + for(var i = 0; i < msgNos.length; i++) { + var msgNo = msgNos[i]; + var msgEle = container.find('#mmMailEntry_'+msgNo); + msgEle.addClass('mmReadEmail'); + msgEle.data('read', "1"); + var nameSubject = msgEle.find('.nameSubjectHolder').find('strong').html(); + msgEle.find('.nameSubjectHolder').html(nameSubject); + } + } + }, + + getUnreadCountByMsgNos : function(msgNos) { + var count = 0; + var self = this; + var container = self.getContainer(); + for(var i = 0; i < msgNos.length; i++) { + var isRead = parseInt(container.find('#mmMailEntry_'+msgNos[i]).data('read')); + if(isRead == 0) { + count++; + } + } + return count; + }, + + registerMailCheckBoxClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.mailCheckBox').click(function(e) { + var element = jQuery(e.currentTarget); + if(element.is(":checked")) { + element.closest('.mailEntry').addClass('highLightMail'); + element.closest('.mailEntry').removeClass('fontBlack'); + element.closest('.mailEntry').addClass('whiteFont'); + element.closest('.mailEntry').removeClass('mmReadEmail'); + element.closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected'); + } else { + var isRead = element.closest('.mailEntry').data('read'); + if(parseInt(isRead)) { + element.closest('.mailEntry').addClass('mmReadEmail'); + element.closest('.mailEntry').removeClass('highLightMail'); + } else { + element.closest('.mailEntry').removeClass('highLightMail'); + } + element.closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); + element.closest('.mailEntry').addClass('fontBlack'); + } + }); + }, + + registerMoveMailDropdownClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.moveToFolderDropDown').click(function(e) { + e.stopImmediatePropagation(); + var element = jQuery(e.currentTarget); + element.addClass('open'); + }); + }, + + registerScrollForMailList : function() { + var self = this; + self.getContainer().find('#emailListDiv').mCustomScrollbar({ + setHeight: 600, + autoExpandScrollbar: true, + scrollInertia: 200, + autoHideScrollbar: true, + theme : "dark-3" + }); + }, + + registerMainCheckboxClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mainCheckBox').click(function(e) { + var element = jQuery(e.currentTarget); + if(element.is(":checked")) { + container.find('.mailCheckBox').each(function(i, ele) { + jQuery(ele).prop('checked', true); + jQuery(ele).closest('.mailEntry').addClass('highLightMail'); + jQuery(ele).closest('.mailEntry').removeClass('fontBlack'); + jQuery(ele).closest('.mailEntry').addClass('whiteFont'); + jQuery(ele).closest('.mailEntry').removeClass('mmReadEmail'); + jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').addClass('mmListDateDivSelected'); + }); + } else { + container.find('.mailCheckBox').each(function(i, ele) { + jQuery(ele).prop('checked', false); + var isRead = jQuery(ele).closest('.mailEntry').data('read'); + if(parseInt(isRead)) { + jQuery(ele).closest('.mailEntry').addClass('mmReadEmail'); + jQuery(ele).closest('.mailEntry').removeClass('highLightMail'); + } else { + jQuery(ele).closest('.mailEntry').removeClass('highLightMail'); + } + jQuery(ele).closest('.mailEntry').find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); + jQuery(ele).closest('.mailEntry').addClass('fontBlack'); + }); + } + }); + }, + + registerPrevPageClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#PreviousPageButton').click(function(e) { + var element = jQuery(e.currentTarget); + var folder = element.data('folder'); + var page = element.data('page'); + self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val()); + }); + }, + + registerNextPageClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#NextPageButton').click(function(e) { + var element = jQuery(e.currentTarget); + var folder = element.data('folder'); + var page = element.data('page'); + self.openFolder(folder, page, jQuery('#mailManagerSearchbox').val(), jQuery('#searchType').val()); + }); + }, + + registerMailClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.mmfolderMails').click(function(e) { + var emailElement = jQuery(e.currentTarget); + var parentEle = emailElement.closest('.mailEntry'); + var msgNo = emailElement.find('.msgNo').val(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'open', + '_folder' : parentEle.data('folder'), + '_msgno' : msgNo + }; + app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); + app.request.post({data : params}).then(function(err, data) { + app.helper.hideProgress(); + var uiContent = data.ui; + var unreadCount = self.getUnreadCountByMsgNos(new Array(msgNo)); + jQuery(parentEle).addClass('mmReadEmail'); + jQuery(parentEle).data('read', "1"); + var nameSubject = jQuery(parentEle).find('.nameSubjectHolder').find('strong').html(); + jQuery(parentEle).find('.nameSubjectHolder').html(nameSubject); + container.find('#mailPreviewContainer').html(uiContent); + self.highLightMail(msgNo); + self.registerMailDeleteEvent(); + self.registerForwardEvent(); + self.registerPrintEvent(); + self.registerReplyEvent(); + self.registerReplyAllEvent(); + self.showRelatedActions(); + self.registerMailPaginationEvent(); container.find('.emailDetails').popover({html: true}); - self.updateUnreadCount("-"+unreadCount, jQuery(parentEle).data('folder')); + self.updateUnreadCount("-"+unreadCount, jQuery(parentEle).data('folder')); self.loadContentsInIframe(container.find('#mmBody')); - }); - }); - }, - + }); + }); + }, + loadContentsInIframe : function(element) { var bodyContent = element.html(); - element.html('<iframe id="bodyFrame" style="width: 100%; border: none;"></iframe>'); - var frameElement = jQuery("#bodyFrame")[0].contentWindow.document; - frameElement.open(); - frameElement.close(); - jQuery('#bodyFrame').contents().find('html').html(bodyContent); + element.html('<iframe id="bodyFrame" style="width: 100%; border: none;"></iframe>'); + var frameElement = jQuery("#bodyFrame")[0].contentWindow.document; + frameElement.open(); + frameElement.close(); + jQuery('#bodyFrame').contents().find('html').html(bodyContent); jQuery('#bodyFrame').contents().find('html').find('a').on('click', function(e) { e.preventDefault(); var url = jQuery(e.currentTarget).attr('href'); window.open(url, '_blank'); }); }, - - highLightMail : function(msgNo) { - var self = this; - var container = self.getContainer(); - container.find('.mailEntry').each(function(i, ele) { - var element = jQuery(ele); - var isRead = element.data('read'); - if(parseInt(isRead)) { - element.addClass('mmReadEmail'); - element.removeClass('highLightMail'); - } else { - element.removeClass('highLightMail'); - } - element.find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); - element.addClass('fontBlack'); - }); - var selectedMailEle = container.find('#mmMailEntry_'+msgNo); - selectedMailEle.addClass('highLightMail'); - selectedMailEle.removeClass('fontBlack'); - selectedMailEle.addClass('whiteFont'); - selectedMailEle.removeClass('mmReadEmail'); - selectedMailEle.find('.mmDateTimeValue').addClass('mmListDateDivSelected'); - }, - - registerMailPaginationEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.mailPagination').click(function(e) { - var element = jQuery(e.currentTarget); - var msgNo = element.data('msgno'); - var folder = element.data('folder'); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'open', - '_folder' : folder, - '_msgno' : msgNo - }; - app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); - app.request.post({data : params}).then(function(err, data) { - app.helper.hideProgress(); - var uiContent = data.ui; - container.find('#mmMailEntry_'+msgNo).addClass('mmReadEmail'); - container.find('#mmMailEntry_'+msgNo).data('read', "1"); - var nameSubject = container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').find('strong').html(); - container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').html(nameSubject); - container.find('#mailPreviewContainer').html(uiContent); - self.registerMailDeleteEvent(); - self.registerForwardEvent(); - self.registerReplyEvent(); - self.registerReplyAllEvent(); - self.showRelatedActions(); - self.registerMailPaginationEvent(); - self.highLightMail(msgNo); + + highLightMail : function(msgNo) { + var self = this; + var container = self.getContainer(); + container.find('.mailEntry').each(function(i, ele) { + var element = jQuery(ele); + var isRead = element.data('read'); + if(parseInt(isRead)) { + element.addClass('mmReadEmail'); + element.removeClass('highLightMail'); + } else { + element.removeClass('highLightMail'); + } + element.find('.mmDateTimeValue').removeClass('mmListDateDivSelected'); + element.addClass('fontBlack'); + }); + var selectedMailEle = container.find('#mmMailEntry_'+msgNo); + selectedMailEle.addClass('highLightMail'); + selectedMailEle.removeClass('fontBlack'); + selectedMailEle.addClass('whiteFont'); + selectedMailEle.removeClass('mmReadEmail'); + selectedMailEle.find('.mmDateTimeValue').addClass('mmListDateDivSelected'); + }, + + registerMailPaginationEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.mailPagination').click(function(e) { + var element = jQuery(e.currentTarget); + var msgNo = element.data('msgno'); + var folder = element.data('folder'); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'open', + '_folder' : folder, + '_msgno' : msgNo + }; + app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); + app.request.post({data : params}).then(function(err, data) { + app.helper.hideProgress(); + var uiContent = data.ui; + container.find('#mmMailEntry_'+msgNo).addClass('mmReadEmail'); + container.find('#mmMailEntry_'+msgNo).data('read', "1"); + var nameSubject = container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').find('strong').html(); + container.find('#mmMailEntry_'+msgNo).find('.nameSubjectHolder').html(nameSubject); + container.find('#mailPreviewContainer').html(uiContent); + self.registerMailDeleteEvent(); + self.registerForwardEvent(); + self.registerReplyEvent(); + self.registerReplyAllEvent(); + self.showRelatedActions(); + self.registerMailPaginationEvent(); + self.highLightMail(msgNo); self.loadContentsInIframe(container.find('#mmBody')); - }); - }); - }, - - registerMailDeleteEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmDelete').click(function() { - var msgNo = jQuery('#mmMsgNo').val(); - var folder = jQuery('#mmFolder').val(); - app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { - app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'delete', - '_folder' : folder, - '_msgno' : msgNo - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { - container.find('#mmMailEntry_'+msgNo).remove(); - var previewHtml = '<div class="mmListMainContainer">\n\ - <center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>'; - jQuery('#mailPreviewContainer').html(previewHtml); - } - }); - }); - }); - }, - - registerForwardEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmForward').click(function() { - app.helper.showProgress(app.vtranslate("JSLBL_Loading")+"..."); - var msgNo = jQuery('#mmMsgNo').val(); - var from = jQuery('#mmFrom').val(); - var to = jQuery('#mmTo').val(); - var cc = jQuery('#mmCc').val() ? jQuery('#mmCc').val() : ''; - var subject = JSON.parse(jQuery('#mmSubject').val()); - var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); - var date = jQuery('#mmDate').val(); - var folder = jQuery('#mmFolder').val(); - - var fwdMsgMetaInfo = app.vtranslate('JSLBL_FROM') + from + '<br/>'+ - app.vtranslate('JSLBL_DATE') + date + '<br/>'+ - app.vtranslate('JSLBL_SUBJECT') + subject; - if (to != '' && to != null) { - fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_TO') + to; - } - if (cc != '' && cc != null) { - fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_CC') + cc; - } - fwdMsgMetaInfo += '<br/>'; - - var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject; - var fwdBody = '<p></p><p>'+app.vtranslate('JSLBL_FORWARD_MESSAGE_TEXT')+'<br/>'+fwdMsgMetaInfo+'</p>'+body; - var attchmentCount = parseInt(container.find('#mmAttchmentCount').val()); - if(attchmentCount) { - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'forward', - 'messageid' : encodeURIComponent(msgNo), - 'folder' : encodeURIComponent(folder), - 'subject' : encodeURIComponent(fwdSubject), - 'body' : encodeURIComponent(fwdBody) - }; - app.request.post({'data' : params}).then(function(err, data) { - var draftId = data.emailid; - var newParams = { - 'module' : 'Emails', - 'view' : 'ComposeEmail', - 'mode' : 'emailEdit', - 'record' : draftId - }; - app.request.post({data : newParams}).then(function(err,data) { - app.helper.hideProgress(); - if(err === null) { - var dataObj = jQuery(data); - var descriptionContent = dataObj.find('#iframeDescription').val(); - app.helper.showModal(data, {cb : function() { - var editInstance = new Emails_MassEdit_Js(); - editInstance.registerEvents(); - jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent); - jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height()); - }}); - } - }); - }); - } else { - app.helper.hideProgress(); - var params = { - 'step' : "step1", - 'module' : "MailManager", - 'view' : "MassActionAjax", - 'mode' : "showComposeEmailForm", - 'selected_ids' : "[]", - 'excluded_ids' : "[]", - } - self.openComposeEmailForm("forward", params, {'subject' : fwdSubject, 'body' : fwdBody}); - } - }); - }, - - registerPrintEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmPrint').click(function() { - var subject = JSON.parse(container.find('#mmSubject').val()); - var from = container.find('#mmFrom').val(); - var to = container.find('#mmTo').val(); - var cc = container.find('#mmCc').val(); - var date = container.find('#mmDate').val(); - var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); - - var content = window.open(); - content.document.write("<b>"+subject+"</b><br>"); - content.document.write(app.vtranslate("JSLBL_FROM")+" "+from +"<br>"); - content.document.write(app.vtranslate("JSLBL_TO")+" "+to+"<br>"); - if(cc) { - content.document.write(app.vtranslate("JSLBL_CC")+" "+cc+"<br>"); - } - content.document.write(app.vtranslate("JSLBL_DATE")+" "+date+"<br>"); - content.document.write("<br><br>"+body); - content.print(); - }); - }, - - registerReplyEvent : function() { - var self = this; - self.getContainer().find('#mmReply').click(function() { - self.openReplyEmail(false); - }); - }, - - registerReplyAllEvent : function() { - var self = this; - self.getContainer().find('#mmReplyAll').click(function() { - self.openReplyEmail(true); - }); - }, - - openReplyEmail : function(all) { - var self = this; - if (typeof(all) == 'undefined') { - all = true; - } - var mUserName = jQuery('#mmUserName').val(); - var from = jQuery('#mmFrom').val(); - var to = all ? jQuery('#mmTo').val() : ''; - var cc = all ? jQuery('#mmCc').val() : ''; - - var mailIds = ''; - if(to != null) { - mailIds = to; - } - if(cc != null) { - mailIds = mailIds ? mailIds+','+cc : cc; - } - - mailIds = mailIds.replace(/\s+/g, ''); - - var emails = mailIds.split(','); - for(var i = 0; i < emails.length ; i++) { - if(emails[i].indexOf(mUserName) != -1){ - emails.splice(i,1); - } - } - mailIds = emails.join(','); - - mailIds = mailIds.replace(',,', ','); - if(mailIds.charAt(mailIds.length-1) == ',') { - mailIds = mailIds.slice(0, -1); - } else if(mailIds.charAt(0) == ','){ - mailIds = mailIds.slice(1); - } - - var subject = JSON.parse(jQuery('#mmSubject').val()); - var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); - var date = jQuery('#mmDate').val(); - - var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject; - var replyBody = '<p></br></br></p><p style="margin:0;padding:0;">On '+date+', '+from+' wrote :</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">'+body+'</blockquote><br />'; + }); + }); + }, + + registerMailDeleteEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmDelete').click(function() { + var msgNo = jQuery('#mmMsgNo').val(); + var folder = jQuery('#mmFolder').val(); + app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { + app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'delete', + '_folder' : folder, + '_msgno' : msgNo + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { + container.find('#mmMailEntry_'+msgNo).remove(); + var previewHtml = '<div class="mmListMainContainer">\n\ + <center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>'; + jQuery('#mailPreviewContainer').html(previewHtml); + } + }); + }); + }); + }, + + registerForwardEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmForward').click(function() { + app.helper.showProgress(app.vtranslate("JSLBL_Loading")+"..."); + var msgNo = jQuery('#mmMsgNo').val(); + var from = jQuery('#mmFrom').val(); + var to = jQuery('#mmTo').val(); + var cc = jQuery('#mmCc').val() ? jQuery('#mmCc').val() : ''; + var subject = JSON.parse(jQuery('#mmSubject').val()); + var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); + var date = jQuery('#mmDate').val(); + var folder = jQuery('#mmFolder').val(); + + var fwdMsgMetaInfo = app.vtranslate('JSLBL_FROM') + from + '<br/>'+ + app.vtranslate('JSLBL_DATE') + date + '<br/>'+ + app.vtranslate('JSLBL_SUBJECT') + subject; + if (to != '' && to != null) { + fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_TO') + to; + } + if (cc != '' && cc != null) { + fwdMsgMetaInfo += '<br/>'+app.vtranslate('JSLBL_CC') + cc; + } + fwdMsgMetaInfo += '<br/>'; + + var fwdSubject = (subject.toUpperCase().indexOf('FWD:') == 0) ? subject : 'Fwd: ' + subject; + var fwdBody = '<p></p><p>'+app.vtranslate('JSLBL_FORWARD_MESSAGE_TEXT')+'<br/>'+fwdMsgMetaInfo+'</p>'+body; + var attchmentCount = parseInt(container.find('#mmAttchmentCount').val()); + if(attchmentCount) { + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'forward', + 'messageid' : encodeURIComponent(msgNo), + 'folder' : encodeURIComponent(folder), + 'subject' : encodeURIComponent(fwdSubject), + 'body' : encodeURIComponent(fwdBody) + }; + app.request.post({'data' : params}).then(function(err, data) { + var draftId = data.emailid; + var newParams = { + 'module' : 'Emails', + 'view' : 'ComposeEmail', + 'mode' : 'emailEdit', + 'record' : draftId + }; + app.request.post({data : newParams}).then(function(err,data) { + app.helper.hideProgress(); + if(err === null) { + var dataObj = jQuery(data); + var descriptionContent = dataObj.find('#iframeDescription').val(); + app.helper.showModal(data, {cb : function() { + var editInstance = new Emails_MassEdit_Js(); + editInstance.registerEvents(); + jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent); + jQuery("#emailPreviewIframe").height(jQuery('#emailPreviewIframe').contents().find('html').height()); + }}); + } + }); + }); + } else { + app.helper.hideProgress(); + var params = { + 'step' : "step1", + 'module' : "MailManager", + 'view' : "MassActionAjax", + 'mode' : "showComposeEmailForm", + 'selected_ids' : "[]", + 'excluded_ids' : "[]", + } + self.openComposeEmailForm("forward", params, {'subject' : fwdSubject, 'body' : fwdBody}); + } + }); + }, + + registerPrintEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmPrint').click(function() { + var subject = JSON.parse(container.find('#mmSubject').val()); + var from = container.find('#mmFrom').val(); + var to = container.find('#mmTo').val(); + var cc = container.find('#mmCc').val(); + var date = container.find('#mmDate').val(); + var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); + + var content = window.open(); + content.document.write("<b>"+subject+"</b><br>"); + content.document.write(app.vtranslate("JSLBL_FROM")+" "+from +"<br>"); + content.document.write(app.vtranslate("JSLBL_TO")+" "+to+"<br>"); + if(cc) { + content.document.write(app.vtranslate("JSLBL_CC")+" "+cc+"<br>"); + } + content.document.write(app.vtranslate("JSLBL_DATE")+" "+date+"<br>"); + content.document.write("<br><br>"+body); + content.print(); + }); + }, + + registerReplyEvent : function() { + var self = this; + self.getContainer().find('#mmReply').click(function() { + self.openReplyEmail(false); + }); + }, + + registerReplyAllEvent : function() { + var self = this; + self.getContainer().find('#mmReplyAll').click(function() { + self.openReplyEmail(true); + }); + }, + + openReplyEmail : function(all) { + var self = this; + if (typeof(all) == 'undefined') { + all = true; + } + var mUserName = jQuery('#mmUserName').val(); + var from = jQuery('#mmFrom').val(); + var to = all ? jQuery('#mmTo').val() : ''; + var cc = all ? jQuery('#mmCc').val() : ''; + + var mailIds = ''; + if(to != null) { + mailIds = to; + } + if(cc != null) { + mailIds = mailIds ? mailIds+','+cc : cc; + } + + mailIds = mailIds.replace(/\s+/g, ''); + + var emails = mailIds.split(','); + for(var i = 0; i < emails.length ; i++) { + if(emails[i].indexOf(mUserName) != -1){ + emails.splice(i,1); + } + } + mailIds = emails.join(','); + + mailIds = mailIds.replace(',,', ','); + if(mailIds.charAt(mailIds.length-1) == ',') { + mailIds = mailIds.slice(0, -1); + } else if(mailIds.charAt(0) == ','){ + mailIds = mailIds.slice(1); + } + + var subject = JSON.parse(jQuery('#mmSubject').val()); + var body = jQuery('#mmBody').find('iframe#bodyFrame').contents().find('html').html(); + var date = jQuery('#mmDate').val(); + + var replySubject = (subject.toUpperCase().indexOf('RE:') == 0) ? subject : 'Re: ' + subject; + var replyBody = '<p></br></br></p><p style="margin:0;padding:0;">On '+date+', '+from+' wrote :</p><blockquote style="border:0;margin:0;border-left:1px solid gray;padding:0 0 0 2px;">'+body+'</blockquote><br />'; var parentRecord = new Array(); var linktoElement = jQuery('[name=_mlinkto]'); linktoElement.each(function(index){ @@ -978,492 +978,498 @@ Vtiger_List_Js("MailManager_List_Js", {}, { parentRecord.push(value); } }); - var params = { - 'step' : "step1", - 'module' : "MailManager", - 'view' : "MassActionAjax", - 'mode' : "showComposeEmailForm", + var params = { + 'step' : "step1", + 'module' : "MailManager", + 'view' : "MassActionAjax", + 'mode' : "showComposeEmailForm", 'linktomodule' : 'true', - 'excluded_ids' : "[]", - 'to' : '["'+from+'"]' - } + 'excluded_ids' : "[]", + 'to' : '["'+from+'"]' + } if(parentRecord.length) { params['selected_ids'] = parentRecord; } else { params['selected_ids'] = "[]"; } - if(mailIds) { - self.openComposeEmailForm("replyall", params, {'subject' : replySubject, 'body' : replyBody, 'ids' : mailIds}); - } else { - self.openComposeEmailForm("reply", params, {'subject' : replySubject, 'body' : replyBody}); - } - }, - - showRelatedActions : function() { - var self = this; - var container = self.getContainer(); - var from = container.find('#mmFrom').val(); - var to = container.find('#mmTo').val(); - var folder = container.find('#mmFolder').val(); - var msgNo = container.find('#mmMsgNo').val(); - var msgUid = container.find('#mmMsgUid').val(); - - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'relation', - '_operationarg' : 'find', - '_mfrom' : from, - '_mto' : to, - '_folder' : folder, - '_msgno' : msgNo, - '_msguid' : msgUid - }; - - app.request.post({data : params}).then(function(err, data) { - container.find('#relationBlock').html(data.ui); - self.handleRelationActions(); - app.helper.showVerticalScroll(container.find('#relationBlock .recordScroll'), {autoHideScrollbar: true}); - var iframeHeight = jQuery('#mails_container').height() - (200 + jQuery('#mailManagerActions').height()); - var contentHeight = jQuery('#bodyFrame').contents().find('html').height(); - if (contentHeight > iframeHeight) { - jQuery('#bodyFrame').css({'height': iframeHeight}); - } else { - jQuery('#bodyFrame').css({'height': contentHeight}); - } - }); - }, - - openDraftFolder : function(page, query, type) { - var self = this; - app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); - if(!page) { - page = 0; - } - var container = self.getContainer(); + if(mailIds) { + self.openComposeEmailForm("replyall", params, {'subject' : replySubject, 'body' : replyBody, 'ids' : mailIds}); + } else { + self.openComposeEmailForm("reply", params, {'subject' : replySubject, 'body' : replyBody}); + } + }, + + showRelatedActions : function() { + var self = this; + var container = self.getContainer(); + var from = container.find('#mmFrom').val(); + var to = container.find('#mmTo').val(); + var folder = container.find('#mmFolder').val(); + var msgNo = container.find('#mmMsgNo').val(); + var msgUid = container.find('#mmMsgUid').val(); + + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'relation', + '_operationarg' : 'find', + '_mfrom' : from, + '_mto' : to, + '_folder' : folder, + '_msgno' : msgNo, + '_msguid' : msgUid + }; + + app.request.post({data : params}).then(function(err, data) { + container.find('#relationBlock').html(data.ui); + self.handleRelationActions(); + app.helper.showVerticalScroll(container.find('#relationBlock .recordScroll'), {autoHideScrollbar: true}); + var iframeHeight = jQuery('#mails_container').height() - (200 + jQuery('#mailManagerActions').height()); + var contentHeight = jQuery('#bodyFrame').contents().find('html').height(); + if (contentHeight > iframeHeight) { + jQuery('#bodyFrame').css({'height': iframeHeight}); + } else { + jQuery('#bodyFrame').css({'height': contentHeight}); + } + }); + }, + + openDraftFolder : function(page, query, type) { + var self = this; + app.helper.showProgress(app.vtranslate("JSLBL_Loading_Please_Wait")+"..."); + if(!page) { + page = 0; + } + var container = self.getContainer(); vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'folder', - '_operationarg' : 'drafts', - '_page' : page - }; - if(query) { - params['q'] = query; - } - if(type) { - params['type'] = type; - } - app.request.post({"data" : params}).then(function(error, responseData) { - container.find('#mails_container').removeClass('col-lg-5'); - container.find('#mails_container').addClass('col-lg-12'); - container.find('#mails_container').html(responseData); - container.find('#mailPreviewContainer').addClass('hide'); - app.helper.hideProgress(); - self.registerMoveMailDropdownClickEvent(); - self.registerMailCheckBoxClickEvent(); - self.registerScrollForMailList(); - self.registerMainCheckboxClickEvent(); - self.registerDraftPrevPageClickEvent(); - self.registerDraftNextPageClickEvent(); - self.registerDraftMailClickEvent(); - self.registerDraftSearchEvent(); - self.registerDraftDeleteEvent(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'folder', + '_operationarg' : 'drafts', + '_page' : page + }; + if(query) { + params['q'] = query; + } + if(type) { + params['type'] = type; + } + app.request.post({"data" : params}).then(function(error, responseData) { + container.find('#mails_container').removeClass('col-lg-5'); + container.find('#mails_container').addClass('col-lg-12'); + container.find('#mails_container').html(responseData); + container.find('#mailPreviewContainer').addClass('hide'); + app.helper.hideProgress(); + self.registerMoveMailDropdownClickEvent(); + self.registerMailCheckBoxClickEvent(); + self.registerScrollForMailList(); + self.registerMainCheckboxClickEvent(); + self.registerDraftPrevPageClickEvent(); + self.registerDraftNextPageClickEvent(); + self.registerDraftMailClickEvent(); + self.registerDraftSearchEvent(); + self.registerDraftDeleteEvent(); self.clearPreviewContainer(); - }); - }, - - registerDraftPrevPageClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#PreviousPageButton').click(function(e) { - var element = jQuery(e.currentTarget); - var page = element.data('page'); - self.openDraftFolder(page); - }); - }, - - registerDraftNextPageClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#NextPageButton').click(function(e) { - var element = jQuery(e.currentTarget); - var page = element.data('page'); - self.openDraftFolder(page); - }); - }, - - registerDraftMailClickEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('.draftEmail').click(function(e) { + }); + }, + + registerDraftPrevPageClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#PreviousPageButton').click(function(e) { + var element = jQuery(e.currentTarget); + var page = element.data('page'); + self.openDraftFolder(page); + }); + }, + + registerDraftNextPageClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#NextPageButton').click(function(e) { + var element = jQuery(e.currentTarget); + var page = element.data('page'); + self.openDraftFolder(page); + }); + }, + + registerDraftMailClickEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('.draftEmail').click(function(e) { e.preventDefault(); - var element = jQuery(e.currentTarget); - var msgNo = element.find('.msgNo').val(); - var params = { - 'module' : 'Emails', - 'view' : 'ComposeEmail', - 'mode' : 'emailEdit', - 'record' : msgNo - }; - app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(err === null) { - var dataObj = jQuery(data); - var descriptionContent = dataObj.find('#iframeDescription').val(); - app.helper.showModal(data, {cb:function() { - var editInstance = new Emails_MassEdit_Js(); - editInstance.registerEvents(); - jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent); - jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height()); - }}); - } - }); - }); - }, - - registerDraftSearchEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mm_searchButton').click(function() { - var query = container.find('#mailManagerSearchbox').val(); - if(query.trim() == '') { - vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE')); - return false; - } else { - vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); - } - var type = container.find('#searchType').val(); - self.openDraftFolder(0, query, type); - }); - }, - - registerDraftDeleteEvent : function() { - var self = this; - var container = self.getContainer(); - container.find('#mmDeleteMail').click(function() { - var msgNos = new Array(); - container.find('.mailCheckBox').each(function(i, ele) { - var element = jQuery(ele); - if(element.is(":checked")) { - msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); - } - }); - if(msgNos.length <= 0) { - app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); - return false; - } else { - app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { - app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'mail', - '_operationarg' : 'delete', - '_folder' : '__vt_drafts', - '_msgno' : msgNos.join(',') - }; - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - if(data.status) { - self.openDraftFolder(); + var element = jQuery(e.currentTarget); + var msgNo = element.find('.msgNo').val(); + var params = { + 'module' : 'Emails', + 'view' : 'ComposeEmail', + 'mode' : 'emailEdit', + 'record' : msgNo + }; + app.helper.showProgress(app.vtranslate("JSLBL_Opening")+"..."); + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(err === null) { + var dataObj = jQuery(data); + var descriptionContent = dataObj.find('#iframeDescription').val(); + app.helper.showModal(data, {cb:function() { + var editInstance = new Emails_MassEdit_Js(); + editInstance.registerEvents(); + jQuery('#emailPreviewIframe').contents().find('html').html(descriptionContent); + jQuery("#emailPreviewIframe").height(jQuery('.email-body-preview').height()); + }}); + } + }); + }); + }, + + registerDraftSearchEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mm_searchButton').click(function() { + var query = container.find('#mailManagerSearchbox').val(); + if(query.trim() == '') { + vtUtils.showValidationMessage(container.find('#mailManagerSearchbox'), app.vtranslate('JSLBL_ENTER_SOME_VALUE')); + return false; + } else { + vtUtils.hideValidationMessage(container.find('#mailManagerSearchbox')); + } + var type = container.find('#searchType').val(); + self.openDraftFolder(0, query, type); + }); + }, + + registerDraftDeleteEvent : function() { + var self = this; + var container = self.getContainer(); + container.find('#mmDeleteMail').click(function() { + var msgNos = new Array(); + container.find('.mailCheckBox').each(function(i, ele) { + var element = jQuery(ele); + if(element.is(":checked")) { + msgNos.push(element.closest('.mailEntry').find('.msgNo').val()); + } + }); + if(msgNos.length <= 0) { + app.helper.showAlertBox({message:app.vtranslate('JSLBL_NO_EMAILS_SELECTED')}); + return false; + } else { + app.helper.showConfirmationBox({'message' : app.vtranslate('LBL_DELETE_CONFIRMATION')}).then(function() { + app.helper.showProgress(app.vtranslate("JSLBL_Deleting")+"..."); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'mail', + '_operationarg' : 'delete', + '_folder' : '__vt_drafts', + '_msgno' : msgNos.join(',') + }; + app.request.post({data : params}).then(function(err,data) { + app.helper.hideProgress(); + if(data.status) { + self.openDraftFolder(); app.helper.showSuccessNotification({'message': app.vtranslate('JSLBL_MAILS_DELETED')}); - } - }); - }); - } - }); - }, - - updateUnreadCount : function(count, folder) { - var self = this; - var container = self.getContainer(); - if(!folder) { - folder = container.find('.mm_folder.active').data('foldername'); - } - var newCount; - if(typeof count == "number") { - newCount = parseInt(count); - } else { - var oldCount = parseInt(container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text()); - if(count.substr(0, 1) == "+") { - newCount = oldCount + (parseInt(count.substr(1, (count.length - 1)))); - } else if(count.substr(0, 1) == "-") { - newCount = oldCount - (parseInt(count.substr(1, (count.length - 1)))); - } else { - newCount = parseInt(count); - } - } - container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text(newCount); - if(newCount > 0) { - container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').removeClass("hide"); - } else { - container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').addClass("hide"); - } - }, - - handleRelationActions : function() { - var self = this; - var container = self.getContainer(); - container.find('#_mlinktotype').on('change', function(e) { - var element = jQuery(e.currentTarget); - var actionType = element.data('action'); - var module = element.val(); - var relatedRecord = self.getRecordForRelation(); - if(relatedRecord !== false) { - if(actionType == "associate") { - if(module == 'Emails') { - self.associateEmail(relatedRecord); - } else if(module == "ModComments") { - self.associateComment(relatedRecord); - } else if(module) { - self.createRelatedRecord(module); - } - } else if(module) { - self.createRelatedRecord(module); - } - } - self.resetRelationDropdown(); - }); - }, - - associateEmail : function(relatedRecord) { - var self = this; - var container = self.getContainer(); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'relation', - '_operationarg' : 'link', - '_mlinkto' : relatedRecord, - '_mlinktotype' : 'Emails', - '_folder' : container.find('#mmFolder').val(), - '_msgno' : container.find('#mmMsgNo').val() - } - app.helper.showProgress(app.vtranslate('JSLBL_Associating')+'...'); - app.request.post({data : params}).then(function(err,data) { - app.helper.hideProgress(); - }); - }, - - associateComment : function(relatedRecord) { - var self = this; - var container = self.getContainer(); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'relation', - '_operationarg' : 'commentwidget', - '_mlinkto' : relatedRecord, - '_mlinktotype' : 'ModComments', - '_folder' : container.find('#mmFolder').val(), - '_msgno' : container.find('#mmMsgNo').val() - } - app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...'); - app.request.post({data : params}).then(function(err, data) { - app.helper.hideProgress(); - app.helper.showModal(data, {'cb' : function(data) { - jQuery('[name="saveButton"]', data).on('click',function(e){ - e.preventDefault(); - self.saveComment(data); - }); - }}); - }); - }, - - createRelatedRecord : function(module) { - var self = this; - var container = self.getContainer(); - var relatedRecord = self.getRecordForRelation(); - var msgNo = container.find('#mmMsgNo').val(); - var folder = container.find('#mmFolder').val(); - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'relation', - '_operationarg' : 'create_wizard', - '_mlinktotype' : module, - '_folder' : folder, - '_msgno' : msgNo - }; - if(relatedRecord && relatedRecord !== null) { - params['_mlinkto'] = relatedRecord; - } - app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...'); - app.request.post({data : params}).then(function(err, data) { - app.helper.hideProgress(); - app.helper.showModal(data); - var form = jQuery('form[name="QuickCreate"]'); - app.event.trigger('post.QuickCreateForm.show',form); - vtUtils.applyFieldElementsView(form); + } + }); + }); + } + }); + }, + + updateUnreadCount : function(count, folder) { + var self = this; + var container = self.getContainer(); + if(!folder) { + folder = container.find('.mm_folder.active').data('foldername'); + } + var newCount; + if(typeof count == "number") { + newCount = parseInt(count); + } else { + var oldCount = parseInt(container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text()); + if(count.substr(0, 1) == "+") { + newCount = oldCount + (parseInt(count.substr(1, (count.length - 1)))); + } else if(count.substr(0, 1) == "-") { + newCount = oldCount - (parseInt(count.substr(1, (count.length - 1)))); + } else { + newCount = parseInt(count); + } + } + container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').text(newCount); + if(newCount > 0) { + container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').removeClass("hide"); + } else { + container.find('.mm_folder[data-foldername="'+folder+'"]').find('.mmUnreadCountBadge').addClass("hide"); + } + }, + + handleRelationActions : function() { + var self = this; + var container = self.getContainer(); + container.find('#_mlinktotype').on('change', function(e) { + var element = jQuery(e.currentTarget); + var actionType = element.data('action'); + var module = element.val(); + var relatedRecord = self.getRecordForRelation(); + if(relatedRecord !== false) { + if(actionType == "associate") { + if(module == 'Emails') { + self.associateEmail(relatedRecord); + } else if(module == "ModComments") { + self.associateComment(relatedRecord); + } else if(module) { + self.createRelatedRecord(module); + } + } else if(module) { + self.createRelatedRecord(module); + } + } + self.resetRelationDropdown(); + }); + }, + + associateEmail : function(relatedRecord) { + var self = this; + var container = self.getContainer(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'relation', + '_operationarg' : 'link', + '_mlinkto' : relatedRecord, + '_mlinktotype' : 'Emails', + '_folder' : container.find('#mmFolder').val(), + '_msgno' : container.find('#mmMsgNo').val() + } + app.helper.showProgress(app.vtranslate('JSLBL_Associating')+'...'); + app.request.post({data : params}).then(function(err,data) { + if (err === null) { + app.helper.showSuccessNotification({'message':''}); + app.helper.hideProgress(); + } else { + app.helper.showErrorNotification({"message": err}); + } + }); + }, + + associateComment : function(relatedRecord) { + var self = this; + var container = self.getContainer(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'relation', + '_operationarg' : 'commentwidget', + '_mlinkto' : relatedRecord, + '_mlinktotype' : 'ModComments', + '_folder' : container.find('#mmFolder').val(), + '_msgno' : container.find('#mmMsgNo').val() + } + app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...'); + app.request.post({data : params}).then(function(err, data) { + app.helper.hideProgress(); + app.helper.showModal(data, {'cb' : function(data) { + jQuery('[name="saveButton"]', data).on('click',function(e){ + e.preventDefault(); + self.saveComment(data); + }); + }}); + }); + }, + + createRelatedRecord : function(module) { + var self = this; + var container = self.getContainer(); + var relatedRecord = self.getRecordForRelation(); + var msgNo = container.find('#mmMsgNo').val(); + var folder = container.find('#mmFolder').val(); + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'relation', + '_operationarg' : 'create_wizard', + '_mlinktotype' : module, + '_folder' : folder, + '_msgno' : msgNo + }; + if(relatedRecord && relatedRecord !== null) { + params['_mlinkto'] = relatedRecord; + } + app.helper.showProgress(app.vtranslate('JSLBL_Loading')+'...'); + app.request.post({data : params}).then(function(err, data) { + app.helper.hideProgress(); + app.helper.showModal(data); + var form = jQuery('form[name="QuickCreate"]'); + app.event.trigger('post.QuickCreateForm.show',form); + vtUtils.applyFieldElementsView(form); var moduleName = form.find('[name="module"]').val(); var targetClass = app.getModuleSpecificViewClass('Edit', moduleName); var targetInstance = new window[targetClass](); targetInstance.registerBasicEvents(form); - var newParams = {}; - newParams.callbackFunction = function() { - app.helper.hideModal(); - self.showRelatedActions(); - }; - newParams.requestParams = params; - self.quickCreateSave(form, newParams); - app.helper.hideProgress(); - }); - }, - - /** - * Register Quick Create Save Event - * @param {type} form - * @returns {undefined} - */ - quickCreateSave : function(form,invokeParams){ - var container = this.getContainer(); - var params = { - submitHandler: function(form) { - // to Prevent submit if already submitted - jQuery("button[name='saveButton']").attr("disabled","disabled"); - if(this.numberOfInvalids() > 0) { - return false; - } - var formData = jQuery(form).serialize(); - var requestParams = invokeParams.requestParams; - - // replacing default parameters for custom handlings in mail manager - formData = formData.replace('module=', 'xmodule=').replace('action=', 'xaction='); - if(requestParams) { - requestParams['_operationarg'] = 'create'; - if(requestParams['_mlinktotype'] == 'Events') { - requestParams['_mlinktotype'] = 'Calendar'; - } - jQuery.each(requestParams, function(key, value){ - formData += "&"+key+"="+value; - }); - } - - app.request.post({data:formData}).then(function(err,data){ - app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); - if(err === null) { - app.helper.hideModal(); - app.helper.showSuccessNotification({"message":''}); - invokeParams.callbackFunction(data, err); - }else{ - app.helper.showErrorNotification({"message":err}); - } - }); - } - }; - form.vtValidate(params); - }, - - saveComment : function(data) { - var _mlinkto = jQuery('[name="_mlinkto"]', data).val(); - var _mlinktotype = jQuery('[name="_mlinktotype"]', data).val(); - var _msgno = jQuery('[name="_msgno"]', data).val(); - var _folder = jQuery('[name="_folder"]', data).val(); - var commentcontent = jQuery('[name="commentcontent"]', data).val(); - if(commentcontent.trim() == "") { - var validationParams = { - position: { - 'my' : 'bottom left', - 'at' : 'top left', - 'container' : jQuery('#commentContainer', data) - } - }; - var errorMsg = app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT'); - vtUtils.showValidationMessage(jQuery('[name="commentcontent"]', data), errorMsg, validationParams); - return false; - } else { - vtUtils.hideValidationMessage(jQuery('[name="commentcontent"]', data)); - } - var params = { - 'module' : 'MailManager', - 'view' : 'Index', - '_operation' : 'relation', - '_operationarg' : 'create', - 'commentcontent' : commentcontent, - '_mlinkto' : _mlinkto, - '_mlinktotype' : _mlinktotype, - '_msgno' : _msgno, - '_folder' : _folder - } - app.helper.showProgress(app.vtranslate('JSLBL_Saving')+'...'); - app.request.post({'data' : params}).then(function(err, response) { - app.helper.hideProgress(); - if(response.ui) { - app.helper.hideModal(); - } else { - app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_FAILED_ADDING_COMMENT")}); - } - }); - }, - - getRecordForRelation : function() { - var self = this; - var container = self.getContainer(); - var element = container.find('[name="_mlinkto"]'); - if(element.length > 0) { - if(element.length == 1) { - element.attr('checked', true); - return element.val(); - } else { - selected = false; - element.each(function(i, ele) { - if(jQuery(ele).is(":checked")) { - selected = true; - } - }); - if(selected) { - return container.find('[name="_mlinkto"]:checked').val(); - } else { - app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD")}); - return false; - } - } - } else { - return null; - } - }, - - resetRelationDropdown : function() { - this.getContainer().find('#_mlinktotype').val(""); - }, - - openComposeEmailForm : function(type, params, data) { - Vtiger_Index_Js.showComposeEmailPopup(params, function(response) { - var descEle = jQuery(response).find('#description'); - if(type == "reply" || type == "forward") { - jQuery('#subject', response).val(data.subject); - descEle.val(data.body); - jQuery('[name="cc"]', response).val(""); - jQuery('.ccContainer', response).addClass("hide"); - jQuery('#ccLink', response).css("display", ""); - } else if(type == "replyall") { - jQuery('#subject', response).val(data.subject); - descEle.val(data.body); - var mailIds = data.ids; - if(mailIds) { - jQuery('.ccContainer', response).removeClass("hide"); - jQuery('#ccLink', response).css("display", "none"); - jQuery('[name="cc"]', response).val(mailIds); - } - } else { - jQuery('#subject', response).val(""); - descEle.val(""); - jQuery('[name="cc"]', response).val(""); - jQuery('.ccContainer', response).addClass("hide"); - jQuery('#ccLink', response).css("display", ""); - } - }); - }, - + var newParams = {}; + newParams.callbackFunction = function() { + app.helper.hideModal(); + self.showRelatedActions(); + }; + newParams.requestParams = params; + self.quickCreateSave(form, newParams); + app.helper.hideProgress(); + }); + }, + + /** + * Register Quick Create Save Event + * @param {type} form + * @returns {undefined} + */ + quickCreateSave : function(form,invokeParams){ + var container = this.getContainer(); + var params = { + submitHandler: function(form) { + // to Prevent submit if already submitted + jQuery("button[name='saveButton']").attr("disabled","disabled"); + if(this.numberOfInvalids() > 0) { + return false; + } + var formData = jQuery(form).serialize(); + var requestParams = invokeParams.requestParams; + + // replacing default parameters for custom handlings in mail manager + formData = formData.replace('module=', 'xmodule=').replace('action=', 'xaction='); + if(requestParams) { + requestParams['_operationarg'] = 'create'; + if(requestParams['_mlinktotype'] == 'Events') { + requestParams['_mlinktotype'] = 'Calendar'; + } + jQuery.each(requestParams, function(key, value){ + formData += "&"+key+"="+value; + }); + } + + app.request.post({data:formData}).then(function(err,data){ + app.event.trigger("post.QuickCreateForm.save",data,jQuery(form).serializeFormData()); + if(err === null) { + app.helper.hideModal(); + app.helper.showSuccessNotification({"message":''}); + invokeParams.callbackFunction(data, err); + }else{ + app.helper.showErrorNotification({"message":err}); + } + }); + } + }; + form.vtValidate(params); + }, + + saveComment : function(data) { + var _mlinkto = jQuery('[name="_mlinkto"]', data).val(); + var _mlinktotype = jQuery('[name="_mlinktotype"]', data).val(); + var _msgno = jQuery('[name="_msgno"]', data).val(); + var _folder = jQuery('[name="_folder"]', data).val(); + var commentcontent = jQuery('[name="commentcontent"]', data).val(); + if(commentcontent.trim() == "") { + var validationParams = { + position: { + 'my' : 'bottom left', + 'at' : 'top left', + 'container' : jQuery('#commentContainer', data) + } + }; + var errorMsg = app.vtranslate('JSLBL_CANNOT_ADD_EMPTY_COMMENT'); + vtUtils.showValidationMessage(jQuery('[name="commentcontent"]', data), errorMsg, validationParams); + return false; + } else { + vtUtils.hideValidationMessage(jQuery('[name="commentcontent"]', data)); + } + var params = { + 'module' : 'MailManager', + 'view' : 'Index', + '_operation' : 'relation', + '_operationarg' : 'create', + 'commentcontent' : commentcontent, + '_mlinkto' : _mlinkto, + '_mlinktotype' : _mlinktotype, + '_msgno' : _msgno, + '_folder' : _folder + } + app.helper.showProgress(app.vtranslate('JSLBL_Saving')+'...'); + app.request.post({'data' : params}).then(function(err, response) { + app.helper.hideProgress(); + if(response.ui) { + app.helper.showSuccessNotification({'message':''}); + app.helper.hideModal(); + } else { + app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_FAILED_ADDING_COMMENT")}); + } + }); + }, + + getRecordForRelation : function() { + var self = this; + var container = self.getContainer(); + var element = container.find('[name="_mlinkto"]'); + if(element.length > 0) { + if(element.length == 1) { + element.attr('checked', true); + return element.val(); + } else { + selected = false; + element.each(function(i, ele) { + if(jQuery(ele).is(":checked")) { + selected = true; + } + }); + if(selected) { + return container.find('[name="_mlinkto"]:checked').val(); + } else { + app.helper.showAlertBox({'message' : app.vtranslate("JSLBL_PLEASE_SELECT_ATLEAST_ONE_RECORD")}); + return false; + } + } + } else { + return null; + } + }, + + resetRelationDropdown : function() { + this.getContainer().find('#_mlinktotype').val(""); + }, + + openComposeEmailForm : function(type, params, data) { + Vtiger_Index_Js.showComposeEmailPopup(params, function(response) { + var descEle = jQuery(response).find('#description'); + if(type == "reply" || type == "forward") { + jQuery('#subject', response).val(data.subject); + descEle.val(data.body); + jQuery('[name="cc"]', response).val(""); + jQuery('.ccContainer', response).addClass("hide"); + jQuery('#ccLink', response).css("display", ""); + } else if(type == "replyall") { + jQuery('#subject', response).val(data.subject); + descEle.val(data.body); + var mailIds = data.ids; + if(mailIds) { + jQuery('.ccContainer', response).removeClass("hide"); + jQuery('#ccLink', response).css("display", "none"); + jQuery('[name="cc"]', response).val(mailIds); + } + } else { + jQuery('#subject', response).val(""); + descEle.val(""); + jQuery('[name="cc"]', response).val(""); + jQuery('.ccContainer', response).addClass("hide"); + jQuery('#ccLink', response).css("display", ""); + } + }); + }, + clearPreviewContainer : function() { var previewHtml = '<div class="mmListMainContainer">\n\ <center><strong>'+app.vtranslate('JSLBL_NO_MAIL_SELECTED_DESC')+'</center></strong></div>'; this.getContainer().find('#mailPreviewContainer').html(previewHtml); }, - + registerRefreshFolder : function() { var self = this; var container = self.getContainer(); @@ -1476,31 +1482,42 @@ Vtiger_List_Js("MailManager_List_Js", {}, { } }); }, - - registerSerchTypeChangeEvent : function() { - var container = this.getContainer(); - container.on('change', '#searchType', function(e){ - var element = jQuery(e.currentTarget); - var searchBox = jQuery('#mailManagerSearchbox'); - if(element.val() == 'ON'){ - searchBox.addClass('dateField'); - searchBox.parent().append('<span class="date-addon input-group-addon"><i class="fa fa-calendar"></i></span>'); - vtUtils.registerEventForDateFields(searchBox); - } else { - searchBox.datepicker('remove'); - searchBox.removeClass('dateField'); - searchBox.parent().find('.date-addon').remove(); - } - }); - }, - - registerEvents : function() { - var self = this; - self.loadFolders(); - self.registerComposeEmail(); - self.registerSettingsEdit(); - self.registerInitialLayout(); + + registerSearchTypeChangeEvent : function() { + var container = this.getContainer(); + container.on('change', '#searchType', function(e){ + var element = jQuery(e.currentTarget); + var searchBox = jQuery('#mailManagerSearchbox'); + if(element.val() == 'ON'){ + searchBox.addClass('dateField'); + searchBox.parent().append('<span class="date-addon input-group-addon"><i class="fa fa-calendar"></i></span>'); + vtUtils.registerEventForDateFields(searchBox); + } else { + searchBox.datepicker('remove'); + searchBox.removeClass('dateField'); + searchBox.parent().find('.date-addon').remove(); + } + }); + }, + + registerPostMailSentEvent: function () { + app.event.on('post.mail.sent', function (event, data) { + var resultEle = jQuery(data); + var success = resultEle.find('.mailSentSuccessfully'); + if (success.length > 0) { + app.helper.showModal(data); + } + }); + }, + + registerEvents : function() { + var self = this; + self.loadFolders(); + self.registerComposeEmail(); + self.registerSettingsEdit(); + self.registerInitialLayout(); self.registerRefreshFolder(); - self.registerSerchTypeChangeEvent(); - } + self.registerSearchTypeChangeEvent(); + self.registerPostMailSentEvent(); + } }); \ No newline at end of file -- GitLab