Built motion from commit (unavailable).|2.5.30
[motion2.git] / server / api / intDynamics365Configuration / intDynamics365Configuration.controller.js
index 91b28cb..bec5bf7 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x487a=['where','pick','filter','VIRTUAL','merge','options','includeAll','include','findAll','rows','length','find','create','body','params','findOne','Dynamics365Field','hasOwnProperty','getFields','getSubjects','getDescriptions','html-pdf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','to-csv','squel','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','client','test','Sequelize','ValidationError','The\x20password\x20must\x20be\x20at\x20least\x208\x20characters\x20long\x20and\x20have\x201\x20lowercase\x20character,\x201\x20uppercase\x20character,\x201\x20number\x20and\x201\x20special\x20character\x20~!@#$%^&-_=+[{]}.','request','then','Dynamics365Configuration,\x20%s,\x20%s','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','request\x20sent','stringify','error','code','message','info','result','catch','status','end','json','count','offset','set','Content-Range','apply','reject','save','update','destroy','sendStatus','name','send','index','map','Dynamics365Configuration','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','nolimit','limit','order','sort'];(function(_0x5c4a24,_0x45b643){var _0x1d39bc=function(_0x2a0434){while(--_0x2a0434){_0x5c4a24['push'](_0x5c4a24['shift']());}};_0x1d39bc(++_0x45b643);}(_0x487a,0x189));var _0xa487=function(_0x359bbe,_0x5b7fcc){_0x359bbe=_0x359bbe-0x0;var _0x1b3353=_0x487a[_0x359bbe];return _0x1b3353;};'use strict';var pdf=require(_0xa487('0x0'));var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xa487('0x1'));var jsonpatch=require(_0xa487('0x2'));var rp=require(_0xa487('0x3'));var moment=require(_0xa487('0x4'));var BPromise=require(_0xa487('0x5'));var Mustache=require(_0xa487('0x6'));var util=require('util');var path=require(_0xa487('0x7'));var sox=require(_0xa487('0x8'));var csv=require(_0xa487('0x9'));var ejs=require('ejs');var fs=require('fs');var _=require('lodash');var squel=require(_0xa487('0xa'));var crypto=require('crypto');var jsforce=require(_0xa487('0xb'));var deskjs=require(_0xa487('0xc'));var toCsv=require(_0xa487('0x9'));var querystring=require(_0xa487('0xd'));var Papa=require(_0xa487('0xe'));var Redis=require('ioredis');var authService=require(_0xa487('0xf'));var qs=require(_0xa487('0x10'));var as=require(_0xa487('0x11'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0xa487('0x12'));var utils=require(_0xa487('0x13'));var config=require(_0xa487('0x14'));var db=require('../../mysqldb')['db'];var jayson=require('jayson/promise');var client=jayson[_0xa487('0x15')]['http']({'port':0x232a});function checkPasswordPattern(_0x1dbbc0,_0x4412c5,_0x3da9ff){if(_0x3da9ff){var _0x1d65f5=new RegExp(/(?=.*[a-z])(?=.*[A-Z])(?=.*[0-9])(?=.*[?!@#\$%\^&\*~\-_=+[{\]\}])(?=.{8,})/);if(_0x1d65f5[_0xa487('0x16')](_0x4412c5)){return _0x1dbbc0;}else{throw new db[(_0xa487('0x17'))][(_0xa487('0x18'))](_0xa487('0x19'));}}else{return _0x1dbbc0;}}function respondWithRpcPromise(_0x139ca9,_0x3e4ba4,_0x2230fb,_0xce076e){return new BPromise(function(_0x762334,_0x12b701){var _0x49cabd=_0xce076e||client;return _0x49cabd[_0xa487('0x1a')](_0x139ca9,_0x2230fb)[_0xa487('0x1b')](function(_0x21e104){logger['info'](_0xa487('0x1c'),_0x3e4ba4,'request\x20sent');logger[_0xa487('0x1d')](_0xa487('0x1e'),_0x3e4ba4,_0xa487('0x1f'),JSON[_0xa487('0x20')](_0x21e104));if(_0x21e104[_0xa487('0x21')]){if(_0x21e104['error'][_0xa487('0x22')]===0x1f4){logger[_0xa487('0x21')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3e4ba4,_0x21e104['error'][_0xa487('0x23')]);return _0x12b701(_0x21e104[_0xa487('0x21')][_0xa487('0x23')]);}logger[_0xa487('0x21')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3e4ba4,_0x21e104['error'][_0xa487('0x23')]);return _0x762334(_0x21e104[_0xa487('0x21')][_0xa487('0x23')]);}else{logger[_0xa487('0x24')]('Dynamics365Configuration,\x20%s,\x20%s',_0x3e4ba4,_0xa487('0x1f'));_0x762334(_0x21e104[_0xa487('0x25')]['message']);}})[_0xa487('0x26')](function(_0x28141a){logger['error']('Dynamics365Configuration,\x20%s,\x20%s',_0x3e4ba4,_0x28141a);_0x12b701(_0x28141a);});});}function respondWithStatusCode(_0x551bd3,_0x2882dc){_0x2882dc=_0x2882dc||0xcc;return function(_0x4eafe8){if(_0x4eafe8){return _0x551bd3['sendStatus'](_0x2882dc);}return _0x551bd3[_0xa487('0x27')](_0x2882dc)[_0xa487('0x28')]();};}function respondWithResult(_0x2e050f,_0x2743e5){_0x2743e5=_0x2743e5||0xc8;return function(_0x3c7a4e){if(_0x3c7a4e){return _0x2e050f[_0xa487('0x27')](_0x2743e5)[_0xa487('0x29')](_0x3c7a4e);}};}function respondWithFilteredResult(_0x4ff5fd,_0x4e3177){return function(_0x2a173d){if(_0x2a173d){var _0x3c440a=_0x2a173d[_0xa487('0x2a')],_0x4008bb=_0x4e3177[_0xa487('0x2b')],_0x59651f=_0x4e3177[_0xa487('0x2b')]+_0x4e3177['limit'],_0x211206;if(_0x59651f>=_0x3c440a){_0x59651f=_0x3c440a;_0x211206=0xc8;}else{_0x211206=0xce;}_0x4ff5fd[_0xa487('0x27')](_0x211206);return _0x4ff5fd[_0xa487('0x2c')](_0xa487('0x2d'),_0x4008bb+'-'+_0x59651f+'/'+_0x3c440a)['json'](_0x2a173d);}return null;};}function patchUpdates(_0xfa9bd0){return function(_0x60f76b){try{jsonpatch[_0xa487('0x2e')](_0x60f76b,_0xfa9bd0,!![]);}catch(_0x3524e1){return BPromise[_0xa487('0x2f')](_0x3524e1);}return _0x60f76b[_0xa487('0x30')]();};}function saveUpdates(_0x5eb898,_0xc5b9f1){return function(_0x233969){if(_0x233969){return _0x233969[_0xa487('0x31')](_0x5eb898)['then'](function(_0x20b19d){return _0x20b19d;});}return null;};}function removeEntity(_0x41b31d,_0x5c23fc){return function(_0x2894cd){if(_0x2894cd){return _0x2894cd[_0xa487('0x32')]()['then'](function(){_0x41b31d[_0xa487('0x27')](0xcc)[_0xa487('0x28')]();});}};}function handleEntityNotFound(_0x7b24e6,_0x16c940){return function(_0x42c468){if(!_0x42c468){_0x7b24e6[_0xa487('0x33')](0x194);}return _0x42c468;};}function handleError(_0x966ed2,_0x1ab6d5){_0x1ab6d5=_0x1ab6d5||0x1f4;return function(_0x569e22){logger[_0xa487('0x21')](_0x569e22['stack']);if(_0x569e22['name']){delete _0x569e22[_0xa487('0x34')];}_0x966ed2[_0xa487('0x27')](_0x1ab6d5)[_0xa487('0x35')](_0x569e22);};}exports[_0xa487('0x36')]=function(_0x2d961c,_0x398210){var _0x119b2e={},_0x13629c={},_0x20b815={'count':0x0,'rows':[]};var _0x5e1217=_[_0xa487('0x37')](db[_0xa487('0x38')][_0xa487('0x39')],function(_0x15b719){return{'name':_0x15b719[_0xa487('0x3a')],'type':_0x15b719[_0xa487('0x3b')][_0xa487('0x3c')]};});_0x13629c[_0xa487('0x3d')]=_[_0xa487('0x37')](_0x5e1217,'name');_0x13629c[_0xa487('0x3e')]=_[_0xa487('0x3f')](_0x2d961c[_0xa487('0x3e')]);_0x13629c[_0xa487('0x40')]=_[_0xa487('0x41')](_0x13629c[_0xa487('0x3d')],_0x13629c[_0xa487('0x3e')]);_0x119b2e[_0xa487('0x42')]=_[_0xa487('0x41')](_0x13629c['model'],qs[_0xa487('0x43')](_0x2d961c['query'][_0xa487('0x43')]));_0x119b2e[_0xa487('0x42')]=_0x119b2e[_0xa487('0x42')]['length']?_0x119b2e[_0xa487('0x42')]:_0x13629c['model'];if(!_0x2d961c[_0xa487('0x3e')]['hasOwnProperty'](_0xa487('0x44'))){_0x119b2e[_0xa487('0x45')]=qs[_0xa487('0x45')](_0x2d961c[_0xa487('0x3e')][_0xa487('0x45')]);_0x119b2e[_0xa487('0x2b')]=qs[_0xa487('0x2b')](_0x2d961c['query'][_0xa487('0x2b')]);}_0x119b2e[_0xa487('0x46')]=qs[_0xa487('0x47')](_0x2d961c[_0xa487('0x3e')][_0xa487('0x47')]);_0x119b2e[_0xa487('0x48')]=qs['filters'](_[_0xa487('0x49')](_0x2d961c['query'],_0x13629c['filters']));if(_0x2d961c['query'][_0xa487('0x4a')]){_0x119b2e['where']=_['merge'](_0x119b2e[_0xa487('0x48')],{'$or':_[_0xa487('0x37')](_0x5e1217,function(_0x429ef9){if(_0x429ef9[_0xa487('0x3b')]!==_0xa487('0x4b')){var _0x329853={};_0x329853[_0x429ef9[_0xa487('0x34')]]={'$like':'%'+_0x2d961c[_0xa487('0x3e')][_0xa487('0x4a')]+'%'};return _0x329853;}})});}_0x119b2e=_[_0xa487('0x4c')]({},_0x119b2e,_0x2d961c[_0xa487('0x4d')]);var _0x29524d={'where':_0x119b2e[_0xa487('0x48')]};return db[_0xa487('0x38')][_0xa487('0x2a')](_0x29524d)['then'](function(_0x57c6c4){_0x20b815[_0xa487('0x2a')]=_0x57c6c4;if(_0x2d961c[_0xa487('0x3e')][_0xa487('0x4e')]){_0x119b2e[_0xa487('0x4f')]=[{'all':!![]}];}return db[_0xa487('0x38')][_0xa487('0x50')](_0x119b2e);})[_0xa487('0x1b')](function(_0x4ab357){_0x20b815[_0xa487('0x51')]=_0x4ab357;return _0x20b815;})[_0xa487('0x1b')](respondWithFilteredResult(_0x398210,_0x119b2e))[_0xa487('0x26')](handleError(_0x398210,null));};exports['show']=function(_0x4fff72,_0x170a8c){var _0x50ca82={'raw':![],'where':{'id':_0x4fff72['params']['id']}},_0x196227={};_0x196227[_0xa487('0x3d')]=_[_0xa487('0x3f')](db['Dynamics365Configuration'][_0xa487('0x39')]);_0x196227[_0xa487('0x3e')]=_[_0xa487('0x3f')](_0x4fff72[_0xa487('0x3e')]);_0x196227['filters']=_[_0xa487('0x41')](_0x196227[_0xa487('0x3d')],_0x196227[_0xa487('0x3e')]);_0x50ca82[_0xa487('0x42')]=_['intersection'](_0x196227[_0xa487('0x3d')],qs[_0xa487('0x43')](_0x4fff72[_0xa487('0x3e')]['fields']));_0x50ca82[_0xa487('0x42')]=_0x50ca82[_0xa487('0x42')][_0xa487('0x52')]?_0x50ca82[_0xa487('0x42')]:_0x196227[_0xa487('0x3d')];if(_0x4fff72[_0xa487('0x3e')][_0xa487('0x4e')]){_0x50ca82['include']=[{'all':!![]}];}_0x50ca82=_[_0xa487('0x4c')]({},_0x50ca82,_0x4fff72['options']);return db[_0xa487('0x38')][_0xa487('0x53')](_0x50ca82)[_0xa487('0x1b')](handleEntityNotFound(_0x170a8c,null))['then'](respondWithResult(_0x170a8c,null))[_0xa487('0x26')](handleError(_0x170a8c,null));};exports[_0xa487('0x54')]=function(_0x10aa85,_0x17efe1){return db[_0xa487('0x38')]['create'](_0x10aa85[_0xa487('0x55')],{})[_0xa487('0x1b')](respondWithResult(_0x17efe1,0xc9))[_0xa487('0x26')](handleError(_0x17efe1,null));};exports[_0xa487('0x31')]=function(_0x24ccc9,_0x1722ac){if(_0x24ccc9[_0xa487('0x55')]['id']){delete _0x24ccc9[_0xa487('0x55')]['id'];}return db['Dynamics365Configuration']['find']({'where':{'id':_0x24ccc9[_0xa487('0x56')]['id']}})[_0xa487('0x1b')](handleEntityNotFound(_0x1722ac,null))[_0xa487('0x1b')](saveUpdates(_0x24ccc9[_0xa487('0x55')],null))['then'](respondWithResult(_0x1722ac,null))[_0xa487('0x26')](handleError(_0x1722ac,null));};exports[_0xa487('0x32')]=function(_0x78b425,_0x24911c){return db['Dynamics365Configuration']['find']({'where':{'id':_0x78b425[_0xa487('0x56')]['id']}})[_0xa487('0x1b')](handleEntityNotFound(_0x24911c,null))[_0xa487('0x1b')](removeEntity(_0x24911c,null))[_0xa487('0x26')](handleError(_0x24911c,null));};exports['getFields']=function(_0x49e4cd,_0x4c608d,_0x40a5fb){var _0xda6751={};var _0x100683={};var _0x20c18b;var _0x243e17;return db[_0xa487('0x38')][_0xa487('0x57')]({'where':{'id':_0x49e4cd[_0xa487('0x56')]['id']}})[_0xa487('0x1b')](handleEntityNotFound(_0x4c608d,null))[_0xa487('0x1b')](function(_0x5cb1f8){if(_0x5cb1f8){_0x20c18b=_0x5cb1f8;_0x100683[_0xa487('0x3d')]=_[_0xa487('0x3f')](db[_0xa487('0x58')][_0xa487('0x39')]);_0x100683[_0xa487('0x3e')]=_['keys'](_0x49e4cd[_0xa487('0x3e')]);_0x100683[_0xa487('0x40')]=_[_0xa487('0x41')](_0x100683[_0xa487('0x3d')],_0x100683[_0xa487('0x3e')]);_0xda6751[_0xa487('0x42')]=_[_0xa487('0x41')](_0x100683[_0xa487('0x3d')],qs[_0xa487('0x43')](_0x49e4cd['query'][_0xa487('0x43')]));_0xda6751['attributes']=_0xda6751[_0xa487('0x42')][_0xa487('0x52')]?_0xda6751[_0xa487('0x42')]:_0x100683['model'];_0xda6751[_0xa487('0x46')]=qs['sort'](_0x49e4cd[_0xa487('0x3e')][_0xa487('0x47')]);_0xda6751[_0xa487('0x48')]=qs[_0xa487('0x40')](_[_0xa487('0x49')](_0x49e4cd[_0xa487('0x3e')],_0x100683[_0xa487('0x40')]));if(_0x49e4cd[_0xa487('0x3e')][_0xa487('0x4a')]){_0xda6751[_0xa487('0x48')]=_[_0xa487('0x4c')](_0xda6751[_0xa487('0x48')],{'$or':_[_0xa487('0x37')](_0xda6751[_0xa487('0x42')],function(_0x36ddf0){var _0x4933dc={};_0x4933dc[_0x36ddf0]={'$like':'%'+_0x49e4cd[_0xa487('0x3e')][_0xa487('0x4a')]+'%'};return _0x4933dc;})});}_0xda6751=_[_0xa487('0x4c')]({},_0xda6751,_0x49e4cd[_0xa487('0x4d')]);return _0x20c18b['getFields'](_0xda6751);}})[_0xa487('0x1b')](function(_0x20cbb2){if(_0x20cbb2){_0x243e17=_0x20cbb2[_0xa487('0x52')];if(!_0x49e4cd['query'][_0xa487('0x59')](_0xa487('0x44'))){_0xda6751[_0xa487('0x45')]=qs[_0xa487('0x45')](_0x49e4cd[_0xa487('0x3e')]['limit']);_0xda6751[_0xa487('0x2b')]=qs['offset'](_0x49e4cd[_0xa487('0x3e')][_0xa487('0x2b')]);}return _0x20c18b[_0xa487('0x5a')](_0xda6751);}})['then'](function(_0x2dbe10){if(_0x2dbe10){return _0x2dbe10?{'count':_0x243e17,'rows':_0x2dbe10}:null;}})['then'](respondWithResult(_0x4c608d,null))['catch'](handleError(_0x4c608d,null));};exports['getSubjects']=function(_0x333621,_0x3a425c,_0x441d59){var _0x17ca22={};var _0x3d8b16={};var _0x2c803c;var _0x51679d;return db[_0xa487('0x38')][_0xa487('0x57')]({'where':{'id':_0x333621[_0xa487('0x56')]['id']}})[_0xa487('0x1b')](handleEntityNotFound(_0x3a425c,null))[_0xa487('0x1b')](function(_0x3b8324){if(_0x3b8324){_0x2c803c=_0x3b8324;_0x3d8b16['model']=_[_0xa487('0x3f')](db[_0xa487('0x58')]['rawAttributes']);_0x3d8b16[_0xa487('0x3e')]=_[_0xa487('0x3f')](_0x333621['query']);_0x3d8b16[_0xa487('0x40')]=_['intersection'](_0x3d8b16[_0xa487('0x3d')],_0x3d8b16['query']);_0x17ca22[_0xa487('0x42')]=_['intersection'](_0x3d8b16[_0xa487('0x3d')],qs[_0xa487('0x43')](_0x333621[_0xa487('0x3e')][_0xa487('0x43')]));_0x17ca22['attributes']=_0x17ca22[_0xa487('0x42')]['length']?_0x17ca22[_0xa487('0x42')]:_0x3d8b16[_0xa487('0x3d')];_0x17ca22[_0xa487('0x46')]=qs['sort'](_0x333621[_0xa487('0x3e')][_0xa487('0x47')]);_0x17ca22['where']=qs['filters'](_['pick'](_0x333621[_0xa487('0x3e')],_0x3d8b16['filters']));if(_0x333621[_0xa487('0x3e')][_0xa487('0x4a')]){_0x17ca22[_0xa487('0x48')]=_[_0xa487('0x4c')](_0x17ca22[_0xa487('0x48')],{'$or':_[_0xa487('0x37')](_0x17ca22[_0xa487('0x42')],function(_0x519b35){var _0xd40582={};_0xd40582[_0x519b35]={'$like':'%'+_0x333621['query']['filter']+'%'};return _0xd40582;})});}_0x17ca22=_[_0xa487('0x4c')]({},_0x17ca22,_0x333621['options']);return _0x2c803c[_0xa487('0x5b')](_0x17ca22);}})[_0xa487('0x1b')](function(_0x18f052){if(_0x18f052){_0x51679d=_0x18f052[_0xa487('0x52')];if(!_0x333621[_0xa487('0x3e')]['hasOwnProperty'](_0xa487('0x44'))){_0x17ca22[_0xa487('0x45')]=qs[_0xa487('0x45')](_0x333621[_0xa487('0x3e')][_0xa487('0x45')]);_0x17ca22['offset']=qs[_0xa487('0x2b')](_0x333621['query']['offset']);}return _0x2c803c['getSubjects'](_0x17ca22);}})[_0xa487('0x1b')](function(_0x322cd7){if(_0x322cd7){return _0x322cd7?{'count':_0x51679d,'rows':_0x322cd7}:null;}})[_0xa487('0x1b')](respondWithResult(_0x3a425c,null))[_0xa487('0x26')](handleError(_0x3a425c,null));};exports[_0xa487('0x5c')]=function(_0x139cb8,_0x6f76ad,_0x56785c){var _0x44ad13={};var _0x280149={};var _0x4f6227;var _0x4dd0f2;return db[_0xa487('0x38')]['findOne']({'where':{'id':_0x139cb8[_0xa487('0x56')]['id']}})[_0xa487('0x1b')](handleEntityNotFound(_0x6f76ad,null))[_0xa487('0x1b')](function(_0x3ddc0d){if(_0x3ddc0d){_0x4f6227=_0x3ddc0d;_0x280149[_0xa487('0x3d')]=_[_0xa487('0x3f')](db['Dynamics365Field'][_0xa487('0x39')]);_0x280149[_0xa487('0x3e')]=_[_0xa487('0x3f')](_0x139cb8['query']);_0x280149['filters']=_['intersection'](_0x280149[_0xa487('0x3d')],_0x280149[_0xa487('0x3e')]);_0x44ad13[_0xa487('0x42')]=_['intersection'](_0x280149[_0xa487('0x3d')],qs[_0xa487('0x43')](_0x139cb8[_0xa487('0x3e')][_0xa487('0x43')]));_0x44ad13[_0xa487('0x42')]=_0x44ad13[_0xa487('0x42')]['length']?_0x44ad13[_0xa487('0x42')]:_0x280149[_0xa487('0x3d')];_0x44ad13['order']=qs[_0xa487('0x47')](_0x139cb8[_0xa487('0x3e')][_0xa487('0x47')]);_0x44ad13[_0xa487('0x48')]=qs['filters'](_[_0xa487('0x49')](_0x139cb8[_0xa487('0x3e')],_0x280149[_0xa487('0x40')]));if(_0x139cb8[_0xa487('0x3e')][_0xa487('0x4a')]){_0x44ad13[_0xa487('0x48')]=_[_0xa487('0x4c')](_0x44ad13[_0xa487('0x48')],{'$or':_[_0xa487('0x37')](_0x44ad13[_0xa487('0x42')],function(_0x11c6d5){var _0x810ca4={};_0x810ca4[_0x11c6d5]={'$like':'%'+_0x139cb8[_0xa487('0x3e')]['filter']+'%'};return _0x810ca4;})});}_0x44ad13=_[_0xa487('0x4c')]({},_0x44ad13,_0x139cb8[_0xa487('0x4d')]);return _0x4f6227[_0xa487('0x5c')](_0x44ad13);}})['then'](function(_0x5ef46a){if(_0x5ef46a){_0x4dd0f2=_0x5ef46a[_0xa487('0x52')];if(!_0x139cb8[_0xa487('0x3e')]['hasOwnProperty'](_0xa487('0x44'))){_0x44ad13[_0xa487('0x45')]=qs[_0xa487('0x45')](_0x139cb8[_0xa487('0x3e')][_0xa487('0x45')]);_0x44ad13[_0xa487('0x2b')]=qs[_0xa487('0x2b')](_0x139cb8[_0xa487('0x3e')][_0xa487('0x2b')]);}return _0x4f6227[_0xa487('0x5c')](_0x44ad13);}})[_0xa487('0x1b')](function(_0x3d4175){if(_0x3d4175){return _0x3d4175?{'count':_0x4dd0f2,'rows':_0x3d4175}:null;}})['then'](respondWithResult(_0x6f76ad,null))['catch'](handleError(_0x6f76ad,null));};
\ No newline at end of file
+var _0x6a0b=['to-csv','querystring','../../config/license/hardware','api','../../config/utils','../../config/license/util','../../mysqldb','jayson/promise','client','http','request','then','info','Dynamics365Configuration,\x20%s,\x20%s','request\x20sent','debug','Dynamics365Configuration,\x20%s,\x20%s,\x20%s','stringify','error','message','catch','end','status','json','offset','undefined','limit','count','apply','update','destroy','sendStatus','stack','name','send','index','map','rawAttributes','fieldName','model','query','keys','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','type','VIRTUAL','options','Dynamics365Configuration','includeAll','include','findAll','rows','show','params','create','body','find','findOne','Dynamics365Field','getSubjects','getDescriptions','eml-format','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js'];(function(_0x3f00ee,_0x1d1673){var _0x18a07e=function(_0x4dad57){while(--_0x4dad57){_0x3f00ee['push'](_0x3f00ee['shift']());}};_0x18a07e(++_0x1d1673);}(_0x6a0b,0xf6));var _0xb6a0=function(_0x2e3e8e,_0x308638){_0x2e3e8e=_0x2e3e8e-0x0;var _0x199e70=_0x6a0b[_0x2e3e8e];return _0x199e70;};'use strict';var emlformat=require(_0xb6a0('0x0'));var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0xb6a0('0x1'));var rp=require(_0xb6a0('0x2'));var moment=require('moment');var BPromise=require(_0xb6a0('0x3'));var Mustache=require(_0xb6a0('0x4'));var util=require(_0xb6a0('0x5'));var path=require(_0xb6a0('0x6'));var sox=require(_0xb6a0('0x7'));var csv=require('to-csv');var ejs=require(_0xb6a0('0x8'));var fs=require('fs');var fs_extra=require(_0xb6a0('0x9'));var _=require(_0xb6a0('0xa'));var squel=require(_0xb6a0('0xb'));var crypto=require(_0xb6a0('0xc'));var jsforce=require(_0xb6a0('0xd'));var deskjs=require(_0xb6a0('0xe'));var toCsv=require(_0xb6a0('0xf'));var querystring=require(_0xb6a0('0x10'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb6a0('0x11'));var logger=require('../../config/logger')(_0xb6a0('0x12'));var utils=require(_0xb6a0('0x13'));var config=require('../../config/environment');var licenseUtil=require(_0xb6a0('0x14'));var db=require(_0xb6a0('0x15'))['db'];var jayson=require(_0xb6a0('0x16'));var client=jayson[_0xb6a0('0x17')][_0xb6a0('0x18')]({'port':0x232a});function respondWithRpcPromise(_0x275d5d,_0x1c0d22,_0x138b6c,_0x453a7e){return new BPromise(function(_0x3f4145,_0x59f9cf){var _0xcec34a=_0x453a7e||client;return _0xcec34a[_0xb6a0('0x19')](_0x275d5d,_0x138b6c)[_0xb6a0('0x1a')](function(_0x2d41de){logger[_0xb6a0('0x1b')](_0xb6a0('0x1c'),_0x1c0d22,_0xb6a0('0x1d'));logger[_0xb6a0('0x1e')](_0xb6a0('0x1f'),_0x1c0d22,'request\x20sent',JSON[_0xb6a0('0x20')](_0x2d41de));if(_0x2d41de[_0xb6a0('0x21')]){if(_0x2d41de[_0xb6a0('0x21')]['code']===0x1f4){logger[_0xb6a0('0x21')](_0xb6a0('0x1c'),_0x1c0d22,_0x2d41de[_0xb6a0('0x21')][_0xb6a0('0x22')]);return _0x59f9cf(_0x2d41de[_0xb6a0('0x21')]['message']);}logger['error'](_0xb6a0('0x1c'),_0x1c0d22,_0x2d41de[_0xb6a0('0x21')]['message']);return _0x3f4145(_0x2d41de[_0xb6a0('0x21')]['message']);}else{logger[_0xb6a0('0x1b')](_0xb6a0('0x1c'),_0x1c0d22,_0xb6a0('0x1d'));_0x3f4145(_0x2d41de['result'][_0xb6a0('0x22')]);}})[_0xb6a0('0x23')](function(_0x3d1d4a){logger['error'](_0xb6a0('0x1c'),_0x1c0d22,_0x3d1d4a);_0x59f9cf(_0x3d1d4a);});});}function respondWithStatusCode(_0x2e0cb0,_0x5eb55f){_0x5eb55f=_0x5eb55f||0xcc;return function(_0x75bbe7){if(_0x75bbe7){return _0x2e0cb0['sendStatus'](_0x5eb55f);}return _0x2e0cb0['status'](_0x5eb55f)[_0xb6a0('0x24')]();};}function respondWithResult(_0x5ea3f1,_0x814060){_0x814060=_0x814060||0xc8;return function(_0x44bd47){if(_0x44bd47){return _0x5ea3f1[_0xb6a0('0x25')](_0x814060)[_0xb6a0('0x26')](_0x44bd47);}};}function respondWithFilteredResult(_0x2aa557,_0x27bb68){return function(_0x31d9b0){if(_0x31d9b0){var _0x55835b=typeof _0x27bb68[_0xb6a0('0x27')]===_0xb6a0('0x28')&&typeof _0x27bb68[_0xb6a0('0x29')]===_0xb6a0('0x28');var _0x2cbcd3=_0x31d9b0['count'];var _0x28f593=_0x55835b?0x0:_0x27bb68['offset'];var _0x25ed03=_0x55835b?_0x31d9b0[_0xb6a0('0x2a')]:_0x27bb68[_0xb6a0('0x27')]+_0x27bb68[_0xb6a0('0x29')];var _0xe2b519;if(_0x25ed03>=_0x2cbcd3){_0x25ed03=_0x2cbcd3;_0xe2b519=0xc8;}else{_0xe2b519=0xce;}_0x2aa557[_0xb6a0('0x25')](_0xe2b519);return _0x2aa557['set']('Content-Range',_0x28f593+'-'+_0x25ed03+'/'+_0x2cbcd3)[_0xb6a0('0x26')](_0x31d9b0);}return null;};}function patchUpdates(_0x8cdd90){return function(_0x1fc80b){try{jsonpatch[_0xb6a0('0x2b')](_0x1fc80b,_0x8cdd90,!![]);}catch(_0x1d0c77){return BPromise['reject'](_0x1d0c77);}return _0x1fc80b['save']();};}function saveUpdates(_0x1375a2,_0x25fe3d){return function(_0x2faba2){if(_0x2faba2){return _0x2faba2[_0xb6a0('0x2c')](_0x1375a2)['then'](function(_0x4bb109){return _0x4bb109;});}return null;};}function removeEntity(_0x2022ff,_0x16f681){return function(_0x35d719){if(_0x35d719){return _0x35d719[_0xb6a0('0x2d')]()[_0xb6a0('0x1a')](function(){_0x2022ff['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x4754b0,_0x2dce97){return function(_0x3daa1a){if(!_0x3daa1a){_0x4754b0[_0xb6a0('0x2e')](0x194);}return _0x3daa1a;};}function handleError(_0x3b1d35,_0x15984e){_0x15984e=_0x15984e||0x1f4;return function(_0x20436f){logger['error'](_0x20436f[_0xb6a0('0x2f')]);if(_0x20436f[_0xb6a0('0x30')]){delete _0x20436f[_0xb6a0('0x30')];}_0x3b1d35['status'](_0x15984e)[_0xb6a0('0x31')](_0x20436f);};}exports[_0xb6a0('0x32')]=function(_0x518139,_0x2c05b0){var _0x31106a={},_0x389e0d={},_0x3aec7c={'count':0x0,'rows':[]};var _0x14d785=_[_0xb6a0('0x33')](db['Dynamics365Configuration'][_0xb6a0('0x34')],function(_0x91cc98){return{'name':_0x91cc98[_0xb6a0('0x35')],'type':_0x91cc98['type']['key']};});_0x389e0d[_0xb6a0('0x36')]=_[_0xb6a0('0x33')](_0x14d785,_0xb6a0('0x30'));_0x389e0d[_0xb6a0('0x37')]=_[_0xb6a0('0x38')](_0x518139[_0xb6a0('0x37')]);_0x389e0d[_0xb6a0('0x39')]=_['intersection'](_0x389e0d[_0xb6a0('0x36')],_0x389e0d['query']);_0x31106a[_0xb6a0('0x3a')]=_[_0xb6a0('0x3b')](_0x389e0d['model'],qs[_0xb6a0('0x3c')](_0x518139['query']['fields']));_0x31106a[_0xb6a0('0x3a')]=_0x31106a['attributes'][_0xb6a0('0x3d')]?_0x31106a['attributes']:_0x389e0d['model'];if(!_0x518139[_0xb6a0('0x37')][_0xb6a0('0x3e')](_0xb6a0('0x3f'))){_0x31106a[_0xb6a0('0x29')]=qs[_0xb6a0('0x29')](_0x518139[_0xb6a0('0x37')][_0xb6a0('0x29')]);_0x31106a[_0xb6a0('0x27')]=qs[_0xb6a0('0x27')](_0x518139[_0xb6a0('0x37')][_0xb6a0('0x27')]);}_0x31106a[_0xb6a0('0x40')]=qs[_0xb6a0('0x41')](_0x518139[_0xb6a0('0x37')][_0xb6a0('0x41')]);_0x31106a[_0xb6a0('0x42')]=qs['filters'](_[_0xb6a0('0x43')](_0x518139['query'],_0x389e0d['filters']),_0x14d785);if(_0x518139[_0xb6a0('0x37')][_0xb6a0('0x44')]){_0x31106a[_0xb6a0('0x42')]=_[_0xb6a0('0x45')](_0x31106a[_0xb6a0('0x42')],{'$or':_[_0xb6a0('0x33')](_0x14d785,function(_0x251b5e){if(_0x251b5e[_0xb6a0('0x46')]!==_0xb6a0('0x47')){var _0x2051a6={};_0x2051a6[_0x251b5e[_0xb6a0('0x30')]]={'$like':'%'+_0x518139[_0xb6a0('0x37')][_0xb6a0('0x44')]+'%'};return _0x2051a6;}})});}_0x31106a=_[_0xb6a0('0x45')]({},_0x31106a,_0x518139[_0xb6a0('0x48')]);var _0x13d0af={'where':_0x31106a[_0xb6a0('0x42')]};return db[_0xb6a0('0x49')]['count'](_0x13d0af)[_0xb6a0('0x1a')](function(_0x2c10b4){_0x3aec7c[_0xb6a0('0x2a')]=_0x2c10b4;if(_0x518139['query'][_0xb6a0('0x4a')]){_0x31106a[_0xb6a0('0x4b')]=[{'all':!![]}];}return db['Dynamics365Configuration'][_0xb6a0('0x4c')](_0x31106a);})['then'](function(_0x681627){_0x3aec7c[_0xb6a0('0x4d')]=_0x681627;return _0x3aec7c;})[_0xb6a0('0x1a')](respondWithFilteredResult(_0x2c05b0,_0x31106a))['catch'](handleError(_0x2c05b0,null));};exports[_0xb6a0('0x4e')]=function(_0x56a66a,_0xbc9c4c){var _0x1fa15f={'raw':![],'where':{'id':_0x56a66a[_0xb6a0('0x4f')]['id']}},_0x38aaf6={};_0x38aaf6['model']=_[_0xb6a0('0x38')](db[_0xb6a0('0x49')]['rawAttributes']);_0x38aaf6[_0xb6a0('0x37')]=_[_0xb6a0('0x38')](_0x56a66a[_0xb6a0('0x37')]);_0x38aaf6[_0xb6a0('0x39')]=_[_0xb6a0('0x3b')](_0x38aaf6[_0xb6a0('0x36')],_0x38aaf6[_0xb6a0('0x37')]);_0x1fa15f[_0xb6a0('0x3a')]=_['intersection'](_0x38aaf6['model'],qs[_0xb6a0('0x3c')](_0x56a66a[_0xb6a0('0x37')][_0xb6a0('0x3c')]));_0x1fa15f[_0xb6a0('0x3a')]=_0x1fa15f[_0xb6a0('0x3a')][_0xb6a0('0x3d')]?_0x1fa15f['attributes']:_0x38aaf6[_0xb6a0('0x36')];if(_0x56a66a[_0xb6a0('0x37')][_0xb6a0('0x4a')]){_0x1fa15f['include']=[{'all':!![]}];}_0x1fa15f=_[_0xb6a0('0x45')]({},_0x1fa15f,_0x56a66a[_0xb6a0('0x48')]);return db[_0xb6a0('0x49')]['find'](_0x1fa15f)[_0xb6a0('0x1a')](handleEntityNotFound(_0xbc9c4c,null))[_0xb6a0('0x1a')](respondWithResult(_0xbc9c4c,null))[_0xb6a0('0x23')](handleError(_0xbc9c4c,null));};exports[_0xb6a0('0x50')]=function(_0x7a115f,_0x52125c){return db[_0xb6a0('0x49')]['create'](_0x7a115f[_0xb6a0('0x51')],{})[_0xb6a0('0x1a')](respondWithResult(_0x52125c,0xc9))[_0xb6a0('0x23')](handleError(_0x52125c,null));};exports[_0xb6a0('0x2c')]=function(_0x5bdd52,_0x2395f9){if(_0x5bdd52[_0xb6a0('0x51')]['id']){delete _0x5bdd52[_0xb6a0('0x51')]['id'];}return db[_0xb6a0('0x49')][_0xb6a0('0x52')]({'where':{'id':_0x5bdd52['params']['id']}})['then'](handleEntityNotFound(_0x2395f9,null))[_0xb6a0('0x1a')](saveUpdates(_0x5bdd52[_0xb6a0('0x51')],null))[_0xb6a0('0x1a')](respondWithResult(_0x2395f9,null))[_0xb6a0('0x23')](handleError(_0x2395f9,null));};exports[_0xb6a0('0x2d')]=function(_0x5489b2,_0x403ff5){return db[_0xb6a0('0x49')][_0xb6a0('0x52')]({'where':{'id':_0x5489b2['params']['id']}})['then'](handleEntityNotFound(_0x403ff5,null))[_0xb6a0('0x1a')](removeEntity(_0x403ff5,null))['catch'](handleError(_0x403ff5,null));};exports['getFields']=function(_0x478e02,_0x43fd79,_0xab87f8){var _0x5b97f7={};var _0x46efc5={};var _0x2800c3;var _0x3a3819;return db['Dynamics365Configuration'][_0xb6a0('0x53')]({'where':{'id':_0x478e02['params']['id']}})[_0xb6a0('0x1a')](handleEntityNotFound(_0x43fd79,null))['then'](function(_0x241e35){if(_0x241e35){_0x2800c3=_0x241e35;_0x46efc5[_0xb6a0('0x36')]=_[_0xb6a0('0x38')](db[_0xb6a0('0x54')]['rawAttributes']);_0x46efc5[_0xb6a0('0x37')]=_[_0xb6a0('0x38')](_0x478e02[_0xb6a0('0x37')]);_0x46efc5[_0xb6a0('0x39')]=_['intersection'](_0x46efc5[_0xb6a0('0x36')],_0x46efc5[_0xb6a0('0x37')]);_0x5b97f7[_0xb6a0('0x3a')]=_[_0xb6a0('0x3b')](_0x46efc5['model'],qs[_0xb6a0('0x3c')](_0x478e02['query'][_0xb6a0('0x3c')]));_0x5b97f7[_0xb6a0('0x3a')]=_0x5b97f7[_0xb6a0('0x3a')]['length']?_0x5b97f7['attributes']:_0x46efc5['model'];_0x5b97f7[_0xb6a0('0x40')]=qs[_0xb6a0('0x41')](_0x478e02[_0xb6a0('0x37')][_0xb6a0('0x41')]);_0x5b97f7[_0xb6a0('0x42')]=qs['filters'](_[_0xb6a0('0x43')](_0x478e02[_0xb6a0('0x37')],_0x46efc5[_0xb6a0('0x39')]));if(_0x478e02[_0xb6a0('0x37')][_0xb6a0('0x44')]){_0x5b97f7[_0xb6a0('0x42')]=_[_0xb6a0('0x45')](_0x5b97f7[_0xb6a0('0x42')],{'$or':_[_0xb6a0('0x33')](_0x5b97f7[_0xb6a0('0x3a')],function(_0x49ac84){var _0x26ea02={};_0x26ea02[_0x49ac84]={'$like':'%'+_0x478e02[_0xb6a0('0x37')][_0xb6a0('0x44')]+'%'};return _0x26ea02;})});}_0x5b97f7=_[_0xb6a0('0x45')]({},_0x5b97f7,_0x478e02[_0xb6a0('0x48')]);return _0x2800c3['getFields'](_0x5b97f7);}})[_0xb6a0('0x1a')](function(_0x538d90){if(_0x538d90){_0x3a3819=_0x538d90[_0xb6a0('0x3d')];if(!_0x478e02['query'][_0xb6a0('0x3e')](_0xb6a0('0x3f'))){_0x5b97f7[_0xb6a0('0x29')]=qs[_0xb6a0('0x29')](_0x478e02['query']['limit']);_0x5b97f7['offset']=qs[_0xb6a0('0x27')](_0x478e02[_0xb6a0('0x37')]['offset']);}return _0x2800c3['getFields'](_0x5b97f7);}})[_0xb6a0('0x1a')](function(_0x463c0e){if(_0x463c0e){return _0x463c0e?{'count':_0x3a3819,'rows':_0x463c0e}:null;}})[_0xb6a0('0x1a')](respondWithResult(_0x43fd79,null))[_0xb6a0('0x23')](handleError(_0x43fd79,null));};exports[_0xb6a0('0x55')]=function(_0x20d0a4,_0x283097,_0x21a518){var _0x3d3569={};var _0x5204ed={};var _0x5ea09e;var _0x40b125;return db[_0xb6a0('0x49')][_0xb6a0('0x53')]({'where':{'id':_0x20d0a4[_0xb6a0('0x4f')]['id']}})['then'](handleEntityNotFound(_0x283097,null))['then'](function(_0x5c3756){if(_0x5c3756){_0x5ea09e=_0x5c3756;_0x5204ed[_0xb6a0('0x36')]=_[_0xb6a0('0x38')](db[_0xb6a0('0x54')][_0xb6a0('0x34')]);_0x5204ed[_0xb6a0('0x37')]=_[_0xb6a0('0x38')](_0x20d0a4[_0xb6a0('0x37')]);_0x5204ed['filters']=_[_0xb6a0('0x3b')](_0x5204ed[_0xb6a0('0x36')],_0x5204ed['query']);_0x3d3569[_0xb6a0('0x3a')]=_['intersection'](_0x5204ed[_0xb6a0('0x36')],qs['fields'](_0x20d0a4['query'][_0xb6a0('0x3c')]));_0x3d3569[_0xb6a0('0x3a')]=_0x3d3569[_0xb6a0('0x3a')][_0xb6a0('0x3d')]?_0x3d3569['attributes']:_0x5204ed[_0xb6a0('0x36')];_0x3d3569[_0xb6a0('0x40')]=qs[_0xb6a0('0x41')](_0x20d0a4[_0xb6a0('0x37')][_0xb6a0('0x41')]);_0x3d3569['where']=qs[_0xb6a0('0x39')](_[_0xb6a0('0x43')](_0x20d0a4[_0xb6a0('0x37')],_0x5204ed[_0xb6a0('0x39')]));if(_0x20d0a4[_0xb6a0('0x37')][_0xb6a0('0x44')]){_0x3d3569[_0xb6a0('0x42')]=_['merge'](_0x3d3569['where'],{'$or':_[_0xb6a0('0x33')](_0x3d3569['attributes'],function(_0x49ab32){var _0x2456e5={};_0x2456e5[_0x49ab32]={'$like':'%'+_0x20d0a4[_0xb6a0('0x37')][_0xb6a0('0x44')]+'%'};return _0x2456e5;})});}_0x3d3569=_['merge']({},_0x3d3569,_0x20d0a4['options']);return _0x5ea09e['getSubjects'](_0x3d3569);}})[_0xb6a0('0x1a')](function(_0x1aa79b){if(_0x1aa79b){_0x40b125=_0x1aa79b[_0xb6a0('0x3d')];if(!_0x20d0a4[_0xb6a0('0x37')][_0xb6a0('0x3e')](_0xb6a0('0x3f'))){_0x3d3569[_0xb6a0('0x29')]=qs['limit'](_0x20d0a4[_0xb6a0('0x37')]['limit']);_0x3d3569['offset']=qs[_0xb6a0('0x27')](_0x20d0a4[_0xb6a0('0x37')][_0xb6a0('0x27')]);}return _0x5ea09e[_0xb6a0('0x55')](_0x3d3569);}})[_0xb6a0('0x1a')](function(_0x4fdb3e){if(_0x4fdb3e){return _0x4fdb3e?{'count':_0x40b125,'rows':_0x4fdb3e}:null;}})['then'](respondWithResult(_0x283097,null))['catch'](handleError(_0x283097,null));};exports[_0xb6a0('0x56')]=function(_0x5a4d49,_0x322311,_0x400a99){var _0xa272b5={};var _0x1d6aa3={};var _0x4730da;var _0x125ce6;return db[_0xb6a0('0x49')]['findOne']({'where':{'id':_0x5a4d49[_0xb6a0('0x4f')]['id']}})[_0xb6a0('0x1a')](handleEntityNotFound(_0x322311,null))[_0xb6a0('0x1a')](function(_0x54eb71){if(_0x54eb71){_0x4730da=_0x54eb71;_0x1d6aa3['model']=_[_0xb6a0('0x38')](db['Dynamics365Field'][_0xb6a0('0x34')]);_0x1d6aa3[_0xb6a0('0x37')]=_[_0xb6a0('0x38')](_0x5a4d49[_0xb6a0('0x37')]);_0x1d6aa3[_0xb6a0('0x39')]=_[_0xb6a0('0x3b')](_0x1d6aa3[_0xb6a0('0x36')],_0x1d6aa3[_0xb6a0('0x37')]);_0xa272b5[_0xb6a0('0x3a')]=_['intersection'](_0x1d6aa3[_0xb6a0('0x36')],qs[_0xb6a0('0x3c')](_0x5a4d49[_0xb6a0('0x37')][_0xb6a0('0x3c')]));_0xa272b5[_0xb6a0('0x3a')]=_0xa272b5[_0xb6a0('0x3a')][_0xb6a0('0x3d')]?_0xa272b5[_0xb6a0('0x3a')]:_0x1d6aa3['model'];_0xa272b5[_0xb6a0('0x40')]=qs[_0xb6a0('0x41')](_0x5a4d49[_0xb6a0('0x37')]['sort']);_0xa272b5['where']=qs[_0xb6a0('0x39')](_[_0xb6a0('0x43')](_0x5a4d49['query'],_0x1d6aa3[_0xb6a0('0x39')]));if(_0x5a4d49[_0xb6a0('0x37')][_0xb6a0('0x44')]){_0xa272b5['where']=_[_0xb6a0('0x45')](_0xa272b5[_0xb6a0('0x42')],{'$or':_[_0xb6a0('0x33')](_0xa272b5[_0xb6a0('0x3a')],function(_0x497a1c){var _0x4b4d43={};_0x4b4d43[_0x497a1c]={'$like':'%'+_0x5a4d49[_0xb6a0('0x37')][_0xb6a0('0x44')]+'%'};return _0x4b4d43;})});}_0xa272b5=_[_0xb6a0('0x45')]({},_0xa272b5,_0x5a4d49[_0xb6a0('0x48')]);return _0x4730da[_0xb6a0('0x56')](_0xa272b5);}})[_0xb6a0('0x1a')](function(_0x3c2619){if(_0x3c2619){_0x125ce6=_0x3c2619[_0xb6a0('0x3d')];if(!_0x5a4d49[_0xb6a0('0x37')][_0xb6a0('0x3e')](_0xb6a0('0x3f'))){_0xa272b5[_0xb6a0('0x29')]=qs[_0xb6a0('0x29')](_0x5a4d49['query']['limit']);_0xa272b5['offset']=qs['offset'](_0x5a4d49[_0xb6a0('0x37')][_0xb6a0('0x27')]);}return _0x4730da['getDescriptions'](_0xa272b5);}})['then'](function(_0x622cd3){if(_0x622cd3){return _0x622cd3?{'count':_0x125ce6,'rows':_0x622cd3}:null;}})[_0xb6a0('0x1a')](respondWithResult(_0x322311,null))[_0xb6a0('0x23')](handleError(_0x322311,null));};
\ No newline at end of file