Built motion from commit a679711e.|2.6.15
[motion2.git] / server / api / intVtigerField / intVtigerField.controller.js
index 286e3c4..9645a0d 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x8d64=['../../config/license/util','../../mysqldb','sendStatus','status','end','json','offset','undefined','limit','count','Content-Range','apply','reject','update','then','destroy','error','stack','name','map','VtigerField','fieldName','type','key','model','query','intersection','attributes','fields','length','hasOwnProperty','nolimit','order','sort','where','filters','filter','merge','options','include','rows','catch','keys','rawAttributes','includeAll','create','body','find','params','eml-format','rimraf','fast-json-patch','request-promise','moment','bluebird','mustache','path','sox','ejs','fs-extra','squel','crypto','jsforce','desk.js','to-csv','papaparse','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/utils','../../config/environment'];(function(_0x1b4c04,_0x8d961d){var _0x374f5d=function(_0x11dc31){while(--_0x11dc31){_0x1b4c04['push'](_0x1b4c04['shift']());}};_0x374f5d(++_0x8d961d);}(_0x8d64,0x151));var _0x48d6=function(_0x3ab9ee,_0x4a74b8){_0x3ab9ee=_0x3ab9ee-0x0;var _0x82ee88=_0x8d64[_0x3ab9ee];return _0x82ee88;};'use strict';var emlformat=require(_0x48d6('0x0'));var rimraf=require(_0x48d6('0x1'));var zipdir=require('zip-dir');var jsonpatch=require(_0x48d6('0x2'));var rp=require(_0x48d6('0x3'));var moment=require(_0x48d6('0x4'));var BPromise=require(_0x48d6('0x5'));var Mustache=require(_0x48d6('0x6'));var util=require('util');var path=require(_0x48d6('0x7'));var sox=require(_0x48d6('0x8'));var csv=require('to-csv');var ejs=require(_0x48d6('0x9'));var fs=require('fs');var fs_extra=require(_0x48d6('0xa'));var _=require('lodash');var squel=require(_0x48d6('0xb'));var crypto=require(_0x48d6('0xc'));var jsforce=require(_0x48d6('0xd'));var deskjs=require(_0x48d6('0xe'));var toCsv=require(_0x48d6('0xf'));var querystring=require('querystring');var Papa=require(_0x48d6('0x10'));var Redis=require(_0x48d6('0x11'));var authService=require(_0x48d6('0x12'));var qs=require('../../components/parsers/qs');var as=require(_0x48d6('0x13'));var hardwareService=require(_0x48d6('0x14'));var logger=require('../../config/logger')('api');var utils=require(_0x48d6('0x15'));var config=require(_0x48d6('0x16'));var licenseUtil=require(_0x48d6('0x17'));var db=require(_0x48d6('0x18'))['db'];function respondWithStatusCode(_0x402846,_0x2bb72f){_0x2bb72f=_0x2bb72f||0xcc;return function(_0xa12f6d){if(_0xa12f6d){return _0x402846[_0x48d6('0x19')](_0x2bb72f);}return _0x402846[_0x48d6('0x1a')](_0x2bb72f)[_0x48d6('0x1b')]();};}function respondWithResult(_0x7bcc39,_0x21f024){_0x21f024=_0x21f024||0xc8;return function(_0x153215){if(_0x153215){return _0x7bcc39[_0x48d6('0x1a')](_0x21f024)[_0x48d6('0x1c')](_0x153215);}};}function respondWithFilteredResult(_0x18759c,_0xb34c92){return function(_0x38052d){if(_0x38052d){var _0x34a8ee=typeof _0xb34c92[_0x48d6('0x1d')]===_0x48d6('0x1e')&&typeof _0xb34c92[_0x48d6('0x1f')]==='undefined';var _0x1a3edf=_0x38052d['count'];var _0x1794a8=_0x34a8ee?0x0:_0xb34c92[_0x48d6('0x1d')];var _0x5018ec=_0x34a8ee?_0x38052d[_0x48d6('0x20')]:_0xb34c92[_0x48d6('0x1d')]+_0xb34c92[_0x48d6('0x1f')];var _0x41ec5d;if(_0x5018ec>=_0x1a3edf){_0x5018ec=_0x1a3edf;_0x41ec5d=0xc8;}else{_0x41ec5d=0xce;}_0x18759c[_0x48d6('0x1a')](_0x41ec5d);return _0x18759c['set'](_0x48d6('0x21'),_0x1794a8+'-'+_0x5018ec+'/'+_0x1a3edf)[_0x48d6('0x1c')](_0x38052d);}return null;};}function patchUpdates(_0x481bb){return function(_0x4b7e99){try{jsonpatch[_0x48d6('0x22')](_0x4b7e99,_0x481bb,!![]);}catch(_0x5df3e3){return BPromise[_0x48d6('0x23')](_0x5df3e3);}return _0x4b7e99['save']();};}function saveUpdates(_0x373247,_0x448bac){return function(_0xe98fde){if(_0xe98fde){return _0xe98fde[_0x48d6('0x24')](_0x373247)[_0x48d6('0x25')](function(_0x1158ef){return _0x1158ef;});}return null;};}function removeEntity(_0x2089d2,_0x1b64ef){return function(_0x341907){if(_0x341907){return _0x341907[_0x48d6('0x26')]()['then'](function(){_0x2089d2[_0x48d6('0x1a')](0xcc)[_0x48d6('0x1b')]();});}};}function handleEntityNotFound(_0x2db6a1,_0x4de85d){return function(_0x5c756a){if(!_0x5c756a){_0x2db6a1[_0x48d6('0x19')](0x194);}return _0x5c756a;};}function handleError(_0x56e393,_0x521f6f){_0x521f6f=_0x521f6f||0x1f4;return function(_0x2d0b44){logger[_0x48d6('0x27')](_0x2d0b44[_0x48d6('0x28')]);if(_0x2d0b44[_0x48d6('0x29')]){delete _0x2d0b44['name'];}_0x56e393[_0x48d6('0x1a')](_0x521f6f)['send'](_0x2d0b44);};}exports['index']=function(_0xc5d5c5,_0x5eb51a){var _0x1e3f85={},_0x437ec2={},_0x4cb26e={'count':0x0,'rows':[]};var _0x44732f=_[_0x48d6('0x2a')](db[_0x48d6('0x2b')]['rawAttributes'],function(_0x539ce7){return{'name':_0x539ce7[_0x48d6('0x2c')],'type':_0x539ce7[_0x48d6('0x2d')][_0x48d6('0x2e')]};});_0x437ec2[_0x48d6('0x2f')]=_[_0x48d6('0x2a')](_0x44732f,_0x48d6('0x29'));_0x437ec2[_0x48d6('0x30')]=_['keys'](_0xc5d5c5['query']);_0x437ec2['filters']=_[_0x48d6('0x31')](_0x437ec2[_0x48d6('0x2f')],_0x437ec2[_0x48d6('0x30')]);_0x1e3f85[_0x48d6('0x32')]=_[_0x48d6('0x31')](_0x437ec2['model'],qs['fields'](_0xc5d5c5['query'][_0x48d6('0x33')]));_0x1e3f85[_0x48d6('0x32')]=_0x1e3f85['attributes'][_0x48d6('0x34')]?_0x1e3f85[_0x48d6('0x32')]:_0x437ec2['model'];if(!_0xc5d5c5[_0x48d6('0x30')][_0x48d6('0x35')](_0x48d6('0x36'))){_0x1e3f85[_0x48d6('0x1f')]=qs[_0x48d6('0x1f')](_0xc5d5c5[_0x48d6('0x30')]['limit']);_0x1e3f85[_0x48d6('0x1d')]=qs[_0x48d6('0x1d')](_0xc5d5c5[_0x48d6('0x30')]['offset']);}_0x1e3f85[_0x48d6('0x37')]=qs[_0x48d6('0x38')](_0xc5d5c5[_0x48d6('0x30')][_0x48d6('0x38')]);_0x1e3f85[_0x48d6('0x39')]=qs['filters'](_['pick'](_0xc5d5c5['query'],_0x437ec2[_0x48d6('0x3a')]),_0x44732f);if(_0xc5d5c5[_0x48d6('0x30')][_0x48d6('0x3b')]){_0x1e3f85['where']=_[_0x48d6('0x3c')](_0x1e3f85[_0x48d6('0x39')],{'$or':_[_0x48d6('0x2a')](_0x44732f,function(_0x2f9cac){if(_0x2f9cac[_0x48d6('0x2d')]!=='VIRTUAL'){var _0x26c163={};_0x26c163[_0x2f9cac[_0x48d6('0x29')]]={'$like':'%'+_0xc5d5c5['query'][_0x48d6('0x3b')]+'%'};return _0x26c163;}})});}_0x1e3f85=_[_0x48d6('0x3c')]({},_0x1e3f85,_0xc5d5c5[_0x48d6('0x3d')]);var _0x4b1dd8={'where':_0x1e3f85[_0x48d6('0x39')]};return db[_0x48d6('0x2b')]['count'](_0x4b1dd8)[_0x48d6('0x25')](function(_0x391eb0){_0x4cb26e[_0x48d6('0x20')]=_0x391eb0;if(_0xc5d5c5[_0x48d6('0x30')]['includeAll']){_0x1e3f85[_0x48d6('0x3e')]=[{'all':!![]}];}return db[_0x48d6('0x2b')]['findAll'](_0x1e3f85);})[_0x48d6('0x25')](function(_0x3cffc9){_0x4cb26e[_0x48d6('0x3f')]=_0x3cffc9;return _0x4cb26e;})['then'](respondWithFilteredResult(_0x5eb51a,_0x1e3f85))[_0x48d6('0x40')](handleError(_0x5eb51a,null));};exports['show']=function(_0x53434b,_0x5559cc){var _0x2e5d14={'raw':!![],'where':{'id':_0x53434b['params']['id']}},_0x2fa59b={};_0x2fa59b[_0x48d6('0x2f')]=_[_0x48d6('0x41')](db[_0x48d6('0x2b')][_0x48d6('0x42')]);_0x2fa59b[_0x48d6('0x30')]=_[_0x48d6('0x41')](_0x53434b['query']);_0x2fa59b[_0x48d6('0x3a')]=_[_0x48d6('0x31')](_0x2fa59b['model'],_0x2fa59b[_0x48d6('0x30')]);_0x2e5d14['attributes']=_['intersection'](_0x2fa59b['model'],qs[_0x48d6('0x33')](_0x53434b[_0x48d6('0x30')]['fields']));_0x2e5d14['attributes']=_0x2e5d14['attributes'][_0x48d6('0x34')]?_0x2e5d14[_0x48d6('0x32')]:_0x2fa59b[_0x48d6('0x2f')];if(_0x53434b[_0x48d6('0x30')][_0x48d6('0x43')]){_0x2e5d14['include']=[{'all':!![]}];}_0x2e5d14=_[_0x48d6('0x3c')]({},_0x2e5d14,_0x53434b[_0x48d6('0x3d')]);return db[_0x48d6('0x2b')]['find'](_0x2e5d14)[_0x48d6('0x25')](handleEntityNotFound(_0x5559cc,null))[_0x48d6('0x25')](respondWithResult(_0x5559cc,null))[_0x48d6('0x40')](handleError(_0x5559cc,null));};exports[_0x48d6('0x44')]=function(_0x5eec56,_0xb34f4b){return db['VtigerField']['create'](_0x5eec56[_0x48d6('0x45')],{})[_0x48d6('0x25')](respondWithResult(_0xb34f4b,0xc9))[_0x48d6('0x40')](handleError(_0xb34f4b,null));};exports[_0x48d6('0x24')]=function(_0x5ab189,_0x453d25){if(_0x5ab189[_0x48d6('0x45')]['id']){delete _0x5ab189[_0x48d6('0x45')]['id'];}return db[_0x48d6('0x2b')][_0x48d6('0x46')]({'where':{'id':_0x5ab189[_0x48d6('0x47')]['id']}})[_0x48d6('0x25')](handleEntityNotFound(_0x453d25,null))[_0x48d6('0x25')](saveUpdates(_0x5ab189[_0x48d6('0x45')],null))[_0x48d6('0x25')](respondWithResult(_0x453d25,null))[_0x48d6('0x40')](handleError(_0x453d25,null));};exports[_0x48d6('0x26')]=function(_0x294591,_0x4fae84){return db[_0x48d6('0x2b')][_0x48d6('0x46')]({'where':{'id':_0x294591['params']['id']}})['then'](handleEntityNotFound(_0x4fae84,null))[_0x48d6('0x25')](removeEntity(_0x4fae84,null))[_0x48d6('0x40')](handleError(_0x4fae84,null));};
\ No newline at end of file
+var _0x77a4=['sendStatus','status','json','offset','limit','undefined','count','set','apply','save','then','end','error','name','send','index','map','VtigerField','rawAttributes','fieldName','key','model','query','keys','filters','intersection','fields','attributes','length','hasOwnProperty','nolimit','order','sort','where','filter','merge','VIRTUAL','options','includeAll','include','rows','catch','show','params','find','create','body','update','destroy','eml-format','rimraf','zip-dir','moment','util','path','to-csv','fs-extra','lodash','squel','crypto','jsforce','desk.js','querystring','ioredis','../../components/auth/service','../../components/parsers/advancedSearch','../../config/license/hardware','../../config/logger','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb'];(function(_0x4fd7ba,_0x2f5e2e){var _0x484da9=function(_0x3e920d){while(--_0x3e920d){_0x4fd7ba['push'](_0x4fd7ba['shift']());}};_0x484da9(++_0x2f5e2e);}(_0x77a4,0x155));var _0x477a=function(_0x4d7379,_0x4b4e63){_0x4d7379=_0x4d7379-0x0;var _0x46d7cf=_0x77a4[_0x4d7379];return _0x46d7cf;};'use strict';var emlformat=require(_0x477a('0x0'));var rimraf=require(_0x477a('0x1'));var zipdir=require(_0x477a('0x2'));var jsonpatch=require('fast-json-patch');var rp=require('request-promise');var moment=require(_0x477a('0x3'));var BPromise=require('bluebird');var Mustache=require('mustache');var util=require(_0x477a('0x4'));var path=require(_0x477a('0x5'));var sox=require('sox');var csv=require(_0x477a('0x6'));var ejs=require('ejs');var fs=require('fs');var fs_extra=require(_0x477a('0x7'));var _=require(_0x477a('0x8'));var squel=require(_0x477a('0x9'));var crypto=require(_0x477a('0xa'));var jsforce=require(_0x477a('0xb'));var deskjs=require(_0x477a('0xc'));var toCsv=require(_0x477a('0x6'));var querystring=require(_0x477a('0xd'));var Papa=require('papaparse');var Redis=require(_0x477a('0xe'));var authService=require(_0x477a('0xf'));var qs=require('../../components/parsers/qs');var as=require(_0x477a('0x10'));var hardwareService=require(_0x477a('0x11'));var logger=require(_0x477a('0x12'))(_0x477a('0x13'));var utils=require(_0x477a('0x14'));var config=require(_0x477a('0x15'));var licenseUtil=require(_0x477a('0x16'));var db=require(_0x477a('0x17'))['db'];function respondWithStatusCode(_0x1d43da,_0x9f501c){_0x9f501c=_0x9f501c||0xcc;return function(_0x5eaa0c){if(_0x5eaa0c){return _0x1d43da[_0x477a('0x18')](_0x9f501c);}return _0x1d43da[_0x477a('0x19')](_0x9f501c)['end']();};}function respondWithResult(_0x55db6e,_0x2eac09){_0x2eac09=_0x2eac09||0xc8;return function(_0x1975fc){if(_0x1975fc){return _0x55db6e[_0x477a('0x19')](_0x2eac09)[_0x477a('0x1a')](_0x1975fc);}};}function respondWithFilteredResult(_0xb713e6,_0x203aa1){return function(_0x747289){if(_0x747289){var _0x213f7f=typeof _0x203aa1[_0x477a('0x1b')]==='undefined'&&typeof _0x203aa1[_0x477a('0x1c')]===_0x477a('0x1d');var _0x592182=_0x747289[_0x477a('0x1e')];var _0x49fe97=_0x213f7f?0x0:_0x203aa1['offset'];var _0x4de171=_0x213f7f?_0x747289[_0x477a('0x1e')]:_0x203aa1[_0x477a('0x1b')]+_0x203aa1[_0x477a('0x1c')];var _0xbd0525;if(_0x4de171>=_0x592182){_0x4de171=_0x592182;_0xbd0525=0xc8;}else{_0xbd0525=0xce;}_0xb713e6[_0x477a('0x19')](_0xbd0525);return _0xb713e6[_0x477a('0x1f')]('Content-Range',_0x49fe97+'-'+_0x4de171+'/'+_0x592182)[_0x477a('0x1a')](_0x747289);}return null;};}function patchUpdates(_0x29490c){return function(_0x152184){try{jsonpatch[_0x477a('0x20')](_0x152184,_0x29490c,!![]);}catch(_0x5487dc){return BPromise['reject'](_0x5487dc);}return _0x152184[_0x477a('0x21')]();};}function saveUpdates(_0x15c71c,_0x489d6b){return function(_0x2ec562){if(_0x2ec562){return _0x2ec562['update'](_0x15c71c)[_0x477a('0x22')](function(_0x5800c8){return _0x5800c8;});}return null;};}function removeEntity(_0x8de66f,_0x35765b){return function(_0x5c8d2d){if(_0x5c8d2d){return _0x5c8d2d['destroy']()[_0x477a('0x22')](function(){_0x8de66f['status'](0xcc)[_0x477a('0x23')]();});}};}function handleEntityNotFound(_0x221195,_0x17a8f8){return function(_0x4176ba){if(!_0x4176ba){_0x221195[_0x477a('0x18')](0x194);}return _0x4176ba;};}function handleError(_0x26fe40,_0x6e9655){_0x6e9655=_0x6e9655||0x1f4;return function(_0x33e441){logger[_0x477a('0x24')](_0x33e441['stack']);if(_0x33e441[_0x477a('0x25')]){delete _0x33e441[_0x477a('0x25')];}_0x26fe40[_0x477a('0x19')](_0x6e9655)[_0x477a('0x26')](_0x33e441);};}exports[_0x477a('0x27')]=function(_0x4c0749,_0x4b192e){var _0xd04f72={},_0x1ec3c1={},_0x2d2940={'count':0x0,'rows':[]};var _0x477c3c=_[_0x477a('0x28')](db[_0x477a('0x29')][_0x477a('0x2a')],function(_0x1a72de){return{'name':_0x1a72de[_0x477a('0x2b')],'type':_0x1a72de['type'][_0x477a('0x2c')]};});_0x1ec3c1[_0x477a('0x2d')]=_[_0x477a('0x28')](_0x477c3c,'name');_0x1ec3c1[_0x477a('0x2e')]=_[_0x477a('0x2f')](_0x4c0749[_0x477a('0x2e')]);_0x1ec3c1[_0x477a('0x30')]=_[_0x477a('0x31')](_0x1ec3c1[_0x477a('0x2d')],_0x1ec3c1[_0x477a('0x2e')]);_0xd04f72['attributes']=_[_0x477a('0x31')](_0x1ec3c1[_0x477a('0x2d')],qs[_0x477a('0x32')](_0x4c0749[_0x477a('0x2e')][_0x477a('0x32')]));_0xd04f72[_0x477a('0x33')]=_0xd04f72['attributes'][_0x477a('0x34')]?_0xd04f72[_0x477a('0x33')]:_0x1ec3c1[_0x477a('0x2d')];if(!_0x4c0749[_0x477a('0x2e')][_0x477a('0x35')](_0x477a('0x36'))){_0xd04f72[_0x477a('0x1c')]=qs[_0x477a('0x1c')](_0x4c0749[_0x477a('0x2e')][_0x477a('0x1c')]);_0xd04f72[_0x477a('0x1b')]=qs[_0x477a('0x1b')](_0x4c0749[_0x477a('0x2e')]['offset']);}_0xd04f72[_0x477a('0x37')]=qs['sort'](_0x4c0749[_0x477a('0x2e')][_0x477a('0x38')]);_0xd04f72[_0x477a('0x39')]=qs['filters'](_['pick'](_0x4c0749['query'],_0x1ec3c1[_0x477a('0x30')]),_0x477c3c);if(_0x4c0749[_0x477a('0x2e')][_0x477a('0x3a')]){_0xd04f72[_0x477a('0x39')]=_[_0x477a('0x3b')](_0xd04f72[_0x477a('0x39')],{'$or':_[_0x477a('0x28')](_0x477c3c,function(_0x1e0e83){if(_0x1e0e83['type']!==_0x477a('0x3c')){var _0x4b637c={};_0x4b637c[_0x1e0e83[_0x477a('0x25')]]={'$like':'%'+_0x4c0749[_0x477a('0x2e')]['filter']+'%'};return _0x4b637c;}})});}_0xd04f72=_['merge']({},_0xd04f72,_0x4c0749[_0x477a('0x3d')]);var _0x28b2f9={'where':_0xd04f72[_0x477a('0x39')]};return db['VtigerField'][_0x477a('0x1e')](_0x28b2f9)[_0x477a('0x22')](function(_0x13f121){_0x2d2940[_0x477a('0x1e')]=_0x13f121;if(_0x4c0749['query'][_0x477a('0x3e')]){_0xd04f72[_0x477a('0x3f')]=[{'all':!![]}];}return db['VtigerField']['findAll'](_0xd04f72);})[_0x477a('0x22')](function(_0x2cbb16){_0x2d2940[_0x477a('0x40')]=_0x2cbb16;return _0x2d2940;})['then'](respondWithFilteredResult(_0x4b192e,_0xd04f72))[_0x477a('0x41')](handleError(_0x4b192e,null));};exports[_0x477a('0x42')]=function(_0x342d06,_0x34b42c){var _0x4247e3={'raw':!![],'where':{'id':_0x342d06[_0x477a('0x43')]['id']}},_0x4c67e4={};_0x4c67e4[_0x477a('0x2d')]=_[_0x477a('0x2f')](db[_0x477a('0x29')][_0x477a('0x2a')]);_0x4c67e4['query']=_['keys'](_0x342d06[_0x477a('0x2e')]);_0x4c67e4[_0x477a('0x30')]=_[_0x477a('0x31')](_0x4c67e4['model'],_0x4c67e4[_0x477a('0x2e')]);_0x4247e3[_0x477a('0x33')]=_[_0x477a('0x31')](_0x4c67e4['model'],qs[_0x477a('0x32')](_0x342d06[_0x477a('0x2e')][_0x477a('0x32')]));_0x4247e3['attributes']=_0x4247e3['attributes'][_0x477a('0x34')]?_0x4247e3[_0x477a('0x33')]:_0x4c67e4[_0x477a('0x2d')];if(_0x342d06['query']['includeAll']){_0x4247e3['include']=[{'all':!![]}];}_0x4247e3=_['merge']({},_0x4247e3,_0x342d06[_0x477a('0x3d')]);return db['VtigerField'][_0x477a('0x44')](_0x4247e3)[_0x477a('0x22')](handleEntityNotFound(_0x34b42c,null))[_0x477a('0x22')](respondWithResult(_0x34b42c,null))[_0x477a('0x41')](handleError(_0x34b42c,null));};exports['create']=function(_0x2745b9,_0x42c687){return db[_0x477a('0x29')][_0x477a('0x45')](_0x2745b9[_0x477a('0x46')],{})[_0x477a('0x22')](respondWithResult(_0x42c687,0xc9))[_0x477a('0x41')](handleError(_0x42c687,null));};exports[_0x477a('0x47')]=function(_0x5aa721,_0x35213d){if(_0x5aa721[_0x477a('0x46')]['id']){delete _0x5aa721[_0x477a('0x46')]['id'];}return db['VtigerField'][_0x477a('0x44')]({'where':{'id':_0x5aa721[_0x477a('0x43')]['id']}})[_0x477a('0x22')](handleEntityNotFound(_0x35213d,null))[_0x477a('0x22')](saveUpdates(_0x5aa721[_0x477a('0x46')],null))[_0x477a('0x22')](respondWithResult(_0x35213d,null))[_0x477a('0x41')](handleError(_0x35213d,null));};exports[_0x477a('0x48')]=function(_0x3b8022,_0x187da4){return db[_0x477a('0x29')][_0x477a('0x44')]({'where':{'id':_0x3b8022[_0x477a('0x43')]['id']}})[_0x477a('0x22')](handleEntityNotFound(_0x187da4,null))[_0x477a('0x22')](removeEntity(_0x187da4,null))[_0x477a('0x41')](handleError(_0x187da4,null));};
\ No newline at end of file