Built motion from commit a61a4a20.|2.5.46
[motion2.git] / server / api / faxTransferReport / faxTransferReport.controller.js
index d2b0550..da63a5d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x26db=['filter','merge','VIRTUAL','options','count','includeAll','include','findAll','rows','catch','params','find','create','body','describe','html-pdf','eml-format','rimraf','fast-json-patch','request-promise','util','path','sox','to-csv','ejs','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','end','json','offset','limit','Content-Range','apply','reject','save','update','then','destroy','error','stack','name','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick'];(function(_0x2f13cf,_0x2f5184){var _0x3ecf60=function(_0x522b43){while(--_0x522b43){_0x2f13cf['push'](_0x2f13cf['shift']());}};_0x3ecf60(++_0x2f5184);}(_0x26db,0x172));var _0xb26d=function(_0x3e9b91,_0x2f26c3){_0x3e9b91=_0x3e9b91-0x0;var _0x59da6e=_0x26db[_0x3e9b91];return _0x59da6e;};'use strict';var pdf=require(_0xb26d('0x0'));var emlformat=require(_0xb26d('0x1'));var rimraf=require(_0xb26d('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0xb26d('0x3'));var rp=require(_0xb26d('0x4'));var moment=require('moment');var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0xb26d('0x5'));var path=require(_0xb26d('0x6'));var sox=require(_0xb26d('0x7'));var csv=require(_0xb26d('0x8'));var ejs=require(_0xb26d('0x9'));var fs=require('fs');var _=require(_0xb26d('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0xb26d('0xb'));var deskjs=require(_0xb26d('0xc'));var toCsv=require(_0xb26d('0x8'));var querystring=require(_0xb26d('0xd'));var Papa=require(_0xb26d('0xe'));var Redis=require(_0xb26d('0xf'));var authService=require(_0xb26d('0x10'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xb26d('0x11'));var logger=require('../../config/logger')(_0xb26d('0x12'));var utils=require(_0xb26d('0x13'));var config=require('../../config/environment');var db=require(_0xb26d('0x14'))['db'];function respondWithStatusCode(_0x41c568,_0x5d5c64){_0x5d5c64=_0x5d5c64||0xcc;return function(_0x1c2b43){if(_0x1c2b43){return _0x41c568[_0xb26d('0x15')](_0x5d5c64);}return _0x41c568[_0xb26d('0x16')](_0x5d5c64)[_0xb26d('0x17')]();};}function respondWithResult(_0xbf01b3,_0x55a510){_0x55a510=_0x55a510||0xc8;return function(_0x29cf37){if(_0x29cf37){return _0xbf01b3['status'](_0x55a510)[_0xb26d('0x18')](_0x29cf37);}};}function respondWithFilteredResult(_0x37b7b0,_0x4094a6){return function(_0x46b156){if(_0x46b156){var _0x19007f=_0x46b156['count'],_0x4b844d=_0x4094a6['offset'],_0x38519e=_0x4094a6[_0xb26d('0x19')]+_0x4094a6[_0xb26d('0x1a')],_0x236483;if(_0x38519e>=_0x19007f){_0x38519e=_0x19007f;_0x236483=0xc8;}else{_0x236483=0xce;}_0x37b7b0[_0xb26d('0x16')](_0x236483);return _0x37b7b0['set'](_0xb26d('0x1b'),_0x4b844d+'-'+_0x38519e+'/'+_0x19007f)[_0xb26d('0x18')](_0x46b156);}return null;};}function patchUpdates(_0x26cb1e){return function(_0x45a272){try{jsonpatch[_0xb26d('0x1c')](_0x45a272,_0x26cb1e,!![]);}catch(_0x332de3){return BPromise[_0xb26d('0x1d')](_0x332de3);}return _0x45a272[_0xb26d('0x1e')]();};}function saveUpdates(_0x4a8ca8,_0x4d8bf6){return function(_0x211c5c){if(_0x211c5c){return _0x211c5c[_0xb26d('0x1f')](_0x4a8ca8)[_0xb26d('0x20')](function(_0x5c000c){return _0x5c000c;});}return null;};}function removeEntity(_0x5710ac,_0x148e03){return function(_0x4d801b){if(_0x4d801b){return _0x4d801b[_0xb26d('0x21')]()[_0xb26d('0x20')](function(){_0x5710ac[_0xb26d('0x16')](0xcc)[_0xb26d('0x17')]();});}};}function handleEntityNotFound(_0x16d0a7,_0x340ee5){return function(_0x444cef){if(!_0x444cef){_0x16d0a7[_0xb26d('0x15')](0x194);}return _0x444cef;};}function handleError(_0x49afd2,_0x3b3945){_0x3b3945=_0x3b3945||0x1f4;return function(_0x4beb78){logger[_0xb26d('0x22')](_0x4beb78[_0xb26d('0x23')]);if(_0x4beb78[_0xb26d('0x24')]){delete _0x4beb78[_0xb26d('0x24')];}_0x49afd2[_0xb26d('0x16')](_0x3b3945)['send'](_0x4beb78);};}exports['index']=function(_0x6d8902,_0x30235d){var _0x1e0483={},_0x36ba60={},_0x11d089={'count':0x0,'rows':[]};var _0x2590bd=_[_0xb26d('0x25')](db[_0xb26d('0x26')][_0xb26d('0x27')],function(_0x4ca4ce){return{'name':_0x4ca4ce['fieldName'],'type':_0x4ca4ce[_0xb26d('0x28')][_0xb26d('0x29')]};});_0x36ba60[_0xb26d('0x2a')]=_['map'](_0x2590bd,_0xb26d('0x24'));_0x36ba60[_0xb26d('0x2b')]=_[_0xb26d('0x2c')](_0x6d8902[_0xb26d('0x2b')]);_0x36ba60[_0xb26d('0x2d')]=_[_0xb26d('0x2e')](_0x36ba60[_0xb26d('0x2a')],_0x36ba60[_0xb26d('0x2b')]);_0x1e0483[_0xb26d('0x2f')]=_['intersection'](_0x36ba60[_0xb26d('0x2a')],qs[_0xb26d('0x30')](_0x6d8902[_0xb26d('0x2b')][_0xb26d('0x30')]));_0x1e0483['attributes']=_0x1e0483['attributes'][_0xb26d('0x31')]?_0x1e0483[_0xb26d('0x2f')]:_0x36ba60['model'];if(!_0x6d8902['query'][_0xb26d('0x32')](_0xb26d('0x33'))){_0x1e0483[_0xb26d('0x1a')]=qs['limit'](_0x6d8902['query'][_0xb26d('0x1a')]);_0x1e0483[_0xb26d('0x19')]=qs[_0xb26d('0x19')](_0x6d8902[_0xb26d('0x2b')][_0xb26d('0x19')]);}_0x1e0483[_0xb26d('0x34')]=qs[_0xb26d('0x35')](_0x6d8902[_0xb26d('0x2b')][_0xb26d('0x35')]);_0x1e0483[_0xb26d('0x36')]=qs['filters'](_[_0xb26d('0x37')](_0x6d8902[_0xb26d('0x2b')],_0x36ba60[_0xb26d('0x2d')]));if(_0x6d8902[_0xb26d('0x2b')][_0xb26d('0x38')]){_0x1e0483[_0xb26d('0x36')]=_[_0xb26d('0x39')](_0x1e0483[_0xb26d('0x36')],{'$or':_[_0xb26d('0x25')](_0x2590bd,function(_0x6fc3f7){if(_0x6fc3f7[_0xb26d('0x28')]!==_0xb26d('0x3a')){var _0x3b549d={};_0x3b549d[_0x6fc3f7[_0xb26d('0x24')]]={'$like':'%'+_0x6d8902[_0xb26d('0x2b')][_0xb26d('0x38')]+'%'};return _0x3b549d;}})});}_0x1e0483=_[_0xb26d('0x39')]({},_0x1e0483,_0x6d8902[_0xb26d('0x3b')]);var _0x3265ff={'where':_0x1e0483[_0xb26d('0x36')]};return db['FaxTransferReport'][_0xb26d('0x3c')](_0x3265ff)['then'](function(_0x1205e2){_0x11d089[_0xb26d('0x3c')]=_0x1205e2;if(_0x6d8902['query'][_0xb26d('0x3d')]){_0x1e0483[_0xb26d('0x3e')]=[{'all':!![]}];}return db[_0xb26d('0x26')][_0xb26d('0x3f')](_0x1e0483);})[_0xb26d('0x20')](function(_0x51a58f){_0x11d089[_0xb26d('0x40')]=_0x51a58f;return _0x11d089;})[_0xb26d('0x20')](respondWithFilteredResult(_0x30235d,_0x1e0483))[_0xb26d('0x41')](handleError(_0x30235d,null));};exports['show']=function(_0x40a02f,_0x4cbbfb){var _0xe4e5a2={'raw':!![],'where':{'id':_0x40a02f[_0xb26d('0x42')]['id']}},_0x43644a={};_0x43644a['model']=_['keys'](db[_0xb26d('0x26')][_0xb26d('0x27')]);_0x43644a[_0xb26d('0x2b')]=_[_0xb26d('0x2c')](_0x40a02f[_0xb26d('0x2b')]);_0x43644a[_0xb26d('0x2d')]=_['intersection'](_0x43644a['model'],_0x43644a['query']);_0xe4e5a2[_0xb26d('0x2f')]=_[_0xb26d('0x2e')](_0x43644a['model'],qs[_0xb26d('0x30')](_0x40a02f[_0xb26d('0x2b')][_0xb26d('0x30')]));_0xe4e5a2[_0xb26d('0x2f')]=_0xe4e5a2['attributes']['length']?_0xe4e5a2['attributes']:_0x43644a[_0xb26d('0x2a')];if(_0x40a02f[_0xb26d('0x2b')][_0xb26d('0x3d')]){_0xe4e5a2['include']=[{'all':!![]}];}_0xe4e5a2=_['merge']({},_0xe4e5a2,_0x40a02f[_0xb26d('0x3b')]);return db[_0xb26d('0x26')][_0xb26d('0x43')](_0xe4e5a2)[_0xb26d('0x20')](handleEntityNotFound(_0x4cbbfb,null))['then'](respondWithResult(_0x4cbbfb,null))[_0xb26d('0x41')](handleError(_0x4cbbfb,null));};exports[_0xb26d('0x44')]=function(_0x337176,_0x436104){return db[_0xb26d('0x26')][_0xb26d('0x44')](_0x337176[_0xb26d('0x45')],{})[_0xb26d('0x20')](respondWithResult(_0x436104,0xc9))[_0xb26d('0x41')](handleError(_0x436104,null));};exports['update']=function(_0x2bb90d,_0x1fccaf){if(_0x2bb90d[_0xb26d('0x45')]['id']){delete _0x2bb90d[_0xb26d('0x45')]['id'];}return db['FaxTransferReport'][_0xb26d('0x43')]({'where':{'id':_0x2bb90d['params']['id']}})[_0xb26d('0x20')](handleEntityNotFound(_0x1fccaf,null))['then'](saveUpdates(_0x2bb90d['body'],null))[_0xb26d('0x20')](respondWithResult(_0x1fccaf,null))[_0xb26d('0x41')](handleError(_0x1fccaf,null));};exports[_0xb26d('0x21')]=function(_0x58840b,_0x18fa0f){return db[_0xb26d('0x26')]['find']({'where':{'id':_0x58840b['params']['id']}})[_0xb26d('0x20')](handleEntityNotFound(_0x18fa0f,null))[_0xb26d('0x20')](removeEntity(_0x18fa0f,null))[_0xb26d('0x41')](handleError(_0x18fa0f,null));};exports[_0xb26d('0x46')]=function(_0x16187e,_0x558120){return db['FaxTransferReport'][_0xb26d('0x46')]()['then'](respondWithResult(_0x558120,null))['catch'](handleError(_0x558120,null));};
\ No newline at end of file
+var _0x08f8=['Content-Range','reject','save','update','destroy','stack','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','keys','query','filters','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','where','merge','VIRTUAL','name','filter','options','includeAll','include','then','rows','catch','params','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','count','limit','set'];(function(_0x1c098c,_0x52d94b){var _0x3bfa4c=function(_0x33930f){while(--_0x33930f){_0x1c098c['push'](_0x1c098c['shift']());}};_0x3bfa4c(++_0x52d94b);}(_0x08f8,0x71));var _0x808f=function(_0x368fce,_0x352f46){_0x368fce=_0x368fce-0x0;var _0x118c1b=_0x08f8[_0x368fce];return _0x118c1b;};'use strict';var emlformat=require(_0x808f('0x0'));var rimraf=require(_0x808f('0x1'));var zipdir=require(_0x808f('0x2'));var jsonpatch=require(_0x808f('0x3'));var rp=require('request-promise');var moment=require(_0x808f('0x4'));var BPromise=require(_0x808f('0x5'));var Mustache=require(_0x808f('0x6'));var util=require(_0x808f('0x7'));var path=require('path');var sox=require(_0x808f('0x8'));var csv=require(_0x808f('0x9'));var ejs=require(_0x808f('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x808f('0xb'));var squel=require('squel');var crypto=require(_0x808f('0xc'));var jsforce=require('jsforce');var deskjs=require(_0x808f('0xd'));var toCsv=require(_0x808f('0x9'));var querystring=require(_0x808f('0xe'));var Papa=require(_0x808f('0xf'));var Redis=require('ioredis');var authService=require(_0x808f('0x10'));var qs=require(_0x808f('0x11'));var as=require(_0x808f('0x12'));var hardwareService=require(_0x808f('0x13'));var logger=require('../../config/logger')(_0x808f('0x14'));var utils=require(_0x808f('0x15'));var config=require(_0x808f('0x16'));var licenseUtil=require(_0x808f('0x17'));var db=require(_0x808f('0x18'))['db'];function respondWithStatusCode(_0x1692e7,_0x4d5d70){_0x4d5d70=_0x4d5d70||0xcc;return function(_0x24293b){if(_0x24293b){return _0x1692e7['sendStatus'](_0x4d5d70);}return _0x1692e7['status'](_0x4d5d70)[_0x808f('0x19')]();};}function respondWithResult(_0x3c1b1f,_0x4ff92f){_0x4ff92f=_0x4ff92f||0xc8;return function(_0x58b5bf){if(_0x58b5bf){return _0x3c1b1f[_0x808f('0x1a')](_0x4ff92f)[_0x808f('0x1b')](_0x58b5bf);}};}function respondWithFilteredResult(_0x592df4,_0x1dd1eb){return function(_0x5f15ed){if(_0x5f15ed){var _0x49fc69=typeof _0x1dd1eb[_0x808f('0x1c')]===_0x808f('0x1d')&&typeof _0x1dd1eb['limit']===_0x808f('0x1d');var _0xa1c3cf=_0x5f15ed[_0x808f('0x1e')];var _0x20a839=_0x49fc69?0x0:_0x1dd1eb[_0x808f('0x1c')];var _0x214ce0=_0x49fc69?_0x5f15ed['count']:_0x1dd1eb[_0x808f('0x1c')]+_0x1dd1eb[_0x808f('0x1f')];var _0x2cc8ea;if(_0x214ce0>=_0xa1c3cf){_0x214ce0=_0xa1c3cf;_0x2cc8ea=0xc8;}else{_0x2cc8ea=0xce;}_0x592df4[_0x808f('0x1a')](_0x2cc8ea);return _0x592df4[_0x808f('0x20')](_0x808f('0x21'),_0x20a839+'-'+_0x214ce0+'/'+_0xa1c3cf)['json'](_0x5f15ed);}return null;};}function patchUpdates(_0xf44cad){return function(_0x489bce){try{jsonpatch['apply'](_0x489bce,_0xf44cad,!![]);}catch(_0x54b314){return BPromise[_0x808f('0x22')](_0x54b314);}return _0x489bce[_0x808f('0x23')]();};}function saveUpdates(_0x5abf50,_0x31234b){return function(_0x49e57c){if(_0x49e57c){return _0x49e57c[_0x808f('0x24')](_0x5abf50)['then'](function(_0x474146){return _0x474146;});}return null;};}function removeEntity(_0x456a68,_0x245316){return function(_0x2a62ef){if(_0x2a62ef){return _0x2a62ef[_0x808f('0x25')]()['then'](function(){_0x456a68['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x1ecd72,_0x21abd9){return function(_0x59d677){if(!_0x59d677){_0x1ecd72['sendStatus'](0x194);}return _0x59d677;};}function handleError(_0x20c7b6,_0x4ea39d){_0x4ea39d=_0x4ea39d||0x1f4;return function(_0x23d8d8){logger['error'](_0x23d8d8[_0x808f('0x26')]);if(_0x23d8d8['name']){delete _0x23d8d8['name'];}_0x20c7b6['status'](_0x4ea39d)['send'](_0x23d8d8);};}exports['index']=function(_0x6d878,_0x2ad9d8){var _0x4612cc={},_0x32f69e={},_0x1438bb={'count':0x0,'rows':[]};var _0x3c4559=_[_0x808f('0x27')](db[_0x808f('0x28')][_0x808f('0x29')],function(_0x20e33d){return{'name':_0x20e33d[_0x808f('0x2a')],'type':_0x20e33d[_0x808f('0x2b')][_0x808f('0x2c')]};});_0x32f69e[_0x808f('0x2d')]=_['map'](_0x3c4559,'name');_0x32f69e['query']=_[_0x808f('0x2e')](_0x6d878[_0x808f('0x2f')]);_0x32f69e[_0x808f('0x30')]=_['intersection'](_0x32f69e[_0x808f('0x2d')],_0x32f69e[_0x808f('0x2f')]);_0x4612cc[_0x808f('0x31')]=_[_0x808f('0x32')](_0x32f69e[_0x808f('0x2d')],qs[_0x808f('0x33')](_0x6d878[_0x808f('0x2f')]['fields']));_0x4612cc[_0x808f('0x31')]=_0x4612cc[_0x808f('0x31')][_0x808f('0x34')]?_0x4612cc[_0x808f('0x31')]:_0x32f69e['model'];if(!_0x6d878[_0x808f('0x2f')][_0x808f('0x35')](_0x808f('0x36'))){_0x4612cc[_0x808f('0x1f')]=qs[_0x808f('0x1f')](_0x6d878[_0x808f('0x2f')][_0x808f('0x1f')]);_0x4612cc[_0x808f('0x1c')]=qs[_0x808f('0x1c')](_0x6d878[_0x808f('0x2f')][_0x808f('0x1c')]);}_0x4612cc[_0x808f('0x37')]=qs[_0x808f('0x38')](_0x6d878['query'][_0x808f('0x38')]);_0x4612cc[_0x808f('0x39')]=qs[_0x808f('0x30')](_['pick'](_0x6d878[_0x808f('0x2f')],_0x32f69e[_0x808f('0x30')]),_0x3c4559);if(_0x6d878['query']['filter']){_0x4612cc[_0x808f('0x39')]=_[_0x808f('0x3a')](_0x4612cc[_0x808f('0x39')],{'$or':_['map'](_0x3c4559,function(_0x4c799d){if(_0x4c799d['type']!==_0x808f('0x3b')){var _0x4047dd={};_0x4047dd[_0x4c799d[_0x808f('0x3c')]]={'$like':'%'+_0x6d878[_0x808f('0x2f')][_0x808f('0x3d')]+'%'};return _0x4047dd;}})});}_0x4612cc=_[_0x808f('0x3a')]({},_0x4612cc,_0x6d878[_0x808f('0x3e')]);var _0x3bf38f={'where':_0x4612cc[_0x808f('0x39')]};return db[_0x808f('0x28')][_0x808f('0x1e')](_0x3bf38f)['then'](function(_0x2609ef){_0x1438bb['count']=_0x2609ef;if(_0x6d878['query'][_0x808f('0x3f')]){_0x4612cc[_0x808f('0x40')]=[{'all':!![]}];}return db[_0x808f('0x28')]['findAll'](_0x4612cc);})[_0x808f('0x41')](function(_0x46cf6a){_0x1438bb[_0x808f('0x42')]=_0x46cf6a;return _0x1438bb;})['then'](respondWithFilteredResult(_0x2ad9d8,_0x4612cc))[_0x808f('0x43')](handleError(_0x2ad9d8,null));};exports['show']=function(_0x53ce31,_0x51a352){var _0x1eea4b={'raw':!![],'where':{'id':_0x53ce31[_0x808f('0x44')]['id']}},_0xc5e719={};_0xc5e719[_0x808f('0x2d')]=_[_0x808f('0x2e')](db[_0x808f('0x28')]['rawAttributes']);_0xc5e719[_0x808f('0x2f')]=_[_0x808f('0x2e')](_0x53ce31[_0x808f('0x2f')]);_0xc5e719['filters']=_['intersection'](_0xc5e719['model'],_0xc5e719[_0x808f('0x2f')]);_0x1eea4b['attributes']=_[_0x808f('0x32')](_0xc5e719[_0x808f('0x2d')],qs[_0x808f('0x33')](_0x53ce31['query']['fields']));_0x1eea4b[_0x808f('0x31')]=_0x1eea4b['attributes']['length']?_0x1eea4b[_0x808f('0x31')]:_0xc5e719[_0x808f('0x2d')];if(_0x53ce31[_0x808f('0x2f')][_0x808f('0x3f')]){_0x1eea4b[_0x808f('0x40')]=[{'all':!![]}];}_0x1eea4b=_[_0x808f('0x3a')]({},_0x1eea4b,_0x53ce31[_0x808f('0x3e')]);return db[_0x808f('0x28')][_0x808f('0x45')](_0x1eea4b)[_0x808f('0x41')](handleEntityNotFound(_0x51a352,null))[_0x808f('0x41')](respondWithResult(_0x51a352,null))[_0x808f('0x43')](handleError(_0x51a352,null));};exports[_0x808f('0x46')]=function(_0x2e6603,_0x346094){return db['FaxTransferReport']['create'](_0x2e6603[_0x808f('0x47')],{})[_0x808f('0x41')](respondWithResult(_0x346094,0xc9))[_0x808f('0x43')](handleError(_0x346094,null));};exports[_0x808f('0x24')]=function(_0x1e1950,_0x4df9d1){if(_0x1e1950[_0x808f('0x47')]['id']){delete _0x1e1950[_0x808f('0x47')]['id'];}return db[_0x808f('0x28')][_0x808f('0x45')]({'where':{'id':_0x1e1950[_0x808f('0x44')]['id']}})[_0x808f('0x41')](handleEntityNotFound(_0x4df9d1,null))[_0x808f('0x41')](saveUpdates(_0x1e1950[_0x808f('0x47')],null))['then'](respondWithResult(_0x4df9d1,null))[_0x808f('0x43')](handleError(_0x4df9d1,null));};exports['destroy']=function(_0x414c83,_0x22a7fa){return db[_0x808f('0x28')][_0x808f('0x45')]({'where':{'id':_0x414c83[_0x808f('0x44')]['id']}})[_0x808f('0x41')](handleEntityNotFound(_0x22a7fa,null))[_0x808f('0x41')](removeEntity(_0x22a7fa,null))[_0x808f('0x43')](handleError(_0x22a7fa,null));};exports[_0x808f('0x48')]=function(_0x1612b4,_0x1d6e82){return db[_0x808f('0x28')][_0x808f('0x48')]()[_0x808f('0x41')](respondWithResult(_0x1d6e82,null))['catch'](handleError(_0x1d6e82,null));};
\ No newline at end of file