Built motion from commit ffdca78c.|2.6.24
[motion2.git] / server / api / memberReport / memberReport.controller.js
index 8918150..051233a 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2c46=['rimraf','fast-json-patch','moment','bluebird','util','path','to-csv','lodash','squel','crypto','jsforce','desk.js','querystring','../../components/parsers/qs','../../components/parsers/advancedSearch','api','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','sendStatus','status','end','json','count','limit','set','Content-Range','apply','update','then','destroy','error','stack','name','send','index','map','MemberReport','fieldName','type','model','keys','query','filters','attributes','fields','length','nolimit','offset','order','sort','pick','filter','where','merge','VIRTUAL','options','includeAll','include','findAll','show','params','intersection','find','create','body','catch','html-pdf','eml-format'];(function(_0x28b0eb,_0x397441){var _0x57c94b=function(_0x291095){while(--_0x291095){_0x28b0eb['push'](_0x28b0eb['shift']());}};_0x57c94b(++_0x397441);}(_0x2c46,0x8a));var _0x62c4=function(_0x11bc8e,_0x20ca9d){_0x11bc8e=_0x11bc8e-0x0;var _0x1e5a02=_0x2c46[_0x11bc8e];return _0x1e5a02;};'use strict';var pdf=require(_0x62c4('0x0'));var emlformat=require(_0x62c4('0x1'));var rimraf=require(_0x62c4('0x2'));var zipdir=require('zip-dir');var jsonpatch=require(_0x62c4('0x3'));var rp=require('request-promise');var moment=require(_0x62c4('0x4'));var BPromise=require(_0x62c4('0x5'));var Mustache=require('mustache');var util=require(_0x62c4('0x6'));var path=require(_0x62c4('0x7'));var sox=require('sox');var csv=require(_0x62c4('0x8'));var ejs=require('ejs');var fs=require('fs');var _=require(_0x62c4('0x9'));var squel=require(_0x62c4('0xa'));var crypto=require(_0x62c4('0xb'));var jsforce=require(_0x62c4('0xc'));var deskjs=require(_0x62c4('0xd'));var toCsv=require('to-csv');var querystring=require(_0x62c4('0xe'));var Papa=require('papaparse');var Redis=require('ioredis');var authService=require('../../components/auth/service');var qs=require(_0x62c4('0xf'));var as=require(_0x62c4('0x10'));var hardwareService=require('../../config/license/hardware');var logger=require('../../config/logger')(_0x62c4('0x11'));var utils=require(_0x62c4('0x12'));var config=require(_0x62c4('0x13'));var licenseUtil=require(_0x62c4('0x14'));var db=require(_0x62c4('0x15'))['db'];function respondWithStatusCode(_0x15e9d5,_0x3ad06d){_0x3ad06d=_0x3ad06d||0xcc;return function(_0x421a90){if(_0x421a90){return _0x15e9d5[_0x62c4('0x16')](_0x3ad06d);}return _0x15e9d5[_0x62c4('0x17')](_0x3ad06d)[_0x62c4('0x18')]();};}function respondWithResult(_0xe6d208,_0x50d964){_0x50d964=_0x50d964||0xc8;return function(_0x2d90d2){if(_0x2d90d2){return _0xe6d208[_0x62c4('0x17')](_0x50d964)[_0x62c4('0x19')](_0x2d90d2);}};}function respondWithFilteredResult(_0x358774,_0x343985){return function(_0x10865d){if(_0x10865d){var _0x42668b=_0x10865d[_0x62c4('0x1a')],_0x5d148b=_0x343985['offset'],_0x4667f0=_0x343985['offset']+_0x343985[_0x62c4('0x1b')],_0x2eacdd;if(_0x4667f0>=_0x42668b){_0x4667f0=_0x42668b;_0x2eacdd=0xc8;}else{_0x2eacdd=0xce;}_0x358774[_0x62c4('0x17')](_0x2eacdd);return _0x358774[_0x62c4('0x1c')](_0x62c4('0x1d'),_0x5d148b+'-'+_0x4667f0+'/'+_0x42668b)[_0x62c4('0x19')](_0x10865d);}return null;};}function patchUpdates(_0x2734ea){return function(_0x18deb8){try{jsonpatch[_0x62c4('0x1e')](_0x18deb8,_0x2734ea,!![]);}catch(_0x2f6cf7){return BPromise['reject'](_0x2f6cf7);}return _0x18deb8['save']();};}function saveUpdates(_0xd52736,_0x40a7a2){return function(_0x4883d0){if(_0x4883d0){return _0x4883d0[_0x62c4('0x1f')](_0xd52736)[_0x62c4('0x20')](function(_0x4f5ec7){return _0x4f5ec7;});}return null;};}function removeEntity(_0xee7e73,_0x52a360){return function(_0x108106){if(_0x108106){return _0x108106[_0x62c4('0x21')]()[_0x62c4('0x20')](function(){_0xee7e73[_0x62c4('0x17')](0xcc)['end']();});}};}function handleEntityNotFound(_0x2c8e52,_0x320c7d){return function(_0x4e5154){if(!_0x4e5154){_0x2c8e52[_0x62c4('0x16')](0x194);}return _0x4e5154;};}function handleError(_0x59f88d,_0x4e20fb){_0x4e20fb=_0x4e20fb||0x1f4;return function(_0x304527){logger[_0x62c4('0x22')](_0x304527[_0x62c4('0x23')]);if(_0x304527[_0x62c4('0x24')]){delete _0x304527['name'];}_0x59f88d[_0x62c4('0x17')](_0x4e20fb)[_0x62c4('0x25')](_0x304527);};}exports[_0x62c4('0x26')]=function(_0x8ab2bf,_0x512a05){var _0x20056c={},_0x3fe1d0={},_0x5153ea={'count':0x0,'rows':[]};var _0x4ae04a=_[_0x62c4('0x27')](db[_0x62c4('0x28')]['rawAttributes'],function(_0x5db525){return{'name':_0x5db525[_0x62c4('0x29')],'type':_0x5db525[_0x62c4('0x2a')]['key']};});_0x3fe1d0[_0x62c4('0x2b')]=_[_0x62c4('0x27')](_0x4ae04a,'name');_0x3fe1d0['query']=_[_0x62c4('0x2c')](_0x8ab2bf[_0x62c4('0x2d')]);_0x3fe1d0[_0x62c4('0x2e')]=_['intersection'](_0x3fe1d0['model'],_0x3fe1d0[_0x62c4('0x2d')]);_0x20056c[_0x62c4('0x2f')]=_['intersection'](_0x3fe1d0[_0x62c4('0x2b')],qs[_0x62c4('0x30')](_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x30')]));_0x20056c['attributes']=_0x20056c[_0x62c4('0x2f')][_0x62c4('0x31')]?_0x20056c[_0x62c4('0x2f')]:_0x3fe1d0[_0x62c4('0x2b')];if(!_0x8ab2bf[_0x62c4('0x2d')]['hasOwnProperty'](_0x62c4('0x32'))){_0x20056c[_0x62c4('0x1b')]=qs[_0x62c4('0x1b')](_0x8ab2bf['query'][_0x62c4('0x1b')]);_0x20056c['offset']=qs[_0x62c4('0x33')](_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x33')]);}_0x20056c[_0x62c4('0x34')]=qs[_0x62c4('0x35')](_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x35')]);_0x20056c['where']=qs[_0x62c4('0x2e')](_[_0x62c4('0x36')](_0x8ab2bf[_0x62c4('0x2d')],_0x3fe1d0[_0x62c4('0x2e')]),_0x4ae04a);if(_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x37')]){_0x20056c[_0x62c4('0x38')]=_[_0x62c4('0x39')](_0x20056c[_0x62c4('0x38')],{'$or':_[_0x62c4('0x27')](_0x4ae04a,function(_0x57ddcf){if(_0x57ddcf[_0x62c4('0x2a')]!==_0x62c4('0x3a')){var _0x58ff7f={};_0x58ff7f[_0x57ddcf['name']]={'$like':'%'+_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x37')]+'%'};return _0x58ff7f;}})});}_0x20056c=_[_0x62c4('0x39')]({},_0x20056c,_0x8ab2bf[_0x62c4('0x3b')]);var _0x5b7d8a={'where':_0x20056c[_0x62c4('0x38')]};return db[_0x62c4('0x28')][_0x62c4('0x1a')](_0x5b7d8a)[_0x62c4('0x20')](function(_0x1c6b46){_0x5153ea[_0x62c4('0x1a')]=_0x1c6b46;if(_0x8ab2bf[_0x62c4('0x2d')][_0x62c4('0x3c')]){_0x20056c[_0x62c4('0x3d')]=[{'all':!![]}];}return db[_0x62c4('0x28')][_0x62c4('0x3e')](_0x20056c);})[_0x62c4('0x20')](function(_0x525379){_0x5153ea['rows']=_0x525379;return _0x5153ea;})[_0x62c4('0x20')](respondWithFilteredResult(_0x512a05,_0x20056c))['catch'](handleError(_0x512a05,null));};exports[_0x62c4('0x3f')]=function(_0x5a79ef,_0xcc8b66){var _0x209382={'raw':!![],'where':{'id':_0x5a79ef[_0x62c4('0x40')]['id']}},_0x1aa7cc={};_0x1aa7cc[_0x62c4('0x2b')]=_['keys'](db[_0x62c4('0x28')]['rawAttributes']);_0x1aa7cc[_0x62c4('0x2d')]=_[_0x62c4('0x2c')](_0x5a79ef['query']);_0x1aa7cc[_0x62c4('0x2e')]=_[_0x62c4('0x41')](_0x1aa7cc[_0x62c4('0x2b')],_0x1aa7cc[_0x62c4('0x2d')]);_0x209382[_0x62c4('0x2f')]=_[_0x62c4('0x41')](_0x1aa7cc['model'],qs['fields'](_0x5a79ef['query'][_0x62c4('0x30')]));_0x209382[_0x62c4('0x2f')]=_0x209382['attributes'][_0x62c4('0x31')]?_0x209382[_0x62c4('0x2f')]:_0x1aa7cc[_0x62c4('0x2b')];if(_0x5a79ef[_0x62c4('0x2d')]['includeAll']){_0x209382[_0x62c4('0x3d')]=[{'all':!![]}];}_0x209382=_[_0x62c4('0x39')]({},_0x209382,_0x5a79ef[_0x62c4('0x3b')]);return db[_0x62c4('0x28')][_0x62c4('0x42')](_0x209382)[_0x62c4('0x20')](handleEntityNotFound(_0xcc8b66,null))['then'](respondWithResult(_0xcc8b66,null))['catch'](handleError(_0xcc8b66,null));};exports[_0x62c4('0x43')]=function(_0xcdaabd,_0x3bdab2){return db[_0x62c4('0x28')]['create'](_0xcdaabd['body'],{})['then'](respondWithResult(_0x3bdab2,0xc9))['catch'](handleError(_0x3bdab2,null));};exports['update']=function(_0x40132c,_0x49fc6f){if(_0x40132c[_0x62c4('0x44')]['id']){delete _0x40132c[_0x62c4('0x44')]['id'];}return db['MemberReport'][_0x62c4('0x42')]({'where':{'id':_0x40132c[_0x62c4('0x40')]['id']}})[_0x62c4('0x20')](handleEntityNotFound(_0x49fc6f,null))[_0x62c4('0x20')](saveUpdates(_0x40132c['body'],null))[_0x62c4('0x20')](respondWithResult(_0x49fc6f,null))[_0x62c4('0x45')](handleError(_0x49fc6f,null));};exports[_0x62c4('0x21')]=function(_0xaea6ad,_0x27b062){return db[_0x62c4('0x28')][_0x62c4('0x42')]({'where':{'id':_0xaea6ad[_0x62c4('0x40')]['id']}})[_0x62c4('0x20')](handleEntityNotFound(_0x27b062,null))[_0x62c4('0x20')](removeEntity(_0x27b062,null))[_0x62c4('0x45')](handleError(_0x27b062,null));};exports['describe']=function(_0x4069a5,_0x1f3f46){return db[_0x62c4('0x28')]['describe']()[_0x62c4('0x20')](respondWithResult(_0x1f3f46,null))['catch'](handleError(_0x1f3f46,null));};
\ No newline at end of file
+var _0x008c=['destroy','sendStatus','send','index','MemberReport','rawAttributes','key','model','map','name','query','keys','filters','intersection','attributes','fields','length','hasOwnProperty','nolimit','sort','where','type','VIRTUAL','filter','merge','options','includeAll','include','findAll','rows','show','catch','create','body','find','params','describe','eml-format','rimraf','zip-dir','fast-json-patch','request-promise','bluebird','mustache','util','path','sox','to-csv','ejs','fs-extra','lodash','crypto','desk.js','papaparse','ioredis','../../config/license/hardware','../../config/logger','../../config/utils','../../config/environment','../../config/license/util','../../mysqldb','end','status','json','offset','undefined','limit','count','save','update','then'];(function(_0x4ae309,_0x41b608){var _0x15a908=function(_0x26b8fb){while(--_0x26b8fb){_0x4ae309['push'](_0x4ae309['shift']());}};_0x15a908(++_0x41b608);}(_0x008c,0x188));var _0xc008=function(_0x3f0cb4,_0x49ec71){_0x3f0cb4=_0x3f0cb4-0x0;var _0x5f33b0=_0x008c[_0x3f0cb4];return _0x5f33b0;};'use strict';var emlformat=require(_0xc008('0x0'));var rimraf=require(_0xc008('0x1'));var zipdir=require(_0xc008('0x2'));var jsonpatch=require(_0xc008('0x3'));var rp=require(_0xc008('0x4'));var moment=require('moment');var BPromise=require(_0xc008('0x5'));var Mustache=require(_0xc008('0x6'));var util=require(_0xc008('0x7'));var path=require(_0xc008('0x8'));var sox=require(_0xc008('0x9'));var csv=require(_0xc008('0xa'));var ejs=require(_0xc008('0xb'));var fs=require('fs');var fs_extra=require(_0xc008('0xc'));var _=require(_0xc008('0xd'));var squel=require('squel');var crypto=require(_0xc008('0xe'));var jsforce=require('jsforce');var deskjs=require(_0xc008('0xf'));var toCsv=require('to-csv');var querystring=require('querystring');var Papa=require(_0xc008('0x10'));var Redis=require(_0xc008('0x11'));var authService=require('../../components/auth/service');var qs=require('../../components/parsers/qs');var as=require('../../components/parsers/advancedSearch');var hardwareService=require(_0xc008('0x12'));var logger=require(_0xc008('0x13'))('api');var utils=require(_0xc008('0x14'));var config=require(_0xc008('0x15'));var licenseUtil=require(_0xc008('0x16'));var db=require(_0xc008('0x17'))['db'];function respondWithStatusCode(_0x9ffa93,_0x1819c6){_0x1819c6=_0x1819c6||0xcc;return function(_0x69726e){if(_0x69726e){return _0x9ffa93['sendStatus'](_0x1819c6);}return _0x9ffa93['status'](_0x1819c6)[_0xc008('0x18')]();};}function respondWithResult(_0x50c1ab,_0x25e13f){_0x25e13f=_0x25e13f||0xc8;return function(_0x4584e1){if(_0x4584e1){return _0x50c1ab[_0xc008('0x19')](_0x25e13f)[_0xc008('0x1a')](_0x4584e1);}};}function respondWithFilteredResult(_0x3f0ecf,_0x5ee00b){return function(_0x5e894e){if(_0x5e894e){var _0x4bd0f4=typeof _0x5ee00b[_0xc008('0x1b')]===_0xc008('0x1c')&&typeof _0x5ee00b[_0xc008('0x1d')]===_0xc008('0x1c');var _0x4fe771=_0x5e894e['count'];var _0x540e45=_0x4bd0f4?0x0:_0x5ee00b['offset'];var _0x46042b=_0x4bd0f4?_0x5e894e[_0xc008('0x1e')]:_0x5ee00b['offset']+_0x5ee00b[_0xc008('0x1d')];var _0x5906e6;if(_0x46042b>=_0x4fe771){_0x46042b=_0x4fe771;_0x5906e6=0xc8;}else{_0x5906e6=0xce;}_0x3f0ecf['status'](_0x5906e6);return _0x3f0ecf['set']('Content-Range',_0x540e45+'-'+_0x46042b+'/'+_0x4fe771)[_0xc008('0x1a')](_0x5e894e);}return null;};}function patchUpdates(_0x4b9726){return function(_0x5560b1){try{jsonpatch['apply'](_0x5560b1,_0x4b9726,!![]);}catch(_0x4a582d){return BPromise['reject'](_0x4a582d);}return _0x5560b1[_0xc008('0x1f')]();};}function saveUpdates(_0x4777a6,_0x251db2){return function(_0x415af3){if(_0x415af3){return _0x415af3[_0xc008('0x20')](_0x4777a6)[_0xc008('0x21')](function(_0x4f43e2){return _0x4f43e2;});}return null;};}function removeEntity(_0x459fd9,_0x5c85f2){return function(_0x58a6ea){if(_0x58a6ea){return _0x58a6ea[_0xc008('0x22')]()[_0xc008('0x21')](function(){_0x459fd9[_0xc008('0x19')](0xcc)[_0xc008('0x18')]();});}};}function handleEntityNotFound(_0x5410f5,_0x48582b){return function(_0x5de1e9){if(!_0x5de1e9){_0x5410f5[_0xc008('0x23')](0x194);}return _0x5de1e9;};}function handleError(_0x15dade,_0x92c582){_0x92c582=_0x92c582||0x1f4;return function(_0x2e31c2){logger['error'](_0x2e31c2['stack']);if(_0x2e31c2['name']){delete _0x2e31c2['name'];}_0x15dade['status'](_0x92c582)[_0xc008('0x24')](_0x2e31c2);};}exports[_0xc008('0x25')]=function(_0x25eae4,_0x529961){var _0x24c14c={},_0x32390d={},_0x209591={'count':0x0,'rows':[]};var _0x2a7d4f=_['map'](db[_0xc008('0x26')][_0xc008('0x27')],function(_0x53ed35){return{'name':_0x53ed35['fieldName'],'type':_0x53ed35['type'][_0xc008('0x28')]};});_0x32390d[_0xc008('0x29')]=_[_0xc008('0x2a')](_0x2a7d4f,_0xc008('0x2b'));_0x32390d[_0xc008('0x2c')]=_[_0xc008('0x2d')](_0x25eae4[_0xc008('0x2c')]);_0x32390d[_0xc008('0x2e')]=_[_0xc008('0x2f')](_0x32390d[_0xc008('0x29')],_0x32390d[_0xc008('0x2c')]);_0x24c14c[_0xc008('0x30')]=_['intersection'](_0x32390d[_0xc008('0x29')],qs[_0xc008('0x31')](_0x25eae4['query'][_0xc008('0x31')]));_0x24c14c[_0xc008('0x30')]=_0x24c14c[_0xc008('0x30')][_0xc008('0x32')]?_0x24c14c[_0xc008('0x30')]:_0x32390d[_0xc008('0x29')];if(!_0x25eae4[_0xc008('0x2c')][_0xc008('0x33')](_0xc008('0x34'))){_0x24c14c['limit']=qs[_0xc008('0x1d')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1d')]);_0x24c14c[_0xc008('0x1b')]=qs[_0xc008('0x1b')](_0x25eae4[_0xc008('0x2c')][_0xc008('0x1b')]);}_0x24c14c['order']=qs[_0xc008('0x35')](_0x25eae4[_0xc008('0x2c')]['sort']);_0x24c14c[_0xc008('0x36')]=qs[_0xc008('0x2e')](_['pick'](_0x25eae4[_0xc008('0x2c')],_0x32390d[_0xc008('0x2e')]),_0x2a7d4f);if(_0x25eae4[_0xc008('0x2c')]['filter']){_0x24c14c['where']=_['merge'](_0x24c14c[_0xc008('0x36')],{'$or':_['map'](_0x2a7d4f,function(_0x3dd0ac){if(_0x3dd0ac[_0xc008('0x37')]!==_0xc008('0x38')){var _0x440459={};_0x440459[_0x3dd0ac[_0xc008('0x2b')]]={'$like':'%'+_0x25eae4[_0xc008('0x2c')][_0xc008('0x39')]+'%'};return _0x440459;}})});}_0x24c14c=_[_0xc008('0x3a')]({},_0x24c14c,_0x25eae4[_0xc008('0x3b')]);var _0x387dfd={'where':_0x24c14c[_0xc008('0x36')]};return db[_0xc008('0x26')][_0xc008('0x1e')](_0x387dfd)[_0xc008('0x21')](function(_0x4cace5){_0x209591[_0xc008('0x1e')]=_0x4cace5;if(_0x25eae4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x24c14c[_0xc008('0x3d')]=[{'all':!![]}];}return db['MemberReport'][_0xc008('0x3e')](_0x24c14c);})[_0xc008('0x21')](function(_0xc8cb91){_0x209591[_0xc008('0x3f')]=_0xc8cb91;return _0x209591;})[_0xc008('0x21')](respondWithFilteredResult(_0x529961,_0x24c14c))['catch'](handleError(_0x529961,null));};exports[_0xc008('0x40')]=function(_0x3323f4,_0x3794b0){var _0x3e9a99={'raw':!![],'where':{'id':_0x3323f4['params']['id']}},_0x7279e8={};_0x7279e8[_0xc008('0x29')]=_[_0xc008('0x2d')](db[_0xc008('0x26')][_0xc008('0x27')]);_0x7279e8['query']=_[_0xc008('0x2d')](_0x3323f4[_0xc008('0x2c')]);_0x7279e8[_0xc008('0x2e')]=_['intersection'](_0x7279e8[_0xc008('0x29')],_0x7279e8['query']);_0x3e9a99[_0xc008('0x30')]=_['intersection'](_0x7279e8[_0xc008('0x29')],qs[_0xc008('0x31')](_0x3323f4['query'][_0xc008('0x31')]));_0x3e9a99[_0xc008('0x30')]=_0x3e9a99[_0xc008('0x30')]['length']?_0x3e9a99[_0xc008('0x30')]:_0x7279e8[_0xc008('0x29')];if(_0x3323f4[_0xc008('0x2c')][_0xc008('0x3c')]){_0x3e9a99[_0xc008('0x3d')]=[{'all':!![]}];}_0x3e9a99=_[_0xc008('0x3a')]({},_0x3e9a99,_0x3323f4['options']);return db['MemberReport']['find'](_0x3e9a99)[_0xc008('0x21')](handleEntityNotFound(_0x3794b0,null))[_0xc008('0x21')](respondWithResult(_0x3794b0,null))[_0xc008('0x41')](handleError(_0x3794b0,null));};exports[_0xc008('0x42')]=function(_0x25289f,_0x24f6a4){return db[_0xc008('0x26')][_0xc008('0x42')](_0x25289f['body'],{})['then'](respondWithResult(_0x24f6a4,0xc9))['catch'](handleError(_0x24f6a4,null));};exports[_0xc008('0x20')]=function(_0x2651cf,_0x158eae){if(_0x2651cf['body']['id']){delete _0x2651cf[_0xc008('0x43')]['id'];}return db[_0xc008('0x26')][_0xc008('0x44')]({'where':{'id':_0x2651cf[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x158eae,null))[_0xc008('0x21')](saveUpdates(_0x2651cf[_0xc008('0x43')],null))[_0xc008('0x21')](respondWithResult(_0x158eae,null))[_0xc008('0x41')](handleError(_0x158eae,null));};exports[_0xc008('0x22')]=function(_0x52c444,_0x4c63d4){return db[_0xc008('0x26')]['find']({'where':{'id':_0x52c444[_0xc008('0x45')]['id']}})[_0xc008('0x21')](handleEntityNotFound(_0x4c63d4,null))[_0xc008('0x21')](removeEntity(_0x4c63d4,null))['catch'](handleError(_0x4c63d4,null));};exports[_0xc008('0x46')]=function(_0x32b435,_0xee64){return db[_0xc008('0x26')][_0xc008('0x46')]()['then'](respondWithResult(_0xee64,null))[_0xc008('0x41')](handleError(_0xee64,null));};
\ No newline at end of file