Built motion from commit (unavailable).|2.5.31
[motion2.git] / server / api / smsTransferReport / smsTransferReport.controller.js
index bf32089..dc7c936 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xb90d=['length','nolimit','order','sort','where','filter','merge','VIRTUAL','include','catch','show','params','includeAll','options','find','create','body','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','mustache','util','path','ejs','lodash','squel','crypto','desk.js','to-csv','querystring','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','status','json','count','offset','limit','set','Content-Range','apply','update','then','destroy','end','sendStatus','error','stack','name','send','map','SmsTransferReport','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields'];(function(_0x3ef52e,_0x415968){var _0x5078d2=function(_0x5afddd){while(--_0x5afddd){_0x3ef52e['push'](_0x3ef52e['shift']());}};_0x5078d2(++_0x415968);}(_0xb90d,0x17a));var _0xdb90=function(_0x15f852,_0x530d85){_0x15f852=_0x15f852-0x0;var _0x387460=_0xb90d[_0x15f852];return _0x387460;};'use strict';var pdf=require('html-pdf');var emlformat=require(_0xdb90('0x0'));var rimraf=require(_0xdb90('0x1'));var zipdir=require(_0xdb90('0x2'));var jsonpatch=require(_0xdb90('0x3'));var rp=require(_0xdb90('0x4'));var moment=require(_0xdb90('0x5'));var BPromise=require('bluebird');var Mustache=require(_0xdb90('0x6'));var util=require(_0xdb90('0x7'));var path=require(_0xdb90('0x8'));var sox=require('sox');var csv=require('to-csv');var ejs=require(_0xdb90('0x9'));var fs=require('fs');var _=require(_0xdb90('0xa'));var squel=require(_0xdb90('0xb'));var crypto=require(_0xdb90('0xc'));var jsforce=require('jsforce');var deskjs=require(_0xdb90('0xd'));var toCsv=require(_0xdb90('0xe'));var querystring=require(_0xdb90('0xf'));var Papa=require('papaparse');var Redis=require(_0xdb90('0x10'));var authService=require(_0xdb90('0x11'));var qs=require(_0xdb90('0x12'));var as=require(_0xdb90('0x13'));var hardwareService=require(_0xdb90('0x14'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xdb90('0x15'));var licenseUtil=require(_0xdb90('0x16'));var db=require(_0xdb90('0x17'))['db'];function respondWithStatusCode(_0xb5ea64,_0xdc179e){_0xdc179e=_0xdc179e||0xcc;return function(_0x113659){if(_0x113659){return _0xb5ea64['sendStatus'](_0xdc179e);}return _0xb5ea64['status'](_0xdc179e)['end']();};}function respondWithResult(_0x511592,_0x569d40){_0x569d40=_0x569d40||0xc8;return function(_0x5eb6ef){if(_0x5eb6ef){return _0x511592[_0xdb90('0x18')](_0x569d40)[_0xdb90('0x19')](_0x5eb6ef);}};}function respondWithFilteredResult(_0x5b93b1,_0x19b02e){return function(_0x1cde0d){if(_0x1cde0d){var _0x4db002=_0x1cde0d[_0xdb90('0x1a')],_0x4a3298=_0x19b02e['offset'],_0x113588=_0x19b02e[_0xdb90('0x1b')]+_0x19b02e[_0xdb90('0x1c')],_0x2bde8b;if(_0x113588>=_0x4db002){_0x113588=_0x4db002;_0x2bde8b=0xc8;}else{_0x2bde8b=0xce;}_0x5b93b1[_0xdb90('0x18')](_0x2bde8b);return _0x5b93b1[_0xdb90('0x1d')](_0xdb90('0x1e'),_0x4a3298+'-'+_0x113588+'/'+_0x4db002)[_0xdb90('0x19')](_0x1cde0d);}return null;};}function patchUpdates(_0xfd5b29){return function(_0x1838ed){try{jsonpatch[_0xdb90('0x1f')](_0x1838ed,_0xfd5b29,!![]);}catch(_0x3a2e6f){return BPromise['reject'](_0x3a2e6f);}return _0x1838ed['save']();};}function saveUpdates(_0x4110c7,_0x1c2dbe){return function(_0xe8589a){if(_0xe8589a){return _0xe8589a[_0xdb90('0x20')](_0x4110c7)[_0xdb90('0x21')](function(_0x57d0fa){return _0x57d0fa;});}return null;};}function removeEntity(_0x31f9df,_0x922395){return function(_0x590e6a){if(_0x590e6a){return _0x590e6a[_0xdb90('0x22')]()['then'](function(){_0x31f9df[_0xdb90('0x18')](0xcc)[_0xdb90('0x23')]();});}};}function handleEntityNotFound(_0x1fe5ab,_0x463199){return function(_0xb591f1){if(!_0xb591f1){_0x1fe5ab[_0xdb90('0x24')](0x194);}return _0xb591f1;};}function handleError(_0x1de849,_0x23aea1){_0x23aea1=_0x23aea1||0x1f4;return function(_0x1ef44a){logger[_0xdb90('0x25')](_0x1ef44a[_0xdb90('0x26')]);if(_0x1ef44a['name']){delete _0x1ef44a[_0xdb90('0x27')];}_0x1de849[_0xdb90('0x18')](_0x23aea1)[_0xdb90('0x28')](_0x1ef44a);};}exports['index']=function(_0x536eae,_0x106ca7){var _0x1db9cc={},_0x3c8349={},_0x18e806={'count':0x0,'rows':[]};var _0x19fd32=_[_0xdb90('0x29')](db[_0xdb90('0x2a')][_0xdb90('0x2b')],function(_0x554d8f){return{'name':_0x554d8f[_0xdb90('0x2c')],'type':_0x554d8f[_0xdb90('0x2d')][_0xdb90('0x2e')]};});_0x3c8349[_0xdb90('0x2f')]=_[_0xdb90('0x29')](_0x19fd32,_0xdb90('0x27'));_0x3c8349[_0xdb90('0x30')]=_[_0xdb90('0x31')](_0x536eae[_0xdb90('0x30')]);_0x3c8349[_0xdb90('0x32')]=_[_0xdb90('0x33')](_0x3c8349[_0xdb90('0x2f')],_0x3c8349[_0xdb90('0x30')]);_0x1db9cc[_0xdb90('0x34')]=_['intersection'](_0x3c8349[_0xdb90('0x2f')],qs[_0xdb90('0x35')](_0x536eae[_0xdb90('0x30')][_0xdb90('0x35')]));_0x1db9cc[_0xdb90('0x34')]=_0x1db9cc[_0xdb90('0x34')][_0xdb90('0x36')]?_0x1db9cc[_0xdb90('0x34')]:_0x3c8349[_0xdb90('0x2f')];if(!_0x536eae[_0xdb90('0x30')]['hasOwnProperty'](_0xdb90('0x37'))){_0x1db9cc[_0xdb90('0x1c')]=qs['limit'](_0x536eae[_0xdb90('0x30')][_0xdb90('0x1c')]);_0x1db9cc[_0xdb90('0x1b')]=qs[_0xdb90('0x1b')](_0x536eae[_0xdb90('0x30')]['offset']);}_0x1db9cc[_0xdb90('0x38')]=qs[_0xdb90('0x39')](_0x536eae[_0xdb90('0x30')]['sort']);_0x1db9cc[_0xdb90('0x3a')]=qs[_0xdb90('0x32')](_['pick'](_0x536eae[_0xdb90('0x30')],_0x3c8349[_0xdb90('0x32')]),_0x19fd32);if(_0x536eae[_0xdb90('0x30')][_0xdb90('0x3b')]){_0x1db9cc['where']=_[_0xdb90('0x3c')](_0x1db9cc[_0xdb90('0x3a')],{'$or':_['map'](_0x19fd32,function(_0x479d66){if(_0x479d66[_0xdb90('0x2d')]!==_0xdb90('0x3d')){var _0x6418f3={};_0x6418f3[_0x479d66[_0xdb90('0x27')]]={'$like':'%'+_0x536eae['query'][_0xdb90('0x3b')]+'%'};return _0x6418f3;}})});}_0x1db9cc=_['merge']({},_0x1db9cc,_0x536eae['options']);var _0x5676db={'where':_0x1db9cc[_0xdb90('0x3a')]};return db[_0xdb90('0x2a')][_0xdb90('0x1a')](_0x5676db)[_0xdb90('0x21')](function(_0x717876){_0x18e806['count']=_0x717876;if(_0x536eae[_0xdb90('0x30')]['includeAll']){_0x1db9cc[_0xdb90('0x3e')]=[{'all':!![]}];}return db[_0xdb90('0x2a')]['findAll'](_0x1db9cc);})['then'](function(_0x37dc40){_0x18e806['rows']=_0x37dc40;return _0x18e806;})[_0xdb90('0x21')](respondWithFilteredResult(_0x106ca7,_0x1db9cc))[_0xdb90('0x3f')](handleError(_0x106ca7,null));};exports[_0xdb90('0x40')]=function(_0x5a9738,_0x300d70){var _0x8d045a={'raw':!![],'where':{'id':_0x5a9738[_0xdb90('0x41')]['id']}},_0x599115={};_0x599115[_0xdb90('0x2f')]=_[_0xdb90('0x31')](db[_0xdb90('0x2a')][_0xdb90('0x2b')]);_0x599115[_0xdb90('0x30')]=_[_0xdb90('0x31')](_0x5a9738[_0xdb90('0x30')]);_0x599115['filters']=_[_0xdb90('0x33')](_0x599115['model'],_0x599115['query']);_0x8d045a['attributes']=_[_0xdb90('0x33')](_0x599115['model'],qs['fields'](_0x5a9738[_0xdb90('0x30')][_0xdb90('0x35')]));_0x8d045a[_0xdb90('0x34')]=_0x8d045a[_0xdb90('0x34')]['length']?_0x8d045a[_0xdb90('0x34')]:_0x599115[_0xdb90('0x2f')];if(_0x5a9738[_0xdb90('0x30')][_0xdb90('0x42')]){_0x8d045a[_0xdb90('0x3e')]=[{'all':!![]}];}_0x8d045a=_[_0xdb90('0x3c')]({},_0x8d045a,_0x5a9738[_0xdb90('0x43')]);return db[_0xdb90('0x2a')][_0xdb90('0x44')](_0x8d045a)[_0xdb90('0x21')](handleEntityNotFound(_0x300d70,null))[_0xdb90('0x21')](respondWithResult(_0x300d70,null))[_0xdb90('0x3f')](handleError(_0x300d70,null));};exports[_0xdb90('0x45')]=function(_0x49cc45,_0x4cded0){return db['SmsTransferReport']['create'](_0x49cc45[_0xdb90('0x46')],{})['then'](respondWithResult(_0x4cded0,0xc9))['catch'](handleError(_0x4cded0,null));};exports['update']=function(_0x357f66,_0x57cded){if(_0x357f66[_0xdb90('0x46')]['id']){delete _0x357f66[_0xdb90('0x46')]['id'];}return db[_0xdb90('0x2a')][_0xdb90('0x44')]({'where':{'id':_0x357f66[_0xdb90('0x41')]['id']}})[_0xdb90('0x21')](handleEntityNotFound(_0x57cded,null))[_0xdb90('0x21')](saveUpdates(_0x357f66[_0xdb90('0x46')],null))['then'](respondWithResult(_0x57cded,null))[_0xdb90('0x3f')](handleError(_0x57cded,null));};exports[_0xdb90('0x22')]=function(_0x5a08fe,_0x58ca62){return db[_0xdb90('0x2a')][_0xdb90('0x44')]({'where':{'id':_0x5a08fe[_0xdb90('0x41')]['id']}})['then'](handleEntityNotFound(_0x58ca62,null))[_0xdb90('0x21')](removeEntity(_0x58ca62,null))[_0xdb90('0x3f')](handleError(_0x58ca62,null));};exports[_0xdb90('0x47')]=function(_0x460e27,_0x17f167){return db[_0xdb90('0x2a')][_0xdb90('0x47')]()[_0xdb90('0x21')](respondWithResult(_0x17f167,null))[_0xdb90('0x3f')](handleError(_0x17f167,null));};
\ No newline at end of file
+var _0x591c=['limit','Content-Range','apply','save','update','then','error','stack','name','index','fieldName','key','model','keys','filters','query','attributes','intersection','fields','length','hasOwnProperty','nolimit','order','sort','pick','filter','where','map','type','VIRTUAL','options','SmsTransferReport','includeAll','include','findAll','rows','show','params','rawAttributes','merge','catch','create','body','destroy','describe','eml-format','rimraf','zip-dir','moment','bluebird','mustache','util','path','sox','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','to-csv','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','undefined','count','offset'];(function(_0x14810c,_0x33f3da){var _0x8bfb1d=function(_0x362d86){while(--_0x362d86){_0x14810c['push'](_0x14810c['shift']());}};_0x8bfb1d(++_0x33f3da);}(_0x591c,0x165));var _0xc591=function(_0x576d2e,_0x53d420){_0x576d2e=_0x576d2e-0x0;var _0x48c60e=_0x591c[_0x576d2e];return _0x48c60e;};'use strict';var emlformat=require(_0xc591('0x0'));var rimraf=require(_0xc591('0x1'));var zipdir=require(_0xc591('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0xc591('0x3'));var BPromise=require(_0xc591('0x4'));var Mustache=require(_0xc591('0x5'));var util=require(_0xc591('0x6'));var path=require(_0xc591('0x7'));var sox=require(_0xc591('0x8'));var csv=require('to-csv');var ejs=require(_0xc591('0x9'));var fs=require('fs');var fs_extra=require(_0xc591('0xa'));var _=require(_0xc591('0xb'));var squel=require(_0xc591('0xc'));var crypto=require(_0xc591('0xd'));var jsforce=require(_0xc591('0xe'));var deskjs=require(_0xc591('0xf'));var toCsv=require(_0xc591('0x10'));var querystring=require(_0xc591('0x11'));var Papa=require(_0xc591('0x12'));var Redis=require(_0xc591('0x13'));var authService=require(_0xc591('0x14'));var qs=require('../../components/parsers/qs');var as=require(_0xc591('0x15'));var hardwareService=require(_0xc591('0x16'));var logger=require('../../config/logger')('api');var utils=require('../../config/utils');var config=require(_0xc591('0x17'));var licenseUtil=require(_0xc591('0x18'));var db=require(_0xc591('0x19'))['db'];function respondWithStatusCode(_0x6e1f3d,_0x596b78){_0x596b78=_0x596b78||0xcc;return function(_0xd0a379){if(_0xd0a379){return _0x6e1f3d[_0xc591('0x1a')](_0x596b78);}return _0x6e1f3d[_0xc591('0x1b')](_0x596b78)[_0xc591('0x1c')]();};}function respondWithResult(_0x387f19,_0x1fdcd3){_0x1fdcd3=_0x1fdcd3||0xc8;return function(_0x25d885){if(_0x25d885){return _0x387f19[_0xc591('0x1b')](_0x1fdcd3)[_0xc591('0x1d')](_0x25d885);}};}function respondWithFilteredResult(_0x5dab68,_0xc616f7){return function(_0x607b67){if(_0x607b67){var _0x1a9992=typeof _0xc616f7['offset']==='undefined'&&typeof _0xc616f7['limit']===_0xc591('0x1e');var _0x2654ba=_0x607b67[_0xc591('0x1f')];var _0x556d90=_0x1a9992?0x0:_0xc616f7['offset'];var _0x4a325b=_0x1a9992?_0x607b67[_0xc591('0x1f')]:_0xc616f7[_0xc591('0x20')]+_0xc616f7[_0xc591('0x21')];var _0x12bba3;if(_0x4a325b>=_0x2654ba){_0x4a325b=_0x2654ba;_0x12bba3=0xc8;}else{_0x12bba3=0xce;}_0x5dab68[_0xc591('0x1b')](_0x12bba3);return _0x5dab68['set'](_0xc591('0x22'),_0x556d90+'-'+_0x4a325b+'/'+_0x2654ba)[_0xc591('0x1d')](_0x607b67);}return null;};}function patchUpdates(_0x1eb95c){return function(_0x34f317){try{jsonpatch[_0xc591('0x23')](_0x34f317,_0x1eb95c,!![]);}catch(_0xeef86){return BPromise['reject'](_0xeef86);}return _0x34f317[_0xc591('0x24')]();};}function saveUpdates(_0x366c18,_0x381ce1){return function(_0x53020c){if(_0x53020c){return _0x53020c[_0xc591('0x25')](_0x366c18)[_0xc591('0x26')](function(_0x46e970){return _0x46e970;});}return null;};}function removeEntity(_0xbd0ae0,_0x178ffa){return function(_0x148acc){if(_0x148acc){return _0x148acc['destroy']()[_0xc591('0x26')](function(){_0xbd0ae0[_0xc591('0x1b')](0xcc)['end']();});}};}function handleEntityNotFound(_0x5564c7,_0x2ed04a){return function(_0x5658a5){if(!_0x5658a5){_0x5564c7[_0xc591('0x1a')](0x194);}return _0x5658a5;};}function handleError(_0x578196,_0xd7c2e1){_0xd7c2e1=_0xd7c2e1||0x1f4;return function(_0xc957ad){logger[_0xc591('0x27')](_0xc957ad[_0xc591('0x28')]);if(_0xc957ad[_0xc591('0x29')]){delete _0xc957ad[_0xc591('0x29')];}_0x578196[_0xc591('0x1b')](_0xd7c2e1)['send'](_0xc957ad);};}exports[_0xc591('0x2a')]=function(_0x382b66,_0x4d18c6){var _0x56d641={},_0x2cf3cf={},_0x1ec58c={'count':0x0,'rows':[]};var _0x3a79ba=_['map'](db['SmsTransferReport']['rawAttributes'],function(_0x3b5a69){return{'name':_0x3b5a69[_0xc591('0x2b')],'type':_0x3b5a69['type'][_0xc591('0x2c')]};});_0x2cf3cf[_0xc591('0x2d')]=_['map'](_0x3a79ba,_0xc591('0x29'));_0x2cf3cf['query']=_[_0xc591('0x2e')](_0x382b66['query']);_0x2cf3cf[_0xc591('0x2f')]=_['intersection'](_0x2cf3cf[_0xc591('0x2d')],_0x2cf3cf[_0xc591('0x30')]);_0x56d641[_0xc591('0x31')]=_[_0xc591('0x32')](_0x2cf3cf[_0xc591('0x2d')],qs['fields'](_0x382b66[_0xc591('0x30')][_0xc591('0x33')]));_0x56d641[_0xc591('0x31')]=_0x56d641['attributes'][_0xc591('0x34')]?_0x56d641['attributes']:_0x2cf3cf[_0xc591('0x2d')];if(!_0x382b66[_0xc591('0x30')][_0xc591('0x35')](_0xc591('0x36'))){_0x56d641['limit']=qs[_0xc591('0x21')](_0x382b66[_0xc591('0x30')][_0xc591('0x21')]);_0x56d641[_0xc591('0x20')]=qs['offset'](_0x382b66[_0xc591('0x30')][_0xc591('0x20')]);}_0x56d641[_0xc591('0x37')]=qs[_0xc591('0x38')](_0x382b66['query'][_0xc591('0x38')]);_0x56d641['where']=qs[_0xc591('0x2f')](_[_0xc591('0x39')](_0x382b66['query'],_0x2cf3cf['filters']),_0x3a79ba);if(_0x382b66[_0xc591('0x30')][_0xc591('0x3a')]){_0x56d641[_0xc591('0x3b')]=_['merge'](_0x56d641[_0xc591('0x3b')],{'$or':_[_0xc591('0x3c')](_0x3a79ba,function(_0x22446c){if(_0x22446c[_0xc591('0x3d')]!==_0xc591('0x3e')){var _0xa38299={};_0xa38299[_0x22446c[_0xc591('0x29')]]={'$like':'%'+_0x382b66['query'][_0xc591('0x3a')]+'%'};return _0xa38299;}})});}_0x56d641=_['merge']({},_0x56d641,_0x382b66[_0xc591('0x3f')]);var _0x659c59={'where':_0x56d641[_0xc591('0x3b')]};return db[_0xc591('0x40')][_0xc591('0x1f')](_0x659c59)['then'](function(_0x1e4989){_0x1ec58c[_0xc591('0x1f')]=_0x1e4989;if(_0x382b66[_0xc591('0x30')][_0xc591('0x41')]){_0x56d641[_0xc591('0x42')]=[{'all':!![]}];}return db[_0xc591('0x40')][_0xc591('0x43')](_0x56d641);})[_0xc591('0x26')](function(_0x36a5e0){_0x1ec58c[_0xc591('0x44')]=_0x36a5e0;return _0x1ec58c;})[_0xc591('0x26')](respondWithFilteredResult(_0x4d18c6,_0x56d641))['catch'](handleError(_0x4d18c6,null));};exports[_0xc591('0x45')]=function(_0x2f4132,_0xad86cb){var _0x608b06={'raw':!![],'where':{'id':_0x2f4132[_0xc591('0x46')]['id']}},_0x2f93ff={};_0x2f93ff['model']=_[_0xc591('0x2e')](db[_0xc591('0x40')][_0xc591('0x47')]);_0x2f93ff[_0xc591('0x30')]=_['keys'](_0x2f4132[_0xc591('0x30')]);_0x2f93ff[_0xc591('0x2f')]=_['intersection'](_0x2f93ff[_0xc591('0x2d')],_0x2f93ff[_0xc591('0x30')]);_0x608b06[_0xc591('0x31')]=_[_0xc591('0x32')](_0x2f93ff['model'],qs['fields'](_0x2f4132[_0xc591('0x30')][_0xc591('0x33')]));_0x608b06[_0xc591('0x31')]=_0x608b06[_0xc591('0x31')][_0xc591('0x34')]?_0x608b06['attributes']:_0x2f93ff[_0xc591('0x2d')];if(_0x2f4132['query'][_0xc591('0x41')]){_0x608b06[_0xc591('0x42')]=[{'all':!![]}];}_0x608b06=_[_0xc591('0x48')]({},_0x608b06,_0x2f4132[_0xc591('0x3f')]);return db['SmsTransferReport']['find'](_0x608b06)[_0xc591('0x26')](handleEntityNotFound(_0xad86cb,null))[_0xc591('0x26')](respondWithResult(_0xad86cb,null))[_0xc591('0x49')](handleError(_0xad86cb,null));};exports[_0xc591('0x4a')]=function(_0x6fc8a7,_0x1f91fd){return db[_0xc591('0x40')]['create'](_0x6fc8a7[_0xc591('0x4b')],{})[_0xc591('0x26')](respondWithResult(_0x1f91fd,0xc9))[_0xc591('0x49')](handleError(_0x1f91fd,null));};exports[_0xc591('0x25')]=function(_0x53285e,_0x4a11c7){if(_0x53285e[_0xc591('0x4b')]['id']){delete _0x53285e[_0xc591('0x4b')]['id'];}return db[_0xc591('0x40')]['find']({'where':{'id':_0x53285e[_0xc591('0x46')]['id']}})[_0xc591('0x26')](handleEntityNotFound(_0x4a11c7,null))[_0xc591('0x26')](saveUpdates(_0x53285e[_0xc591('0x4b')],null))[_0xc591('0x26')](respondWithResult(_0x4a11c7,null))[_0xc591('0x49')](handleError(_0x4a11c7,null));};exports[_0xc591('0x4c')]=function(_0x4c426f,_0x2ced06){return db[_0xc591('0x40')]['find']({'where':{'id':_0x4c426f[_0xc591('0x46')]['id']}})['then'](handleEntityNotFound(_0x2ced06,null))['then'](removeEntity(_0x2ced06,null))['catch'](handleError(_0x2ced06,null));};exports[_0xc591('0x4d')]=function(_0x454fc7,_0x41b771){return db['SmsTransferReport']['describe']()[_0xc591('0x26')](respondWithResult(_0x41b771,null))[_0xc591('0x49')](handleError(_0x41b771,null));};
\ No newline at end of file