Built motion from commit 639a1a7f.|2.6.19
[motion2.git] / server / components / import / cm / csv.js
index b91830e..be79485 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x23d8=['resolve','unlinkSync','exit','CSV\x20import\x20process\x20stopped!','createReadStream','parse','info','CSV\x20parsed\x20correctly!','squel','ioredis','../../../mysqldb','../../../config/environment','../../../config/logger','api','redis','../../../api/cmContact/cmContact.socket','register','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','index','test','error','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','YYYY-MM-DD','isValid','email','email\x20format\x20is\x20not\x20valid!','ListId','find','duplicate','Duplicate\x20Contact','CmContact','keys','then','push','catch','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','inspect','into','cm_hopper','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','field','NOW()','toString','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','phone\x20NOT\x20IN\x20(?)','select','\x20=\x20?','insert','id\x20IN\x20?','str','calleridnum','cm_hopper_final','cm_hopper_black','VoiceQueue','CmList','Lists','get','dialCheckDuplicateType','always','query','VoiceQueueId','onlyIfOpen','sequelize','all','Campaign','findAll','CampaignId','BlackLists','cmContact,\x20%s,\x20%s','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','resume'];(function(_0x3ab51d,_0x2fa01d){var _0x29a04e=function(_0x7807b0){while(--_0x7807b0){_0x3ab51d['push'](_0x3ab51d['shift']());}};_0x29a04e(++_0x2fa01d);}(_0x23d8,0x13a));var _0x823d=function(_0x14add3,_0x13ce8d){_0x14add3=_0x14add3-0x0;var _0x4a174f=_0x23d8[_0x14add3];return _0x4a174f;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require('lodash');var fs=require('fs');var squel=require(_0x823d('0x0'));var Papa=require('papaparse');var Redis=require(_0x823d('0x1'));var db=require(_0x823d('0x2'))['db'];var config=require(_0x823d('0x3'));var logger=require(_0x823d('0x4'))(_0x823d('0x5'));config[_0x823d('0x6')]=_['defaults'](config['redis'],{'host':'localhost','port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0x823d('0x6')]));require(_0x823d('0x7'))[_0x823d('0x8')](socket);try{if(!process[_0x823d('0x9')][0x2]||process['argv'][0x2]===_0x823d('0xa')||process[_0x823d('0x9')][0x2]===_0x823d('0xb')){throw new Error(_0x823d('0xc'));}var FILEPATH=process['argv'][0x2];if(!process[_0x823d('0x9')][0x3]||process[_0x823d('0x9')][0x3]===_0x823d('0xa')||process[_0x823d('0x9')][0x3]==='null'||!process[_0x823d('0x9')][0x4]||process[_0x823d('0x9')][0x4]===_0x823d('0xa')||process[_0x823d('0x9')][0x4]==='null'){throw new Error(_0x823d('0xd'));}var FIELDS=_[_0x823d('0xe')](process[_0x823d('0x9')][0x3][_0x823d('0xf')](','),process[_0x823d('0x9')][0x4][_0x823d('0xf')](','));if(!process[_0x823d('0x9')][0x5]||process['argv'][0x5]==='undefined'||process[_0x823d('0x9')][0x5]===_0x823d('0xb')){throw new Error(_0x823d('0x10'));}var LISTID=process['argv'][0x5];var COMPANYID=process[_0x823d('0x9')][0x6]&&process[_0x823d('0x9')][0x6]!=='undefined'&&process[_0x823d('0x9')][0x6]!==_0x823d('0xb')?process['argv'][0x6]:null;var DUPLICATES=process[_0x823d('0x9')][0x7]&&process[_0x823d('0x9')][0x7]!==_0x823d('0xa')&&process[_0x823d('0x9')][0x7]!==_0x823d('0xb')?process[_0x823d('0x9')][0x7]:null;if(!process['argv'][0x8]||process[_0x823d('0x9')][0x8]===_0x823d('0xa')||process[_0x823d('0x9')][0x8]===_0x823d('0xb')){throw new Error(_0x823d('0x11'));}var SOCKET_TIMESTAMP=process[_0x823d('0x9')][0x8];}catch(_0x5b5024){logger['error'](_0x5b5024);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x4d8833,_0x5cc445,_0x5a7362,_0x373c28){var _0x484736={'message':_0x5cc445};_0x484736[_0x4d8833]=!![];if(_0x5a7362){_0x484736['contact']=_0x5a7362;}if(_0x373c28){_0x484736[_0x823d('0x12')]=_0x373c28;}return _0x484736;}function isEmail(_0xfaabc8){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/[_0x823d('0x13')](_0xfaabc8);}function checkRow(_0x11bc21,_0x15c253,_0x2db370){return new BPromise(function(_0x3b87f8,_0x4f1d6b){if(_['isNil'](_0x11bc21)){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x15'),null,_0x2db370));}if(_0x11bc21['errors']&&_0x11bc21[_0x823d('0x16')][_0x823d('0x17')]){var _0x1c1ee4=_['map'](_0x11bc21[_0x823d('0x16')],_0x823d('0x18'))['join'](';');return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x1c1ee4,null,_0x2db370));}var _0x412068={};for(var _0x140f45 in FIELDS){if(FIELDS[_0x823d('0x19')](_0x140f45)&&FIELDS[_0x140f45]){_0x412068[_0x140f45]=_0x11bc21[_0x823d('0x1a')][0x0][FIELDS[_0x140f45]]||_0x11bc21[_0x823d('0x1a')][0x0]['\ufeff'+FIELDS[_0x140f45]];}}if(!_0x412068[_0x823d('0x1b')]){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x1c'),null,_0x2db370));}if(!_0x412068[_0x823d('0x1d')]){return _0x4f1d6b(handleCheckRowError('error',_0x823d('0x1e'),null,_0x2db370));}if(_0x412068['birthDate']){var _0x30aec2=moment(_0x412068['birthDate'],_0x823d('0x1f'));if(!_0x30aec2[_0x823d('0x20')]()){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),'birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!',null,_0x2db370));}}if(_0x412068[_0x823d('0x21')]){if(!isEmail(_0x412068[_0x823d('0x21')])){return _0x4f1d6b(handleCheckRowError('error',_0x823d('0x22'),null,_0x2db370));}}_0x412068[_0x823d('0x23')]=LISTID;_0x412068['CompanyId']=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0x823d('0x17')]&&_0x15c253){var _0x470146={};for(var _0xc1c923=0x0,_0x51044e=DUPLICATES[_0x823d('0x17')];_0xc1c923<_0x51044e;_0xc1c923+=0x1){_0x470146[DUPLICATES[_0xc1c923]]=_0x412068[DUPLICATES[_0xc1c923]];}var _0x4c6cad=_[_0x823d('0x24')](_0x15c253,_0x470146);if(_0x4c6cad){return _0x4f1d6b(handleCheckRowError(_0x823d('0x25'),_0x823d('0x26'),_0x4c6cad,_0x2db370));}}return db[_0x823d('0x27')]['create'](_0x412068,{'raw':!![],'hooks':![],'fields':_[_0x823d('0x28')](_0x412068)})[_0x823d('0x29')](function(_0x2da0a3){if(DUPLICATES&&DUPLICATES[_0x823d('0x17')]&&_0x15c253){_0x15c253[_0x823d('0x2a')](_['pick'](_0x412068,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x2da0a3['id'];return _0x3b87f8();})[_0x823d('0x2b')](function(_0x9f9041){return _0x4f1d6b(handleCheckRowError(_0x823d('0x14'),_0x823d('0x2c')+(_0x9f9041[_0x823d('0x18')]||JSON[_0x823d('0x2d')](_0x9f9041)),null,_0x2db370));});});}function checkHopper(){function _0x363f29(){return function(_0x5f5ddc){logger['error'](_0x823d('0x2e'),_0x823d('0x2f'),util[_0x823d('0x30')](_0x5f5ddc,{'showHidden':![],'depth':null}));};}var _0x39c2ec=function(_0x574ee1,_0x11c04b){var _0x7a05e=squel['insert']()[_0x823d('0x31')](_0x823d('0x32'))[_0x823d('0x33')](['phone',_0x823d('0x34'),_0x823d('0x35'),'ListId',_0x11c04b,_0x823d('0x36'),_0x823d('0x37')],squel['select']()[_0x823d('0x38')](_0x823d('0x1d'),_0x823d('0x1d'))['field'](_0x823d('0x39'),_0x823d('0x34'))[_0x823d('0x38')]('id','ContactId')[_0x823d('0x38')](LISTID[_0x823d('0x3a')](),'ListId')['field'](_0x574ee1['id'][_0x823d('0x3a')](),_0x11c04b)[_0x823d('0x38')](_0x823d('0x39'),'createdAt')[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x37'))[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())['where'](_0x823d('0x40'))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'))['from'](_0x823d('0x32'))[_0x823d('0x3d')](_0x11c04b+_0x823d('0x43'),_0x574ee1['id']['toString']())))[_0x823d('0x3a')]();return _0x7a05e;};var _0x3a6c47=function(_0x2d2315,_0x26cecd){var _0x580759=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x32'))['fromQuery'](['phone','scheduledAt',_0x823d('0x35'),_0x823d('0x23'),_0x26cecd,_0x823d('0x36'),'updatedAt'],squel['select']()[_0x823d('0x38')]('phone',_0x823d('0x1d'))[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x34'))[_0x823d('0x38')]('id','ContactId')['field'](LISTID[_0x823d('0x3a')](),_0x823d('0x23'))['field'](_0x2d2315['id'][_0x823d('0x3a')](),_0x26cecd)[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x36'))['field'](_0x823d('0x39'),_0x823d('0x37'))['from'](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')](_0x823d('0x45'),squel[_0x823d('0x46')](hopperContacts))['where'](_0x823d('0x40'))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x47'))[_0x823d('0x3b')](_0x823d('0x48'))['where'](_0x26cecd+'\x20=\x20?',_0x2d2315['id']['toString']()))[_0x823d('0x3d')](_0x823d('0x41'),squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'))[_0x823d('0x3b')](_0x823d('0x32'))[_0x823d('0x3d')](_0x26cecd+_0x823d('0x43'),_0x2d2315['id'][_0x823d('0x3a')]())))['toString']();return _0x580759;};function _0x17f4cd(_0x40d495,_0x39b175){var _0x3c6f40=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x32'))[_0x823d('0x33')]([_0x823d('0x1d'),'scheduledAt',_0x823d('0x35'),_0x823d('0x23'),_0x39b175,_0x823d('0x36'),'updatedAt'],squel[_0x823d('0x42')]()[_0x823d('0x38')](_0x823d('0x1d'),_0x823d('0x1d'))['field'](_0x823d('0x39'),'scheduledAt')[_0x823d('0x38')]('id',_0x823d('0x35'))['field'](LISTID[_0x823d('0x3a')](),_0x823d('0x23'))['field'](_0x40d495['id']['toString'](),_0x39b175)[_0x823d('0x38')]('NOW()',_0x823d('0x36'))['field'](_0x823d('0x39'),'updatedAt')[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))[_0x823d('0x3d')](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')]('id\x20IN\x20?',squel[_0x823d('0x46')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))['toString']();return _0x3c6f40;}function _0x360400(_0x51bbd5,_0x17786b){var _0x562010=squel[_0x823d('0x44')]()[_0x823d('0x31')](_0x823d('0x49'))['fromQuery']([_0x823d('0x1d'),_0x823d('0x35'),_0x823d('0x23'),_0x17786b,'createdAt',_0x823d('0x37')],squel[_0x823d('0x42')]()['field']('phone',_0x823d('0x1d'))[_0x823d('0x38')]('id',_0x823d('0x35'))[_0x823d('0x38')](LISTID[_0x823d('0x3a')](),'ListId')[_0x823d('0x38')](_0x51bbd5['id'][_0x823d('0x3a')](),_0x17786b)[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x36'))[_0x823d('0x38')](_0x823d('0x39'),_0x823d('0x37'))[_0x823d('0x3b')](_0x823d('0x3c'))[_0x823d('0x3d')](_0x823d('0x3e'))['where'](_0x823d('0x3f'),LISTID[_0x823d('0x3a')]())[_0x823d('0x3d')]('id\x20IN\x20?',squel[_0x823d('0x46')](hopperContacts))[_0x823d('0x3d')](_0x823d('0x40')))['toString']();return _0x562010;}return db[_0x823d('0x4a')]['findAll']({'where':{'type':'outbound'},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x4c'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0xe21c29){var _0x19af1d=[];if(_0xe21c29){var _0x57dd12;for(var _0x3b684f=0x0,_0x6de809;_0x3b684f<_0xe21c29[_0x823d('0x17')];_0x3b684f+=0x1){_0x6de809=_0xe21c29[_0x3b684f][_0x823d('0x4d')]({'plain':!![]});switch(_0x6de809[_0x823d('0x4e')]){case _0x823d('0x4f'):_0x19af1d[_0x823d('0x2a')](db['sequelize'][_0x823d('0x50')](_0x3a6c47(_0x6de809,_0x823d('0x51')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;case _0x823d('0x52'):_0x19af1d['push'](db[_0x823d('0x53')]['query'](_0x39c2ec(_0x6de809,'VoiceQueueId'))[_0x823d('0x29')](function(){})['catch'](_0x363f29()));break;default:_0x19af1d['push'](db[_0x823d('0x53')][_0x823d('0x50')](_0x17f4cd(_0x6de809,_0x823d('0x51')))[_0x823d('0x29')](function(){})['catch'](_0x363f29()));}}}return _0x19af1d;})[_0x823d('0x54')]()[_0x823d('0x29')](function(){return db[_0x823d('0x4a')]['findAll']({'where':{'type':'outbound'},'attributes':['id'],'include':[{'model':db[_0x823d('0x4b')],'as':'BlackLists','where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x336173){var _0x503f18=[];if(_0x336173){var _0x11cacb;for(var _0x116c6e=0x0,_0x1653a5;_0x116c6e<_0x336173[_0x823d('0x17')];_0x116c6e+=0x1){_0x1653a5=_0x336173[_0x116c6e]['get']({'plain':!![]});_0x503f18['push'](db[_0x823d('0x53')][_0x823d('0x50')](_0x360400(_0x1653a5,_0x823d('0x51')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}return _0x503f18;})[_0x823d('0x54')]();})[_0x823d('0x29')](function(){return db[_0x823d('0x55')][_0x823d('0x56')]({'attributes':['id',_0x823d('0x4e')],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x4c'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x5b8d72){var _0x3734f2=[];if(_0x5b8d72){for(var _0x2d58e3=0x0,_0x1fb447;_0x2d58e3<_0x5b8d72[_0x823d('0x17')];_0x2d58e3+=0x1){_0x1fb447=_0x5b8d72[_0x2d58e3]['get']({'plain':!![]});switch(_0x1fb447[_0x823d('0x4e')]){case _0x823d('0x4f'):_0x3734f2[_0x823d('0x2a')](db['sequelize'][_0x823d('0x50')](_0x3a6c47(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;case _0x823d('0x52'):_0x3734f2[_0x823d('0x2a')](db[_0x823d('0x53')][_0x823d('0x50')](_0x39c2ec(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));break;default:_0x3734f2[_0x823d('0x2a')](db['sequelize']['query'](_0x17f4cd(_0x1fb447,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}}return _0x3734f2;})['all']();})[_0x823d('0x29')](function(){return db[_0x823d('0x55')][_0x823d('0x56')]({'attributes':['id'],'include':[{'model':db[_0x823d('0x4b')],'as':_0x823d('0x58'),'where':{'id':LISTID}}]})[_0x823d('0x29')](function(_0x38cc45){var _0x287c48=[];if(_0x38cc45){for(var _0x5f1ab6=0x0,_0x5de3fa;_0x5f1ab6<_0x38cc45[_0x823d('0x17')];_0x5f1ab6+=0x1){_0x5de3fa=_0x38cc45[_0x5f1ab6][_0x823d('0x4d')]({'plain':!![]});_0x287c48[_0x823d('0x2a')](db[_0x823d('0x53')][_0x823d('0x50')](_0x360400(_0x5de3fa,_0x823d('0x57')))[_0x823d('0x29')](function(){})[_0x823d('0x2b')](_0x363f29()));}}return _0x287c48;})['all']();})[_0x823d('0x2b')](function(_0x1f8609){logger['error'](_0x823d('0x59'),_0x823d('0x5a'),_0x1f8609[_0x823d('0x18')]);});}var processPromises=function(_0x5383c2){return BPromise[_0x823d('0x54')](promises)['then'](function(_0x5af3fc){})[_0x823d('0x2b')](function(_0x5be4e2){logger[_0x823d('0x14')](_0x823d('0x5b'),JSON[_0x823d('0x2d')](_0x5be4e2));})['finally'](function(){socket[_0x823d('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x5383c2){return _0x5383c2[_0x823d('0x5d')]();}});};var endCsv=function(){return BPromise[_0x823d('0x5e')]()[_0x823d('0x29')](function(){if(hopperContacts){return checkHopper();}})['then'](function(){socket[_0x823d('0x5c')]('contact:csv_'+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x823d('0x5f')](FILEPATH);}catch(_0x2b22fd){logger['error']('Unable\x20to\x20delete\x20temp\x20file:',JSON[_0x823d('0x2d')](_0x2b22fd));}finally{process[_0x823d('0x60')](0x0);}});};process['on']('SIGINT',function(){logger['info'](_0x823d('0x61'));endCsv();});function main(){return BPromise[_0x823d('0x5e')]()[_0x823d('0x29')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x823d('0xf')](',');return db[_0x823d('0x27')][_0x823d('0x56')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x823d('0x29')](function(_0x39b82b){var _0x4a0e46=fs[_0x823d('0x62')](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x823d('0x63')](_0x4a0e46,{'header':!![],'skipEmptyLines':!![],'step':function(_0x479a1a,_0x175997){total+=0x1;var _0xa8eb1d=total;promises[_0x823d('0x2a')](checkRow(_0x479a1a,_0x39b82b,_0xa8eb1d)[_0x823d('0x29')](function(){success+=0x1;})['catch'](function(_0x3f6b3d){if(_0x3f6b3d['error']){errors+=0x1;delete _0x3f6b3d['error'];}else if(_0x3f6b3d['duplicate']){duplicates+=0x1;delete _0x3f6b3d['duplicate'];}rows[_0x823d('0x2a')](_0x3f6b3d);}));if(total%0xc8===0x0){_0x175997['pause']();return processPromises(_0x175997);}},'complete':function(){return processPromises()['then'](function(){logger[_0x823d('0x64')](_0x823d('0x65'));endCsv();});},'error':function(_0x224c99,_0x4d7b4f){logger['info']('CSV\x20parse\x20error',JSON[_0x823d('0x2d')](_0x224c99));endCsv();}});})[_0x823d('0x2b')](function(_0x4dda10){logger[_0x823d('0x14')]('Error\x20executing\x20contact\x20csv\x20import:',JSON['stringify'](_0x4dda10));});}main();
\ No newline at end of file
+var _0xbaca=['updatedAt','field','NOW()','toString','createdAt','from','cm_contacts','where','deletedAt\x20IS\x20NULL','ListId\x20=\x20?','phone\x20IS\x20NOT\x20NULL','select','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','\x20=\x20?','insert','cm_hopper_black','VoiceQueue','outbound','CmList','dialCheckDuplicateType','always','query','VoiceQueueId','catch','onlyIfOpen','sequelize','all','findAll','BlackLists','Lists','get','CampaignId','cmContact,\x20%s,\x20%s','generalCheckHopper','message','finally','contact:csv_','resume','resolve','emit','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','SIGINT','info','CSV\x20import\x20process\x20stopped!','CmContact','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','lodash','papaparse','ioredis','../../../mysqldb','../../../config/environment','api','localhost','redis','../../../api/cmContact/cmContact.socket','undefined','argv','null','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','contact','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','length','errors','hasOwnProperty','data','firstName','firstName\x20not\x20specified!','phone','phone\x20not\x20specified!','birthDate','YYYY-MM-DD','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email','ListId','CompanyId','duplicate','Duplicate\x20Contact','then','push','Error\x20while\x20creating\x20contact:\x20','stringify','cmContact','checkHopper','into','cm_hopper','fromQuery','scheduledAt','ContactId'];(function(_0x1c8943,_0x3b52e9){var _0x1e3862=function(_0x5b6f2a){while(--_0x5b6f2a){_0x1c8943['push'](_0x1c8943['shift']());}};_0x1e3862(++_0x3b52e9);}(_0xbaca,0x15d));var _0xabac=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0xbaca[_0x5b644e];return _0x49c6bf;};'use strict';var BPromise=require('bluebird');var util=require('util');var _=require(_0xabac('0x0'));var fs=require('fs');var squel=require('squel');var Papa=require(_0xabac('0x1'));var Redis=require(_0xabac('0x2'));var db=require(_0xabac('0x3'))['db'];var config=require(_0xabac('0x4'));var logger=require('../../../config/logger')(_0xabac('0x5'));config['redis']=_['defaults'](config['redis'],{'host':_0xabac('0x6'),'port':0x18eb});var socket=require('socket.io-emitter')(new Redis(config[_0xabac('0x7')]));require(_0xabac('0x8'))['register'](socket);try{if(!process['argv'][0x2]||process['argv'][0x2]===_0xabac('0x9')||process[_0xabac('0xa')][0x2]===_0xabac('0xb')){throw new Error('Missing\x20filepath\x20parameter!');}var FILEPATH=process[_0xabac('0xa')][0x2];if(!process[_0xabac('0xa')][0x3]||process[_0xabac('0xa')][0x3]===_0xabac('0x9')||process[_0xabac('0xa')][0x3]===_0xabac('0xb')||!process['argv'][0x4]||process['argv'][0x4]==='undefined'||process[_0xabac('0xa')][0x4]===_0xabac('0xb')){throw new Error('Missing\x20binding\x20parameters!');}var FIELDS=_[_0xabac('0xc')](process[_0xabac('0xa')][0x3][_0xabac('0xd')](','),process['argv'][0x4][_0xabac('0xd')](','));if(!process['argv'][0x5]||process['argv'][0x5]===_0xabac('0x9')||process[_0xabac('0xa')][0x5]===_0xabac('0xb')){throw new Error(_0xabac('0xe'));}var LISTID=process[_0xabac('0xa')][0x5];var COMPANYID=process[_0xabac('0xa')][0x6]&&process[_0xabac('0xa')][0x6]!==_0xabac('0x9')&&process['argv'][0x6]!=='null'?process['argv'][0x6]:null;var DUPLICATES=process[_0xabac('0xa')][0x7]&&process[_0xabac('0xa')][0x7]!=='undefined'&&process[_0xabac('0xa')][0x7]!=='null'?process[_0xabac('0xa')][0x7]:null;if(!process[_0xabac('0xa')][0x8]||process[_0xabac('0xa')][0x8]==='undefined'||process[_0xabac('0xa')][0x8]===_0xabac('0xb')){throw new Error(_0xabac('0xf'));}var SOCKET_TIMESTAMP=process[_0xabac('0xa')][0x8];}catch(_0x4bdcd1){logger[_0xabac('0x10')](_0x4bdcd1);endCsv();}var total=0x0;var pTotal=0x0;var success=0x0;var errors=0x0;var duplicates=0x0;var rows=[];var hopperContacts='';var promises=[];var index=0x0;var alreadyInvalid=![];function handleCheckRowError(_0x347248,_0x33016b,_0x3babec,_0x327692){var _0x5ecfa0={'message':_0x33016b};_0x5ecfa0[_0x347248]=!![];if(_0x3babec){_0x5ecfa0[_0xabac('0x11')]=_0x3babec;}if(_0x327692){_0x5ecfa0['index']=_0x327692;}return _0x5ecfa0;}function isEmail(_0x3399fe){return/^([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x22([^\x0d\x22\x5c\x80-\xff]|\x5c[\x00-\x7f])*\x22))*\x40([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d)(\x2e([^\x00-\x20\x22\x28\x29\x2c\x2e\x3a-\x3c\x3e\x40\x5b-\x5d\x7f-\xff]+|\x5b([^\x0d\x5b-\x5d\x80-\xff]|\x5c[\x00-\x7f])*\x5d))*$/['test'](_0x3399fe);}function checkRow(_0x1c6580,_0x461917,_0x6f26f7){return new BPromise(function(_0x5581b6,_0xf2082b){if(_[_0xabac('0x12')](_0x1c6580)){return _0xf2082b(handleCheckRowError('error',_0xabac('0x13'),null,_0x6f26f7));}if(_0x1c6580['errors']&&_0x1c6580['errors'][_0xabac('0x14')]){var _0xb051eb=_['map'](_0x1c6580[_0xabac('0x15')],'message')['join'](';');return _0xf2082b(handleCheckRowError(_0xabac('0x10'),_0xb051eb,null,_0x6f26f7));}var _0x2d6cfa={};for(var _0x32b1a3 in FIELDS){if(FIELDS[_0xabac('0x16')](_0x32b1a3)&&FIELDS[_0x32b1a3]){_0x2d6cfa[_0x32b1a3]=_0x1c6580[_0xabac('0x17')][0x0][FIELDS[_0x32b1a3]]||_0x1c6580['data'][0x0]['\ufeff'+FIELDS[_0x32b1a3]];}}if(!_0x2d6cfa[_0xabac('0x18')]){return _0xf2082b(handleCheckRowError(_0xabac('0x10'),_0xabac('0x19'),null,_0x6f26f7));}if(!_0x2d6cfa[_0xabac('0x1a')]){return _0xf2082b(handleCheckRowError('error',_0xabac('0x1b'),null,_0x6f26f7));}if(_0x2d6cfa['birthDate']){var _0x286baa=moment(_0x2d6cfa[_0xabac('0x1c')],_0xabac('0x1d'));if(!_0x286baa['isValid']()){return _0xf2082b(handleCheckRowError(_0xabac('0x10'),_0xabac('0x1e'),null,_0x6f26f7));}}if(_0x2d6cfa['email']){if(!isEmail(_0x2d6cfa[_0xabac('0x1f')])){return _0xf2082b(handleCheckRowError(_0xabac('0x10'),'email\x20format\x20is\x20not\x20valid!',null,_0x6f26f7));}}_0x2d6cfa[_0xabac('0x20')]=LISTID;_0x2d6cfa[_0xabac('0x21')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES[_0xabac('0x14')]&&_0x461917){var _0x4cc1b1={};for(var _0xd490cc=0x0,_0x1f8b10=DUPLICATES[_0xabac('0x14')];_0xd490cc<_0x1f8b10;_0xd490cc+=0x1){_0x4cc1b1[DUPLICATES[_0xd490cc]]=_0x2d6cfa[DUPLICATES[_0xd490cc]];}var _0x4e35dd=_['find'](_0x461917,_0x4cc1b1);if(_0x4e35dd){return _0xf2082b(handleCheckRowError(_0xabac('0x22'),_0xabac('0x23'),_0x4e35dd,_0x6f26f7));}}return db['CmContact']['create'](_0x2d6cfa,{'raw':!![],'hooks':![],'fields':_['keys'](_0x2d6cfa)})[_0xabac('0x24')](function(_0x9da1f){if(DUPLICATES&&DUPLICATES[_0xabac('0x14')]&&_0x461917){_0x461917[_0xabac('0x25')](_['pick'](_0x2d6cfa,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x9da1f['id'];return _0x5581b6();})['catch'](function(_0x5a0267){return _0xf2082b(handleCheckRowError(_0xabac('0x10'),_0xabac('0x26')+(_0x5a0267['message']||JSON[_0xabac('0x27')](_0x5a0267)),null,_0x6f26f7));});});}function checkHopper(){function _0x224d09(){return function(_0x2db1a9){logger[_0xabac('0x10')](_0xabac('0x28'),_0xabac('0x29'),util['inspect'](_0x2db1a9,{'showHidden':![],'depth':null}));};}var _0xe7c73e=function(_0x352201,_0x130210){var _0x11d3a8=squel['insert']()[_0xabac('0x2a')](_0xabac('0x2b'))[_0xabac('0x2c')]([_0xabac('0x1a'),_0xabac('0x2d'),_0xabac('0x2e'),_0xabac('0x20'),_0x130210,'createdAt',_0xabac('0x2f')],squel['select']()[_0xabac('0x30')](_0xabac('0x1a'),_0xabac('0x1a'))[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x2d'))[_0xabac('0x30')]('id',_0xabac('0x2e'))['field'](LISTID[_0xabac('0x32')](),'ListId')['field'](_0x352201['id'][_0xabac('0x32')](),_0x130210)[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x33'))['field'](_0xabac('0x31'),_0xabac('0x2f'))[_0xabac('0x34')](_0xabac('0x35'))[_0xabac('0x36')](_0xabac('0x37'))[_0xabac('0x36')](_0xabac('0x38'),LISTID[_0xabac('0x32')]())[_0xabac('0x36')](_0xabac('0x39'))[_0xabac('0x36')]('phone\x20NOT\x20IN\x20(?)',squel[_0xabac('0x3a')]()['field'](_0xabac('0x1a'))[_0xabac('0x34')](_0xabac('0x2b'))[_0xabac('0x36')](_0x130210+'\x20=\x20?',_0x352201['id']['toString']())))[_0xabac('0x32')]();return _0x11d3a8;};var _0x20c657=function(_0x5ed830,_0xa49722){var _0xc88ab8=squel['insert']()[_0xabac('0x2a')](_0xabac('0x2b'))['fromQuery']([_0xabac('0x1a'),_0xabac('0x2d'),_0xabac('0x2e'),_0xabac('0x20'),_0xa49722,_0xabac('0x33'),_0xabac('0x2f')],squel[_0xabac('0x3a')]()[_0xabac('0x30')]('phone',_0xabac('0x1a'))[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x2d'))[_0xabac('0x30')]('id',_0xabac('0x2e'))[_0xabac('0x30')](LISTID[_0xabac('0x32')](),_0xabac('0x20'))['field'](_0x5ed830['id'][_0xabac('0x32')](),_0xa49722)[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x33'))['field'](_0xabac('0x31'),_0xabac('0x2f'))[_0xabac('0x34')](_0xabac('0x35'))[_0xabac('0x36')](_0xabac('0x37'))[_0xabac('0x36')]('ListId\x20=\x20?',LISTID[_0xabac('0x32')]())[_0xabac('0x36')](_0xabac('0x3b'),squel[_0xabac('0x3c')](hopperContacts))[_0xabac('0x36')](_0xabac('0x39'))[_0xabac('0x36')](_0xabac('0x3d'),squel['select']()['field'](_0xabac('0x3e'))[_0xabac('0x34')]('cm_hopper_final')[_0xabac('0x36')](_0xa49722+_0xabac('0x3f'),_0x5ed830['id'][_0xabac('0x32')]()))['where'](_0xabac('0x3d'),squel['select']()[_0xabac('0x30')](_0xabac('0x1a'))['from']('cm_hopper')[_0xabac('0x36')](_0xa49722+'\x20=\x20?',_0x5ed830['id']['toString']())))[_0xabac('0x32')]();return _0xc88ab8;};function _0x32a598(_0x779ec9,_0x19fdd4){var _0x5c1afd=squel[_0xabac('0x40')]()[_0xabac('0x2a')](_0xabac('0x2b'))[_0xabac('0x2c')]([_0xabac('0x1a'),_0xabac('0x2d'),_0xabac('0x2e'),'ListId',_0x19fdd4,_0xabac('0x33'),_0xabac('0x2f')],squel['select']()['field'](_0xabac('0x1a'),_0xabac('0x1a'))[_0xabac('0x30')](_0xabac('0x31'),'scheduledAt')[_0xabac('0x30')]('id',_0xabac('0x2e'))[_0xabac('0x30')](LISTID['toString'](),_0xabac('0x20'))['field'](_0x779ec9['id'][_0xabac('0x32')](),_0x19fdd4)[_0xabac('0x30')]('NOW()',_0xabac('0x33'))[_0xabac('0x30')](_0xabac('0x31'),'updatedAt')['from'](_0xabac('0x35'))[_0xabac('0x36')](_0xabac('0x37'))[_0xabac('0x36')](_0xabac('0x38'),LISTID['toString']())[_0xabac('0x36')]('id\x20IN\x20?',squel[_0xabac('0x3c')](hopperContacts))[_0xabac('0x36')](_0xabac('0x39')))[_0xabac('0x32')]();return _0x5c1afd;}function _0x1030cb(_0x28fa6e,_0xa63259){var _0x3a6ef7=squel[_0xabac('0x40')]()[_0xabac('0x2a')](_0xabac('0x41'))[_0xabac('0x2c')]([_0xabac('0x1a'),'ContactId',_0xabac('0x20'),_0xa63259,_0xabac('0x33'),'updatedAt'],squel[_0xabac('0x3a')]()[_0xabac('0x30')](_0xabac('0x1a'),_0xabac('0x1a'))[_0xabac('0x30')]('id',_0xabac('0x2e'))[_0xabac('0x30')](LISTID['toString'](),'ListId')[_0xabac('0x30')](_0x28fa6e['id'][_0xabac('0x32')](),_0xa63259)[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x33'))[_0xabac('0x30')](_0xabac('0x31'),_0xabac('0x2f'))[_0xabac('0x34')](_0xabac('0x35'))[_0xabac('0x36')]('deletedAt\x20IS\x20NULL')[_0xabac('0x36')](_0xabac('0x38'),LISTID[_0xabac('0x32')]())[_0xabac('0x36')](_0xabac('0x3b'),squel[_0xabac('0x3c')](hopperContacts))[_0xabac('0x36')]('phone\x20IS\x20NOT\x20NULL'))[_0xabac('0x32')]();return _0x3a6ef7;}return db[_0xabac('0x42')]['findAll']({'where':{'type':_0xabac('0x43')},'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xabac('0x44')],'as':'Lists','where':{'id':LISTID}}]})[_0xabac('0x24')](function(_0x235c78){var _0x2e532a=[];if(_0x235c78){var _0xf7d810;for(var _0x5875ac=0x0,_0x277459;_0x5875ac<_0x235c78[_0xabac('0x14')];_0x5875ac+=0x1){_0x277459=_0x235c78[_0x5875ac]['get']({'plain':!![]});switch(_0x277459[_0xabac('0x45')]){case _0xabac('0x46'):_0x2e532a[_0xabac('0x25')](db['sequelize'][_0xabac('0x47')](_0x20c657(_0x277459,_0xabac('0x48')))[_0xabac('0x24')](function(){})[_0xabac('0x49')](_0x224d09()));break;case _0xabac('0x4a'):_0x2e532a[_0xabac('0x25')](db[_0xabac('0x4b')]['query'](_0xe7c73e(_0x277459,_0xabac('0x48')))[_0xabac('0x24')](function(){})['catch'](_0x224d09()));break;default:_0x2e532a[_0xabac('0x25')](db[_0xabac('0x4b')][_0xabac('0x47')](_0x32a598(_0x277459,_0xabac('0x48')))[_0xabac('0x24')](function(){})[_0xabac('0x49')](_0x224d09()));}}}return _0x2e532a;})[_0xabac('0x4c')]()['then'](function(){return db[_0xabac('0x42')][_0xabac('0x4d')]({'where':{'type':_0xabac('0x43')},'attributes':['id'],'include':[{'model':db['CmList'],'as':_0xabac('0x4e'),'where':{'id':LISTID}}]})[_0xabac('0x24')](function(_0x14a12b){var _0x309b4c=[];if(_0x14a12b){var _0x121b3e;for(var _0x1fe8f2=0x0,_0x10f91a;_0x1fe8f2<_0x14a12b[_0xabac('0x14')];_0x1fe8f2+=0x1){_0x10f91a=_0x14a12b[_0x1fe8f2]['get']({'plain':!![]});_0x309b4c['push'](db[_0xabac('0x4b')][_0xabac('0x47')](_0x1030cb(_0x10f91a,_0xabac('0x48')))[_0xabac('0x24')](function(){})['catch'](_0x224d09()));}}return _0x309b4c;})[_0xabac('0x4c')]();})['then'](function(){return db['Campaign']['findAll']({'attributes':['id','dialCheckDuplicateType'],'include':[{'model':db[_0xabac('0x44')],'as':_0xabac('0x4f'),'where':{'id':LISTID}}]})[_0xabac('0x24')](function(_0x283790){var _0x371d79=[];if(_0x283790){for(var _0x431799=0x0,_0x5ea8ae;_0x431799<_0x283790['length'];_0x431799+=0x1){_0x5ea8ae=_0x283790[_0x431799][_0xabac('0x50')]({'plain':!![]});switch(_0x5ea8ae[_0xabac('0x45')]){case _0xabac('0x46'):_0x371d79[_0xabac('0x25')](db['sequelize'][_0xabac('0x47')](_0x20c657(_0x5ea8ae,_0xabac('0x51')))[_0xabac('0x24')](function(){})[_0xabac('0x49')](_0x224d09()));break;case _0xabac('0x4a'):_0x371d79[_0xabac('0x25')](db[_0xabac('0x4b')]['query'](_0xe7c73e(_0x5ea8ae,'CampaignId'))['then'](function(){})['catch'](_0x224d09()));break;default:_0x371d79[_0xabac('0x25')](db['sequelize']['query'](_0x32a598(_0x5ea8ae,_0xabac('0x51')))[_0xabac('0x24')](function(){})[_0xabac('0x49')](_0x224d09()));}}}return _0x371d79;})[_0xabac('0x4c')]();})[_0xabac('0x24')](function(){return db['Campaign'][_0xabac('0x4d')]({'attributes':['id'],'include':[{'model':db[_0xabac('0x44')],'as':_0xabac('0x4e'),'where':{'id':LISTID}}]})['then'](function(_0x1996ab){var _0x59d311=[];if(_0x1996ab){for(var _0x34527b=0x0,_0x99ee6a;_0x34527b<_0x1996ab[_0xabac('0x14')];_0x34527b+=0x1){_0x99ee6a=_0x1996ab[_0x34527b]['get']({'plain':!![]});_0x59d311[_0xabac('0x25')](db[_0xabac('0x4b')]['query'](_0x1030cb(_0x99ee6a,_0xabac('0x51')))['then'](function(){})[_0xabac('0x49')](_0x224d09()));}}return _0x59d311;})[_0xabac('0x4c')]();})['catch'](function(_0xe1f569){logger[_0xabac('0x10')](_0xabac('0x52'),_0xabac('0x53'),_0xe1f569[_0xabac('0x54')]);});}var processPromises=function(_0x19413b){return BPromise['all'](promises)[_0xabac('0x24')](function(_0x35cf97){})['catch'](function(_0x1e5a42){logger[_0xabac('0x10')]('Error\x20processing\x20rows\x20block:',JSON[_0xabac('0x27')](_0x1e5a42));})[_0xabac('0x55')](function(){socket['emit'](_0xabac('0x56')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x19413b){return _0x19413b[_0xabac('0x57')]();}});};var endCsv=function(){return BPromise[_0xabac('0x58')]()[_0xabac('0x24')](function(){if(hopperContacts){return checkHopper();}})[_0xabac('0x24')](function(){socket[_0xabac('0x59')](_0xabac('0x56')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0xabac('0x5a')](FILEPATH);}catch(_0x5ec270){logger[_0xabac('0x10')](_0xabac('0x5b'),JSON[_0xabac('0x27')](_0x5ec270));}finally{process['exit'](0x0);}});};process['on'](_0xabac('0x5c'),function(){logger[_0xabac('0x5d')](_0xabac('0x5e'));endCsv();});function main(){return BPromise[_0xabac('0x58')]()[_0xabac('0x24')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0xabac('0xd')](',');return db[_0xabac('0x5f')]['findAll']({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})['then'](function(_0x98e4ac){var _0x2cbd46=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa['parse'](_0x2cbd46,{'header':!![],'skipEmptyLines':!![],'step':function(_0xb02eca,_0x432956){total+=0x1;var _0x16fa57=total;promises[_0xabac('0x25')](checkRow(_0xb02eca,_0x98e4ac,_0x16fa57)[_0xabac('0x24')](function(){success+=0x1;})[_0xabac('0x49')](function(_0x31b29a){if(_0x31b29a['error']){errors+=0x1;delete _0x31b29a['error'];}else if(_0x31b29a['duplicate']){duplicates+=0x1;delete _0x31b29a[_0xabac('0x22')];}rows[_0xabac('0x25')](_0x31b29a);}));if(total%0xc8===0x0){_0x432956[_0xabac('0x60')]();return processPromises(_0x432956);}},'complete':function(){return processPromises()[_0xabac('0x24')](function(){logger[_0xabac('0x5d')](_0xabac('0x61'));endCsv();});},'error':function(_0x59d23f,_0x27ab1b){logger[_0xabac('0x5d')](_0xabac('0x62'),JSON[_0xabac('0x27')](_0x59d23f));endCsv();}});})[_0xabac('0x49')](function(_0x8301b3){logger[_0xabac('0x10')]('Error\x20executing\x20contact\x20csv\x20import:',JSON[_0xabac('0x27')](_0x8301b3));});}main();
\ No newline at end of file