Built motion from commit e1760111.|2.6.18
[motion2.git] / server / api / faxQueueReport / faxQueueReport.controller.js
index aa03094..1581997 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xfeb7=['map','FaxQueueReport','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','sort','filter','merge','VIRTUAL','options','where','then','includeAll','findAll','rows','show','params','include','find','catch','create','body','destroy','describe','html-pdf','rimraf','zip-dir','fast-json-patch','moment','bluebird','util','path','sox','to-csv','ejs','desk.js','querystring','papaparse','ioredis','api','../../config/utils','../../config/license/util','../../mysqldb','sendStatus','end','status','json','count','offset','limit','set','apply','reject','error','stack','name','send','index'];(function(_0x2d9fcc,_0x297ddc){var _0x948b92=function(_0xb08341){while(--_0xb08341){_0x2d9fcc['push'](_0x2d9fcc['shift']());}};_0x948b92(++_0x297ddc);}(_0xfeb7,0x170));var _0x7feb=function(_0x54c9e4,_0x30c33f){_0x54c9e4=_0x54c9e4-0x0;var _0x10a186=_0xfeb7[_0x54c9e4];return _0x10a186;};'use strict';var pdf=require(_0x7feb('0x0'));var emlformat=require('eml-format');var rimraf=require(_0x7feb('0x1'));var zipdir=require(_0x7feb('0x2'));var jsonpatch=require(_0x7feb('0x3'));var rp=require('request-promise');var moment=require(_0x7feb('0x4'));var BPromise=require(_0x7feb('0x5'));var Mustache=require('mustache');var util=require(_0x7feb('0x6'));var path=require(_0x7feb('0x7'));var sox=require(_0x7feb('0x8'));var csv=require(_0x7feb('0x9'));var ejs=require(_0x7feb('0xa'));var fs=require('fs');var _=require('lodash');var squel=require('squel');var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x7feb('0xb'));var toCsv=require(_0x7feb('0x9'));var querystring=require(_0x7feb('0xc'));var Papa=require(_0x7feb('0xd'));var Redis=require(_0x7feb('0xe'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x7feb('0xf'));var utils=require(_0x7feb('0x10'));var config=require('../../config/environment');var licenseUtil=require(_0x7feb('0x11'));var db=require(_0x7feb('0x12'))['db'];function respondWithStatusCode(_0x28d5f0,_0x5c3b36){_0x5c3b36=_0x5c3b36||0xcc;return function(_0x1b8d9c){if(_0x1b8d9c){return _0x28d5f0[_0x7feb('0x13')](_0x5c3b36);}return _0x28d5f0['status'](_0x5c3b36)[_0x7feb('0x14')]();};}function respondWithResult(_0x1cca81,_0x4b364a){_0x4b364a=_0x4b364a||0xc8;return function(_0x1e5531){if(_0x1e5531){return _0x1cca81[_0x7feb('0x15')](_0x4b364a)[_0x7feb('0x16')](_0x1e5531);}};}function respondWithFilteredResult(_0x33f550,_0x1a1e38){return function(_0x100a16){if(_0x100a16){var _0x4fd64c=_0x100a16[_0x7feb('0x17')],_0x4e4f71=_0x1a1e38[_0x7feb('0x18')],_0x4b993e=_0x1a1e38[_0x7feb('0x18')]+_0x1a1e38[_0x7feb('0x19')],_0xc5c3f2;if(_0x4b993e>=_0x4fd64c){_0x4b993e=_0x4fd64c;_0xc5c3f2=0xc8;}else{_0xc5c3f2=0xce;}_0x33f550[_0x7feb('0x15')](_0xc5c3f2);return _0x33f550[_0x7feb('0x1a')]('Content-Range',_0x4e4f71+'-'+_0x4b993e+'/'+_0x4fd64c)['json'](_0x100a16);}return null;};}function patchUpdates(_0x36465a){return function(_0x488fab){try{jsonpatch[_0x7feb('0x1b')](_0x488fab,_0x36465a,!![]);}catch(_0x3e0473){return BPromise[_0x7feb('0x1c')](_0x3e0473);}return _0x488fab['save']();};}function saveUpdates(_0x32e8c2,_0x5cc5c5){return function(_0x5891d6){if(_0x5891d6){return _0x5891d6['update'](_0x32e8c2)['then'](function(_0x3c0d58){return _0x3c0d58;});}return null;};}function removeEntity(_0x1394a1,_0x98b29d){return function(_0x4e813e){if(_0x4e813e){return _0x4e813e['destroy']()['then'](function(){_0x1394a1[_0x7feb('0x15')](0xcc)['end']();});}};}function handleEntityNotFound(_0x4d6986,_0x110825){return function(_0x262996){if(!_0x262996){_0x4d6986[_0x7feb('0x13')](0x194);}return _0x262996;};}function handleError(_0x15ea94,_0x2a6dc6){_0x2a6dc6=_0x2a6dc6||0x1f4;return function(_0x1238b0){logger[_0x7feb('0x1d')](_0x1238b0[_0x7feb('0x1e')]);if(_0x1238b0[_0x7feb('0x1f')]){delete _0x1238b0[_0x7feb('0x1f')];}_0x15ea94[_0x7feb('0x15')](_0x2a6dc6)[_0x7feb('0x20')](_0x1238b0);};}exports[_0x7feb('0x21')]=function(_0x2f59a0,_0x3bca90){var _0x1a06fa={},_0x51a204={},_0x4b1e69={'count':0x0,'rows':[]};var _0x3a62e3=_[_0x7feb('0x22')](db[_0x7feb('0x23')][_0x7feb('0x24')],function(_0x23c103){return{'name':_0x23c103['fieldName'],'type':_0x23c103[_0x7feb('0x25')]['key']};});_0x51a204['model']=_[_0x7feb('0x22')](_0x3a62e3,_0x7feb('0x1f'));_0x51a204[_0x7feb('0x26')]=_[_0x7feb('0x27')](_0x2f59a0[_0x7feb('0x26')]);_0x51a204[_0x7feb('0x28')]=_[_0x7feb('0x29')](_0x51a204[_0x7feb('0x2a')],_0x51a204[_0x7feb('0x26')]);_0x1a06fa[_0x7feb('0x2b')]=_[_0x7feb('0x29')](_0x51a204[_0x7feb('0x2a')],qs[_0x7feb('0x2c')](_0x2f59a0[_0x7feb('0x26')]['fields']));_0x1a06fa[_0x7feb('0x2b')]=_0x1a06fa[_0x7feb('0x2b')][_0x7feb('0x2d')]?_0x1a06fa[_0x7feb('0x2b')]:_0x51a204[_0x7feb('0x2a')];if(!_0x2f59a0['query'][_0x7feb('0x2e')](_0x7feb('0x2f'))){_0x1a06fa[_0x7feb('0x19')]=qs[_0x7feb('0x19')](_0x2f59a0[_0x7feb('0x26')][_0x7feb('0x19')]);_0x1a06fa[_0x7feb('0x18')]=qs[_0x7feb('0x18')](_0x2f59a0[_0x7feb('0x26')][_0x7feb('0x18')]);}_0x1a06fa['order']=qs[_0x7feb('0x30')](_0x2f59a0[_0x7feb('0x26')][_0x7feb('0x30')]);_0x1a06fa['where']=qs[_0x7feb('0x28')](_['pick'](_0x2f59a0[_0x7feb('0x26')],_0x51a204[_0x7feb('0x28')]),_0x3a62e3);if(_0x2f59a0['query'][_0x7feb('0x31')]){_0x1a06fa['where']=_[_0x7feb('0x32')](_0x1a06fa['where'],{'$or':_[_0x7feb('0x22')](_0x3a62e3,function(_0x4a36e6){if(_0x4a36e6['type']!==_0x7feb('0x33')){var _0x66e0c9={};_0x66e0c9[_0x4a36e6[_0x7feb('0x1f')]]={'$like':'%'+_0x2f59a0['query']['filter']+'%'};return _0x66e0c9;}})});}_0x1a06fa=_[_0x7feb('0x32')]({},_0x1a06fa,_0x2f59a0[_0x7feb('0x34')]);var _0x16647d={'where':_0x1a06fa[_0x7feb('0x35')]};return db[_0x7feb('0x23')][_0x7feb('0x17')](_0x16647d)[_0x7feb('0x36')](function(_0x5a5820){_0x4b1e69[_0x7feb('0x17')]=_0x5a5820;if(_0x2f59a0['query'][_0x7feb('0x37')]){_0x1a06fa['include']=[{'all':!![]}];}return db['FaxQueueReport'][_0x7feb('0x38')](_0x1a06fa);})[_0x7feb('0x36')](function(_0x27fdb6){_0x4b1e69[_0x7feb('0x39')]=_0x27fdb6;return _0x4b1e69;})['then'](respondWithFilteredResult(_0x3bca90,_0x1a06fa))['catch'](handleError(_0x3bca90,null));};exports[_0x7feb('0x3a')]=function(_0x4023f7,_0x55b2f6){var _0x324755={'raw':!![],'where':{'id':_0x4023f7[_0x7feb('0x3b')]['id']}},_0x52a8b7={};_0x52a8b7[_0x7feb('0x2a')]=_['keys'](db[_0x7feb('0x23')][_0x7feb('0x24')]);_0x52a8b7['query']=_[_0x7feb('0x27')](_0x4023f7[_0x7feb('0x26')]);_0x52a8b7[_0x7feb('0x28')]=_[_0x7feb('0x29')](_0x52a8b7['model'],_0x52a8b7[_0x7feb('0x26')]);_0x324755[_0x7feb('0x2b')]=_['intersection'](_0x52a8b7[_0x7feb('0x2a')],qs[_0x7feb('0x2c')](_0x4023f7[_0x7feb('0x26')][_0x7feb('0x2c')]));_0x324755['attributes']=_0x324755[_0x7feb('0x2b')][_0x7feb('0x2d')]?_0x324755[_0x7feb('0x2b')]:_0x52a8b7['model'];if(_0x4023f7[_0x7feb('0x26')][_0x7feb('0x37')]){_0x324755[_0x7feb('0x3c')]=[{'all':!![]}];}_0x324755=_[_0x7feb('0x32')]({},_0x324755,_0x4023f7['options']);return db[_0x7feb('0x23')][_0x7feb('0x3d')](_0x324755)[_0x7feb('0x36')](handleEntityNotFound(_0x55b2f6,null))[_0x7feb('0x36')](respondWithResult(_0x55b2f6,null))[_0x7feb('0x3e')](handleError(_0x55b2f6,null));};exports[_0x7feb('0x3f')]=function(_0x658403,_0x41c9f2){return db[_0x7feb('0x23')][_0x7feb('0x3f')](_0x658403['body'],{})['then'](respondWithResult(_0x41c9f2,0xc9))[_0x7feb('0x3e')](handleError(_0x41c9f2,null));};exports['update']=function(_0x3a0e0f,_0x42d292){if(_0x3a0e0f[_0x7feb('0x40')]['id']){delete _0x3a0e0f[_0x7feb('0x40')]['id'];}return db[_0x7feb('0x23')][_0x7feb('0x3d')]({'where':{'id':_0x3a0e0f[_0x7feb('0x3b')]['id']}})['then'](handleEntityNotFound(_0x42d292,null))[_0x7feb('0x36')](saveUpdates(_0x3a0e0f[_0x7feb('0x40')],null))['then'](respondWithResult(_0x42d292,null))['catch'](handleError(_0x42d292,null));};exports[_0x7feb('0x41')]=function(_0x2c2a73,_0x1f2efa){return db[_0x7feb('0x23')][_0x7feb('0x3d')]({'where':{'id':_0x2c2a73['params']['id']}})[_0x7feb('0x36')](handleEntityNotFound(_0x1f2efa,null))['then'](removeEntity(_0x1f2efa,null))[_0x7feb('0x3e')](handleError(_0x1f2efa,null));};exports[_0x7feb('0x42')]=function(_0x3458e5,_0x2118e7){return db[_0x7feb('0x23')][_0x7feb('0x42')]()['then'](respondWithResult(_0x2118e7,null))[_0x7feb('0x3e')](handleError(_0x2118e7,null));};
\ No newline at end of file
+var _0x87f8=['offset','set','Content-Range','apply','reject','save','update','then','destroy','end','stack','send','index','map','FaxQueueReport','type','model','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','VIRTUAL','merge','includeAll','include','findAll','catch','show','rawAttributes','options','find','create','body','params','describe','fast-json-patch','request-promise','bluebird','util','path','sox','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','api','../../config/utils','../../mysqldb','sendStatus','status','json','undefined','limit','count'];(function(_0x352b44,_0x4a91a1){var _0x3e8baa=function(_0xed4bc3){while(--_0xed4bc3){_0x352b44['push'](_0x352b44['shift']());}};_0x3e8baa(++_0x4a91a1);}(_0x87f8,0x152));var _0x887f=function(_0x593121,_0x3a4ecf){_0x593121=_0x593121-0x0;var _0x35c6e4=_0x87f8[_0x593121];return _0x35c6e4;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require('zip-dir');var jsonpatch=require(_0x887f('0x0'));var rp=require(_0x887f('0x1'));var moment=require('moment');var BPromise=require(_0x887f('0x2'));var Mustache=require('mustache');var util=require(_0x887f('0x3'));var path=require(_0x887f('0x4'));var sox=require(_0x887f('0x5'));var csv=require(_0x887f('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x887f('0x7'));var _=require(_0x887f('0x8'));var squel=require(_0x887f('0x9'));var crypto=require(_0x887f('0xa'));var jsforce=require(_0x887f('0xb'));var deskjs=require(_0x887f('0xc'));var toCsv=require(_0x887f('0x6'));var querystring=require('querystring');var Papa=require(_0x887f('0xd'));var Redis=require('ioredis');var authService=require(_0x887f('0xe'));var qs=require(_0x887f('0xf'));var as=require(_0x887f('0x10'));var hardwareService=require(_0x887f('0x11'));var logger=require('../../config/logger')(_0x887f('0x12'));var utils=require(_0x887f('0x13'));var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x887f('0x14'))['db'];function respondWithStatusCode(_0x32b6c4,_0x32e050){_0x32e050=_0x32e050||0xcc;return function(_0x589e92){if(_0x589e92){return _0x32b6c4[_0x887f('0x15')](_0x32e050);}return _0x32b6c4[_0x887f('0x16')](_0x32e050)['end']();};}function respondWithResult(_0x16bbc4,_0x58152e){_0x58152e=_0x58152e||0xc8;return function(_0x59b7ab){if(_0x59b7ab){return _0x16bbc4[_0x887f('0x16')](_0x58152e)[_0x887f('0x17')](_0x59b7ab);}};}function respondWithFilteredResult(_0x59ed6c,_0x3f189a){return function(_0xf69779){if(_0xf69779){var _0x9f5d78=typeof _0x3f189a['offset']===_0x887f('0x18')&&typeof _0x3f189a[_0x887f('0x19')]==='undefined';var _0x2e8999=_0xf69779[_0x887f('0x1a')];var _0x3ab397=_0x9f5d78?0x0:_0x3f189a[_0x887f('0x1b')];var _0x2399a5=_0x9f5d78?_0xf69779[_0x887f('0x1a')]:_0x3f189a[_0x887f('0x1b')]+_0x3f189a[_0x887f('0x19')];var _0x342e8e;if(_0x2399a5>=_0x2e8999){_0x2399a5=_0x2e8999;_0x342e8e=0xc8;}else{_0x342e8e=0xce;}_0x59ed6c[_0x887f('0x16')](_0x342e8e);return _0x59ed6c[_0x887f('0x1c')](_0x887f('0x1d'),_0x3ab397+'-'+_0x2399a5+'/'+_0x2e8999)[_0x887f('0x17')](_0xf69779);}return null;};}function patchUpdates(_0x4deddd){return function(_0x129106){try{jsonpatch[_0x887f('0x1e')](_0x129106,_0x4deddd,!![]);}catch(_0x49af51){return BPromise[_0x887f('0x1f')](_0x49af51);}return _0x129106[_0x887f('0x20')]();};}function saveUpdates(_0x48fd49,_0xc09608){return function(_0x56beaa){if(_0x56beaa){return _0x56beaa[_0x887f('0x21')](_0x48fd49)[_0x887f('0x22')](function(_0x566fb9){return _0x566fb9;});}return null;};}function removeEntity(_0x338777,_0x3af68e){return function(_0x3d6948){if(_0x3d6948){return _0x3d6948[_0x887f('0x23')]()['then'](function(){_0x338777[_0x887f('0x16')](0xcc)[_0x887f('0x24')]();});}};}function handleEntityNotFound(_0x5c7f41,_0x1a1657){return function(_0x42c8bd){if(!_0x42c8bd){_0x5c7f41['sendStatus'](0x194);}return _0x42c8bd;};}function handleError(_0x1811e6,_0x7eef96){_0x7eef96=_0x7eef96||0x1f4;return function(_0x108890){logger['error'](_0x108890[_0x887f('0x25')]);if(_0x108890['name']){delete _0x108890['name'];}_0x1811e6[_0x887f('0x16')](_0x7eef96)[_0x887f('0x26')](_0x108890);};}exports[_0x887f('0x27')]=function(_0x2f20ce,_0x1c5ce3){var _0x4e1fe1={},_0x59d489={},_0x4238e0={'count':0x0,'rows':[]};var _0xca31ec=_[_0x887f('0x28')](db[_0x887f('0x29')]['rawAttributes'],function(_0x39a9ce){return{'name':_0x39a9ce['fieldName'],'type':_0x39a9ce[_0x887f('0x2a')]['key']};});_0x59d489[_0x887f('0x2b')]=_[_0x887f('0x28')](_0xca31ec,_0x887f('0x2c'));_0x59d489[_0x887f('0x2d')]=_[_0x887f('0x2e')](_0x2f20ce[_0x887f('0x2d')]);_0x59d489[_0x887f('0x2f')]=_[_0x887f('0x30')](_0x59d489['model'],_0x59d489[_0x887f('0x2d')]);_0x4e1fe1[_0x887f('0x31')]=_[_0x887f('0x30')](_0x59d489[_0x887f('0x2b')],qs[_0x887f('0x32')](_0x2f20ce[_0x887f('0x2d')]['fields']));_0x4e1fe1[_0x887f('0x31')]=_0x4e1fe1[_0x887f('0x31')][_0x887f('0x33')]?_0x4e1fe1[_0x887f('0x31')]:_0x59d489[_0x887f('0x2b')];if(!_0x2f20ce['query'][_0x887f('0x34')](_0x887f('0x35'))){_0x4e1fe1['limit']=qs[_0x887f('0x19')](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x19')]);_0x4e1fe1['offset']=qs[_0x887f('0x1b')](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x1b')]);}_0x4e1fe1[_0x887f('0x36')]=qs['sort'](_0x2f20ce[_0x887f('0x2d')][_0x887f('0x37')]);_0x4e1fe1['where']=qs['filters'](_[_0x887f('0x38')](_0x2f20ce[_0x887f('0x2d')],_0x59d489[_0x887f('0x2f')]),_0xca31ec);if(_0x2f20ce['query'][_0x887f('0x39')]){_0x4e1fe1['where']=_['merge'](_0x4e1fe1[_0x887f('0x3a')],{'$or':_[_0x887f('0x28')](_0xca31ec,function(_0x436486){if(_0x436486['type']!==_0x887f('0x3b')){var _0xc2df3b={};_0xc2df3b[_0x436486[_0x887f('0x2c')]]={'$like':'%'+_0x2f20ce['query'][_0x887f('0x39')]+'%'};return _0xc2df3b;}})});}_0x4e1fe1=_[_0x887f('0x3c')]({},_0x4e1fe1,_0x2f20ce['options']);var _0x4022fa={'where':_0x4e1fe1[_0x887f('0x3a')]};return db[_0x887f('0x29')][_0x887f('0x1a')](_0x4022fa)[_0x887f('0x22')](function(_0xd6bf57){_0x4238e0['count']=_0xd6bf57;if(_0x2f20ce[_0x887f('0x2d')][_0x887f('0x3d')]){_0x4e1fe1[_0x887f('0x3e')]=[{'all':!![]}];}return db[_0x887f('0x29')][_0x887f('0x3f')](_0x4e1fe1);})[_0x887f('0x22')](function(_0x2be724){_0x4238e0['rows']=_0x2be724;return _0x4238e0;})[_0x887f('0x22')](respondWithFilteredResult(_0x1c5ce3,_0x4e1fe1))[_0x887f('0x40')](handleError(_0x1c5ce3,null));};exports[_0x887f('0x41')]=function(_0x34594a,_0x55e700){var _0x134f2e={'raw':!![],'where':{'id':_0x34594a['params']['id']}},_0x79cf46={};_0x79cf46[_0x887f('0x2b')]=_['keys'](db['FaxQueueReport'][_0x887f('0x42')]);_0x79cf46[_0x887f('0x2d')]=_[_0x887f('0x2e')](_0x34594a[_0x887f('0x2d')]);_0x79cf46[_0x887f('0x2f')]=_[_0x887f('0x30')](_0x79cf46['model'],_0x79cf46[_0x887f('0x2d')]);_0x134f2e[_0x887f('0x31')]=_[_0x887f('0x30')](_0x79cf46[_0x887f('0x2b')],qs[_0x887f('0x32')](_0x34594a[_0x887f('0x2d')][_0x887f('0x32')]));_0x134f2e[_0x887f('0x31')]=_0x134f2e[_0x887f('0x31')][_0x887f('0x33')]?_0x134f2e['attributes']:_0x79cf46[_0x887f('0x2b')];if(_0x34594a[_0x887f('0x2d')][_0x887f('0x3d')]){_0x134f2e['include']=[{'all':!![]}];}_0x134f2e=_[_0x887f('0x3c')]({},_0x134f2e,_0x34594a[_0x887f('0x43')]);return db['FaxQueueReport'][_0x887f('0x44')](_0x134f2e)[_0x887f('0x22')](handleEntityNotFound(_0x55e700,null))[_0x887f('0x22')](respondWithResult(_0x55e700,null))[_0x887f('0x40')](handleError(_0x55e700,null));};exports[_0x887f('0x45')]=function(_0xbd961e,_0x22b11f){return db['FaxQueueReport']['create'](_0xbd961e[_0x887f('0x46')],{})[_0x887f('0x22')](respondWithResult(_0x22b11f,0xc9))['catch'](handleError(_0x22b11f,null));};exports[_0x887f('0x21')]=function(_0x3fcd12,_0x2bdd65){if(_0x3fcd12[_0x887f('0x46')]['id']){delete _0x3fcd12[_0x887f('0x46')]['id'];}return db[_0x887f('0x29')]['find']({'where':{'id':_0x3fcd12['params']['id']}})[_0x887f('0x22')](handleEntityNotFound(_0x2bdd65,null))['then'](saveUpdates(_0x3fcd12[_0x887f('0x46')],null))['then'](respondWithResult(_0x2bdd65,null))[_0x887f('0x40')](handleError(_0x2bdd65,null));};exports[_0x887f('0x23')]=function(_0x32e630,_0x417c8d){return db[_0x887f('0x29')]['find']({'where':{'id':_0x32e630[_0x887f('0x47')]['id']}})[_0x887f('0x22')](handleEntityNotFound(_0x417c8d,null))[_0x887f('0x22')](removeEntity(_0x417c8d,null))[_0x887f('0x40')](handleError(_0x417c8d,null));};exports[_0x887f('0x48')]=function(_0x809211,_0x320f54){return db[_0x887f('0x29')]['describe']()[_0x887f('0x22')](respondWithResult(_0x320f54,null))[_0x887f('0x40')](handleError(_0x320f54,null));};
\ No newline at end of file