Built motion from commit 47436d59.|2.6.7
[motion2.git] / server / api / intFreshsalesField / intFreshsalesField.controller.js
index 1c0a26f..13025ed 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x76d1=['squel','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','api','../../mysqldb','sendStatus','status','end','json','offset','limit','undefined','count','Content-Range','apply','save','update','then','destroy','error','stack','name','send','FreshsalesField','rawAttributes','fieldName','type','model','map','keys','query','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','catch','show','params','find','create','body','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','sox','to-csv','fs-extra'];(function(_0x30059c,_0x58098a){var _0x27e3b7=function(_0x7481ef){while(--_0x7481ef){_0x30059c['push'](_0x30059c['shift']());}};_0x27e3b7(++_0x58098a);}(_0x76d1,0x106));var _0x176d=function(_0x321bb2,_0x202794){_0x321bb2=_0x321bb2-0x0;var _0x9c12ed=_0x76d1[_0x321bb2];return _0x9c12ed;};'use strict';var emlformat=require(_0x176d('0x0'));var rimraf=require(_0x176d('0x1'));var zipdir=require(_0x176d('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x176d('0x3'));var BPromise=require(_0x176d('0x4'));var Mustache=require(_0x176d('0x5'));var util=require(_0x176d('0x6'));var path=require('path');var sox=require(_0x176d('0x7'));var csv=require(_0x176d('0x8'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x176d('0x9'));var _=require('lodash');var squel=require(_0x176d('0xa'));var crypto=require('crypto');var jsforce=require('jsforce');var deskjs=require(_0x176d('0xb'));var toCsv=require('to-csv');var querystring=require(_0x176d('0xc'));var Papa=require(_0x176d('0xd'));var Redis=require('ioredis');var authService=require(_0x176d('0xe'));var qs=require(_0x176d('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x176d('0x10'));var utils=require('../../config/utils');var config=require('../../config/environment');var licenseUtil=require('../../config/license/util');var db=require(_0x176d('0x11'))['db'];function respondWithStatusCode(_0x284420,_0x1e1c37){_0x1e1c37=_0x1e1c37||0xcc;return function(_0x258522){if(_0x258522){return _0x284420[_0x176d('0x12')](_0x1e1c37);}return _0x284420[_0x176d('0x13')](_0x1e1c37)[_0x176d('0x14')]();};}function respondWithResult(_0x47b513,_0x563f0f){_0x563f0f=_0x563f0f||0xc8;return function(_0x33f7b8){if(_0x33f7b8){return _0x47b513['status'](_0x563f0f)[_0x176d('0x15')](_0x33f7b8);}};}function respondWithFilteredResult(_0x3b091e,_0x4023d9){return function(_0x49e5b5){if(_0x49e5b5){var _0x2527a7=typeof _0x4023d9[_0x176d('0x16')]==='undefined'&&typeof _0x4023d9[_0x176d('0x17')]===_0x176d('0x18');var _0x47af47=_0x49e5b5[_0x176d('0x19')];var _0x2dbd86=_0x2527a7?0x0:_0x4023d9['offset'];var _0x9c0fe6=_0x2527a7?_0x49e5b5['count']:_0x4023d9[_0x176d('0x16')]+_0x4023d9[_0x176d('0x17')];var _0x38c57d;if(_0x9c0fe6>=_0x47af47){_0x9c0fe6=_0x47af47;_0x38c57d=0xc8;}else{_0x38c57d=0xce;}_0x3b091e['status'](_0x38c57d);return _0x3b091e['set'](_0x176d('0x1a'),_0x2dbd86+'-'+_0x9c0fe6+'/'+_0x47af47)[_0x176d('0x15')](_0x49e5b5);}return null;};}function patchUpdates(_0x415102){return function(_0x4b2211){try{jsonpatch[_0x176d('0x1b')](_0x4b2211,_0x415102,!![]);}catch(_0x1cd570){return BPromise['reject'](_0x1cd570);}return _0x4b2211[_0x176d('0x1c')]();};}function saveUpdates(_0x54ba52,_0x56b7be){return function(_0x117616){if(_0x117616){return _0x117616[_0x176d('0x1d')](_0x54ba52)[_0x176d('0x1e')](function(_0x11571c){return _0x11571c;});}return null;};}function removeEntity(_0xa0eb02,_0x39dce9){return function(_0x23e942){if(_0x23e942){return _0x23e942[_0x176d('0x1f')]()['then'](function(){_0xa0eb02[_0x176d('0x13')](0xcc)['end']();});}};}function handleEntityNotFound(_0x49a709,_0x29f69c){return function(_0x197ff0){if(!_0x197ff0){_0x49a709['sendStatus'](0x194);}return _0x197ff0;};}function handleError(_0xbbdce4,_0x24eeab){_0x24eeab=_0x24eeab||0x1f4;return function(_0x3a4152){logger[_0x176d('0x20')](_0x3a4152[_0x176d('0x21')]);if(_0x3a4152[_0x176d('0x22')]){delete _0x3a4152[_0x176d('0x22')];}_0xbbdce4[_0x176d('0x13')](_0x24eeab)[_0x176d('0x23')](_0x3a4152);};}exports['index']=function(_0x4216b9,_0x412208){var _0x59dd61={},_0x84c125={},_0x5717a9={'count':0x0,'rows':[]};var _0x8c4a09=_['map'](db[_0x176d('0x24')][_0x176d('0x25')],function(_0x3230ee){return{'name':_0x3230ee[_0x176d('0x26')],'type':_0x3230ee[_0x176d('0x27')]['key']};});_0x84c125[_0x176d('0x28')]=_[_0x176d('0x29')](_0x8c4a09,_0x176d('0x22'));_0x84c125['query']=_[_0x176d('0x2a')](_0x4216b9[_0x176d('0x2b')]);_0x84c125[_0x176d('0x2c')]=_[_0x176d('0x2d')](_0x84c125[_0x176d('0x28')],_0x84c125['query']);_0x59dd61[_0x176d('0x2e')]=_[_0x176d('0x2d')](_0x84c125[_0x176d('0x28')],qs[_0x176d('0x2f')](_0x4216b9[_0x176d('0x2b')]['fields']));_0x59dd61[_0x176d('0x2e')]=_0x59dd61['attributes'][_0x176d('0x30')]?_0x59dd61[_0x176d('0x2e')]:_0x84c125['model'];if(!_0x4216b9[_0x176d('0x2b')][_0x176d('0x31')](_0x176d('0x32'))){_0x59dd61[_0x176d('0x17')]=qs['limit'](_0x4216b9['query'][_0x176d('0x17')]);_0x59dd61[_0x176d('0x16')]=qs['offset'](_0x4216b9['query'][_0x176d('0x16')]);}_0x59dd61[_0x176d('0x33')]=qs[_0x176d('0x34')](_0x4216b9[_0x176d('0x2b')]['sort']);_0x59dd61['where']=qs['filters'](_[_0x176d('0x35')](_0x4216b9['query'],_0x84c125[_0x176d('0x2c')]),_0x8c4a09);if(_0x4216b9[_0x176d('0x2b')][_0x176d('0x36')]){_0x59dd61[_0x176d('0x37')]=_[_0x176d('0x38')](_0x59dd61['where'],{'$or':_[_0x176d('0x29')](_0x8c4a09,function(_0x1e0a15){if(_0x1e0a15[_0x176d('0x27')]!==_0x176d('0x39')){var _0x13e550={};_0x13e550[_0x1e0a15[_0x176d('0x22')]]={'$like':'%'+_0x4216b9[_0x176d('0x2b')][_0x176d('0x36')]+'%'};return _0x13e550;}})});}_0x59dd61=_[_0x176d('0x38')]({},_0x59dd61,_0x4216b9[_0x176d('0x3a')]);var _0x3f4b5d={'where':_0x59dd61[_0x176d('0x37')]};return db['FreshsalesField'][_0x176d('0x19')](_0x3f4b5d)['then'](function(_0x38eb55){_0x5717a9['count']=_0x38eb55;if(_0x4216b9['query'][_0x176d('0x3b')]){_0x59dd61[_0x176d('0x3c')]=[{'all':!![]}];}return db[_0x176d('0x24')][_0x176d('0x3d')](_0x59dd61);})[_0x176d('0x1e')](function(_0x5e2929){_0x5717a9['rows']=_0x5e2929;return _0x5717a9;})[_0x176d('0x1e')](respondWithFilteredResult(_0x412208,_0x59dd61))[_0x176d('0x3e')](handleError(_0x412208,null));};exports[_0x176d('0x3f')]=function(_0x4e25e1,_0x5a3575){var _0x27d883={'raw':!![],'where':{'id':_0x4e25e1[_0x176d('0x40')]['id']}},_0x5761c7={};_0x5761c7['model']=_[_0x176d('0x2a')](db[_0x176d('0x24')][_0x176d('0x25')]);_0x5761c7[_0x176d('0x2b')]=_[_0x176d('0x2a')](_0x4e25e1[_0x176d('0x2b')]);_0x5761c7[_0x176d('0x2c')]=_[_0x176d('0x2d')](_0x5761c7[_0x176d('0x28')],_0x5761c7[_0x176d('0x2b')]);_0x27d883['attributes']=_['intersection'](_0x5761c7[_0x176d('0x28')],qs[_0x176d('0x2f')](_0x4e25e1['query'][_0x176d('0x2f')]));_0x27d883[_0x176d('0x2e')]=_0x27d883[_0x176d('0x2e')][_0x176d('0x30')]?_0x27d883[_0x176d('0x2e')]:_0x5761c7[_0x176d('0x28')];if(_0x4e25e1['query'][_0x176d('0x3b')]){_0x27d883[_0x176d('0x3c')]=[{'all':!![]}];}_0x27d883=_['merge']({},_0x27d883,_0x4e25e1[_0x176d('0x3a')]);return db[_0x176d('0x24')][_0x176d('0x41')](_0x27d883)[_0x176d('0x1e')](handleEntityNotFound(_0x5a3575,null))[_0x176d('0x1e')](respondWithResult(_0x5a3575,null))[_0x176d('0x3e')](handleError(_0x5a3575,null));};exports[_0x176d('0x42')]=function(_0x526f36,_0x5e0d93){return db[_0x176d('0x24')][_0x176d('0x42')](_0x526f36[_0x176d('0x43')],{})['then'](respondWithResult(_0x5e0d93,0xc9))['catch'](handleError(_0x5e0d93,null));};exports[_0x176d('0x1d')]=function(_0xa8fe1,_0x4e1da7){if(_0xa8fe1['body']['id']){delete _0xa8fe1[_0x176d('0x43')]['id'];}return db['FreshsalesField']['find']({'where':{'id':_0xa8fe1[_0x176d('0x40')]['id']}})[_0x176d('0x1e')](handleEntityNotFound(_0x4e1da7,null))[_0x176d('0x1e')](saveUpdates(_0xa8fe1[_0x176d('0x43')],null))[_0x176d('0x1e')](respondWithResult(_0x4e1da7,null))[_0x176d('0x3e')](handleError(_0x4e1da7,null));};exports[_0x176d('0x1f')]=function(_0x227e83,_0x48a030){return db[_0x176d('0x24')]['find']({'where':{'id':_0x227e83[_0x176d('0x40')]['id']}})[_0x176d('0x1e')](handleEntityNotFound(_0x48a030,null))[_0x176d('0x1e')](removeEntity(_0x48a030,null))[_0x176d('0x3e')](handleError(_0x48a030,null));};
\ No newline at end of file
+var _0x3f7d=['include','rows','catch','show','rawAttributes','length','find','create','body','params','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','crypto','jsforce','desk.js','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','offset','undefined','limit','count','set','json','apply','reject','save','then','error','stack','name','index','map','FreshsalesField','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','hasOwnProperty','sort','where','pick','filter','merge','options','includeAll'];(function(_0x2b92c1,_0x332fc1){var _0x20a9b6=function(_0x2c3a0c){while(--_0x2c3a0c){_0x2b92c1['push'](_0x2b92c1['shift']());}};_0x20a9b6(++_0x332fc1);}(_0x3f7d,0xdf));var _0xd3f7=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3f7d[_0x3dd15e];return _0x231fd0;};'use strict';var emlformat=require(_0xd3f7('0x0'));var rimraf=require(_0xd3f7('0x1'));var zipdir=require(_0xd3f7('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xd3f7('0x3'));var BPromise=require(_0xd3f7('0x4'));var Mustache=require(_0xd3f7('0x5'));var util=require(_0xd3f7('0x6'));var path=require(_0xd3f7('0x7'));var sox=require(_0xd3f7('0x8'));var csv=require(_0xd3f7('0x9'));var ejs=require(_0xd3f7('0xa'));var fs=require('fs');var fs_extra=require(_0xd3f7('0xb'));var _=require('lodash');var squel=require('squel');var crypto=require(_0xd3f7('0xc'));var jsforce=require(_0xd3f7('0xd'));var deskjs=require(_0xd3f7('0xe'));var toCsv=require(_0xd3f7('0x9'));var querystring=require('querystring');var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0xd3f7('0xf'));var as=require(_0xd3f7('0x10'));var hardwareService=require(_0xd3f7('0x11'));var logger=require(_0xd3f7('0x12'))(_0xd3f7('0x13'));var utils=require(_0xd3f7('0x14'));var config=require(_0xd3f7('0x15'));var licenseUtil=require(_0xd3f7('0x16'));var db=require(_0xd3f7('0x17'))['db'];function respondWithStatusCode(_0xbd2f41,_0x204f93){_0x204f93=_0x204f93||0xcc;return function(_0x54ab2a){if(_0x54ab2a){return _0xbd2f41[_0xd3f7('0x18')](_0x204f93);}return _0xbd2f41[_0xd3f7('0x19')](_0x204f93)[_0xd3f7('0x1a')]();};}function respondWithResult(_0x5cf6ab,_0x366538){_0x366538=_0x366538||0xc8;return function(_0x16b895){if(_0x16b895){return _0x5cf6ab[_0xd3f7('0x19')](_0x366538)['json'](_0x16b895);}};}function respondWithFilteredResult(_0x4374e7,_0x4005eb){return function(_0x2a57cb){if(_0x2a57cb){var _0x3396da=typeof _0x4005eb[_0xd3f7('0x1b')]===_0xd3f7('0x1c')&&typeof _0x4005eb[_0xd3f7('0x1d')]==='undefined';var _0x2487cc=_0x2a57cb[_0xd3f7('0x1e')];var _0x5a6568=_0x3396da?0x0:_0x4005eb['offset'];var _0x2414b8=_0x3396da?_0x2a57cb[_0xd3f7('0x1e')]:_0x4005eb[_0xd3f7('0x1b')]+_0x4005eb[_0xd3f7('0x1d')];var _0x43b870;if(_0x2414b8>=_0x2487cc){_0x2414b8=_0x2487cc;_0x43b870=0xc8;}else{_0x43b870=0xce;}_0x4374e7[_0xd3f7('0x19')](_0x43b870);return _0x4374e7[_0xd3f7('0x1f')]('Content-Range',_0x5a6568+'-'+_0x2414b8+'/'+_0x2487cc)[_0xd3f7('0x20')](_0x2a57cb);}return null;};}function patchUpdates(_0x2d4aa5){return function(_0xf59223){try{jsonpatch[_0xd3f7('0x21')](_0xf59223,_0x2d4aa5,!![]);}catch(_0x1eac04){return BPromise[_0xd3f7('0x22')](_0x1eac04);}return _0xf59223[_0xd3f7('0x23')]();};}function saveUpdates(_0x27eaf1,_0x94b615){return function(_0x2ac951){if(_0x2ac951){return _0x2ac951['update'](_0x27eaf1)['then'](function(_0x186bf7){return _0x186bf7;});}return null;};}function removeEntity(_0x1a0c64,_0x29ffdb){return function(_0xb5983e){if(_0xb5983e){return _0xb5983e['destroy']()[_0xd3f7('0x24')](function(){_0x1a0c64['status'](0xcc)['end']();});}};}function handleEntityNotFound(_0x5071ce,_0x1aaaf5){return function(_0x282df5){if(!_0x282df5){_0x5071ce['sendStatus'](0x194);}return _0x282df5;};}function handleError(_0x4915cb,_0x133f02){_0x133f02=_0x133f02||0x1f4;return function(_0x32bcdc){logger[_0xd3f7('0x25')](_0x32bcdc[_0xd3f7('0x26')]);if(_0x32bcdc[_0xd3f7('0x27')]){delete _0x32bcdc[_0xd3f7('0x27')];}_0x4915cb[_0xd3f7('0x19')](_0x133f02)['send'](_0x32bcdc);};}exports[_0xd3f7('0x28')]=function(_0x581617,_0x1faff6){var _0x20a206={},_0x5c2a01={},_0x15055d={'count':0x0,'rows':[]};var _0x55a41e=_[_0xd3f7('0x29')](db[_0xd3f7('0x2a')]['rawAttributes'],function(_0x1f3fe5){return{'name':_0x1f3fe5[_0xd3f7('0x2b')],'type':_0x1f3fe5[_0xd3f7('0x2c')][_0xd3f7('0x2d')]};});_0x5c2a01[_0xd3f7('0x2e')]=_['map'](_0x55a41e,_0xd3f7('0x27'));_0x5c2a01[_0xd3f7('0x2f')]=_[_0xd3f7('0x30')](_0x581617[_0xd3f7('0x2f')]);_0x5c2a01[_0xd3f7('0x31')]=_[_0xd3f7('0x32')](_0x5c2a01[_0xd3f7('0x2e')],_0x5c2a01[_0xd3f7('0x2f')]);_0x20a206[_0xd3f7('0x33')]=_[_0xd3f7('0x32')](_0x5c2a01[_0xd3f7('0x2e')],qs['fields'](_0x581617[_0xd3f7('0x2f')][_0xd3f7('0x34')]));_0x20a206[_0xd3f7('0x33')]=_0x20a206[_0xd3f7('0x33')]['length']?_0x20a206[_0xd3f7('0x33')]:_0x5c2a01[_0xd3f7('0x2e')];if(!_0x581617[_0xd3f7('0x2f')][_0xd3f7('0x35')]('nolimit')){_0x20a206['limit']=qs[_0xd3f7('0x1d')](_0x581617[_0xd3f7('0x2f')]['limit']);_0x20a206[_0xd3f7('0x1b')]=qs[_0xd3f7('0x1b')](_0x581617['query']['offset']);}_0x20a206['order']=qs[_0xd3f7('0x36')](_0x581617[_0xd3f7('0x2f')]['sort']);_0x20a206[_0xd3f7('0x37')]=qs[_0xd3f7('0x31')](_[_0xd3f7('0x38')](_0x581617[_0xd3f7('0x2f')],_0x5c2a01[_0xd3f7('0x31')]),_0x55a41e);if(_0x581617['query'][_0xd3f7('0x39')]){_0x20a206[_0xd3f7('0x37')]=_[_0xd3f7('0x3a')](_0x20a206['where'],{'$or':_[_0xd3f7('0x29')](_0x55a41e,function(_0x1c2d75){if(_0x1c2d75[_0xd3f7('0x2c')]!=='VIRTUAL'){var _0x3c4d66={};_0x3c4d66[_0x1c2d75['name']]={'$like':'%'+_0x581617['query'][_0xd3f7('0x39')]+'%'};return _0x3c4d66;}})});}_0x20a206=_[_0xd3f7('0x3a')]({},_0x20a206,_0x581617[_0xd3f7('0x3b')]);var _0x1b836d={'where':_0x20a206[_0xd3f7('0x37')]};return db[_0xd3f7('0x2a')][_0xd3f7('0x1e')](_0x1b836d)[_0xd3f7('0x24')](function(_0x5a6b78){_0x15055d[_0xd3f7('0x1e')]=_0x5a6b78;if(_0x581617[_0xd3f7('0x2f')][_0xd3f7('0x3c')]){_0x20a206[_0xd3f7('0x3d')]=[{'all':!![]}];}return db[_0xd3f7('0x2a')]['findAll'](_0x20a206);})[_0xd3f7('0x24')](function(_0x35d2a1){_0x15055d[_0xd3f7('0x3e')]=_0x35d2a1;return _0x15055d;})[_0xd3f7('0x24')](respondWithFilteredResult(_0x1faff6,_0x20a206))[_0xd3f7('0x3f')](handleError(_0x1faff6,null));};exports[_0xd3f7('0x40')]=function(_0x567b63,_0x339bcf){var _0x4fafa3={'raw':!![],'where':{'id':_0x567b63['params']['id']}},_0x3523d2={};_0x3523d2[_0xd3f7('0x2e')]=_[_0xd3f7('0x30')](db[_0xd3f7('0x2a')][_0xd3f7('0x41')]);_0x3523d2['query']=_[_0xd3f7('0x30')](_0x567b63[_0xd3f7('0x2f')]);_0x3523d2[_0xd3f7('0x31')]=_[_0xd3f7('0x32')](_0x3523d2[_0xd3f7('0x2e')],_0x3523d2[_0xd3f7('0x2f')]);_0x4fafa3['attributes']=_[_0xd3f7('0x32')](_0x3523d2['model'],qs[_0xd3f7('0x34')](_0x567b63[_0xd3f7('0x2f')][_0xd3f7('0x34')]));_0x4fafa3[_0xd3f7('0x33')]=_0x4fafa3[_0xd3f7('0x33')][_0xd3f7('0x42')]?_0x4fafa3['attributes']:_0x3523d2['model'];if(_0x567b63[_0xd3f7('0x2f')][_0xd3f7('0x3c')]){_0x4fafa3[_0xd3f7('0x3d')]=[{'all':!![]}];}_0x4fafa3=_[_0xd3f7('0x3a')]({},_0x4fafa3,_0x567b63[_0xd3f7('0x3b')]);return db['FreshsalesField'][_0xd3f7('0x43')](_0x4fafa3)[_0xd3f7('0x24')](handleEntityNotFound(_0x339bcf,null))[_0xd3f7('0x24')](respondWithResult(_0x339bcf,null))['catch'](handleError(_0x339bcf,null));};exports[_0xd3f7('0x44')]=function(_0xd75ffa,_0x5e71fd){return db[_0xd3f7('0x2a')][_0xd3f7('0x44')](_0xd75ffa['body'],{})[_0xd3f7('0x24')](respondWithResult(_0x5e71fd,0xc9))['catch'](handleError(_0x5e71fd,null));};exports['update']=function(_0x40919,_0x173072){if(_0x40919[_0xd3f7('0x45')]['id']){delete _0x40919[_0xd3f7('0x45')]['id'];}return db[_0xd3f7('0x2a')][_0xd3f7('0x43')]({'where':{'id':_0x40919[_0xd3f7('0x46')]['id']}})['then'](handleEntityNotFound(_0x173072,null))[_0xd3f7('0x24')](saveUpdates(_0x40919['body'],null))[_0xd3f7('0x24')](respondWithResult(_0x173072,null))[_0xd3f7('0x3f')](handleError(_0x173072,null));};exports['destroy']=function(_0x2456a8,_0x2bef1a){return db[_0xd3f7('0x2a')][_0xd3f7('0x43')]({'where':{'id':_0x2456a8[_0xd3f7('0x46')]['id']}})[_0xd3f7('0x24')](handleEntityNotFound(_0x2bef1a,null))[_0xd3f7('0x24')](removeEntity(_0x2bef1a,null))[_0xd3f7('0x3f')](handleError(_0x2bef1a,null));};
\ No newline at end of file