Built motion from commit da617fac.|2.6.6
[motion2.git] / server / api / openchannelApplication / openchannelApplication.controller.js
index ec7624f..b36d680 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x4c18=['request-promise','moment','mustache','util','path','sox','to-csv','ejs','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','offset','limit','apply','reject','save','update','then','destroy','error','stack','name','send','index','map','OpenchannelApplication','rawAttributes','type','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','filter','merge','VIRTUAL','includeAll','include','findAll','rows','catch','show','options','find','create','body','params','eml-format','rimraf','zip-dir'];(function(_0xb677de,_0x120a0b){var _0x4e6f03=function(_0x34b2a8){while(--_0x34b2a8){_0xb677de['push'](_0xb677de['shift']());}};_0x4e6f03(++_0x120a0b);}(_0x4c18,0xe4));var _0x84c1=function(_0x431b80,_0x34c73a){_0x431b80=_0x431b80-0x0;var _0x39f78f=_0x4c18[_0x431b80];return _0x39f78f;};'use strict';var emlformat=require(_0x84c1('0x0'));var rimraf=require(_0x84c1('0x1'));var zipdir=require(_0x84c1('0x2'));var jsonpatch=require('fast-json-patch');var rp=require(_0x84c1('0x3'));var moment=require(_0x84c1('0x4'));var BPromise=require('bluebird');var Mustache=require(_0x84c1('0x5'));var util=require(_0x84c1('0x6'));var path=require(_0x84c1('0x7'));var sox=require(_0x84c1('0x8'));var csv=require(_0x84c1('0x9'));var ejs=require(_0x84c1('0xa'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require(_0x84c1('0xb'));var squel=require(_0x84c1('0xc'));var crypto=require(_0x84c1('0xd'));var jsforce=require(_0x84c1('0xe'));var deskjs=require(_0x84c1('0xf'));var toCsv=require(_0x84c1('0x9'));var querystring=require(_0x84c1('0x10'));var Papa=require(_0x84c1('0x11'));var Redis=require(_0x84c1('0x12'));var authService=require(_0x84c1('0x13'));var qs=require(_0x84c1('0x14'));var as=require(_0x84c1('0x15'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x84c1('0x16'));var utils=require(_0x84c1('0x17'));var config=require(_0x84c1('0x18'));var licenseUtil=require(_0x84c1('0x19'));var db=require(_0x84c1('0x1a'))['db'];function respondWithStatusCode(_0x4ce45c,_0x47d525){_0x47d525=_0x47d525||0xcc;return function(_0x4ab8c9){if(_0x4ab8c9){return _0x4ce45c[_0x84c1('0x1b')](_0x47d525);}return _0x4ce45c[_0x84c1('0x1c')](_0x47d525)[_0x84c1('0x1d')]();};}function respondWithResult(_0x51b359,_0x1ed878){_0x1ed878=_0x1ed878||0xc8;return function(_0x49cd44){if(_0x49cd44){return _0x51b359[_0x84c1('0x1c')](_0x1ed878)[_0x84c1('0x1e')](_0x49cd44);}};}function respondWithFilteredResult(_0x50ff37,_0x455d9d){return function(_0x4eb9f9){if(_0x4eb9f9){var _0x10ecbb=_0x4eb9f9[_0x84c1('0x1f')],_0x2c5b7d=_0x455d9d[_0x84c1('0x20')],_0x3237d4=_0x455d9d[_0x84c1('0x20')]+_0x455d9d[_0x84c1('0x21')],_0x5f05f0;if(_0x3237d4>=_0x10ecbb){_0x3237d4=_0x10ecbb;_0x5f05f0=0xc8;}else{_0x5f05f0=0xce;}_0x50ff37['status'](_0x5f05f0);return _0x50ff37['set']('Content-Range',_0x2c5b7d+'-'+_0x3237d4+'/'+_0x10ecbb)[_0x84c1('0x1e')](_0x4eb9f9);}return null;};}function patchUpdates(_0x358ba9){return function(_0x454544){try{jsonpatch[_0x84c1('0x22')](_0x454544,_0x358ba9,!![]);}catch(_0x5d13fa){return BPromise[_0x84c1('0x23')](_0x5d13fa);}return _0x454544[_0x84c1('0x24')]();};}function saveUpdates(_0x418154,_0x5868cc){return function(_0xcd773f){if(_0xcd773f){return _0xcd773f[_0x84c1('0x25')](_0x418154)[_0x84c1('0x26')](function(_0x20b62a){return _0x20b62a;});}return null;};}function removeEntity(_0x147087,_0x3e12d2){return function(_0x295ea6){if(_0x295ea6){return _0x295ea6[_0x84c1('0x27')]()['then'](function(){_0x147087[_0x84c1('0x1c')](0xcc)[_0x84c1('0x1d')]();});}};}function handleEntityNotFound(_0x102363,_0x420938){return function(_0x4f2ee6){if(!_0x4f2ee6){_0x102363[_0x84c1('0x1b')](0x194);}return _0x4f2ee6;};}function handleError(_0x3b9d8a,_0xf8a503){_0xf8a503=_0xf8a503||0x1f4;return function(_0x342c51){logger[_0x84c1('0x28')](_0x342c51[_0x84c1('0x29')]);if(_0x342c51[_0x84c1('0x2a')]){delete _0x342c51[_0x84c1('0x2a')];}_0x3b9d8a[_0x84c1('0x1c')](_0xf8a503)[_0x84c1('0x2b')](_0x342c51);};}exports[_0x84c1('0x2c')]=function(_0x246dad,_0x1313fc){var _0x1026b9={},_0x11477f={},_0x8eeb63={'count':0x0,'rows':[]};var _0x367aae=_[_0x84c1('0x2d')](db[_0x84c1('0x2e')][_0x84c1('0x2f')],function(_0x480691){return{'name':_0x480691['fieldName'],'type':_0x480691[_0x84c1('0x30')]['key']};});_0x11477f['model']=_[_0x84c1('0x2d')](_0x367aae,_0x84c1('0x2a'));_0x11477f[_0x84c1('0x31')]=_[_0x84c1('0x32')](_0x246dad[_0x84c1('0x31')]);_0x11477f[_0x84c1('0x33')]=_[_0x84c1('0x34')](_0x11477f[_0x84c1('0x35')],_0x11477f[_0x84c1('0x31')]);_0x1026b9[_0x84c1('0x36')]=_[_0x84c1('0x34')](_0x11477f[_0x84c1('0x35')],qs[_0x84c1('0x37')](_0x246dad[_0x84c1('0x31')]['fields']));_0x1026b9[_0x84c1('0x36')]=_0x1026b9[_0x84c1('0x36')][_0x84c1('0x38')]?_0x1026b9[_0x84c1('0x36')]:_0x11477f[_0x84c1('0x35')];if(!_0x246dad['query'][_0x84c1('0x39')](_0x84c1('0x3a'))){_0x1026b9['limit']=qs[_0x84c1('0x21')](_0x246dad['query'][_0x84c1('0x21')]);_0x1026b9['offset']=qs[_0x84c1('0x20')](_0x246dad[_0x84c1('0x31')][_0x84c1('0x20')]);}_0x1026b9[_0x84c1('0x3b')]=qs[_0x84c1('0x3c')](_0x246dad[_0x84c1('0x31')][_0x84c1('0x3c')]);_0x1026b9[_0x84c1('0x3d')]=qs['filters'](_[_0x84c1('0x3e')](_0x246dad[_0x84c1('0x31')],_0x11477f['filters']),_0x367aae);if(_0x246dad[_0x84c1('0x31')][_0x84c1('0x3f')]){_0x1026b9[_0x84c1('0x3d')]=_[_0x84c1('0x40')](_0x1026b9[_0x84c1('0x3d')],{'$or':_[_0x84c1('0x2d')](_0x367aae,function(_0x46f544){if(_0x46f544[_0x84c1('0x30')]!==_0x84c1('0x41')){var _0x2c36f2={};_0x2c36f2[_0x46f544[_0x84c1('0x2a')]]={'$like':'%'+_0x246dad['query']['filter']+'%'};return _0x2c36f2;}})});}_0x1026b9=_[_0x84c1('0x40')]({},_0x1026b9,_0x246dad['options']);var _0x835ab2={'where':_0x1026b9[_0x84c1('0x3d')]};return db[_0x84c1('0x2e')]['count'](_0x835ab2)[_0x84c1('0x26')](function(_0x1ea4f6){_0x8eeb63[_0x84c1('0x1f')]=_0x1ea4f6;if(_0x246dad[_0x84c1('0x31')][_0x84c1('0x42')]){_0x1026b9[_0x84c1('0x43')]=[{'all':!![]}];}return db[_0x84c1('0x2e')][_0x84c1('0x44')](_0x1026b9);})[_0x84c1('0x26')](function(_0x2bb0b1){_0x8eeb63[_0x84c1('0x45')]=_0x2bb0b1;return _0x8eeb63;})[_0x84c1('0x26')](respondWithFilteredResult(_0x1313fc,_0x1026b9))[_0x84c1('0x46')](handleError(_0x1313fc,null));};exports[_0x84c1('0x47')]=function(_0x51fd1d,_0x3e888b){var _0x2b9cbb={'raw':!![],'where':{'id':_0x51fd1d['params']['id']}},_0x3ad016={};_0x3ad016[_0x84c1('0x35')]=_[_0x84c1('0x32')](db[_0x84c1('0x2e')]['rawAttributes']);_0x3ad016[_0x84c1('0x31')]=_[_0x84c1('0x32')](_0x51fd1d['query']);_0x3ad016[_0x84c1('0x33')]=_[_0x84c1('0x34')](_0x3ad016[_0x84c1('0x35')],_0x3ad016[_0x84c1('0x31')]);_0x2b9cbb['attributes']=_[_0x84c1('0x34')](_0x3ad016[_0x84c1('0x35')],qs['fields'](_0x51fd1d[_0x84c1('0x31')][_0x84c1('0x37')]));_0x2b9cbb[_0x84c1('0x36')]=_0x2b9cbb[_0x84c1('0x36')][_0x84c1('0x38')]?_0x2b9cbb['attributes']:_0x3ad016[_0x84c1('0x35')];if(_0x51fd1d[_0x84c1('0x31')][_0x84c1('0x42')]){_0x2b9cbb[_0x84c1('0x43')]=[{'all':!![]}];}_0x2b9cbb=_[_0x84c1('0x40')]({},_0x2b9cbb,_0x51fd1d[_0x84c1('0x48')]);return db[_0x84c1('0x2e')][_0x84c1('0x49')](_0x2b9cbb)[_0x84c1('0x26')](handleEntityNotFound(_0x3e888b,null))[_0x84c1('0x26')](respondWithResult(_0x3e888b,null))[_0x84c1('0x46')](handleError(_0x3e888b,null));};exports[_0x84c1('0x4a')]=function(_0x52c188,_0x51965b){return db[_0x84c1('0x2e')][_0x84c1('0x4a')](_0x52c188[_0x84c1('0x4b')],{})['then'](respondWithResult(_0x51965b,0xc9))[_0x84c1('0x46')](handleError(_0x51965b,null));};exports[_0x84c1('0x25')]=function(_0x1f35b0,_0xc63bca){if(_0x1f35b0[_0x84c1('0x4b')]['id']){delete _0x1f35b0[_0x84c1('0x4b')]['id'];}return db[_0x84c1('0x2e')][_0x84c1('0x49')]({'where':{'id':_0x1f35b0['params']['id']}})['then'](handleEntityNotFound(_0xc63bca,null))[_0x84c1('0x26')](saveUpdates(_0x1f35b0[_0x84c1('0x4b')],null))[_0x84c1('0x26')](respondWithResult(_0xc63bca,null))[_0x84c1('0x46')](handleError(_0xc63bca,null));};exports[_0x84c1('0x27')]=function(_0x3ff165,_0xe01777){return db[_0x84c1('0x2e')][_0x84c1('0x49')]({'where':{'id':_0x3ff165[_0x84c1('0x4c')]['id']}})['then'](handleEntityNotFound(_0xe01777,null))[_0x84c1('0x26')](removeEntity(_0xe01777,null))['catch'](handleError(_0xe01777,null));};
\ No newline at end of file
+var _0xf98e=['limit','Content-Range','apply','reject','save','update','then','destroy','end','error','name','index','map','rawAttributes','fieldName','type','key','model','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','pick','merge','VIRTUAL','options','OpenchannelApplication','includeAll','include','rows','catch','show','params','find','create','body','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','papaparse','../../components/auth/service','../../components/parsers/qs','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment','sendStatus','status','json','undefined','count','offset'];(function(_0x14af68,_0x501751){var _0xea00b=function(_0x3fa8ca){while(--_0x3fa8ca){_0x14af68['push'](_0x14af68['shift']());}};_0xea00b(++_0x501751);}(_0xf98e,0x1a3));var _0xef98=function(_0x14f830,_0x4c8edc){_0x14f830=_0x14f830-0x0;var _0xb9879b=_0xf98e[_0x14f830];return _0xb9879b;};'use strict';var emlformat=require('eml-format');var rimraf=require('rimraf');var zipdir=require(_0xef98('0x0'));var jsonpatch=require(_0xef98('0x1'));var rp=require(_0xef98('0x2'));var moment=require(_0xef98('0x3'));var BPromise=require(_0xef98('0x4'));var Mustache=require(_0xef98('0x5'));var util=require(_0xef98('0x6'));var path=require(_0xef98('0x7'));var sox=require(_0xef98('0x8'));var csv=require(_0xef98('0x9'));var ejs=require(_0xef98('0xa'));var fs=require('fs');var fs_extra=require(_0xef98('0xb'));var _=require(_0xef98('0xc'));var squel=require(_0xef98('0xd'));var crypto=require(_0xef98('0xe'));var jsforce=require(_0xef98('0xf'));var deskjs=require(_0xef98('0x10'));var toCsv=require('to-csv');var querystring=require(_0xef98('0x11'));var Papa=require(_0xef98('0x12'));var Redis=require('ioredis');var authService=require(_0xef98('0x13'));var qs=require(_0xef98('0x14'));var as=require(_0xef98('0x15'));var hardwareService=require(_0xef98('0x16'));var logger=require('../../config/logger')('api');var utils=require(_0xef98('0x17'));var config=require(_0xef98('0x18'));var licenseUtil=require('../../config/license/util');var db=require('../../mysqldb')['db'];function respondWithStatusCode(_0x4dca11,_0x1e5ea0){_0x1e5ea0=_0x1e5ea0||0xcc;return function(_0x33c68a){if(_0x33c68a){return _0x4dca11[_0xef98('0x19')](_0x1e5ea0);}return _0x4dca11[_0xef98('0x1a')](_0x1e5ea0)['end']();};}function respondWithResult(_0x48825f,_0x45df9c){_0x45df9c=_0x45df9c||0xc8;return function(_0x522368){if(_0x522368){return _0x48825f[_0xef98('0x1a')](_0x45df9c)[_0xef98('0x1b')](_0x522368);}};}function respondWithFilteredResult(_0x31f64d,_0x164d1d){return function(_0x1e3632){if(_0x1e3632){var _0x21ef7a=typeof _0x164d1d['offset']===_0xef98('0x1c')&&typeof _0x164d1d['limit']==='undefined';var _0x4b4cd6=_0x1e3632[_0xef98('0x1d')];var _0x2f6956=_0x21ef7a?0x0:_0x164d1d[_0xef98('0x1e')];var _0x5728f8=_0x21ef7a?_0x1e3632['count']:_0x164d1d['offset']+_0x164d1d[_0xef98('0x1f')];var _0x228117;if(_0x5728f8>=_0x4b4cd6){_0x5728f8=_0x4b4cd6;_0x228117=0xc8;}else{_0x228117=0xce;}_0x31f64d[_0xef98('0x1a')](_0x228117);return _0x31f64d['set'](_0xef98('0x20'),_0x2f6956+'-'+_0x5728f8+'/'+_0x4b4cd6)['json'](_0x1e3632);}return null;};}function patchUpdates(_0x308555){return function(_0x219356){try{jsonpatch[_0xef98('0x21')](_0x219356,_0x308555,!![]);}catch(_0xd5b2a8){return BPromise[_0xef98('0x22')](_0xd5b2a8);}return _0x219356[_0xef98('0x23')]();};}function saveUpdates(_0x1ae0e5,_0x2fa5f6){return function(_0x115294){if(_0x115294){return _0x115294[_0xef98('0x24')](_0x1ae0e5)[_0xef98('0x25')](function(_0x1f90c5){return _0x1f90c5;});}return null;};}function removeEntity(_0x53ce07,_0x251c87){return function(_0x44c2e3){if(_0x44c2e3){return _0x44c2e3[_0xef98('0x26')]()[_0xef98('0x25')](function(){_0x53ce07[_0xef98('0x1a')](0xcc)[_0xef98('0x27')]();});}};}function handleEntityNotFound(_0x579070,_0x45a6ee){return function(_0x154408){if(!_0x154408){_0x579070['sendStatus'](0x194);}return _0x154408;};}function handleError(_0xcd6db0,_0x5215bc){_0x5215bc=_0x5215bc||0x1f4;return function(_0x49f39d){logger[_0xef98('0x28')](_0x49f39d['stack']);if(_0x49f39d[_0xef98('0x29')]){delete _0x49f39d[_0xef98('0x29')];}_0xcd6db0[_0xef98('0x1a')](_0x5215bc)['send'](_0x49f39d);};}exports[_0xef98('0x2a')]=function(_0x508f66,_0x107f46){var _0x1cf2e4={},_0x337d63={},_0x1b2dfc={'count':0x0,'rows':[]};var _0x182898=_[_0xef98('0x2b')](db['OpenchannelApplication'][_0xef98('0x2c')],function(_0x17f49e){return{'name':_0x17f49e[_0xef98('0x2d')],'type':_0x17f49e[_0xef98('0x2e')][_0xef98('0x2f')]};});_0x337d63[_0xef98('0x30')]=_[_0xef98('0x2b')](_0x182898,_0xef98('0x29'));_0x337d63[_0xef98('0x31')]=_[_0xef98('0x32')](_0x508f66[_0xef98('0x31')]);_0x337d63[_0xef98('0x33')]=_[_0xef98('0x34')](_0x337d63['model'],_0x337d63['query']);_0x1cf2e4[_0xef98('0x35')]=_[_0xef98('0x34')](_0x337d63[_0xef98('0x30')],qs[_0xef98('0x36')](_0x508f66['query'][_0xef98('0x36')]));_0x1cf2e4[_0xef98('0x35')]=_0x1cf2e4[_0xef98('0x35')][_0xef98('0x37')]?_0x1cf2e4[_0xef98('0x35')]:_0x337d63[_0xef98('0x30')];if(!_0x508f66[_0xef98('0x31')][_0xef98('0x38')](_0xef98('0x39'))){_0x1cf2e4[_0xef98('0x1f')]=qs[_0xef98('0x1f')](_0x508f66[_0xef98('0x31')][_0xef98('0x1f')]);_0x1cf2e4[_0xef98('0x1e')]=qs[_0xef98('0x1e')](_0x508f66[_0xef98('0x31')]['offset']);}_0x1cf2e4[_0xef98('0x3a')]=qs[_0xef98('0x3b')](_0x508f66[_0xef98('0x31')][_0xef98('0x3b')]);_0x1cf2e4[_0xef98('0x3c')]=qs['filters'](_[_0xef98('0x3d')](_0x508f66['query'],_0x337d63[_0xef98('0x33')]),_0x182898);if(_0x508f66['query']['filter']){_0x1cf2e4['where']=_[_0xef98('0x3e')](_0x1cf2e4[_0xef98('0x3c')],{'$or':_[_0xef98('0x2b')](_0x182898,function(_0x17ac33){if(_0x17ac33[_0xef98('0x2e')]!==_0xef98('0x3f')){var _0x1e4a42={};_0x1e4a42[_0x17ac33['name']]={'$like':'%'+_0x508f66['query']['filter']+'%'};return _0x1e4a42;}})});}_0x1cf2e4=_['merge']({},_0x1cf2e4,_0x508f66[_0xef98('0x40')]);var _0x1e9074={'where':_0x1cf2e4[_0xef98('0x3c')]};return db[_0xef98('0x41')][_0xef98('0x1d')](_0x1e9074)[_0xef98('0x25')](function(_0x342cb2){_0x1b2dfc[_0xef98('0x1d')]=_0x342cb2;if(_0x508f66[_0xef98('0x31')][_0xef98('0x42')]){_0x1cf2e4[_0xef98('0x43')]=[{'all':!![]}];}return db['OpenchannelApplication']['findAll'](_0x1cf2e4);})[_0xef98('0x25')](function(_0x29df24){_0x1b2dfc[_0xef98('0x44')]=_0x29df24;return _0x1b2dfc;})['then'](respondWithFilteredResult(_0x107f46,_0x1cf2e4))[_0xef98('0x45')](handleError(_0x107f46,null));};exports[_0xef98('0x46')]=function(_0x65b060,_0x1d6ca2){var _0x11f28a={'raw':!![],'where':{'id':_0x65b060[_0xef98('0x47')]['id']}},_0x520d4d={};_0x520d4d[_0xef98('0x30')]=_['keys'](db[_0xef98('0x41')][_0xef98('0x2c')]);_0x520d4d[_0xef98('0x31')]=_['keys'](_0x65b060[_0xef98('0x31')]);_0x520d4d['filters']=_[_0xef98('0x34')](_0x520d4d[_0xef98('0x30')],_0x520d4d[_0xef98('0x31')]);_0x11f28a[_0xef98('0x35')]=_[_0xef98('0x34')](_0x520d4d[_0xef98('0x30')],qs[_0xef98('0x36')](_0x65b060[_0xef98('0x31')][_0xef98('0x36')]));_0x11f28a[_0xef98('0x35')]=_0x11f28a['attributes']['length']?_0x11f28a[_0xef98('0x35')]:_0x520d4d[_0xef98('0x30')];if(_0x65b060[_0xef98('0x31')][_0xef98('0x42')]){_0x11f28a[_0xef98('0x43')]=[{'all':!![]}];}_0x11f28a=_[_0xef98('0x3e')]({},_0x11f28a,_0x65b060[_0xef98('0x40')]);return db[_0xef98('0x41')][_0xef98('0x48')](_0x11f28a)['then'](handleEntityNotFound(_0x1d6ca2,null))[_0xef98('0x25')](respondWithResult(_0x1d6ca2,null))[_0xef98('0x45')](handleError(_0x1d6ca2,null));};exports[_0xef98('0x49')]=function(_0x203959,_0x4501a1){return db[_0xef98('0x41')][_0xef98('0x49')](_0x203959[_0xef98('0x4a')],{})['then'](respondWithResult(_0x4501a1,0xc9))[_0xef98('0x45')](handleError(_0x4501a1,null));};exports[_0xef98('0x24')]=function(_0x5ec142,_0x1db800){if(_0x5ec142[_0xef98('0x4a')]['id']){delete _0x5ec142[_0xef98('0x4a')]['id'];}return db['OpenchannelApplication'][_0xef98('0x48')]({'where':{'id':_0x5ec142[_0xef98('0x47')]['id']}})[_0xef98('0x25')](handleEntityNotFound(_0x1db800,null))[_0xef98('0x25')](saveUpdates(_0x5ec142[_0xef98('0x4a')],null))[_0xef98('0x25')](respondWithResult(_0x1db800,null))[_0xef98('0x45')](handleError(_0x1db800,null));};exports[_0xef98('0x26')]=function(_0x5b0752,_0x20333c){return db['OpenchannelApplication'][_0xef98('0x48')]({'where':{'id':_0x5b0752[_0xef98('0x47')]['id']}})['then'](handleEntityNotFound(_0x20333c,null))[_0xef98('0x25')](removeEntity(_0x20333c,null))[_0xef98('0x45')](handleError(_0x20333c,null));};
\ No newline at end of file