Built motion from commit 85328c08.|2.5.50
[motion2.git] / server / api / faxTransferReport / faxTransferReport.controller.js
index 680287e..92c38ca 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2032=['mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/logger','../../config/utils','../../mysqldb','status','json','count','offset','limit','set','Content-Range','apply','reject','save','update','destroy','sendStatus','error','stack','name','send','map','FaxTransferReport','rawAttributes','type','key','model','query','keys','filters','fields','attributes','length','hasOwnProperty','order','sort','pick','filter','where','VIRTUAL','merge','options','then','includeAll','include','findAll','rows','show','intersection','find','create','body','catch','params','describe','eml-format','rimraf','zip-dir','request-promise','moment'];(function(_0xe48525,_0x16fe2f){var _0x11bdba=function(_0x4593c2){while(--_0x4593c2){_0xe48525['push'](_0xe48525['shift']());}};_0x11bdba(++_0x16fe2f);}(_0x2032,0xd9));var _0x2203=function(_0x52965a,_0x3e9625){_0x52965a=_0x52965a-0x0;var _0x988a4e=_0x2032[_0x52965a];return _0x988a4e;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0x2203('0x0'));var rimraf=require(_0x2203('0x1'));var zipdir=require(_0x2203('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x2203('0x3'));var moment=require(_0x2203('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x2203('0x5'));var util=require(_0x2203('0x6'));var path=require(_0x2203('0x7'));var sox=require(_0x2203('0x8'));var csv=require(_0x2203('0x9'));var ejs=require(_0x2203('0xa'));var fs=require('fs');var _=require(_0x2203('0xb'));var squel=require(_0x2203('0xc'));var crypto=require(_0x2203('0xd'));var jsforce=require(_0x2203('0xe'));var deskjs=require(_0x2203('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0x2203('0x10'));var Redis=require('ioredis');var authService=require(_0x2203('0x11'));var qs=require(_0x2203('0x12'));var as=require(_0x2203('0x13'));var hardwareService=require('../../config/license/hardware');var logger=require(_0x2203('0x14'))('api');var utils=require(_0x2203('0x15'));var config=require('../../config/environment');var db=require(_0x2203('0x16'))['db'];function respondWithStatusCode(_0x1abb51,_0x4b9376){_0x4b9376=_0x4b9376||0xcc;return function(_0x583bc7){if(_0x583bc7){return _0x1abb51['sendStatus'](_0x4b9376);}return _0x1abb51['status'](_0x4b9376)['end']();};}function respondWithResult(_0x238772,_0x538b30){_0x538b30=_0x538b30||0xc8;return function(_0x592e47){if(_0x592e47){return _0x238772[_0x2203('0x17')](_0x538b30)[_0x2203('0x18')](_0x592e47);}};}function respondWithFilteredResult(_0x1c1ead,_0x41af85){return function(_0x226209){if(_0x226209){var _0x3fe0a8=_0x226209[_0x2203('0x19')],_0x2c36e6=_0x41af85['offset'],_0x2c085c=_0x41af85[_0x2203('0x1a')]+_0x41af85[_0x2203('0x1b')],_0xdf9d0b;if(_0x2c085c>=_0x3fe0a8){_0x2c085c=_0x3fe0a8;_0xdf9d0b=0xc8;}else{_0xdf9d0b=0xce;}_0x1c1ead['status'](_0xdf9d0b);return _0x1c1ead[_0x2203('0x1c')](_0x2203('0x1d'),_0x2c36e6+'-'+_0x2c085c+'/'+_0x3fe0a8)['json'](_0x226209);}return null;};}function patchUpdates(_0x30c6f7){return function(_0x5ee83c){try{jsonpatch[_0x2203('0x1e')](_0x5ee83c,_0x30c6f7,!![]);}catch(_0x310b8c){return BPromise[_0x2203('0x1f')](_0x310b8c);}return _0x5ee83c[_0x2203('0x20')]();};}function saveUpdates(_0x15cb1a,_0x449039){return function(_0x538c23){if(_0x538c23){return _0x538c23[_0x2203('0x21')](_0x15cb1a)['then'](function(_0x5ac866){return _0x5ac866;});}return null;};}function removeEntity(_0x15f543,_0x496d82){return function(_0x3b8ef9){if(_0x3b8ef9){return _0x3b8ef9[_0x2203('0x22')]()['then'](function(){_0x15f543[_0x2203('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5c8da9,_0x226374){return function(_0x2718f5){if(!_0x2718f5){_0x5c8da9[_0x2203('0x23')](0x194);}return _0x2718f5;};}function handleError(_0xfd0970,_0x1244f4){_0x1244f4=_0x1244f4||0x1f4;return function(_0x3114ef){logger[_0x2203('0x24')](_0x3114ef[_0x2203('0x25')]);if(_0x3114ef['name']){delete _0x3114ef[_0x2203('0x26')];}_0xfd0970[_0x2203('0x17')](_0x1244f4)[_0x2203('0x27')](_0x3114ef);};}exports['index']=function(_0xb2071b,_0x1cec17){var _0x5c5fd3={},_0xd6e109={},_0xd91f5d={'count':0x0,'rows':[]};var _0x1c6a77=_[_0x2203('0x28')](db[_0x2203('0x29')][_0x2203('0x2a')],function(_0x9c53f){return{'name':_0x9c53f['fieldName'],'type':_0x9c53f[_0x2203('0x2b')][_0x2203('0x2c')]};});_0xd6e109[_0x2203('0x2d')]=_[_0x2203('0x28')](_0x1c6a77,'name');_0xd6e109[_0x2203('0x2e')]=_[_0x2203('0x2f')](_0xb2071b[_0x2203('0x2e')]);_0xd6e109[_0x2203('0x30')]=_['intersection'](_0xd6e109[_0x2203('0x2d')],_0xd6e109[_0x2203('0x2e')]);_0x5c5fd3['attributes']=_['intersection'](_0xd6e109[_0x2203('0x2d')],qs['fields'](_0xb2071b['query'][_0x2203('0x31')]));_0x5c5fd3[_0x2203('0x32')]=_0x5c5fd3[_0x2203('0x32')][_0x2203('0x33')]?_0x5c5fd3[_0x2203('0x32')]:_0xd6e109['model'];if(!_0xb2071b[_0x2203('0x2e')][_0x2203('0x34')]('nolimit')){_0x5c5fd3[_0x2203('0x1b')]=qs[_0x2203('0x1b')](_0xb2071b[_0x2203('0x2e')][_0x2203('0x1b')]);_0x5c5fd3[_0x2203('0x1a')]=qs[_0x2203('0x1a')](_0xb2071b[_0x2203('0x2e')][_0x2203('0x1a')]);}_0x5c5fd3[_0x2203('0x35')]=qs['sort'](_0xb2071b[_0x2203('0x2e')][_0x2203('0x36')]);_0x5c5fd3['where']=qs['filters'](_[_0x2203('0x37')](_0xb2071b['query'],_0xd6e109[_0x2203('0x30')]),_0x1c6a77);if(_0xb2071b[_0x2203('0x2e')][_0x2203('0x38')]){_0x5c5fd3['where']=_['merge'](_0x5c5fd3[_0x2203('0x39')],{'$or':_['map'](_0x1c6a77,function(_0x2d0365){if(_0x2d0365['type']!==_0x2203('0x3a')){var _0x4b6fc5={};_0x4b6fc5[_0x2d0365[_0x2203('0x26')]]={'$like':'%'+_0xb2071b[_0x2203('0x2e')][_0x2203('0x38')]+'%'};return _0x4b6fc5;}})});}_0x5c5fd3=_[_0x2203('0x3b')]({},_0x5c5fd3,_0xb2071b[_0x2203('0x3c')]);var _0x5436d2={'where':_0x5c5fd3['where']};return db['FaxTransferReport'][_0x2203('0x19')](_0x5436d2)[_0x2203('0x3d')](function(_0x323798){_0xd91f5d[_0x2203('0x19')]=_0x323798;if(_0xb2071b[_0x2203('0x2e')][_0x2203('0x3e')]){_0x5c5fd3[_0x2203('0x3f')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x2203('0x40')](_0x5c5fd3);})[_0x2203('0x3d')](function(_0x108fde){_0xd91f5d[_0x2203('0x41')]=_0x108fde;return _0xd91f5d;})['then'](respondWithFilteredResult(_0x1cec17,_0x5c5fd3))['catch'](handleError(_0x1cec17,null));};exports[_0x2203('0x42')]=function(_0x5494a1,_0x330303){var _0x446209={'raw':!![],'where':{'id':_0x5494a1['params']['id']}},_0x132091={};_0x132091['model']=_[_0x2203('0x2f')](db[_0x2203('0x29')][_0x2203('0x2a')]);_0x132091[_0x2203('0x2e')]=_[_0x2203('0x2f')](_0x5494a1[_0x2203('0x2e')]);_0x132091['filters']=_[_0x2203('0x43')](_0x132091[_0x2203('0x2d')],_0x132091[_0x2203('0x2e')]);_0x446209[_0x2203('0x32')]=_[_0x2203('0x43')](_0x132091[_0x2203('0x2d')],qs[_0x2203('0x31')](_0x5494a1[_0x2203('0x2e')][_0x2203('0x31')]));_0x446209[_0x2203('0x32')]=_0x446209['attributes'][_0x2203('0x33')]?_0x446209[_0x2203('0x32')]:_0x132091[_0x2203('0x2d')];if(_0x5494a1[_0x2203('0x2e')]['includeAll']){_0x446209['include']=[{'all':!![]}];}_0x446209=_[_0x2203('0x3b')]({},_0x446209,_0x5494a1['options']);return db[_0x2203('0x29')][_0x2203('0x44')](_0x446209)[_0x2203('0x3d')](handleEntityNotFound(_0x330303,null))[_0x2203('0x3d')](respondWithResult(_0x330303,null))['catch'](handleError(_0x330303,null));};exports[_0x2203('0x45')]=function(_0x102803,_0x5cd8c6){return db[_0x2203('0x29')][_0x2203('0x45')](_0x102803[_0x2203('0x46')],{})[_0x2203('0x3d')](respondWithResult(_0x5cd8c6,0xc9))['catch'](handleError(_0x5cd8c6,null));};exports['update']=function(_0x21b8ab,_0x5707c8){if(_0x21b8ab['body']['id']){delete _0x21b8ab[_0x2203('0x46')]['id'];}return db[_0x2203('0x29')][_0x2203('0x44')]({'where':{'id':_0x21b8ab['params']['id']}})['then'](handleEntityNotFound(_0x5707c8,null))[_0x2203('0x3d')](saveUpdates(_0x21b8ab[_0x2203('0x46')],null))[_0x2203('0x3d')](respondWithResult(_0x5707c8,null))[_0x2203('0x47')](handleError(_0x5707c8,null));};exports[_0x2203('0x22')]=function(_0x21fd78,_0x4a7f4e){return db[_0x2203('0x29')]['find']({'where':{'id':_0x21fd78[_0x2203('0x48')]['id']}})[_0x2203('0x3d')](handleEntityNotFound(_0x4a7f4e,null))[_0x2203('0x3d')](removeEntity(_0x4a7f4e,null))[_0x2203('0x47')](handleError(_0x4a7f4e,null));};exports['describe']=function(_0x506795,_0x30d503){return db[_0x2203('0x29')][_0x2203('0x49')]()[_0x2203('0x3d')](respondWithResult(_0x30d503,null))['catch'](handleError(_0x30d503,null));};
\ No newline at end of file
+var _0xa5e5=['hasOwnProperty','sort','pick','filter','where','name','options','includeAll','include','findAll','rows','catch','show','params','merge','create','body','find','describe','rimraf','zip-dir','fast-json-patch','moment','bluebird','mustache','util','sox','to-csv','fs-extra','lodash','jsforce','desk.js','querystring','papaparse','ioredis','../../config/license/hardware','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','end','offset','undefined','limit','count','status','Content-Range','json','apply','reject','save','update','destroy','then','stack','send','index','map','FaxTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields'];(function(_0x1573ea,_0x434f02){var _0x51c0e2=function(_0x5c9b28){while(--_0x5c9b28){_0x1573ea['push'](_0x1573ea['shift']());}};_0x51c0e2(++_0x434f02);}(_0xa5e5,0xeb));var _0x5a5e=function(_0x1b349a,_0x22222c){_0x1b349a=_0x1b349a-0x0;var _0x5d1f7c=_0xa5e5[_0x1b349a];return _0x5d1f7c;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x5a5e('0x0'));var zipdir=require(_0x5a5e('0x1'));var jsonpatch=require(_0x5a5e('0x2'));var rp=require('request-promise');var moment=require(_0x5a5e('0x3'));var BPromise=require(_0x5a5e('0x4'));var Mustache=require(_0x5a5e('0x5'));var util=require(_0x5a5e('0x6'));var path=require('path');var sox=require(_0x5a5e('0x7'));var csv=require(_0x5a5e('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x5a5e('0x9'));var _=require(_0x5a5e('0xa'));var squel=require('squel');var crypto=require('crypto');var jsforce=require(_0x5a5e('0xb'));var deskjs=require(_0x5a5e('0xc'));var toCsv=require('to-csv');var querystring=require(_0x5a5e('0xd'));var Papa=require(_0x5a5e('0xe'));var Redis=require(_0x5a5e('0xf'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0x5a5e('0x10'));var logger=require('../../config/logger')(_0x5a5e('0x11'));var utils=require(_0x5a5e('0x12'));var config=require(_0x5a5e('0x13'));var licenseUtil=require(_0x5a5e('0x14'));var db=require(_0x5a5e('0x15'))['db'];function respondWithStatusCode(_0x222445,_0x5440d8){_0x5440d8=_0x5440d8||0xcc;return function(_0x2d2aa9){if(_0x2d2aa9){return _0x222445[_0x5a5e('0x16')](_0x5440d8);}return _0x222445['status'](_0x5440d8)[_0x5a5e('0x17')]();};}function respondWithResult(_0x4ca7a6,_0x5ecfe8){_0x5ecfe8=_0x5ecfe8||0xc8;return function(_0x356c83){if(_0x356c83){return _0x4ca7a6['status'](_0x5ecfe8)['json'](_0x356c83);}};}function respondWithFilteredResult(_0x41517a,_0x155b3b){return function(_0x2bcdf3){if(_0x2bcdf3){var _0x58201a=typeof _0x155b3b[_0x5a5e('0x18')]===_0x5a5e('0x19')&&typeof _0x155b3b[_0x5a5e('0x1a')]==='undefined';var _0x21c62d=_0x2bcdf3[_0x5a5e('0x1b')];var _0x4b3f6d=_0x58201a?0x0:_0x155b3b[_0x5a5e('0x18')];var _0x599f6f=_0x58201a?_0x2bcdf3[_0x5a5e('0x1b')]:_0x155b3b[_0x5a5e('0x18')]+_0x155b3b['limit'];var _0x9cd67f;if(_0x599f6f>=_0x21c62d){_0x599f6f=_0x21c62d;_0x9cd67f=0xc8;}else{_0x9cd67f=0xce;}_0x41517a[_0x5a5e('0x1c')](_0x9cd67f);return _0x41517a['set'](_0x5a5e('0x1d'),_0x4b3f6d+'-'+_0x599f6f+'/'+_0x21c62d)[_0x5a5e('0x1e')](_0x2bcdf3);}return null;};}function patchUpdates(_0x33f895){return function(_0x22e5bf){try{jsonpatch[_0x5a5e('0x1f')](_0x22e5bf,_0x33f895,!![]);}catch(_0xf1e631){return BPromise[_0x5a5e('0x20')](_0xf1e631);}return _0x22e5bf[_0x5a5e('0x21')]();};}function saveUpdates(_0x20c6b1,_0x2fcff4){return function(_0x3558c9){if(_0x3558c9){return _0x3558c9[_0x5a5e('0x22')](_0x20c6b1)['then'](function(_0x1b9e92){return _0x1b9e92;});}return null;};}function removeEntity(_0x554b71,_0x3759fe){return function(_0x42f97d){if(_0x42f97d){return _0x42f97d[_0x5a5e('0x23')]()[_0x5a5e('0x24')](function(){_0x554b71['status'](0xcc)[_0x5a5e('0x17')]();});}};}function handleEntityNotFound(_0x48fa83,_0x58667d){return function(_0x4162d4){if(!_0x4162d4){_0x48fa83[_0x5a5e('0x16')](0x194);}return _0x4162d4;};}function handleError(_0x187e4c,_0x1b5f93){_0x1b5f93=_0x1b5f93||0x1f4;return function(_0x489410){logger['error'](_0x489410[_0x5a5e('0x25')]);if(_0x489410['name']){delete _0x489410['name'];}_0x187e4c['status'](_0x1b5f93)[_0x5a5e('0x26')](_0x489410);};}exports[_0x5a5e('0x27')]=function(_0x1e649c,_0x5a3854){var _0x5004c5={},_0x58e26c={},_0x13e688={'count':0x0,'rows':[]};var _0x449d75=_[_0x5a5e('0x28')](db[_0x5a5e('0x29')][_0x5a5e('0x2a')],function(_0x359d04){return{'name':_0x359d04[_0x5a5e('0x2b')],'type':_0x359d04[_0x5a5e('0x2c')][_0x5a5e('0x2d')]};});_0x58e26c[_0x5a5e('0x2e')]=_[_0x5a5e('0x28')](_0x449d75,'name');_0x58e26c[_0x5a5e('0x2f')]=_[_0x5a5e('0x30')](_0x1e649c['query']);_0x58e26c[_0x5a5e('0x31')]=_[_0x5a5e('0x32')](_0x58e26c['model'],_0x58e26c[_0x5a5e('0x2f')]);_0x5004c5[_0x5a5e('0x33')]=_[_0x5a5e('0x32')](_0x58e26c[_0x5a5e('0x2e')],qs[_0x5a5e('0x34')](_0x1e649c[_0x5a5e('0x2f')][_0x5a5e('0x34')]));_0x5004c5[_0x5a5e('0x33')]=_0x5004c5['attributes']['length']?_0x5004c5[_0x5a5e('0x33')]:_0x58e26c[_0x5a5e('0x2e')];if(!_0x1e649c['query'][_0x5a5e('0x35')]('nolimit')){_0x5004c5[_0x5a5e('0x1a')]=qs[_0x5a5e('0x1a')](_0x1e649c[_0x5a5e('0x2f')][_0x5a5e('0x1a')]);_0x5004c5[_0x5a5e('0x18')]=qs['offset'](_0x1e649c[_0x5a5e('0x2f')][_0x5a5e('0x18')]);}_0x5004c5['order']=qs['sort'](_0x1e649c[_0x5a5e('0x2f')][_0x5a5e('0x36')]);_0x5004c5['where']=qs['filters'](_[_0x5a5e('0x37')](_0x1e649c['query'],_0x58e26c[_0x5a5e('0x31')]),_0x449d75);if(_0x1e649c['query'][_0x5a5e('0x38')]){_0x5004c5[_0x5a5e('0x39')]=_['merge'](_0x5004c5['where'],{'$or':_[_0x5a5e('0x28')](_0x449d75,function(_0x395a38){if(_0x395a38[_0x5a5e('0x2c')]!=='VIRTUAL'){var _0x340256={};_0x340256[_0x395a38[_0x5a5e('0x3a')]]={'$like':'%'+_0x1e649c['query'][_0x5a5e('0x38')]+'%'};return _0x340256;}})});}_0x5004c5=_['merge']({},_0x5004c5,_0x1e649c[_0x5a5e('0x3b')]);var _0x527773={'where':_0x5004c5[_0x5a5e('0x39')]};return db['FaxTransferReport'][_0x5a5e('0x1b')](_0x527773)[_0x5a5e('0x24')](function(_0x13a2ff){_0x13e688[_0x5a5e('0x1b')]=_0x13a2ff;if(_0x1e649c[_0x5a5e('0x2f')][_0x5a5e('0x3c')]){_0x5004c5[_0x5a5e('0x3d')]=[{'all':!![]}];}return db['FaxTransferReport'][_0x5a5e('0x3e')](_0x5004c5);})[_0x5a5e('0x24')](function(_0x3ae94e){_0x13e688[_0x5a5e('0x3f')]=_0x3ae94e;return _0x13e688;})[_0x5a5e('0x24')](respondWithFilteredResult(_0x5a3854,_0x5004c5))[_0x5a5e('0x40')](handleError(_0x5a3854,null));};exports[_0x5a5e('0x41')]=function(_0xd671e4,_0xef6808){var _0x32c2ec={'raw':!![],'where':{'id':_0xd671e4[_0x5a5e('0x42')]['id']}},_0xa95117={};_0xa95117['model']=_['keys'](db[_0x5a5e('0x29')][_0x5a5e('0x2a')]);_0xa95117['query']=_[_0x5a5e('0x30')](_0xd671e4['query']);_0xa95117[_0x5a5e('0x31')]=_[_0x5a5e('0x32')](_0xa95117[_0x5a5e('0x2e')],_0xa95117[_0x5a5e('0x2f')]);_0x32c2ec['attributes']=_['intersection'](_0xa95117[_0x5a5e('0x2e')],qs[_0x5a5e('0x34')](_0xd671e4[_0x5a5e('0x2f')]['fields']));_0x32c2ec[_0x5a5e('0x33')]=_0x32c2ec[_0x5a5e('0x33')]['length']?_0x32c2ec[_0x5a5e('0x33')]:_0xa95117[_0x5a5e('0x2e')];if(_0xd671e4[_0x5a5e('0x2f')][_0x5a5e('0x3c')]){_0x32c2ec[_0x5a5e('0x3d')]=[{'all':!![]}];}_0x32c2ec=_[_0x5a5e('0x43')]({},_0x32c2ec,_0xd671e4[_0x5a5e('0x3b')]);return db['FaxTransferReport']['find'](_0x32c2ec)[_0x5a5e('0x24')](handleEntityNotFound(_0xef6808,null))[_0x5a5e('0x24')](respondWithResult(_0xef6808,null))[_0x5a5e('0x40')](handleError(_0xef6808,null));};exports['create']=function(_0x3507b3,_0x185d04){return db['FaxTransferReport'][_0x5a5e('0x44')](_0x3507b3['body'],{})[_0x5a5e('0x24')](respondWithResult(_0x185d04,0xc9))['catch'](handleError(_0x185d04,null));};exports['update']=function(_0x8f72b,_0x3514bd){if(_0x8f72b[_0x5a5e('0x45')]['id']){delete _0x8f72b[_0x5a5e('0x45')]['id'];}return db[_0x5a5e('0x29')]['find']({'where':{'id':_0x8f72b[_0x5a5e('0x42')]['id']}})['then'](handleEntityNotFound(_0x3514bd,null))[_0x5a5e('0x24')](saveUpdates(_0x8f72b['body'],null))[_0x5a5e('0x24')](respondWithResult(_0x3514bd,null))[_0x5a5e('0x40')](handleError(_0x3514bd,null));};exports[_0x5a5e('0x23')]=function(_0x4db8f7,_0x309479){return db[_0x5a5e('0x29')][_0x5a5e('0x46')]({'where':{'id':_0x4db8f7[_0x5a5e('0x42')]['id']}})[_0x5a5e('0x24')](handleEntityNotFound(_0x309479,null))[_0x5a5e('0x24')](removeEntity(_0x309479,null))[_0x5a5e('0x40')](handleError(_0x309479,null));};exports['describe']=function(_0x4c8f81,_0x42384d){return db[_0x5a5e('0x29')][_0x5a5e('0x47')]()['then'](respondWithResult(_0x42384d,null))[_0x5a5e('0x40')](handleError(_0x42384d,null));};
\ No newline at end of file