Built motion from commit bab6f49e.|2.6.17
[motion2.git] / server / components / import / cm / csv.js
1 // *************************************************************************
2 // *                                                                       *
3 // * xCALLY Motion -  The Omnichannel Contact Center                       *
4 // * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
5 // *                                                                       *
6 // *************************************************************************
7 // *                                                                       *
8 // * Email: info@xcally.com                                                *
9 // * Website: https://www.xcally.com                                       *
10 // *                                                                       *
11 // *************************************************************************
12 // *                                                                       *
13 // * The SOFTWARE PRODUCT is protected by copyright laws and international *
14 // * copyright treaties, as well as other intellectual property laws and   *
15 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                         *
16 // *                                                                       *
17 // *************************************************************************
18 var _0x4995=['email\x20format\x20is\x20not\x20valid!','ListId','CompanyId','find','duplicate','CmContact','keys','then','push','pick','catch','Error\x20while\x20creating\x20contact:\x20','stringify','checkHopper','inspect','insert','into','fromQuery','scheduledAt','ContactId','createdAt','updatedAt','select','field','NOW()','toString','from','cm_contacts','deletedAt\x20IS\x20NULL','where','phone\x20IS\x20NOT\x20NULL','cm_hopper','id\x20IN\x20?','str','phone\x20NOT\x20IN\x20(?)','calleridnum','cm_hopper_final','\x20=\x20?','ListId\x20=\x20?','VoiceQueue','outbound','dialCheckDuplicateType','CmList','Lists','get','sequelize','VoiceQueueId','onlyIfOpen','query','all','findAll','BlackLists','always','CampaignId','Campaign','generalCheckHopper','Error\x20processing\x20rows\x20block:','emit','contact:csv_','resume','resolve','unlinkSync','Unable\x20to\x20delete\x20temp\x20file:','exit','SIGINT','info','CSV\x20import\x20process\x20stopped!','parse','pause','CSV\x20parsed\x20correctly!','CSV\x20parse\x20error','Error\x20executing\x20contact\x20csv\x20import:','bluebird','util','squel','papaparse','ioredis','../../../mysqldb','../../../config/logger','redis','defaults','localhost','socket.io-emitter','../../../api/cmContact/cmContact.socket','argv','undefined','null','Missing\x20filepath\x20parameter!','Missing\x20binding\x20parameters!','zipObject','split','Missing\x20ListId\x20parameter!','Missing\x20socket_timestamp\x20parameter!','error','test','isNil','The\x20row\x20is\x20empty\x20or\x20the\x20number\x20of\x20parameters\x20does\x20not\x20match\x20the\x20columns!','errors','length','message','join','data','firstName','phone','birthDate','YYYY-MM-DD','isValid','birthDate\x20format\x20is\x20invalid,\x20YYYY-MM-DD\x20format\x20is\x20supported!','email'];(function(_0x46f8e4,_0x3ba476){var _0x2b87ee=function(_0x2bf690){while(--_0x2bf690){_0x46f8e4['push'](_0x46f8e4['shift']());}};_0x2b87ee(++_0x3ba476);}(_0x4995,0x18f));var _0x5499=function(_0x5b644e,_0x2e5e07){_0x5b644e=_0x5b644e-0x0;var _0x49c6bf=_0x4995[_0x5b644e];return _0x49c6bf;};'use strict';var BPromise=require(_0x5499('0x0'));var util=require(_0x5499('0x1'));var _=require('lodash');var fs=require('fs');var squel=require(_0x5499('0x2'));var Papa=require(_0x5499('0x3'));var Redis=require(_0x5499('0x4'));var db=require(_0x5499('0x5'))['db'];var config=require('../../../config/environment');var logger=require(_0x5499('0x6'))('api');config[_0x5499('0x7')]=_[_0x5499('0x8')](config[_0x5499('0x7')],{'host':_0x5499('0x9'),'port':0x18eb});var socket=require(_0x5499('0xa'))(new Redis(config[_0x5499('0x7')]));require(_0x5499('0xb'))['register'](socket);try{if(!process[_0x5499('0xc')][0x2]||process['argv'][0x2]===_0x5499('0xd')||process[_0x5499('0xc')][0x2]===_0x5499('0xe')){throw new Error(_0x5499('0xf'));}var FILEPATH=process[_0x5499('0xc')][0x2];if(!process['argv'][0x3]||process['argv'][0x3]===_0x5499('0xd')||process[_0x5499('0xc')][0x3]==='null'||!process[_0x5499('0xc')][0x4]||process[_0x5499('0xc')][0x4]===_0x5499('0xd')||process['argv'][0x4]==='null'){throw new Error(_0x5499('0x10'));}var FIELDS=_[_0x5499('0x11')](process['argv'][0x3][_0x5499('0x12')](','),process[_0x5499('0xc')][0x4][_0x5499('0x12')](','));if(!process[_0x5499('0xc')][0x5]||process[_0x5499('0xc')][0x5]===_0x5499('0xd')||process[_0x5499('0xc')][0x5]===_0x5499('0xe')){throw new Error(_0x5499('0x13'));}var LISTID=process[_0x5499('0xc')][0x5];var COMPANYID=process[_0x5499('0xc')][0x6]&&process[_0x5499('0xc')][0x6]!==_0x5499('0xd')&&process[_0x5499('0xc')][0x6]!==_0x5499('0xe')?process['argv'][0x6]:null;var DUPLICATES=process['argv'][0x7]&&process[_0x5499('0xc')][0x7]!==_0x5499('0xd')&&process[_0x5499('0xc')][0x7]!==_0x5499('0xe')?process['argv'][0x7]:null;if(!process[_0x5499('0xc')][0x8]||process[_0x5499('0xc')][0x8]===_0x5499('0xd')||process[_0x5499('0xc')][0x8]===_0x5499('0xe')){throw new Error(_0x5499('0x14'));}var SOCKET_TIMESTAMP=process['argv'][0x8];}catch(_0x2474ad){logger[_0x5499('0x15')](_0x2474ad);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(_0x589f2f,_0x29b680,_0x125fd9,_0x5bd175){var _0x190ecf={'message':_0x29b680};_0x190ecf[_0x589f2f]=!![];if(_0x125fd9){_0x190ecf['contact']=_0x125fd9;}if(_0x5bd175){_0x190ecf['index']=_0x5bd175;}return _0x190ecf;}function isEmail(_0x1c1185){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))*$/[_0x5499('0x16')](_0x1c1185);}function checkRow(_0x2ca0df,_0x7a8c0c,_0x282086){return new BPromise(function(_0x287fb4,_0x54c61e){if(_[_0x5499('0x17')](_0x2ca0df)){return _0x54c61e(handleCheckRowError('error',_0x5499('0x18'),null,_0x282086));}if(_0x2ca0df[_0x5499('0x19')]&&_0x2ca0df[_0x5499('0x19')][_0x5499('0x1a')]){var _0x6d6e00=_['map'](_0x2ca0df[_0x5499('0x19')],_0x5499('0x1b'))[_0x5499('0x1c')](';');return _0x54c61e(handleCheckRowError(_0x5499('0x15'),_0x6d6e00,null,_0x282086));}var _0x45d39d={};for(var _0x17e810 in FIELDS){if(FIELDS['hasOwnProperty'](_0x17e810)&&FIELDS[_0x17e810]){_0x45d39d[_0x17e810]=_0x2ca0df[_0x5499('0x1d')][0x0][FIELDS[_0x17e810]]||_0x2ca0df[_0x5499('0x1d')][0x0]['\ufeff'+FIELDS[_0x17e810]];}}if(!_0x45d39d[_0x5499('0x1e')]){return _0x54c61e(handleCheckRowError(_0x5499('0x15'),'firstName\x20not\x20specified!',null,_0x282086));}if(!_0x45d39d[_0x5499('0x1f')]){return _0x54c61e(handleCheckRowError('error','phone\x20not\x20specified!',null,_0x282086));}if(_0x45d39d[_0x5499('0x20')]){var _0x39814b=moment(_0x45d39d['birthDate'],_0x5499('0x21'));if(!_0x39814b[_0x5499('0x22')]()){return _0x54c61e(handleCheckRowError(_0x5499('0x15'),_0x5499('0x23'),null,_0x282086));}}if(_0x45d39d[_0x5499('0x24')]){if(!isEmail(_0x45d39d[_0x5499('0x24')])){return _0x54c61e(handleCheckRowError(_0x5499('0x15'),_0x5499('0x25'),null,_0x282086));}}_0x45d39d[_0x5499('0x26')]=LISTID;_0x45d39d[_0x5499('0x27')]=COMPANYID||undefined;if(DUPLICATES&&DUPLICATES['length']&&_0x7a8c0c){var _0x515b44={};for(var _0x481970=0x0,_0x4167f7=DUPLICATES['length'];_0x481970<_0x4167f7;_0x481970+=0x1){_0x515b44[DUPLICATES[_0x481970]]=_0x45d39d[DUPLICATES[_0x481970]];}var _0x55e243=_[_0x5499('0x28')](_0x7a8c0c,_0x515b44);if(_0x55e243){return _0x54c61e(handleCheckRowError(_0x5499('0x29'),'Duplicate\x20Contact',_0x55e243,_0x282086));}}return db[_0x5499('0x2a')]['create'](_0x45d39d,{'raw':!![],'hooks':![],'fields':_[_0x5499('0x2b')](_0x45d39d)})[_0x5499('0x2c')](function(_0x29c8e5){if(DUPLICATES&&DUPLICATES[_0x5499('0x1a')]&&_0x7a8c0c){_0x7a8c0c[_0x5499('0x2d')](_[_0x5499('0x2e')](_0x45d39d,DUPLICATES));}hopperContacts+=(hopperContacts?',':'')+_0x29c8e5['id'];return _0x287fb4();})[_0x5499('0x2f')](function(_0x20e8cb){return _0x54c61e(handleCheckRowError('error',_0x5499('0x30')+(_0x20e8cb[_0x5499('0x1b')]||JSON[_0x5499('0x31')](_0x20e8cb)),null,_0x282086));});});}function checkHopper(){function _0x5cac81(){return function(_0x567d6d){logger['error']('cmContact',_0x5499('0x32'),util[_0x5499('0x33')](_0x567d6d,{'showHidden':![],'depth':null}));};}var _0x512fd5=function(_0x3ba18a,_0x52241c){var _0x5d6c6a=squel[_0x5499('0x34')]()[_0x5499('0x35')]('cm_hopper')[_0x5499('0x36')]([_0x5499('0x1f'),_0x5499('0x37'),_0x5499('0x38'),_0x5499('0x26'),_0x52241c,_0x5499('0x39'),_0x5499('0x3a')],squel[_0x5499('0x3b')]()['field'](_0x5499('0x1f'),_0x5499('0x1f'))[_0x5499('0x3c')](_0x5499('0x3d'),'scheduledAt')[_0x5499('0x3c')]('id',_0x5499('0x38'))[_0x5499('0x3c')](LISTID[_0x5499('0x3e')](),_0x5499('0x26'))[_0x5499('0x3c')](_0x3ba18a['id'][_0x5499('0x3e')](),_0x52241c)['field']('NOW()','createdAt')[_0x5499('0x3c')](_0x5499('0x3d'),'updatedAt')[_0x5499('0x3f')](_0x5499('0x40'))['where'](_0x5499('0x41'))['where']('ListId\x20=\x20?',LISTID[_0x5499('0x3e')]())[_0x5499('0x42')](_0x5499('0x43'))['where']('phone\x20NOT\x20IN\x20(?)',squel[_0x5499('0x3b')]()[_0x5499('0x3c')](_0x5499('0x1f'))['from'](_0x5499('0x44'))[_0x5499('0x42')](_0x52241c+'\x20=\x20?',_0x3ba18a['id'][_0x5499('0x3e')]())))[_0x5499('0x3e')]();return _0x5d6c6a;};var _0x3e6f59=function(_0x5e3e22,_0x538df2){var _0x5d8661=squel[_0x5499('0x34')]()[_0x5499('0x35')]('cm_hopper')['fromQuery']([_0x5499('0x1f'),'scheduledAt','ContactId','ListId',_0x538df2,_0x5499('0x39'),'updatedAt'],squel[_0x5499('0x3b')]()['field'](_0x5499('0x1f'),_0x5499('0x1f'))[_0x5499('0x3c')](_0x5499('0x3d'),_0x5499('0x37'))[_0x5499('0x3c')]('id',_0x5499('0x38'))['field'](LISTID[_0x5499('0x3e')](),_0x5499('0x26'))[_0x5499('0x3c')](_0x5e3e22['id'][_0x5499('0x3e')](),_0x538df2)['field'](_0x5499('0x3d'),_0x5499('0x39'))[_0x5499('0x3c')]('NOW()',_0x5499('0x3a'))[_0x5499('0x3f')](_0x5499('0x40'))[_0x5499('0x42')](_0x5499('0x41'))['where']('ListId\x20=\x20?',LISTID[_0x5499('0x3e')]())['where'](_0x5499('0x45'),squel[_0x5499('0x46')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL')['where'](_0x5499('0x47'),squel[_0x5499('0x3b')]()[_0x5499('0x3c')](_0x5499('0x48'))['from'](_0x5499('0x49'))[_0x5499('0x42')](_0x538df2+_0x5499('0x4a'),_0x5e3e22['id'][_0x5499('0x3e')]()))[_0x5499('0x42')](_0x5499('0x47'),squel[_0x5499('0x3b')]()[_0x5499('0x3c')]('phone')[_0x5499('0x3f')]('cm_hopper')[_0x5499('0x42')](_0x538df2+_0x5499('0x4a'),_0x5e3e22['id'][_0x5499('0x3e')]())))['toString']();return _0x5d8661;};function _0x36a656(_0x3bdf97,_0x4467aa){var _0x44f8c7=squel[_0x5499('0x34')]()[_0x5499('0x35')](_0x5499('0x44'))['fromQuery'](['phone',_0x5499('0x37'),_0x5499('0x38'),'ListId',_0x4467aa,_0x5499('0x39'),_0x5499('0x3a')],squel[_0x5499('0x3b')]()[_0x5499('0x3c')](_0x5499('0x1f'),_0x5499('0x1f'))[_0x5499('0x3c')](_0x5499('0x3d'),_0x5499('0x37'))[_0x5499('0x3c')]('id',_0x5499('0x38'))[_0x5499('0x3c')](LISTID[_0x5499('0x3e')](),_0x5499('0x26'))[_0x5499('0x3c')](_0x3bdf97['id'][_0x5499('0x3e')](),_0x4467aa)[_0x5499('0x3c')](_0x5499('0x3d'),_0x5499('0x39'))[_0x5499('0x3c')]('NOW()',_0x5499('0x3a'))['from']('cm_contacts')[_0x5499('0x42')]('deletedAt\x20IS\x20NULL')[_0x5499('0x42')]('ListId\x20=\x20?',LISTID['toString']())[_0x5499('0x42')](_0x5499('0x45'),squel[_0x5499('0x46')](hopperContacts))[_0x5499('0x42')]('phone\x20IS\x20NOT\x20NULL'))[_0x5499('0x3e')]();return _0x44f8c7;}function _0x130478(_0x85dd99,_0x2003ff){var _0x16ef4d=squel[_0x5499('0x34')]()[_0x5499('0x35')]('cm_hopper_black')['fromQuery']([_0x5499('0x1f'),_0x5499('0x38'),_0x5499('0x26'),_0x2003ff,_0x5499('0x39'),_0x5499('0x3a')],squel[_0x5499('0x3b')]()[_0x5499('0x3c')]('phone',_0x5499('0x1f'))[_0x5499('0x3c')]('id',_0x5499('0x38'))[_0x5499('0x3c')](LISTID[_0x5499('0x3e')](),_0x5499('0x26'))[_0x5499('0x3c')](_0x85dd99['id']['toString'](),_0x2003ff)[_0x5499('0x3c')]('NOW()',_0x5499('0x39'))[_0x5499('0x3c')](_0x5499('0x3d'),_0x5499('0x3a'))[_0x5499('0x3f')](_0x5499('0x40'))[_0x5499('0x42')](_0x5499('0x41'))[_0x5499('0x42')](_0x5499('0x4b'),LISTID[_0x5499('0x3e')]())['where'](_0x5499('0x45'),squel[_0x5499('0x46')](hopperContacts))['where']('phone\x20IS\x20NOT\x20NULL'))[_0x5499('0x3e')]();return _0x16ef4d;}return db[_0x5499('0x4c')]['findAll']({'where':{'type':_0x5499('0x4d')},'attributes':['id',_0x5499('0x4e')],'include':[{'model':db[_0x5499('0x4f')],'as':_0x5499('0x50'),'where':{'id':LISTID}}]})['then'](function(_0x3a99c4){var _0x2cbf94=[];if(_0x3a99c4){var _0x3fbd73;for(var _0x30a98b=0x0,_0x5763d3;_0x30a98b<_0x3a99c4[_0x5499('0x1a')];_0x30a98b+=0x1){_0x5763d3=_0x3a99c4[_0x30a98b][_0x5499('0x51')]({'plain':!![]});switch(_0x5763d3['dialCheckDuplicateType']){case'always':_0x2cbf94['push'](db[_0x5499('0x52')]['query'](_0x3e6f59(_0x5763d3,_0x5499('0x53')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));break;case _0x5499('0x54'):_0x2cbf94['push'](db[_0x5499('0x52')][_0x5499('0x55')](_0x512fd5(_0x5763d3,_0x5499('0x53')))['then'](function(){})['catch'](_0x5cac81()));break;default:_0x2cbf94[_0x5499('0x2d')](db[_0x5499('0x52')][_0x5499('0x55')](_0x36a656(_0x5763d3,_0x5499('0x53')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));}}}return _0x2cbf94;})[_0x5499('0x56')]()[_0x5499('0x2c')](function(){return db[_0x5499('0x4c')][_0x5499('0x57')]({'where':{'type':_0x5499('0x4d')},'attributes':['id'],'include':[{'model':db[_0x5499('0x4f')],'as':_0x5499('0x58'),'where':{'id':LISTID}}]})[_0x5499('0x2c')](function(_0x42a7d3){var _0x3d07e6=[];if(_0x42a7d3){var _0x19ca70;for(var _0x519468=0x0,_0x4a94d0;_0x519468<_0x42a7d3['length'];_0x519468+=0x1){_0x4a94d0=_0x42a7d3[_0x519468][_0x5499('0x51')]({'plain':!![]});_0x3d07e6[_0x5499('0x2d')](db[_0x5499('0x52')]['query'](_0x130478(_0x4a94d0,_0x5499('0x53')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));}}return _0x3d07e6;})['all']();})[_0x5499('0x2c')](function(){return db['Campaign'][_0x5499('0x57')]({'attributes':['id',_0x5499('0x4e')],'include':[{'model':db['CmList'],'as':'Lists','where':{'id':LISTID}}]})[_0x5499('0x2c')](function(_0x19c8fd){var _0xe9624e=[];if(_0x19c8fd){for(var _0x592ecc=0x0,_0x336803;_0x592ecc<_0x19c8fd[_0x5499('0x1a')];_0x592ecc+=0x1){_0x336803=_0x19c8fd[_0x592ecc][_0x5499('0x51')]({'plain':!![]});switch(_0x336803[_0x5499('0x4e')]){case _0x5499('0x59'):_0xe9624e[_0x5499('0x2d')](db['sequelize']['query'](_0x3e6f59(_0x336803,_0x5499('0x5a')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));break;case'onlyIfOpen':_0xe9624e['push'](db['sequelize'][_0x5499('0x55')](_0x512fd5(_0x336803,_0x5499('0x5a')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));break;default:_0xe9624e[_0x5499('0x2d')](db[_0x5499('0x52')][_0x5499('0x55')](_0x36a656(_0x336803,_0x5499('0x5a')))['then'](function(){})[_0x5499('0x2f')](_0x5cac81()));}}}return _0xe9624e;})['all']();})[_0x5499('0x2c')](function(){return db[_0x5499('0x5b')][_0x5499('0x57')]({'attributes':['id'],'include':[{'model':db[_0x5499('0x4f')],'as':_0x5499('0x58'),'where':{'id':LISTID}}]})[_0x5499('0x2c')](function(_0x533f64){var _0x4cb535=[];if(_0x533f64){for(var _0x257682=0x0,_0x5476bd;_0x257682<_0x533f64['length'];_0x257682+=0x1){_0x5476bd=_0x533f64[_0x257682]['get']({'plain':!![]});_0x4cb535['push'](db[_0x5499('0x52')][_0x5499('0x55')](_0x130478(_0x5476bd,_0x5499('0x5a')))[_0x5499('0x2c')](function(){})[_0x5499('0x2f')](_0x5cac81()));}}return _0x4cb535;})[_0x5499('0x56')]();})[_0x5499('0x2f')](function(_0xf209a2){logger['error']('cmContact,\x20%s,\x20%s',_0x5499('0x5c'),_0xf209a2[_0x5499('0x1b')]);});}var processPromises=function(_0x2330a3){return BPromise[_0x5499('0x56')](promises)[_0x5499('0x2c')](function(_0x344126){})[_0x5499('0x2f')](function(_0x104620){logger[_0x5499('0x15')](_0x5499('0x5d'),JSON[_0x5499('0x31')](_0x104620));})['finally'](function(){socket[_0x5499('0x5e')](_0x5499('0x5f')+SOCKET_TIMESTAMP,{'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});promises=[];success=0x0;errors=0x0;duplicates=0x0;rows=[];if(_0x2330a3){return _0x2330a3[_0x5499('0x60')]();}});};var endCsv=function(){return BPromise[_0x5499('0x61')]()[_0x5499('0x2c')](function(){if(hopperContacts){return checkHopper();}})[_0x5499('0x2c')](function(){socket[_0x5499('0x5e')](_0x5499('0x5f')+SOCKET_TIMESTAMP,{'finished':!![],'success':success,'errors':errors,'duplicates':duplicates,'rows':rows});try{fs[_0x5499('0x62')](FILEPATH);}catch(_0x1309ef){logger['error'](_0x5499('0x63'),JSON['stringify'](_0x1309ef));}finally{process[_0x5499('0x64')](0x0);}});};process['on'](_0x5499('0x65'),function(){logger[_0x5499('0x66')](_0x5499('0x67'));endCsv();});function main(){return BPromise[_0x5499('0x61')]()[_0x5499('0x2c')](function(){if(DUPLICATES){DUPLICATES=DUPLICATES[_0x5499('0x12')](',');return db[_0x5499('0x2a')][_0x5499('0x57')]({'where':{'ListId':LISTID},'attributes':DUPLICATES,'raw':!![]});}})[_0x5499('0x2c')](function(_0x32a170){var _0x4341f3=fs['createReadStream'](FILEPATH,{'highWaterMark':0xf*0x400*0x400});Papa[_0x5499('0x68')](_0x4341f3,{'header':!![],'skipEmptyLines':!![],'step':function(_0x2cd8c7,_0x324de2){total+=0x1;var _0x4b3968=total;promises[_0x5499('0x2d')](checkRow(_0x2cd8c7,_0x32a170,_0x4b3968)[_0x5499('0x2c')](function(){success+=0x1;})[_0x5499('0x2f')](function(_0x34e106){if(_0x34e106['error']){errors+=0x1;delete _0x34e106[_0x5499('0x15')];}else if(_0x34e106['duplicate']){duplicates+=0x1;delete _0x34e106[_0x5499('0x29')];}rows['push'](_0x34e106);}));if(total%0xc8===0x0){_0x324de2[_0x5499('0x69')]();return processPromises(_0x324de2);}},'complete':function(){return processPromises()[_0x5499('0x2c')](function(){logger[_0x5499('0x66')](_0x5499('0x6a'));endCsv();});},'error':function(_0x34351b,_0x24b808){logger[_0x5499('0x66')](_0x5499('0x6b'),JSON[_0x5499('0x31')](_0x34351b));endCsv();}});})[_0x5499('0x2f')](function(_0x1f5e2a){logger[_0x5499('0x15')](_0x5499('0x6c'),JSON[_0x5499('0x31')](_0x1f5e2a));});}main();