Built motion from commit 97153652.|2.6.26
[motion2.git] / server / api / openchannelApplication / openchannelApplication.controller.js
index 4635c1a..ddb8e59 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0xd5fb=['merge','options','count','includeAll','include','findAll','show','params','find','catch','create','body','update','destroy','html-pdf','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','moment','bluebird','mustache','sox','to-csv','ejs','lodash','crypto','desk.js','querystring','papaparse','ioredis','../../components/auth/service','../../config/license/hardware','../../config/logger','api','../../mysqldb','sendStatus','end','status','limit','Content-Range','json','apply','then','error','stack','name','map','OpenchannelApplication','rawAttributes','fieldName','key','query','keys','filters','intersection','model','attributes','fields','length','hasOwnProperty','nolimit','offset','sort','where','type'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd5fb,0x94));var _0xbd5f=function(_0x4e7fbe,_0x585460){_0x4e7fbe=_0x4e7fbe-0x0;var _0x2e2277=_0xd5fb[_0x4e7fbe];return _0x2e2277;};'use strict';var pdf=require(_0xbd5f('0x0'));var emlformat=require(_0xbd5f('0x1'));var rimraf=require(_0xbd5f('0x2'));var zipdir=require(_0xbd5f('0x3'));var jsonpatch=require(_0xbd5f('0x4'));var rp=require(_0xbd5f('0x5'));var moment=require(_0xbd5f('0x6'));var BPromise=require(_0xbd5f('0x7'));var Mustache=require(_0xbd5f('0x8'));var util=require('util');var path=require('path');var sox=require(_0xbd5f('0x9'));var csv=require(_0xbd5f('0xa'));var ejs=require(_0xbd5f('0xb'));var fs=require('fs');var _=require(_0xbd5f('0xc'));var squel=require('squel');var crypto=require(_0xbd5f('0xd'));var jsforce=require('jsforce');var deskjs=require(_0xbd5f('0xe'));var toCsv=require('to-csv');var querystring=require(_0xbd5f('0xf'));var Papa=require(_0xbd5f('0x10'));var Redis=require(_0xbd5f('0x11'));var authService=require(_0xbd5f('0x12'));var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xbd5f('0x13'));var logger=require(_0xbd5f('0x14'))(_0xbd5f('0x15'));var utils=require('../../config/utils');var config=require('../../config/environment');var db=require(_0xbd5f('0x16'))['db'];function respondWithStatusCode(_0x9c5e4f,_0x193a0b){_0x193a0b=_0x193a0b||0xcc;return function(_0x462f31){if(_0x462f31){return _0x9c5e4f[_0xbd5f('0x17')](_0x193a0b);}return _0x9c5e4f['status'](_0x193a0b)[_0xbd5f('0x18')]();};}function respondWithResult(_0x49ee47,_0x16aea5){_0x16aea5=_0x16aea5||0xc8;return function(_0x31699d){if(_0x31699d){return _0x49ee47[_0xbd5f('0x19')](_0x16aea5)['json'](_0x31699d);}};}function respondWithFilteredResult(_0x2d2875,_0x499e8f){return function(_0xc610b9){if(_0xc610b9){var _0x54d307=_0xc610b9['count'],_0x43e599=_0x499e8f['offset'],_0x26e398=_0x499e8f['offset']+_0x499e8f[_0xbd5f('0x1a')],_0x3e1570;if(_0x26e398>=_0x54d307){_0x26e398=_0x54d307;_0x3e1570=0xc8;}else{_0x3e1570=0xce;}_0x2d2875[_0xbd5f('0x19')](_0x3e1570);return _0x2d2875['set'](_0xbd5f('0x1b'),_0x43e599+'-'+_0x26e398+'/'+_0x54d307)[_0xbd5f('0x1c')](_0xc610b9);}return null;};}function patchUpdates(_0x58269c){return function(_0x64f35d){try{jsonpatch[_0xbd5f('0x1d')](_0x64f35d,_0x58269c,!![]);}catch(_0x29d26e){return BPromise['reject'](_0x29d26e);}return _0x64f35d['save']();};}function saveUpdates(_0x2812ac,_0x369ac2){return function(_0x3b2e76){if(_0x3b2e76){return _0x3b2e76['update'](_0x2812ac)[_0xbd5f('0x1e')](function(_0x3e2752){return _0x3e2752;});}return null;};}function removeEntity(_0x1c8194,_0x240253){return function(_0x2156bd){if(_0x2156bd){return _0x2156bd['destroy']()[_0xbd5f('0x1e')](function(){_0x1c8194[_0xbd5f('0x19')](0xcc)['end']();});}};}function handleEntityNotFound(_0x136708,_0x4e5f52){return function(_0x4a64b1){if(!_0x4a64b1){_0x136708[_0xbd5f('0x17')](0x194);}return _0x4a64b1;};}function handleError(_0x4f87ed,_0x14f8f7){_0x14f8f7=_0x14f8f7||0x1f4;return function(_0x310ae8){logger[_0xbd5f('0x1f')](_0x310ae8[_0xbd5f('0x20')]);if(_0x310ae8['name']){delete _0x310ae8[_0xbd5f('0x21')];}_0x4f87ed[_0xbd5f('0x19')](_0x14f8f7)['send'](_0x310ae8);};}exports['index']=function(_0x139d2f,_0x4c5aa9){var _0x1d2db2={},_0x1f8c0d={},_0x4d90ab={'count':0x0,'rows':[]};var _0x278a31=_[_0xbd5f('0x22')](db[_0xbd5f('0x23')][_0xbd5f('0x24')],function(_0x59ff97){return{'name':_0x59ff97[_0xbd5f('0x25')],'type':_0x59ff97['type'][_0xbd5f('0x26')]};});_0x1f8c0d['model']=_[_0xbd5f('0x22')](_0x278a31,_0xbd5f('0x21'));_0x1f8c0d[_0xbd5f('0x27')]=_[_0xbd5f('0x28')](_0x139d2f[_0xbd5f('0x27')]);_0x1f8c0d[_0xbd5f('0x29')]=_[_0xbd5f('0x2a')](_0x1f8c0d[_0xbd5f('0x2b')],_0x1f8c0d[_0xbd5f('0x27')]);_0x1d2db2[_0xbd5f('0x2c')]=_['intersection'](_0x1f8c0d[_0xbd5f('0x2b')],qs[_0xbd5f('0x2d')](_0x139d2f['query'][_0xbd5f('0x2d')]));_0x1d2db2[_0xbd5f('0x2c')]=_0x1d2db2[_0xbd5f('0x2c')][_0xbd5f('0x2e')]?_0x1d2db2[_0xbd5f('0x2c')]:_0x1f8c0d['model'];if(!_0x139d2f[_0xbd5f('0x27')][_0xbd5f('0x2f')](_0xbd5f('0x30'))){_0x1d2db2['limit']=qs[_0xbd5f('0x1a')](_0x139d2f[_0xbd5f('0x27')][_0xbd5f('0x1a')]);_0x1d2db2['offset']=qs['offset'](_0x139d2f[_0xbd5f('0x27')][_0xbd5f('0x31')]);}_0x1d2db2['order']=qs[_0xbd5f('0x32')](_0x139d2f[_0xbd5f('0x27')][_0xbd5f('0x32')]);_0x1d2db2['where']=qs[_0xbd5f('0x29')](_['pick'](_0x139d2f['query'],_0x1f8c0d['filters']));if(_0x139d2f[_0xbd5f('0x27')]['filter']){_0x1d2db2[_0xbd5f('0x33')]=_['merge'](_0x1d2db2[_0xbd5f('0x33')],{'$or':_[_0xbd5f('0x22')](_0x278a31,function(_0x3274b){if(_0x3274b[_0xbd5f('0x34')]!=='VIRTUAL'){var _0xfcc782={};_0xfcc782[_0x3274b[_0xbd5f('0x21')]]={'$like':'%'+_0x139d2f['query']['filter']+'%'};return _0xfcc782;}})});}_0x1d2db2=_[_0xbd5f('0x35')]({},_0x1d2db2,_0x139d2f[_0xbd5f('0x36')]);var _0x5e701e={'where':_0x1d2db2['where']};return db[_0xbd5f('0x23')][_0xbd5f('0x37')](_0x5e701e)['then'](function(_0x3b274b){_0x4d90ab[_0xbd5f('0x37')]=_0x3b274b;if(_0x139d2f['query'][_0xbd5f('0x38')]){_0x1d2db2[_0xbd5f('0x39')]=[{'all':!![]}];}return db[_0xbd5f('0x23')][_0xbd5f('0x3a')](_0x1d2db2);})[_0xbd5f('0x1e')](function(_0x5b2bbd){_0x4d90ab['rows']=_0x5b2bbd;return _0x4d90ab;})['then'](respondWithFilteredResult(_0x4c5aa9,_0x1d2db2))['catch'](handleError(_0x4c5aa9,null));};exports[_0xbd5f('0x3b')]=function(_0x49592d,_0x4e6ad8){var _0x575455={'raw':!![],'where':{'id':_0x49592d[_0xbd5f('0x3c')]['id']}},_0x2f1e01={};_0x2f1e01[_0xbd5f('0x2b')]=_[_0xbd5f('0x28')](db['OpenchannelApplication']['rawAttributes']);_0x2f1e01[_0xbd5f('0x27')]=_[_0xbd5f('0x28')](_0x49592d[_0xbd5f('0x27')]);_0x2f1e01[_0xbd5f('0x29')]=_[_0xbd5f('0x2a')](_0x2f1e01[_0xbd5f('0x2b')],_0x2f1e01['query']);_0x575455[_0xbd5f('0x2c')]=_[_0xbd5f('0x2a')](_0x2f1e01['model'],qs[_0xbd5f('0x2d')](_0x49592d[_0xbd5f('0x27')]['fields']));_0x575455['attributes']=_0x575455[_0xbd5f('0x2c')][_0xbd5f('0x2e')]?_0x575455[_0xbd5f('0x2c')]:_0x2f1e01['model'];if(_0x49592d['query'][_0xbd5f('0x38')]){_0x575455['include']=[{'all':!![]}];}_0x575455=_[_0xbd5f('0x35')]({},_0x575455,_0x49592d[_0xbd5f('0x36')]);return db[_0xbd5f('0x23')][_0xbd5f('0x3d')](_0x575455)[_0xbd5f('0x1e')](handleEntityNotFound(_0x4e6ad8,null))[_0xbd5f('0x1e')](respondWithResult(_0x4e6ad8,null))[_0xbd5f('0x3e')](handleError(_0x4e6ad8,null));};exports[_0xbd5f('0x3f')]=function(_0x3fdfa9,_0x3df853){return db[_0xbd5f('0x23')]['create'](_0x3fdfa9[_0xbd5f('0x40')],{})[_0xbd5f('0x1e')](respondWithResult(_0x3df853,0xc9))['catch'](handleError(_0x3df853,null));};exports[_0xbd5f('0x41')]=function(_0x316531,_0x48db75){if(_0x316531['body']['id']){delete _0x316531[_0xbd5f('0x40')]['id'];}return db[_0xbd5f('0x23')][_0xbd5f('0x3d')]({'where':{'id':_0x316531[_0xbd5f('0x3c')]['id']}})['then'](handleEntityNotFound(_0x48db75,null))[_0xbd5f('0x1e')](saveUpdates(_0x316531[_0xbd5f('0x40')],null))[_0xbd5f('0x1e')](respondWithResult(_0x48db75,null))[_0xbd5f('0x3e')](handleError(_0x48db75,null));};exports[_0xbd5f('0x42')]=function(_0x5bd1df,_0x52eb47){return db[_0xbd5f('0x23')]['find']({'where':{'id':_0x5bd1df[_0xbd5f('0x3c')]['id']}})['then'](handleEntityNotFound(_0x52eb47,null))['then'](removeEntity(_0x52eb47,null))[_0xbd5f('0x3e')](handleError(_0x52eb47,null));};
\ No newline at end of file
+var _0xfe16=['rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','path','to-csv','ejs','squel','crypto','jsforce','querystring','papaparse','ioredis','../../components/parsers/qs','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','limit','undefined','count','set','Content-Range','apply','reject','save','update','destroy','then','sendStatus','name','fieldName','type','model','query','keys','filters','intersection','attributes','fields','length','nolimit','sort','where','pick','filter','merge','map','options','OpenchannelApplication','includeAll','include','findAll','show','params','catch','create','body','find'];(function(_0x3f43ef,_0x4c2ba9){var _0x20af43=function(_0x17fb2b){while(--_0x17fb2b){_0x3f43ef['push'](_0x3f43ef['shift']());}};_0x20af43(++_0x4c2ba9);}(_0xfe16,0x10c));var _0x6fe1=function(_0x2c33cc,_0x93ad40){_0x2c33cc=_0x2c33cc-0x0;var _0x592c93=_0xfe16[_0x2c33cc];return _0x592c93;};'use strict';var emlformat=require('eml-format');var rimraf=require(_0x6fe1('0x0'));var zipdir=require(_0x6fe1('0x1'));var jsonpatch=require(_0x6fe1('0x2'));var rp=require(_0x6fe1('0x3'));var moment=require('moment');var BPromise=require(_0x6fe1('0x4'));var Mustache=require(_0x6fe1('0x5'));var util=require('util');var path=require(_0x6fe1('0x6'));var sox=require('sox');var csv=require(_0x6fe1('0x7'));var ejs=require(_0x6fe1('0x8'));var fs=require('fs');var fs_extra=require('fs-extra');var _=require('lodash');var squel=require(_0x6fe1('0x9'));var crypto=require(_0x6fe1('0xa'));var jsforce=require(_0x6fe1('0xb'));var deskjs=require('desk.js');var toCsv=require(_0x6fe1('0x7'));var querystring=require(_0x6fe1('0xc'));var Papa=require(_0x6fe1('0xd'));var Redis=require(_0x6fe1('0xe'));var authService=require('../../components/auth/service');var qs=require(_0x6fe1('0xf'));var as=require('../../components/parsers/advancedSearch');var hardwareService=require('../../config/license/hardware');var logger=require(_0x6fe1('0x10'))(_0x6fe1('0x11'));var utils=require(_0x6fe1('0x12'));var config=require(_0x6fe1('0x13'));var licenseUtil=require(_0x6fe1('0x14'));var db=require(_0x6fe1('0x15'))['db'];function respondWithStatusCode(_0x176260,_0x47ef37){_0x47ef37=_0x47ef37||0xcc;return function(_0x16509e){if(_0x16509e){return _0x176260['sendStatus'](_0x47ef37);}return _0x176260['status'](_0x47ef37)[_0x6fe1('0x16')]();};}function respondWithResult(_0x80996c,_0x218967){_0x218967=_0x218967||0xc8;return function(_0x446b07){if(_0x446b07){return _0x80996c[_0x6fe1('0x17')](_0x218967)[_0x6fe1('0x18')](_0x446b07);}};}function respondWithFilteredResult(_0x41fd67,_0x493243){return function(_0x2478c1){if(_0x2478c1){var _0x3b7619=typeof _0x493243[_0x6fe1('0x19')]==='undefined'&&typeof _0x493243[_0x6fe1('0x1a')]===_0x6fe1('0x1b');var _0x5230af=_0x2478c1[_0x6fe1('0x1c')];var _0x3ace2f=_0x3b7619?0x0:_0x493243[_0x6fe1('0x19')];var _0x4f3c33=_0x3b7619?_0x2478c1[_0x6fe1('0x1c')]:_0x493243[_0x6fe1('0x19')]+_0x493243['limit'];var _0x3b75da;if(_0x4f3c33>=_0x5230af){_0x4f3c33=_0x5230af;_0x3b75da=0xc8;}else{_0x3b75da=0xce;}_0x41fd67[_0x6fe1('0x17')](_0x3b75da);return _0x41fd67[_0x6fe1('0x1d')](_0x6fe1('0x1e'),_0x3ace2f+'-'+_0x4f3c33+'/'+_0x5230af)[_0x6fe1('0x18')](_0x2478c1);}return null;};}function patchUpdates(_0x3bb0df){return function(_0x1309a7){try{jsonpatch[_0x6fe1('0x1f')](_0x1309a7,_0x3bb0df,!![]);}catch(_0x402d70){return BPromise[_0x6fe1('0x20')](_0x402d70);}return _0x1309a7[_0x6fe1('0x21')]();};}function saveUpdates(_0x2b12c9,_0x3a9c3a){return function(_0x4d0d4b){if(_0x4d0d4b){return _0x4d0d4b[_0x6fe1('0x22')](_0x2b12c9)['then'](function(_0x538c78){return _0x538c78;});}return null;};}function removeEntity(_0x4c3773,_0x34cb93){return function(_0x183c8f){if(_0x183c8f){return _0x183c8f[_0x6fe1('0x23')]()[_0x6fe1('0x24')](function(){_0x4c3773['status'](0xcc)[_0x6fe1('0x16')]();});}};}function handleEntityNotFound(_0x1f375f,_0x5ddbe2){return function(_0x344a0c){if(!_0x344a0c){_0x1f375f[_0x6fe1('0x25')](0x194);}return _0x344a0c;};}function handleError(_0x48ee2f,_0x4081d9){_0x4081d9=_0x4081d9||0x1f4;return function(_0x36c2f9){logger['error'](_0x36c2f9['stack']);if(_0x36c2f9[_0x6fe1('0x26')]){delete _0x36c2f9['name'];}_0x48ee2f[_0x6fe1('0x17')](_0x4081d9)['send'](_0x36c2f9);};}exports['index']=function(_0x2a8d5c,_0x2e1705){var _0x528092={},_0x2781fb={},_0x558aa2={'count':0x0,'rows':[]};var _0x13132f=_['map'](db['OpenchannelApplication']['rawAttributes'],function(_0x4c30c4){return{'name':_0x4c30c4[_0x6fe1('0x27')],'type':_0x4c30c4[_0x6fe1('0x28')]['key']};});_0x2781fb[_0x6fe1('0x29')]=_['map'](_0x13132f,'name');_0x2781fb[_0x6fe1('0x2a')]=_[_0x6fe1('0x2b')](_0x2a8d5c[_0x6fe1('0x2a')]);_0x2781fb[_0x6fe1('0x2c')]=_[_0x6fe1('0x2d')](_0x2781fb[_0x6fe1('0x29')],_0x2781fb[_0x6fe1('0x2a')]);_0x528092[_0x6fe1('0x2e')]=_[_0x6fe1('0x2d')](_0x2781fb[_0x6fe1('0x29')],qs['fields'](_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x2f')]));_0x528092['attributes']=_0x528092['attributes'][_0x6fe1('0x30')]?_0x528092['attributes']:_0x2781fb[_0x6fe1('0x29')];if(!_0x2a8d5c['query']['hasOwnProperty'](_0x6fe1('0x31'))){_0x528092[_0x6fe1('0x1a')]=qs[_0x6fe1('0x1a')](_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x1a')]);_0x528092[_0x6fe1('0x19')]=qs['offset'](_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x19')]);}_0x528092['order']=qs['sort'](_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x32')]);_0x528092[_0x6fe1('0x33')]=qs[_0x6fe1('0x2c')](_[_0x6fe1('0x34')](_0x2a8d5c['query'],_0x2781fb[_0x6fe1('0x2c')]),_0x13132f);if(_0x2a8d5c['query'][_0x6fe1('0x35')]){_0x528092[_0x6fe1('0x33')]=_[_0x6fe1('0x36')](_0x528092['where'],{'$or':_[_0x6fe1('0x37')](_0x13132f,function(_0x23765a){if(_0x23765a['type']!=='VIRTUAL'){var _0x5d2ea0={};_0x5d2ea0[_0x23765a[_0x6fe1('0x26')]]={'$like':'%'+_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x35')]+'%'};return _0x5d2ea0;}})});}_0x528092=_[_0x6fe1('0x36')]({},_0x528092,_0x2a8d5c[_0x6fe1('0x38')]);var _0x2b683d={'where':_0x528092[_0x6fe1('0x33')]};return db[_0x6fe1('0x39')][_0x6fe1('0x1c')](_0x2b683d)[_0x6fe1('0x24')](function(_0x525b99){_0x558aa2[_0x6fe1('0x1c')]=_0x525b99;if(_0x2a8d5c[_0x6fe1('0x2a')][_0x6fe1('0x3a')]){_0x528092[_0x6fe1('0x3b')]=[{'all':!![]}];}return db[_0x6fe1('0x39')][_0x6fe1('0x3c')](_0x528092);})['then'](function(_0x23432e){_0x558aa2['rows']=_0x23432e;return _0x558aa2;})['then'](respondWithFilteredResult(_0x2e1705,_0x528092))['catch'](handleError(_0x2e1705,null));};exports[_0x6fe1('0x3d')]=function(_0x4aedef,_0x23573a){var _0x18a80e={'raw':!![],'where':{'id':_0x4aedef[_0x6fe1('0x3e')]['id']}},_0x4ee7c7={};_0x4ee7c7[_0x6fe1('0x29')]=_[_0x6fe1('0x2b')](db[_0x6fe1('0x39')]['rawAttributes']);_0x4ee7c7[_0x6fe1('0x2a')]=_[_0x6fe1('0x2b')](_0x4aedef['query']);_0x4ee7c7[_0x6fe1('0x2c')]=_[_0x6fe1('0x2d')](_0x4ee7c7[_0x6fe1('0x29')],_0x4ee7c7['query']);_0x18a80e[_0x6fe1('0x2e')]=_[_0x6fe1('0x2d')](_0x4ee7c7[_0x6fe1('0x29')],qs['fields'](_0x4aedef['query'][_0x6fe1('0x2f')]));_0x18a80e[_0x6fe1('0x2e')]=_0x18a80e[_0x6fe1('0x2e')][_0x6fe1('0x30')]?_0x18a80e[_0x6fe1('0x2e')]:_0x4ee7c7['model'];if(_0x4aedef[_0x6fe1('0x2a')][_0x6fe1('0x3a')]){_0x18a80e[_0x6fe1('0x3b')]=[{'all':!![]}];}_0x18a80e=_[_0x6fe1('0x36')]({},_0x18a80e,_0x4aedef[_0x6fe1('0x38')]);return db['OpenchannelApplication']['find'](_0x18a80e)['then'](handleEntityNotFound(_0x23573a,null))[_0x6fe1('0x24')](respondWithResult(_0x23573a,null))[_0x6fe1('0x3f')](handleError(_0x23573a,null));};exports['create']=function(_0x564bc7,_0x366ee0){return db[_0x6fe1('0x39')][_0x6fe1('0x40')](_0x564bc7[_0x6fe1('0x41')],{})[_0x6fe1('0x24')](respondWithResult(_0x366ee0,0xc9))[_0x6fe1('0x3f')](handleError(_0x366ee0,null));};exports[_0x6fe1('0x22')]=function(_0x1570be,_0x475ce7){if(_0x1570be[_0x6fe1('0x41')]['id']){delete _0x1570be[_0x6fe1('0x41')]['id'];}return db['OpenchannelApplication']['find']({'where':{'id':_0x1570be[_0x6fe1('0x3e')]['id']}})[_0x6fe1('0x24')](handleEntityNotFound(_0x475ce7,null))['then'](saveUpdates(_0x1570be[_0x6fe1('0x41')],null))[_0x6fe1('0x24')](respondWithResult(_0x475ce7,null))[_0x6fe1('0x3f')](handleError(_0x475ce7,null));};exports[_0x6fe1('0x23')]=function(_0x34054d,_0x4c872c){return db['OpenchannelApplication'][_0x6fe1('0x42')]({'where':{'id':_0x34054d['params']['id']}})[_0x6fe1('0x24')](handleEntityNotFound(_0x4c872c,null))['then'](removeEntity(_0x4c872c,null))[_0x6fe1('0x3f')](handleError(_0x4c872c,null));};
\ No newline at end of file