Built motion from commit (unavailable).|2.5.31
[motion2.git] / server / api / intZohoConfiguration / intZohoConfiguration.controller.js
index fa7fba0..8154b8f 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb068=['moment','bluebird','util','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','ZohoConfiguration,\x20%s,\x20%s,\x20%s','error','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','json','apply','reject','save','update','destroy','stack','name','send','merge','body','contact','agent','interaction','account','index','map','ZohoConfiguration','rawAttributes','fieldName','type','key','query','filters','intersection','attributes','model','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','VIRTUAL','includeAll','include','findAll','rows','show','params','keys','find','create','getFields','ZohoField','options','getSubjects','findOne','getDescriptions','rimraf','zip-dir','fast-json-patch','request-promise'];(function(_0x1aef65,_0x521e60){var _0x4a4594=function(_0x120020){while(--_0x120020){_0x1aef65['push'](_0x1aef65['shift']());}};_0x4a4594(++_0x521e60);}(_0xb068,0x194));var _0x8b06=function(_0x10ba8a,_0x1ed5e1){_0x10ba8a=_0x10ba8a-0x0;var _0x457f62=_0xb068[_0x10ba8a];return _0x457f62;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x8b06('0x0'));var zipdir=require(_0x8b06('0x1'));var jsonpatch=require(_0x8b06('0x2'));var rp=require(_0x8b06('0x3'));var moment=require(_0x8b06('0x4'));var BPromise=require(_0x8b06('0x5'));var Mustache=require('mustache');var util=require(_0x8b06('0x6'));var path=require('path');var sox=require('sox');var csv=require('to-csv');var ejs=require(_0x8b06('0x7'));var fs=require('fs');var fs_extra=require(_0x8b06('0x8'));var _=require(_0x8b06('0x9'));var squel=require(_0x8b06('0xa'));var crypto=require(_0x8b06('0xb'));var jsforce=require(_0x8b06('0xc'));var deskjs=require(_0x8b06('0xd'));var toCsv=require(_0x8b06('0xe'));var querystring=require(_0x8b06('0xf'));var Papa=require(_0x8b06('0x10'));var Redis=require(_0x8b06('0x11'));var authService=require('../../components/auth/service');var qs=require(_0x8b06('0x12'));var as=require(_0x8b06('0x13'));var hardwareService=require(_0x8b06('0x14'));var logger=require(_0x8b06('0x15'))(_0x8b06('0x16'));var utils=require(_0x8b06('0x17'));var config=require(_0x8b06('0x18'));var licenseUtil=require(_0x8b06('0x19'));var db=require(_0x8b06('0x1a'))['db'];var jayson=require(_0x8b06('0x1b'));var client=jayson[_0x8b06('0x1c')][_0x8b06('0x1d')]({'port':0x232a});function respondWithRpcPromise(_0x38ffd1,_0x25913e,_0x2f83d5,_0x350166){return new BPromise(function(_0x3427d0,_0x2fa76b){var _0x59630c=_0x350166||client;return _0x59630c[_0x8b06('0x1e')](_0x38ffd1,_0x2f83d5)[_0x8b06('0x1f')](function(_0x56bc19){logger[_0x8b06('0x20')](_0x8b06('0x21'),_0x25913e,_0x8b06('0x22'));logger[_0x8b06('0x23')](_0x8b06('0x24'),_0x25913e,'request\x20sent',JSON['stringify'](_0x56bc19));if(_0x56bc19[_0x8b06('0x25')]){if(_0x56bc19[_0x8b06('0x25')]['code']===0x1f4){logger[_0x8b06('0x25')](_0x8b06('0x21'),_0x25913e,_0x56bc19[_0x8b06('0x25')][_0x8b06('0x26')]);return _0x2fa76b(_0x56bc19[_0x8b06('0x25')][_0x8b06('0x26')]);}logger[_0x8b06('0x25')](_0x8b06('0x21'),_0x25913e,_0x56bc19['error']['message']);return _0x3427d0(_0x56bc19[_0x8b06('0x25')][_0x8b06('0x26')]);}else{logger[_0x8b06('0x20')](_0x8b06('0x21'),_0x25913e,'request\x20sent');_0x3427d0(_0x56bc19[_0x8b06('0x27')]['message']);}})[_0x8b06('0x28')](function(_0x2e81cd){logger['error'](_0x8b06('0x21'),_0x25913e,_0x2e81cd);_0x2fa76b(_0x2e81cd);});});}function respondWithStatusCode(_0x4f0f2f,_0x4957ee){_0x4957ee=_0x4957ee||0xcc;return function(_0x50e202){if(_0x50e202){return _0x4f0f2f[_0x8b06('0x29')](_0x4957ee);}return _0x4f0f2f[_0x8b06('0x2a')](_0x4957ee)[_0x8b06('0x2b')]();};}function respondWithResult(_0x42df52,_0x1a02b2){_0x1a02b2=_0x1a02b2||0xc8;return function(_0xcf9dcd){if(_0xcf9dcd){return _0x42df52[_0x8b06('0x2a')](_0x1a02b2)['json'](_0xcf9dcd);}};}function respondWithFilteredResult(_0x1513d0,_0x49ee4d){return function(_0x20db9d){if(_0x20db9d){var _0x423920=typeof _0x49ee4d[_0x8b06('0x2c')]===_0x8b06('0x2d')&&typeof _0x49ee4d[_0x8b06('0x2e')]==='undefined';var _0x3847c3=_0x20db9d[_0x8b06('0x2f')];var _0xe0f0fb=_0x423920?0x0:_0x49ee4d[_0x8b06('0x2c')];var _0x5870c3=_0x423920?_0x20db9d[_0x8b06('0x2f')]:_0x49ee4d[_0x8b06('0x2c')]+_0x49ee4d[_0x8b06('0x2e')];var _0x2e357b;if(_0x5870c3>=_0x3847c3){_0x5870c3=_0x3847c3;_0x2e357b=0xc8;}else{_0x2e357b=0xce;}_0x1513d0[_0x8b06('0x2a')](_0x2e357b);return _0x1513d0[_0x8b06('0x30')](_0x8b06('0x31'),_0xe0f0fb+'-'+_0x5870c3+'/'+_0x3847c3)[_0x8b06('0x32')](_0x20db9d);}return null;};}function patchUpdates(_0x20b3ec){return function(_0x45ad25){try{jsonpatch[_0x8b06('0x33')](_0x45ad25,_0x20b3ec,!![]);}catch(_0x4f8ff6){return BPromise[_0x8b06('0x34')](_0x4f8ff6);}return _0x45ad25[_0x8b06('0x35')]();};}function saveUpdates(_0x1aed88,_0x411cc8){return function(_0x106901){if(_0x106901){return _0x106901[_0x8b06('0x36')](_0x1aed88)[_0x8b06('0x1f')](function(_0xc883f7){return _0xc883f7;});}return null;};}function removeEntity(_0x341028,_0x40db5c){return function(_0x5b0927){if(_0x5b0927){return _0x5b0927[_0x8b06('0x37')]()[_0x8b06('0x1f')](function(){_0x341028[_0x8b06('0x2a')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2164e6,_0x27458f){return function(_0x3eae69){if(!_0x3eae69){_0x2164e6[_0x8b06('0x29')](0x194);}return _0x3eae69;};}function handleError(_0x6e70f1,_0x12ef9d){_0x12ef9d=_0x12ef9d||0x1f4;return function(_0x202747){logger['error'](_0x202747[_0x8b06('0x38')]);if(_0x202747[_0x8b06('0x39')]){delete _0x202747[_0x8b06('0x39')];}_0x6e70f1[_0x8b06('0x2a')](_0x12ef9d)[_0x8b06('0x3a')](_0x202747);};}function getMustacheRender(_0x559567,_0x51c557){return Mustache['render'](_0x559567,_[_0x8b06('0x3b')](_0x51c557[_0x8b06('0x3c')],{'contact':_0x51c557[_0x8b06('0x3d')],'message':_0x51c557[_0x8b06('0x26')],'agent':_0x51c557[_0x8b06('0x3e')],'interaction':_0x51c557[_0x8b06('0x3f')],'account':_0x51c557[_0x8b06('0x40')]}))||'';}exports[_0x8b06('0x41')]=function(_0x13f33d,_0x19a371){var _0x68f56e={},_0x3d283a={},_0x1e8ac5={'count':0x0,'rows':[]};var _0x1471af=_[_0x8b06('0x42')](db[_0x8b06('0x43')][_0x8b06('0x44')],function(_0x448284){return{'name':_0x448284[_0x8b06('0x45')],'type':_0x448284[_0x8b06('0x46')][_0x8b06('0x47')]};});_0x3d283a['model']=_[_0x8b06('0x42')](_0x1471af,_0x8b06('0x39'));_0x3d283a[_0x8b06('0x48')]=_['keys'](_0x13f33d[_0x8b06('0x48')]);_0x3d283a[_0x8b06('0x49')]=_[_0x8b06('0x4a')](_0x3d283a['model'],_0x3d283a[_0x8b06('0x48')]);_0x68f56e[_0x8b06('0x4b')]=_[_0x8b06('0x4a')](_0x3d283a[_0x8b06('0x4c')],qs[_0x8b06('0x4d')](_0x13f33d[_0x8b06('0x48')][_0x8b06('0x4d')]));_0x68f56e[_0x8b06('0x4b')]=_0x68f56e['attributes'][_0x8b06('0x4e')]?_0x68f56e[_0x8b06('0x4b')]:_0x3d283a[_0x8b06('0x4c')];if(!_0x13f33d[_0x8b06('0x48')][_0x8b06('0x4f')](_0x8b06('0x50'))){_0x68f56e[_0x8b06('0x2e')]=qs[_0x8b06('0x2e')](_0x13f33d[_0x8b06('0x48')][_0x8b06('0x2e')]);_0x68f56e[_0x8b06('0x2c')]=qs[_0x8b06('0x2c')](_0x13f33d[_0x8b06('0x48')][_0x8b06('0x2c')]);}_0x68f56e[_0x8b06('0x51')]=qs[_0x8b06('0x52')](_0x13f33d[_0x8b06('0x48')][_0x8b06('0x52')]);_0x68f56e[_0x8b06('0x53')]=qs[_0x8b06('0x49')](_[_0x8b06('0x54')](_0x13f33d['query'],_0x3d283a[_0x8b06('0x49')]),_0x1471af);if(_0x13f33d[_0x8b06('0x48')][_0x8b06('0x55')]){_0x68f56e[_0x8b06('0x53')]=_['merge'](_0x68f56e['where'],{'$or':_[_0x8b06('0x42')](_0x1471af,function(_0x46caba){if(_0x46caba['type']!==_0x8b06('0x56')){var _0x4a7f52={};_0x4a7f52[_0x46caba[_0x8b06('0x39')]]={'$like':'%'+_0x13f33d[_0x8b06('0x48')]['filter']+'%'};return _0x4a7f52;}})});}_0x68f56e=_[_0x8b06('0x3b')]({},_0x68f56e,_0x13f33d['options']);var _0x35dc37={'where':_0x68f56e[_0x8b06('0x53')]};return db['ZohoConfiguration'][_0x8b06('0x2f')](_0x35dc37)[_0x8b06('0x1f')](function(_0x5edcd6){_0x1e8ac5[_0x8b06('0x2f')]=_0x5edcd6;if(_0x13f33d[_0x8b06('0x48')][_0x8b06('0x57')]){_0x68f56e[_0x8b06('0x58')]=[{'all':!![]}];}return db[_0x8b06('0x43')][_0x8b06('0x59')](_0x68f56e);})[_0x8b06('0x1f')](function(_0x3f713a){_0x1e8ac5[_0x8b06('0x5a')]=_0x3f713a;return _0x1e8ac5;})[_0x8b06('0x1f')](respondWithFilteredResult(_0x19a371,_0x68f56e))['catch'](handleError(_0x19a371,null));};exports[_0x8b06('0x5b')]=function(_0x5cd0fb,_0xbcd05){var _0x41b0c6={'raw':![],'where':{'id':_0x5cd0fb[_0x8b06('0x5c')]['id']}},_0x1f2ad3={};_0x1f2ad3['model']=_['keys'](db[_0x8b06('0x43')][_0x8b06('0x44')]);_0x1f2ad3['query']=_[_0x8b06('0x5d')](_0x5cd0fb[_0x8b06('0x48')]);_0x1f2ad3[_0x8b06('0x49')]=_['intersection'](_0x1f2ad3[_0x8b06('0x4c')],_0x1f2ad3[_0x8b06('0x48')]);_0x41b0c6[_0x8b06('0x4b')]=_[_0x8b06('0x4a')](_0x1f2ad3[_0x8b06('0x4c')],qs['fields'](_0x5cd0fb[_0x8b06('0x48')][_0x8b06('0x4d')]));_0x41b0c6['attributes']=_0x41b0c6[_0x8b06('0x4b')][_0x8b06('0x4e')]?_0x41b0c6['attributes']:_0x1f2ad3['model'];if(_0x5cd0fb[_0x8b06('0x48')][_0x8b06('0x57')]){_0x41b0c6[_0x8b06('0x58')]=[{'all':!![]}];}_0x41b0c6=_[_0x8b06('0x3b')]({},_0x41b0c6,_0x5cd0fb['options']);return db['ZohoConfiguration'][_0x8b06('0x5e')](_0x41b0c6)['then'](handleEntityNotFound(_0xbcd05,null))['then'](respondWithResult(_0xbcd05,null))[_0x8b06('0x28')](handleError(_0xbcd05,null));};exports[_0x8b06('0x5f')]=function(_0x1f358a,_0x49fe46){return db[_0x8b06('0x43')][_0x8b06('0x5f')](_0x1f358a['body'],{})[_0x8b06('0x1f')](respondWithResult(_0x49fe46,0xc9))[_0x8b06('0x28')](handleError(_0x49fe46,null));};exports[_0x8b06('0x36')]=function(_0x8c46eb,_0x1009e3){if(_0x8c46eb['body']['id']){delete _0x8c46eb[_0x8b06('0x3c')]['id'];}return db[_0x8b06('0x43')][_0x8b06('0x5e')]({'where':{'id':_0x8c46eb['params']['id']}})[_0x8b06('0x1f')](handleEntityNotFound(_0x1009e3,null))[_0x8b06('0x1f')](saveUpdates(_0x8c46eb[_0x8b06('0x3c')],null))['then'](respondWithResult(_0x1009e3,null))['catch'](handleError(_0x1009e3,null));};exports[_0x8b06('0x37')]=function(_0x35c995,_0x100eb7){return db[_0x8b06('0x43')]['find']({'where':{'id':_0x35c995[_0x8b06('0x5c')]['id']}})[_0x8b06('0x1f')](handleEntityNotFound(_0x100eb7,null))[_0x8b06('0x1f')](removeEntity(_0x100eb7,null))['catch'](handleError(_0x100eb7,null));};exports[_0x8b06('0x60')]=function(_0x1a76e2,_0x3926dc,_0x48f1b9){var _0x355cde={};var _0x8db88={};var _0x44e160;var _0x314306;return db[_0x8b06('0x43')]['findOne']({'where':{'id':_0x1a76e2[_0x8b06('0x5c')]['id']}})[_0x8b06('0x1f')](handleEntityNotFound(_0x3926dc,null))[_0x8b06('0x1f')](function(_0x4ae99f){if(_0x4ae99f){_0x44e160=_0x4ae99f;_0x8db88['model']=_[_0x8b06('0x5d')](db[_0x8b06('0x61')][_0x8b06('0x44')]);_0x8db88[_0x8b06('0x48')]=_[_0x8b06('0x5d')](_0x1a76e2[_0x8b06('0x48')]);_0x8db88['filters']=_[_0x8b06('0x4a')](_0x8db88[_0x8b06('0x4c')],_0x8db88['query']);_0x355cde['attributes']=_[_0x8b06('0x4a')](_0x8db88[_0x8b06('0x4c')],qs[_0x8b06('0x4d')](_0x1a76e2[_0x8b06('0x48')][_0x8b06('0x4d')]));_0x355cde['attributes']=_0x355cde['attributes'][_0x8b06('0x4e')]?_0x355cde[_0x8b06('0x4b')]:_0x8db88[_0x8b06('0x4c')];_0x355cde[_0x8b06('0x51')]=qs[_0x8b06('0x52')](_0x1a76e2[_0x8b06('0x48')][_0x8b06('0x52')]);_0x355cde[_0x8b06('0x53')]=qs[_0x8b06('0x49')](_['pick'](_0x1a76e2['query'],_0x8db88[_0x8b06('0x49')]));if(_0x1a76e2[_0x8b06('0x48')]['filter']){_0x355cde['where']=_[_0x8b06('0x3b')](_0x355cde[_0x8b06('0x53')],{'$or':_[_0x8b06('0x42')](_0x355cde[_0x8b06('0x4b')],function(_0x27b0bb){var _0x8f9d9b={};_0x8f9d9b[_0x27b0bb]={'$like':'%'+_0x1a76e2[_0x8b06('0x48')][_0x8b06('0x55')]+'%'};return _0x8f9d9b;})});}_0x355cde=_[_0x8b06('0x3b')]({},_0x355cde,_0x1a76e2[_0x8b06('0x62')]);return _0x44e160['getFields'](_0x355cde);}})[_0x8b06('0x1f')](function(_0x5e3ddc){if(_0x5e3ddc){_0x314306=_0x5e3ddc[_0x8b06('0x4e')];if(!_0x1a76e2[_0x8b06('0x48')][_0x8b06('0x4f')]('nolimit')){_0x355cde[_0x8b06('0x2e')]=qs[_0x8b06('0x2e')](_0x1a76e2[_0x8b06('0x48')]['limit']);_0x355cde[_0x8b06('0x2c')]=qs['offset'](_0x1a76e2[_0x8b06('0x48')][_0x8b06('0x2c')]);}return _0x44e160[_0x8b06('0x60')](_0x355cde);}})[_0x8b06('0x1f')](function(_0x3241bb){if(_0x3241bb){return _0x3241bb?{'count':_0x314306,'rows':_0x3241bb}:null;}})[_0x8b06('0x1f')](respondWithResult(_0x3926dc,null))[_0x8b06('0x28')](handleError(_0x3926dc,null));};exports[_0x8b06('0x63')]=function(_0x379071,_0x145985,_0x222887){var _0xcdc7c3={};var _0x58963e={};var _0x3f0680;var _0x38931c;return db[_0x8b06('0x43')][_0x8b06('0x64')]({'where':{'id':_0x379071[_0x8b06('0x5c')]['id']}})[_0x8b06('0x1f')](handleEntityNotFound(_0x145985,null))[_0x8b06('0x1f')](function(_0x1a7c4e){if(_0x1a7c4e){_0x3f0680=_0x1a7c4e;_0x58963e[_0x8b06('0x4c')]=_['keys'](db[_0x8b06('0x61')][_0x8b06('0x44')]);_0x58963e[_0x8b06('0x48')]=_[_0x8b06('0x5d')](_0x379071[_0x8b06('0x48')]);_0x58963e[_0x8b06('0x49')]=_[_0x8b06('0x4a')](_0x58963e[_0x8b06('0x4c')],_0x58963e[_0x8b06('0x48')]);_0xcdc7c3['attributes']=_[_0x8b06('0x4a')](_0x58963e[_0x8b06('0x4c')],qs[_0x8b06('0x4d')](_0x379071[_0x8b06('0x48')][_0x8b06('0x4d')]));_0xcdc7c3[_0x8b06('0x4b')]=_0xcdc7c3[_0x8b06('0x4b')]['length']?_0xcdc7c3[_0x8b06('0x4b')]:_0x58963e['model'];_0xcdc7c3[_0x8b06('0x51')]=qs[_0x8b06('0x52')](_0x379071[_0x8b06('0x48')][_0x8b06('0x52')]);_0xcdc7c3[_0x8b06('0x53')]=qs['filters'](_['pick'](_0x379071[_0x8b06('0x48')],_0x58963e[_0x8b06('0x49')]));if(_0x379071['query'][_0x8b06('0x55')]){_0xcdc7c3[_0x8b06('0x53')]=_[_0x8b06('0x3b')](_0xcdc7c3[_0x8b06('0x53')],{'$or':_['map'](_0xcdc7c3[_0x8b06('0x4b')],function(_0x20d055){var _0x2d1da9={};_0x2d1da9[_0x20d055]={'$like':'%'+_0x379071['query'][_0x8b06('0x55')]+'%'};return _0x2d1da9;})});}_0xcdc7c3=_[_0x8b06('0x3b')]({},_0xcdc7c3,_0x379071[_0x8b06('0x62')]);return _0x3f0680[_0x8b06('0x63')](_0xcdc7c3);}})[_0x8b06('0x1f')](function(_0x4e62e8){if(_0x4e62e8){_0x38931c=_0x4e62e8[_0x8b06('0x4e')];if(!_0x379071[_0x8b06('0x48')]['hasOwnProperty'](_0x8b06('0x50'))){_0xcdc7c3[_0x8b06('0x2e')]=qs[_0x8b06('0x2e')](_0x379071['query'][_0x8b06('0x2e')]);_0xcdc7c3[_0x8b06('0x2c')]=qs[_0x8b06('0x2c')](_0x379071[_0x8b06('0x48')][_0x8b06('0x2c')]);}return _0x3f0680['getSubjects'](_0xcdc7c3);}})[_0x8b06('0x1f')](function(_0x6cbf6f){if(_0x6cbf6f){return _0x6cbf6f?{'count':_0x38931c,'rows':_0x6cbf6f}:null;}})[_0x8b06('0x1f')](respondWithResult(_0x145985,null))[_0x8b06('0x28')](handleError(_0x145985,null));};exports[_0x8b06('0x65')]=function(_0x1366f8,_0xcc48af,_0x275f06){var _0x339e39={};var _0x5a71fc={};var _0x51b026;var _0x25e86a;return db[_0x8b06('0x43')]['findOne']({'where':{'id':_0x1366f8[_0x8b06('0x5c')]['id']}})[_0x8b06('0x1f')](handleEntityNotFound(_0xcc48af,null))[_0x8b06('0x1f')](function(_0x3ab440){if(_0x3ab440){_0x51b026=_0x3ab440;_0x5a71fc[_0x8b06('0x4c')]=_[_0x8b06('0x5d')](db[_0x8b06('0x61')]['rawAttributes']);_0x5a71fc[_0x8b06('0x48')]=_[_0x8b06('0x5d')](_0x1366f8[_0x8b06('0x48')]);_0x5a71fc[_0x8b06('0x49')]=_[_0x8b06('0x4a')](_0x5a71fc['model'],_0x5a71fc[_0x8b06('0x48')]);_0x339e39['attributes']=_[_0x8b06('0x4a')](_0x5a71fc[_0x8b06('0x4c')],qs['fields'](_0x1366f8[_0x8b06('0x48')]['fields']));_0x339e39[_0x8b06('0x4b')]=_0x339e39[_0x8b06('0x4b')][_0x8b06('0x4e')]?_0x339e39['attributes']:_0x5a71fc[_0x8b06('0x4c')];_0x339e39[_0x8b06('0x51')]=qs[_0x8b06('0x52')](_0x1366f8['query'][_0x8b06('0x52')]);_0x339e39['where']=qs[_0x8b06('0x49')](_[_0x8b06('0x54')](_0x1366f8[_0x8b06('0x48')],_0x5a71fc[_0x8b06('0x49')]));if(_0x1366f8['query'][_0x8b06('0x55')]){_0x339e39[_0x8b06('0x53')]=_[_0x8b06('0x3b')](_0x339e39['where'],{'$or':_['map'](_0x339e39[_0x8b06('0x4b')],function(_0x11b9ae){var _0x400961={};_0x400961[_0x11b9ae]={'$like':'%'+_0x1366f8[_0x8b06('0x48')][_0x8b06('0x55')]+'%'};return _0x400961;})});}_0x339e39=_[_0x8b06('0x3b')]({},_0x339e39,_0x1366f8['options']);return _0x51b026['getDescriptions'](_0x339e39);}})[_0x8b06('0x1f')](function(_0x10c4f1){if(_0x10c4f1){_0x25e86a=_0x10c4f1[_0x8b06('0x4e')];if(!_0x1366f8[_0x8b06('0x48')][_0x8b06('0x4f')](_0x8b06('0x50'))){_0x339e39[_0x8b06('0x2e')]=qs[_0x8b06('0x2e')](_0x1366f8[_0x8b06('0x48')][_0x8b06('0x2e')]);_0x339e39[_0x8b06('0x2c')]=qs[_0x8b06('0x2c')](_0x1366f8['query'][_0x8b06('0x2c')]);}return _0x51b026[_0x8b06('0x65')](_0x339e39);}})[_0x8b06('0x1f')](function(_0x5a63f1){if(_0x5a63f1){return _0x5a63f1?{'count':_0x25e86a,'rows':_0x5a63f1}:null;}})[_0x8b06('0x1f')](respondWithResult(_0xcc48af,null))[_0x8b06('0x28')](handleError(_0xcc48af,null));};
\ No newline at end of file
+var _0x509b=['agent','interaction','account','map','ZohoConfiguration','fieldName','key','model','keys','query','filters','attributes','fields','length','hasOwnProperty','order','sort','where','pick','filter','VIRTUAL','options','include','findAll','rows','show','rawAttributes','intersection','includeAll','find','create','params','getFields','findOne','ZohoField','nolimit','getSubjects','getDescriptions','eml-format','rimraf','zip-dir','request-promise','bluebird','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','client','http','request','info','ZohoConfiguration,\x20%s,\x20%s','request\x20sent','debug','error','code','message','result','catch','sendStatus','status','end','offset','undefined','limit','count','set','Content-Range','apply','reject','update','then','destroy','stack','name','render','merge','body','contact'];(function(_0x810056,_0x262a79){var _0x33fdc1=function(_0x4864cf){while(--_0x4864cf){_0x810056['push'](_0x810056['shift']());}};_0x33fdc1(++_0x262a79);}(_0x509b,0xec));var _0xb509=function(_0x23525b,_0x3ddb36){_0x23525b=_0x23525b-0x0;var _0x45dbfd=_0x509b[_0x23525b];return _0x45dbfd;};'use strict';var emlformat=require(_0xb509('0x0'));var rimraf=require(_0xb509('0x1'));var zipdir=require(_0xb509('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0xb509('0x3'));var moment=require('moment');var BPromise=require(_0xb509('0x4'));var Mustache=require('mustache');var util=require(_0xb509('0x5'));var path=require(_0xb509('0x6'));var sox=require(_0xb509('0x7'));var csv=require('to-csv');var ejs=require(_0xb509('0x8'));var fs=require('fs');var fs_extra=require(_0xb509('0x9'));var _=require(_0xb509('0xa'));var squel=require(_0xb509('0xb'));var crypto=require(_0xb509('0xc'));var jsforce=require(_0xb509('0xd'));var deskjs=require(_0xb509('0xe'));var toCsv=require(_0xb509('0xf'));var querystring=require(_0xb509('0x10'));var Papa=require(_0xb509('0x11'));var Redis=require(_0xb509('0x12'));var authService=require(_0xb509('0x13'));var qs=require(_0xb509('0x14'));var as=require(_0xb509('0x15'));var hardwareService=require(_0xb509('0x16'));var logger=require(_0xb509('0x17'))(_0xb509('0x18'));var utils=require(_0xb509('0x19'));var config=require(_0xb509('0x1a'));var licenseUtil=require(_0xb509('0x1b'));var db=require(_0xb509('0x1c'))['db'];var jayson=require('jayson/promise');var client=jayson[_0xb509('0x1d')][_0xb509('0x1e')]({'port':0x232a});function respondWithRpcPromise(_0xd07704,_0x19c283,_0x3dad11,_0x3a45e1){return new BPromise(function(_0x230aba,_0x5d8195){var _0x3fa559=_0x3a45e1||client;return _0x3fa559[_0xb509('0x1f')](_0xd07704,_0x3dad11)['then'](function(_0x124c86){logger[_0xb509('0x20')](_0xb509('0x21'),_0x19c283,_0xb509('0x22'));logger[_0xb509('0x23')]('ZohoConfiguration,\x20%s,\x20%s,\x20%s',_0x19c283,_0xb509('0x22'),JSON['stringify'](_0x124c86));if(_0x124c86['error']){if(_0x124c86[_0xb509('0x24')][_0xb509('0x25')]===0x1f4){logger[_0xb509('0x24')](_0xb509('0x21'),_0x19c283,_0x124c86['error'][_0xb509('0x26')]);return _0x5d8195(_0x124c86['error'][_0xb509('0x26')]);}logger[_0xb509('0x24')](_0xb509('0x21'),_0x19c283,_0x124c86['error']['message']);return _0x230aba(_0x124c86[_0xb509('0x24')][_0xb509('0x26')]);}else{logger[_0xb509('0x20')](_0xb509('0x21'),_0x19c283,'request\x20sent');_0x230aba(_0x124c86[_0xb509('0x27')][_0xb509('0x26')]);}})[_0xb509('0x28')](function(_0x4cd5f2){logger['error'](_0xb509('0x21'),_0x19c283,_0x4cd5f2);_0x5d8195(_0x4cd5f2);});});}function respondWithStatusCode(_0x9e2b7f,_0x1e2d38){_0x1e2d38=_0x1e2d38||0xcc;return function(_0xa50f16){if(_0xa50f16){return _0x9e2b7f[_0xb509('0x29')](_0x1e2d38);}return _0x9e2b7f[_0xb509('0x2a')](_0x1e2d38)[_0xb509('0x2b')]();};}function respondWithResult(_0x1c2a7c,_0x1576e3){_0x1576e3=_0x1576e3||0xc8;return function(_0xe7f825){if(_0xe7f825){return _0x1c2a7c[_0xb509('0x2a')](_0x1576e3)['json'](_0xe7f825);}};}function respondWithFilteredResult(_0xd0caef,_0x3901f5){return function(_0x2ed509){if(_0x2ed509){var _0x43ed50=typeof _0x3901f5[_0xb509('0x2c')]===_0xb509('0x2d')&&typeof _0x3901f5[_0xb509('0x2e')]==='undefined';var _0x4e4e27=_0x2ed509[_0xb509('0x2f')];var _0x46e46d=_0x43ed50?0x0:_0x3901f5[_0xb509('0x2c')];var _0x2ac22b=_0x43ed50?_0x2ed509[_0xb509('0x2f')]:_0x3901f5['offset']+_0x3901f5[_0xb509('0x2e')];var _0x3a1f7a;if(_0x2ac22b>=_0x4e4e27){_0x2ac22b=_0x4e4e27;_0x3a1f7a=0xc8;}else{_0x3a1f7a=0xce;}_0xd0caef[_0xb509('0x2a')](_0x3a1f7a);return _0xd0caef[_0xb509('0x30')](_0xb509('0x31'),_0x46e46d+'-'+_0x2ac22b+'/'+_0x4e4e27)['json'](_0x2ed509);}return null;};}function patchUpdates(_0x28b66d){return function(_0x3aaf44){try{jsonpatch[_0xb509('0x32')](_0x3aaf44,_0x28b66d,!![]);}catch(_0x1be5a1){return BPromise[_0xb509('0x33')](_0x1be5a1);}return _0x3aaf44['save']();};}function saveUpdates(_0x1b2a93,_0x4544ed){return function(_0x4480b5){if(_0x4480b5){return _0x4480b5[_0xb509('0x34')](_0x1b2a93)[_0xb509('0x35')](function(_0x2c18ad){return _0x2c18ad;});}return null;};}function removeEntity(_0x325b36,_0x3be2ad){return function(_0x1072c2){if(_0x1072c2){return _0x1072c2[_0xb509('0x36')]()[_0xb509('0x35')](function(){_0x325b36[_0xb509('0x2a')](0xcc)[_0xb509('0x2b')]();});}};}function handleEntityNotFound(_0x3c79fc,_0x494567){return function(_0xf66c71){if(!_0xf66c71){_0x3c79fc[_0xb509('0x29')](0x194);}return _0xf66c71;};}function handleError(_0x3e1a7d,_0x3ce6b1){_0x3ce6b1=_0x3ce6b1||0x1f4;return function(_0x294ac7){logger[_0xb509('0x24')](_0x294ac7[_0xb509('0x37')]);if(_0x294ac7[_0xb509('0x38')]){delete _0x294ac7['name'];}_0x3e1a7d['status'](_0x3ce6b1)['send'](_0x294ac7);};}function getMustacheRender(_0x463f71,_0x5262a4){return Mustache[_0xb509('0x39')](_0x463f71,_[_0xb509('0x3a')](_0x5262a4[_0xb509('0x3b')],{'contact':_0x5262a4[_0xb509('0x3c')],'message':_0x5262a4[_0xb509('0x26')],'agent':_0x5262a4[_0xb509('0x3d')],'interaction':_0x5262a4[_0xb509('0x3e')],'account':_0x5262a4[_0xb509('0x3f')]}))||'';}exports['index']=function(_0x4c9c90,_0x3e014c){var _0x324166={},_0x229419={},_0x561e6c={'count':0x0,'rows':[]};var _0x40a200=_[_0xb509('0x40')](db[_0xb509('0x41')]['rawAttributes'],function(_0x3d3269){return{'name':_0x3d3269[_0xb509('0x42')],'type':_0x3d3269['type'][_0xb509('0x43')]};});_0x229419[_0xb509('0x44')]=_[_0xb509('0x40')](_0x40a200,_0xb509('0x38'));_0x229419['query']=_[_0xb509('0x45')](_0x4c9c90[_0xb509('0x46')]);_0x229419[_0xb509('0x47')]=_['intersection'](_0x229419[_0xb509('0x44')],_0x229419[_0xb509('0x46')]);_0x324166[_0xb509('0x48')]=_['intersection'](_0x229419[_0xb509('0x44')],qs[_0xb509('0x49')](_0x4c9c90[_0xb509('0x46')][_0xb509('0x49')]));_0x324166[_0xb509('0x48')]=_0x324166[_0xb509('0x48')][_0xb509('0x4a')]?_0x324166['attributes']:_0x229419[_0xb509('0x44')];if(!_0x4c9c90[_0xb509('0x46')][_0xb509('0x4b')]('nolimit')){_0x324166[_0xb509('0x2e')]=qs[_0xb509('0x2e')](_0x4c9c90['query'][_0xb509('0x2e')]);_0x324166[_0xb509('0x2c')]=qs[_0xb509('0x2c')](_0x4c9c90[_0xb509('0x46')][_0xb509('0x2c')]);}_0x324166[_0xb509('0x4c')]=qs[_0xb509('0x4d')](_0x4c9c90[_0xb509('0x46')][_0xb509('0x4d')]);_0x324166[_0xb509('0x4e')]=qs[_0xb509('0x47')](_[_0xb509('0x4f')](_0x4c9c90[_0xb509('0x46')],_0x229419['filters']),_0x40a200);if(_0x4c9c90[_0xb509('0x46')][_0xb509('0x50')]){_0x324166[_0xb509('0x4e')]=_[_0xb509('0x3a')](_0x324166[_0xb509('0x4e')],{'$or':_[_0xb509('0x40')](_0x40a200,function(_0x53b5ec){if(_0x53b5ec['type']!==_0xb509('0x51')){var _0x3fe679={};_0x3fe679[_0x53b5ec['name']]={'$like':'%'+_0x4c9c90[_0xb509('0x46')][_0xb509('0x50')]+'%'};return _0x3fe679;}})});}_0x324166=_[_0xb509('0x3a')]({},_0x324166,_0x4c9c90[_0xb509('0x52')]);var _0x181cab={'where':_0x324166['where']};return db[_0xb509('0x41')]['count'](_0x181cab)[_0xb509('0x35')](function(_0x478bcc){_0x561e6c['count']=_0x478bcc;if(_0x4c9c90[_0xb509('0x46')]['includeAll']){_0x324166[_0xb509('0x53')]=[{'all':!![]}];}return db[_0xb509('0x41')][_0xb509('0x54')](_0x324166);})[_0xb509('0x35')](function(_0x3c6318){_0x561e6c[_0xb509('0x55')]=_0x3c6318;return _0x561e6c;})[_0xb509('0x35')](respondWithFilteredResult(_0x3e014c,_0x324166))['catch'](handleError(_0x3e014c,null));};exports[_0xb509('0x56')]=function(_0x105ab0,_0x2b7efc){var _0x4b1195={'raw':![],'where':{'id':_0x105ab0['params']['id']}},_0x431cb2={};_0x431cb2['model']=_[_0xb509('0x45')](db[_0xb509('0x41')][_0xb509('0x57')]);_0x431cb2[_0xb509('0x46')]=_['keys'](_0x105ab0['query']);_0x431cb2['filters']=_[_0xb509('0x58')](_0x431cb2[_0xb509('0x44')],_0x431cb2[_0xb509('0x46')]);_0x4b1195[_0xb509('0x48')]=_[_0xb509('0x58')](_0x431cb2[_0xb509('0x44')],qs[_0xb509('0x49')](_0x105ab0[_0xb509('0x46')][_0xb509('0x49')]));_0x4b1195['attributes']=_0x4b1195[_0xb509('0x48')][_0xb509('0x4a')]?_0x4b1195[_0xb509('0x48')]:_0x431cb2['model'];if(_0x105ab0[_0xb509('0x46')][_0xb509('0x59')]){_0x4b1195['include']=[{'all':!![]}];}_0x4b1195=_['merge']({},_0x4b1195,_0x105ab0[_0xb509('0x52')]);return db['ZohoConfiguration'][_0xb509('0x5a')](_0x4b1195)[_0xb509('0x35')](handleEntityNotFound(_0x2b7efc,null))['then'](respondWithResult(_0x2b7efc,null))[_0xb509('0x28')](handleError(_0x2b7efc,null));};exports[_0xb509('0x5b')]=function(_0x5d3fe8,_0x44c325){return db[_0xb509('0x41')][_0xb509('0x5b')](_0x5d3fe8[_0xb509('0x3b')],{})[_0xb509('0x35')](respondWithResult(_0x44c325,0xc9))[_0xb509('0x28')](handleError(_0x44c325,null));};exports['update']=function(_0x4ae619,_0x5cf9c3){if(_0x4ae619['body']['id']){delete _0x4ae619[_0xb509('0x3b')]['id'];}return db['ZohoConfiguration'][_0xb509('0x5a')]({'where':{'id':_0x4ae619['params']['id']}})[_0xb509('0x35')](handleEntityNotFound(_0x5cf9c3,null))[_0xb509('0x35')](saveUpdates(_0x4ae619['body'],null))['then'](respondWithResult(_0x5cf9c3,null))[_0xb509('0x28')](handleError(_0x5cf9c3,null));};exports[_0xb509('0x36')]=function(_0x32f7c5,_0x3de884){return db[_0xb509('0x41')]['find']({'where':{'id':_0x32f7c5[_0xb509('0x5c')]['id']}})[_0xb509('0x35')](handleEntityNotFound(_0x3de884,null))[_0xb509('0x35')](removeEntity(_0x3de884,null))['catch'](handleError(_0x3de884,null));};exports[_0xb509('0x5d')]=function(_0x3b7409,_0x5c7349,_0x3ba5ca){var _0x3871f1={};var _0x362cba={};var _0xe5d058;var _0x1a0226;return db['ZohoConfiguration'][_0xb509('0x5e')]({'where':{'id':_0x3b7409[_0xb509('0x5c')]['id']}})[_0xb509('0x35')](handleEntityNotFound(_0x5c7349,null))[_0xb509('0x35')](function(_0x11665d){if(_0x11665d){_0xe5d058=_0x11665d;_0x362cba[_0xb509('0x44')]=_['keys'](db[_0xb509('0x5f')][_0xb509('0x57')]);_0x362cba[_0xb509('0x46')]=_[_0xb509('0x45')](_0x3b7409[_0xb509('0x46')]);_0x362cba[_0xb509('0x47')]=_[_0xb509('0x58')](_0x362cba[_0xb509('0x44')],_0x362cba['query']);_0x3871f1[_0xb509('0x48')]=_['intersection'](_0x362cba[_0xb509('0x44')],qs[_0xb509('0x49')](_0x3b7409[_0xb509('0x46')][_0xb509('0x49')]));_0x3871f1['attributes']=_0x3871f1['attributes'][_0xb509('0x4a')]?_0x3871f1[_0xb509('0x48')]:_0x362cba[_0xb509('0x44')];_0x3871f1['order']=qs['sort'](_0x3b7409[_0xb509('0x46')]['sort']);_0x3871f1[_0xb509('0x4e')]=qs[_0xb509('0x47')](_[_0xb509('0x4f')](_0x3b7409[_0xb509('0x46')],_0x362cba[_0xb509('0x47')]));if(_0x3b7409[_0xb509('0x46')][_0xb509('0x50')]){_0x3871f1[_0xb509('0x4e')]=_[_0xb509('0x3a')](_0x3871f1[_0xb509('0x4e')],{'$or':_['map'](_0x3871f1[_0xb509('0x48')],function(_0x12fe53){var _0x31ba8d={};_0x31ba8d[_0x12fe53]={'$like':'%'+_0x3b7409[_0xb509('0x46')]['filter']+'%'};return _0x31ba8d;})});}_0x3871f1=_[_0xb509('0x3a')]({},_0x3871f1,_0x3b7409[_0xb509('0x52')]);return _0xe5d058[_0xb509('0x5d')](_0x3871f1);}})['then'](function(_0xfdf70f){if(_0xfdf70f){_0x1a0226=_0xfdf70f[_0xb509('0x4a')];if(!_0x3b7409['query']['hasOwnProperty'](_0xb509('0x60'))){_0x3871f1[_0xb509('0x2e')]=qs[_0xb509('0x2e')](_0x3b7409[_0xb509('0x46')][_0xb509('0x2e')]);_0x3871f1[_0xb509('0x2c')]=qs[_0xb509('0x2c')](_0x3b7409[_0xb509('0x46')]['offset']);}return _0xe5d058[_0xb509('0x5d')](_0x3871f1);}})[_0xb509('0x35')](function(_0x5aa5f4){if(_0x5aa5f4){return _0x5aa5f4?{'count':_0x1a0226,'rows':_0x5aa5f4}:null;}})['then'](respondWithResult(_0x5c7349,null))['catch'](handleError(_0x5c7349,null));};exports[_0xb509('0x61')]=function(_0x126899,_0x4caa69,_0x5d5187){var _0x23af27={};var _0x1ae3c2={};var _0x102249;var _0x4d4f80;return db['ZohoConfiguration']['findOne']({'where':{'id':_0x126899[_0xb509('0x5c')]['id']}})[_0xb509('0x35')](handleEntityNotFound(_0x4caa69,null))[_0xb509('0x35')](function(_0x2ba87c){if(_0x2ba87c){_0x102249=_0x2ba87c;_0x1ae3c2[_0xb509('0x44')]=_[_0xb509('0x45')](db['ZohoField'][_0xb509('0x57')]);_0x1ae3c2['query']=_[_0xb509('0x45')](_0x126899['query']);_0x1ae3c2[_0xb509('0x47')]=_['intersection'](_0x1ae3c2[_0xb509('0x44')],_0x1ae3c2[_0xb509('0x46')]);_0x23af27[_0xb509('0x48')]=_['intersection'](_0x1ae3c2['model'],qs['fields'](_0x126899[_0xb509('0x46')][_0xb509('0x49')]));_0x23af27['attributes']=_0x23af27[_0xb509('0x48')][_0xb509('0x4a')]?_0x23af27[_0xb509('0x48')]:_0x1ae3c2[_0xb509('0x44')];_0x23af27[_0xb509('0x4c')]=qs[_0xb509('0x4d')](_0x126899[_0xb509('0x46')][_0xb509('0x4d')]);_0x23af27[_0xb509('0x4e')]=qs[_0xb509('0x47')](_['pick'](_0x126899[_0xb509('0x46')],_0x1ae3c2['filters']));if(_0x126899[_0xb509('0x46')][_0xb509('0x50')]){_0x23af27[_0xb509('0x4e')]=_['merge'](_0x23af27['where'],{'$or':_['map'](_0x23af27[_0xb509('0x48')],function(_0x29c408){var _0x2238b4={};_0x2238b4[_0x29c408]={'$like':'%'+_0x126899[_0xb509('0x46')][_0xb509('0x50')]+'%'};return _0x2238b4;})});}_0x23af27=_['merge']({},_0x23af27,_0x126899[_0xb509('0x52')]);return _0x102249['getSubjects'](_0x23af27);}})['then'](function(_0xd119f9){if(_0xd119f9){_0x4d4f80=_0xd119f9[_0xb509('0x4a')];if(!_0x126899[_0xb509('0x46')][_0xb509('0x4b')](_0xb509('0x60'))){_0x23af27[_0xb509('0x2e')]=qs[_0xb509('0x2e')](_0x126899[_0xb509('0x46')][_0xb509('0x2e')]);_0x23af27[_0xb509('0x2c')]=qs['offset'](_0x126899['query']['offset']);}return _0x102249[_0xb509('0x61')](_0x23af27);}})['then'](function(_0xedd44c){if(_0xedd44c){return _0xedd44c?{'count':_0x4d4f80,'rows':_0xedd44c}:null;}})[_0xb509('0x35')](respondWithResult(_0x4caa69,null))[_0xb509('0x28')](handleError(_0x4caa69,null));};exports['getDescriptions']=function(_0x196989,_0x57946b,_0x413d40){var _0xd915bc={};var _0x52f0d3={};var _0x1155fb;var _0x2ade59;return db[_0xb509('0x41')]['findOne']({'where':{'id':_0x196989['params']['id']}})[_0xb509('0x35')](handleEntityNotFound(_0x57946b,null))[_0xb509('0x35')](function(_0x59ade4){if(_0x59ade4){_0x1155fb=_0x59ade4;_0x52f0d3['model']=_[_0xb509('0x45')](db[_0xb509('0x5f')][_0xb509('0x57')]);_0x52f0d3['query']=_[_0xb509('0x45')](_0x196989['query']);_0x52f0d3[_0xb509('0x47')]=_[_0xb509('0x58')](_0x52f0d3[_0xb509('0x44')],_0x52f0d3[_0xb509('0x46')]);_0xd915bc[_0xb509('0x48')]=_['intersection'](_0x52f0d3[_0xb509('0x44')],qs['fields'](_0x196989[_0xb509('0x46')][_0xb509('0x49')]));_0xd915bc[_0xb509('0x48')]=_0xd915bc[_0xb509('0x48')]['length']?_0xd915bc[_0xb509('0x48')]:_0x52f0d3[_0xb509('0x44')];_0xd915bc[_0xb509('0x4c')]=qs[_0xb509('0x4d')](_0x196989[_0xb509('0x46')][_0xb509('0x4d')]);_0xd915bc['where']=qs[_0xb509('0x47')](_[_0xb509('0x4f')](_0x196989[_0xb509('0x46')],_0x52f0d3[_0xb509('0x47')]));if(_0x196989[_0xb509('0x46')][_0xb509('0x50')]){_0xd915bc[_0xb509('0x4e')]=_[_0xb509('0x3a')](_0xd915bc['where'],{'$or':_[_0xb509('0x40')](_0xd915bc['attributes'],function(_0x53038e){var _0x1126fb={};_0x1126fb[_0x53038e]={'$like':'%'+_0x196989[_0xb509('0x46')][_0xb509('0x50')]+'%'};return _0x1126fb;})});}_0xd915bc=_[_0xb509('0x3a')]({},_0xd915bc,_0x196989['options']);return _0x1155fb[_0xb509('0x62')](_0xd915bc);}})[_0xb509('0x35')](function(_0x370e84){if(_0x370e84){_0x2ade59=_0x370e84['length'];if(!_0x196989['query'][_0xb509('0x4b')](_0xb509('0x60'))){_0xd915bc[_0xb509('0x2e')]=qs[_0xb509('0x2e')](_0x196989[_0xb509('0x46')][_0xb509('0x2e')]);_0xd915bc[_0xb509('0x2c')]=qs['offset'](_0x196989['query'][_0xb509('0x2c')]);}return _0x1155fb[_0xb509('0x62')](_0xd915bc);}})['then'](function(_0x466984){if(_0x466984){return _0x466984?{'count':_0x2ade59,'rows':_0x466984}:null;}})[_0xb509('0x35')](respondWithResult(_0x57946b,null))[_0xb509('0x28')](handleError(_0x57946b,null));};
\ No newline at end of file