Built motion from commit d5e4af8c.|2.6.23
[motion2.git] / server / api / cmHopper / cmHopper.rpc.js
index 161244d..633b853 100644 (file)
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold.                        *
 // *                                                                       *
 // *************************************************************************
-var _0x2191=['findAll','options','where','attributes','limit','include','map','model','GetCmHopper','ShowCmHopper','find','catch','CreateCmHopper','create','body','UpdateCmHopper','DestroyCmHopper','destroy','CmContact','describe','sequelize','order','LOCK','UPDATE','Contact','keys','User','Agent','name','voicePause','includes','UserId','push','update','GetContactDialer','MoveContactManagedDialer','CmHopperFinal','CountReScheduled','COUNT','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','transaction','length','all','GetCmHopperPreview','raw','lodash','util','moment','bluebird','ioredis','../../mysqldb','../../config/logger','rpc','jayson/promise','client','http','then','CmHopper,\x20%s,\x20%s','debug','stringify','error','code','message','info','request\x20sent','result','CmHopper'];(function(_0x54727d,_0x656418){var _0x3a7d3c=function(_0x4e24d1){while(--_0x4e24d1){_0x54727d['push'](_0x54727d['shift']());}};_0x3a7d3c(++_0x656418);}(_0x2191,0x1e2));var _0x1219=function(_0x1848a8,_0x85fb39){_0x1848a8=_0x1848a8-0x0;var _0xc1be21=_0x2191[_0x1848a8];return _0xc1be21;};'use strict';var _=require(_0x1219('0x0'));var util=require(_0x1219('0x1'));var moment=require(_0x1219('0x2'));var BPromise=require(_0x1219('0x3'));var rs=require('randomstring');var fs=require('fs');var Redis=require(_0x1219('0x4'));var db=require(_0x1219('0x5'))['db'];var utils=require('../../config/utils');var logger=require(_0x1219('0x6'))(_0x1219('0x7'));var config=require('../../config/environment');var jayson=require(_0x1219('0x8'));var client=jayson[_0x1219('0x9')][_0x1219('0xa')]({'port':0x232a});function respondWithRpcPromise(_0x28cc60,_0x4275a3,_0x2c39ed){return new BPromise(function(_0x4b97ce,_0x3a56d7){return client['request'](_0x28cc60,_0x2c39ed)[_0x1219('0xb')](function(_0x48a89e){logger['info'](_0x1219('0xc'),_0x4275a3,'request\x20sent');logger[_0x1219('0xd')]('CmHopper,\x20%s,\x20%s,\x20%s',_0x4275a3,'request\x20sent',JSON[_0x1219('0xe')](_0x48a89e));if(_0x48a89e[_0x1219('0xf')]){if(_0x48a89e[_0x1219('0xf')][_0x1219('0x10')]===0x1f4){logger[_0x1219('0xf')]('CmHopper,\x20%s,\x20%s',_0x4275a3,_0x48a89e[_0x1219('0xf')][_0x1219('0x11')]);return _0x3a56d7(_0x48a89e[_0x1219('0xf')]['message']);}logger[_0x1219('0xf')]('CmHopper,\x20%s,\x20%s',_0x4275a3,_0x48a89e[_0x1219('0xf')][_0x1219('0x11')]);return _0x4b97ce(_0x48a89e[_0x1219('0xf')]['message']);}else{logger[_0x1219('0x12')]('CmHopper,\x20%s,\x20%s',_0x4275a3,_0x1219('0x13'));_0x4b97ce(_0x48a89e[_0x1219('0x14')][_0x1219('0x11')]);}})['catch'](function(_0xfbe9a7){logger['error'](_0x1219('0xc'),_0x4275a3,_0xfbe9a7);_0x3a56d7(_0xfbe9a7);});});}exports['GetCmHopper']=function(_0x510901){var _0x53b8a5=this;return new Promise(function(_0x1d8542,_0x26b275){return db[_0x1219('0x15')][_0x1219('0x16')]({'raw':_0x510901[_0x1219('0x17')]?_0x510901[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x510901[_0x1219('0x17')]?_0x510901['options'][_0x1219('0x18')]||null:null,'attributes':_0x510901[_0x1219('0x17')]?_0x510901['options'][_0x1219('0x19')]||null:null,'limit':_0x510901[_0x1219('0x17')]?_0x510901[_0x1219('0x17')][_0x1219('0x1a')]||null:null,'include':_0x510901[_0x1219('0x17')]?_0x510901['options'][_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x510901[_0x1219('0x17')][_0x1219('0x1b')],function(_0x11a92b){return{'model':db[_0x11a92b[_0x1219('0x1d')]],'as':_0x11a92b['as'],'attributes':_0x11a92b['attributes'],'include':_0x11a92b['include']?_[_0x1219('0x1c')](_0x11a92b[_0x1219('0x1b')],function(_0x534129){return{'model':db[_0x534129['model']],'as':_0x534129['as'],'attributes':_0x534129[_0x1219('0x19')],'include':_0x534129[_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x534129[_0x1219('0x1b')],function(_0x36608f){return{'model':db[_0x36608f[_0x1219('0x1d')]],'as':_0x36608f['as'],'attributes':_0x36608f[_0x1219('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1219('0xb')](function(_0x3f90c8){logger[_0x1219('0x12')]('GetCmHopper',_0x510901);logger[_0x1219('0xd')]('GetCmHopper',_0x510901,JSON[_0x1219('0xe')](_0x3f90c8));_0x1d8542(_0x3f90c8);})['catch'](function(_0x591827){logger[_0x1219('0xf')](_0x1219('0x1e'),_0x591827['message'],_0x510901);_0x26b275(_0x53b8a5[_0x1219('0xf')](0x1f4,_0x591827[_0x1219('0x11')]));});});};exports[_0x1219('0x1f')]=function(_0x3dea39){var _0xf40f87=this;return new Promise(function(_0x5c85fe,_0x269122){return db[_0x1219('0x15')][_0x1219('0x20')]({'raw':_0x3dea39['options']?_0x3dea39[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x3dea39[_0x1219('0x17')]?_0x3dea39[_0x1219('0x17')][_0x1219('0x18')]||null:null,'attributes':_0x3dea39[_0x1219('0x17')]?_0x3dea39[_0x1219('0x17')]['attributes']||null:null,'include':_0x3dea39[_0x1219('0x17')]?_0x3dea39[_0x1219('0x17')][_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x3dea39[_0x1219('0x17')][_0x1219('0x1b')],function(_0xb9eeab){return{'model':db[_0xb9eeab[_0x1219('0x1d')]],'as':_0xb9eeab['as'],'attributes':_0xb9eeab[_0x1219('0x19')],'include':_0xb9eeab['include']?_[_0x1219('0x1c')](_0xb9eeab['include'],function(_0x2bf226){return{'model':db[_0x2bf226[_0x1219('0x1d')]],'as':_0x2bf226['as'],'attributes':_0x2bf226['attributes'],'include':_0x2bf226['include']?_['map'](_0x2bf226[_0x1219('0x1b')],function(_0x5f0148){return{'model':db[_0x5f0148[_0x1219('0x1d')]],'as':_0x5f0148['as'],'attributes':_0x5f0148['attributes']};}):[]};}):[]};}):[]:[]})[_0x1219('0xb')](function(_0x3ab80c){logger[_0x1219('0x12')](_0x1219('0x1f'),_0x3dea39);logger[_0x1219('0xd')](_0x1219('0x1f'),_0x3dea39,JSON['stringify'](_0x3ab80c));_0x5c85fe(_0x3ab80c);})[_0x1219('0x21')](function(_0x4aceea){logger['error'](_0x1219('0x1f'),_0x4aceea['message'],_0x3dea39);_0x269122(_0xf40f87['error'](0x1f4,_0x4aceea['message']));});});};exports[_0x1219('0x22')]=function(_0x414ec3){var _0x40f64e=this;return new Promise(function(_0x5ab34d,_0x19a04a){return db[_0x1219('0x15')][_0x1219('0x23')](_0x414ec3[_0x1219('0x24')],{'raw':_0x414ec3[_0x1219('0x17')]?_0x414ec3[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![]})['then'](function(_0x37e6a9){logger[_0x1219('0x12')]('CreateCmHopper',_0x414ec3);logger['debug'](_0x1219('0x22'),_0x414ec3,JSON['stringify'](_0x37e6a9));_0x5ab34d(_0x37e6a9);})['catch'](function(_0x483a92){logger[_0x1219('0xf')](_0x1219('0x22'),_0x483a92['message'],_0x414ec3);_0x19a04a(_0x40f64e[_0x1219('0xf')](0x1f4,_0x483a92[_0x1219('0x11')]));});});};exports[_0x1219('0x25')]=function(_0x554969){var _0x3db797=this;return new Promise(function(_0x428ffe,_0x1033b4){return db[_0x1219('0x15')]['update'](_0x554969[_0x1219('0x24')],{'raw':_0x554969[_0x1219('0x17')]?_0x554969[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x554969[_0x1219('0x17')]?_0x554969[_0x1219('0x17')][_0x1219('0x18')]||null:null,'attributes':_0x554969[_0x1219('0x17')]?_0x554969[_0x1219('0x17')][_0x1219('0x19')]||null:null,'limit':_0x554969[_0x1219('0x17')]?_0x554969[_0x1219('0x17')][_0x1219('0x1a')]||null:null})[_0x1219('0xb')](function(_0x540779){logger[_0x1219('0x12')](_0x1219('0x25'),_0x554969);logger[_0x1219('0xd')](_0x1219('0x25'),_0x554969,JSON[_0x1219('0xe')](_0x540779));_0x428ffe(_0x540779);})['catch'](function(_0x16d234){logger[_0x1219('0xf')](_0x1219('0x25'),_0x16d234[_0x1219('0x11')],_0x554969);_0x1033b4(_0x3db797[_0x1219('0xf')](0x1f4,_0x16d234['message']));});});};exports[_0x1219('0x26')]=function(_0x2e597b){var _0x35d7c8=this;return new Promise(function(_0x56a27d,_0x513989){return db[_0x1219('0x15')][_0x1219('0x27')]({'where':_0x2e597b['options']?_0x2e597b[_0x1219('0x17')][_0x1219('0x18')]||null:null})[_0x1219('0xb')](function(_0x407eb4){logger[_0x1219('0x12')](_0x1219('0x26'),_0x2e597b);logger[_0x1219('0xd')](_0x1219('0x26'),_0x2e597b,JSON['stringify'](_0x407eb4));_0x56a27d(_0x407eb4);})[_0x1219('0x21')](function(_0x10f9cd){logger[_0x1219('0xf')](_0x1219('0x26'),_0x10f9cd[_0x1219('0x11')],_0x2e597b);_0x513989(_0x35d7c8[_0x1219('0xf')](0x1f4,_0x10f9cd[_0x1219('0x11')]));});});};exports['GetContactDialer']=function(_0x1b19f5){var _0x3266c0=this;return new Promise(function(_0x49aa97,_0x698e16){return db[_0x1219('0x28')][_0x1219('0x29')]()[_0x1219('0xb')](function(_0x36c96c){return db[_0x1219('0x2a')]['transaction'](function(_0xff9c97){return db['CmHopper']['findAll']({'where':_0x1b19f5[_0x1219('0x17')]?_0x1b19f5[_0x1219('0x17')][_0x1219('0x18')]||null:null,'attributes':_0x1b19f5[_0x1219('0x17')]?_0x1b19f5[_0x1219('0x17')][_0x1219('0x19')]||null:null,'limit':_0x1b19f5[_0x1219('0x17')]?_0x1b19f5['options'][_0x1219('0x1a')]||null:null,'order':_0x1b19f5[_0x1219('0x17')]?_0x1b19f5[_0x1219('0x17')][_0x1219('0x2b')]||null:null,'transaction':_0xff9c97,'lock':_0xff9c97[_0x1219('0x2c')][_0x1219('0x2d')],'include':[{'model':db[_0x1219('0x28')],'as':_0x1219('0x2e'),'attributes':_[_0x1219('0x2f')](_0x36c96c)},{'model':db[_0x1219('0x30')],'as':_0x1219('0x31'),'attributes':['id',_0x1219('0x32'),_0x1219('0x33')]}]})[_0x1219('0xb')](function(_0x1a69d1){var _0x490273=[];var _0xdecc34=[];for(var _0x206b06=0x0;_0x206b06<_0x1a69d1['length'];_0x206b06+=0x1){if(!_0xdecc34[_0x1219('0x34')](_0x1a69d1[_0x206b06][_0x1219('0x35')])){_0xdecc34[_0x1219('0x36')](_0x1a69d1[_0x206b06][_0x1219('0x35')]);_0x490273[_0x1219('0x36')](_0x1a69d1[_0x206b06][_0x1219('0x37')](_0x1b19f5[_0x1219('0x24')],{'transaction':_0xff9c97}));}}return BPromise['all'](_0x490273);});})['then'](function(_0x9b3bd8){logger['info']('GetContactDialer',_0x1b19f5);logger['debug']('GetContactDialer',_0x1b19f5,JSON['stringify'](_0x9b3bd8));_0x49aa97(_0x9b3bd8);})[_0x1219('0x21')](function(_0x202dee){logger['error'](_0x1219('0x38'),_0x202dee[_0x1219('0x11')],_0x1b19f5);_0x698e16(_0x3266c0[_0x1219('0xf')](0x1f4,_0x202dee[_0x1219('0x11')]));});});});};exports[_0x1219('0x39')]=function(_0x450c0e){var _0x40608a=this;return new Promise(function(_0x7b6545,_0x1abead){return db[_0x1219('0x2a')]['transaction'](function(_0x36be9f){return db[_0x1219('0x3a')][_0x1219('0x23')](_0x450c0e[_0x1219('0x24')],{'raw':_0x450c0e[_0x1219('0x17')]?_0x450c0e[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![],'transaction':_0x36be9f})[_0x1219('0xb')](function(){return db['CmHopper'][_0x1219('0x27')]({'where':_0x450c0e[_0x1219('0x17')]?_0x450c0e['options'][_0x1219('0x18')]||null:null,'transaction':_0x36be9f});});})['then'](function(_0xc4ab46){logger['info']('MoveContactManagedDialer',_0x450c0e);logger[_0x1219('0xd')]('MoveContactManagedDialer',_0x450c0e,JSON[_0x1219('0xe')](_0xc4ab46));_0x7b6545(_0xc4ab46);})[_0x1219('0x21')](function(_0x454ddb){logger['error']('MoveContactManagedDialer',_0x454ddb[_0x1219('0x11')],_0x450c0e);_0x1abead(_0x40608a[_0x1219('0xf')](0x1f4,_0x454ddb['message']));});});};exports[_0x1219('0x3b')]=function(_0x201d76){var _0x2246df=this;return new Promise(function(_0x554a89,_0x5dd649){return db[_0x1219('0x15')][_0x1219('0x16')]({'raw':_0x201d76[_0x1219('0x17')]?_0x201d76[_0x1219('0x17')]['raw']===undefined?!![]:![]:!![],'where':_0x201d76[_0x1219('0x17')]?_0x201d76[_0x1219('0x17')]['where']||null:null,'attributes':[[db[_0x1219('0x2a')]['fn'](_0x1219('0x3c'),db[_0x1219('0x2a')]['fn']('IF',db['sequelize']['literal'](_0x1219('0x3d')+util[_0x1219('0x3e')](_0x1219('0x3f'),moment()['format']('YYYY-MM-DD\x20HH:mm:ss'))+_0x1219('0x40')))),_0x1219('0x41')]]})[_0x1219('0xb')](function(_0x480bf1){logger[_0x1219('0x12')](_0x1219('0x3b'),_0x201d76);logger[_0x1219('0xd')]('CountReScheduled',_0x201d76,JSON[_0x1219('0xe')](_0x480bf1));_0x554a89(_0x480bf1);})[_0x1219('0x21')](function(_0x2f7c9a){logger[_0x1219('0xf')](_0x1219('0x3b'),_0x2f7c9a[_0x1219('0x11')],_0x201d76);_0x5dd649(_0x2246df[_0x1219('0xf')](0x1f4,_0x2f7c9a[_0x1219('0x11')]));});});};exports[_0x1219('0x42')]=function(_0x2d047e){var _0x3700cb=this;return new Promise(function(_0x4595ad,_0x453824){return db[_0x1219('0x28')][_0x1219('0x29')]()[_0x1219('0xb')](function(_0x1ed93c){return db[_0x1219('0x2a')][_0x1219('0x43')](function(_0x408d80){return db[_0x1219('0x15')][_0x1219('0x16')]({'where':_0x2d047e['options']?_0x2d047e[_0x1219('0x17')][_0x1219('0x18')]||null:null,'attributes':_0x2d047e[_0x1219('0x17')]?_0x2d047e[_0x1219('0x17')][_0x1219('0x19')]||null:null,'limit':0x1,'order':_0x2d047e['options']?_0x2d047e[_0x1219('0x17')][_0x1219('0x2b')]||null:null,'group':db['CmHopper'][_0x1219('0x35')],'transaction':_0x408d80,'lock':_0x408d80['LOCK'][_0x1219('0x2d')],'include':_0x2d047e['options']?_0x2d047e[_0x1219('0x17')][_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x2d047e['options'][_0x1219('0x1b')],function(_0x11e979){return{'model':db[_0x11e979[_0x1219('0x1d')]],'as':_0x11e979['as'],'attributes':_0x11e979[_0x1219('0x19')],'include':_0x11e979[_0x1219('0x1b')]?_['map'](_0x11e979[_0x1219('0x1b')],function(_0x4df0e1){return{'model':db[_0x4df0e1[_0x1219('0x1d')]],'as':_0x4df0e1['as'],'attributes':_0x4df0e1[_0x1219('0x19')],'include':_0x4df0e1[_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x4df0e1['include'],function(_0x524c6e){return{'model':db[_0x524c6e['model']],'as':_0x524c6e['as'],'attributes':_0x524c6e[_0x1219('0x19')]};}):[]};}):[]};}):[]:[]})[_0x1219('0xb')](function(_0x22b5f2){var _0x272c2d=[];for(var _0x57493a=0x0;_0x57493a<_0x22b5f2[_0x1219('0x44')];_0x57493a+=0x1){_0x272c2d[_0x1219('0x36')](_0x22b5f2[_0x57493a][_0x1219('0x37')](_0x2d047e[_0x1219('0x24')],{'transaction':_0x408d80}));}return BPromise[_0x1219('0x45')](_0x272c2d);});})[_0x1219('0xb')](function(_0x541bb5){logger[_0x1219('0x12')](_0x1219('0x42'),_0x2d047e);logger['debug'](_0x1219('0x42'),_0x2d047e,JSON[_0x1219('0xe')](_0x541bb5));_0x4595ad(_0x541bb5);})[_0x1219('0x21')](function(_0x3dd177){logger[_0x1219('0xf')]('GetContactRecallMe',_0x3dd177[_0x1219('0x11')],_0x2d047e);_0x453824(_0x3700cb[_0x1219('0xf')](0x1f4,_0x3dd177['message']));});});});};exports[_0x1219('0x46')]=function(_0x3f6782){var _0x498344=this;return new Promise(function(_0x1b7ad4,_0x576e65){db[_0x1219('0x28')][_0x1219('0x29')]()[_0x1219('0xb')](function(_0x170de5){return db[_0x1219('0x15')][_0x1219('0x16')]({'raw':_0x3f6782['options']?_0x3f6782['options'][_0x1219('0x47')]===undefined?!![]:![]:!![],'where':_0x3f6782[_0x1219('0x17')]?_0x3f6782[_0x1219('0x17')][_0x1219('0x18')]||null:null,'attributes':_0x3f6782['options']?_0x3f6782[_0x1219('0x17')][_0x1219('0x19')]||null:null,'limit':_0x3f6782[_0x1219('0x17')]?_0x3f6782['options'][_0x1219('0x1a')]||null:null,'include':_0x3f6782['options']?_0x3f6782[_0x1219('0x17')][_0x1219('0x1b')]?_['map'](_0x3f6782[_0x1219('0x17')][_0x1219('0x1b')],function(_0x348dda){return{'model':db[_0x348dda[_0x1219('0x1d')]],'as':_0x348dda['as'],'attributes':_0x348dda['as']===_0x1219('0x2e')?_['keys'](_0x170de5):_0x348dda['attributes'],'include':_0x348dda[_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x348dda[_0x1219('0x1b')],function(_0x4589ab){return{'model':db[_0x4589ab[_0x1219('0x1d')]],'as':_0x4589ab['as'],'attributes':_0x4589ab[_0x1219('0x19')],'include':_0x4589ab[_0x1219('0x1b')]?_[_0x1219('0x1c')](_0x4589ab[_0x1219('0x1b')],function(_0x464646){return{'model':db[_0x464646[_0x1219('0x1d')]],'as':_0x464646['as'],'attributes':_0x464646['attributes']};}):[]};}):[]};}):[]:[]})['then'](function(_0x380c02){logger['info'](_0x1219('0x1e'),_0x3f6782);logger[_0x1219('0xd')](_0x1219('0x1e'),_0x3f6782,JSON[_0x1219('0xe')](_0x380c02));_0x1b7ad4(_0x380c02);})[_0x1219('0x21')](function(_0x5c62a7){logger[_0x1219('0xf')](_0x1219('0x1e'),_0x5c62a7[_0x1219('0x11')],_0x3f6782);_0x576e65(_0x498344[_0x1219('0xf')](0x1f4,_0x5c62a7[_0x1219('0x11')]));});});});};
\ No newline at end of file
+var _0x4f34=['List','CmHopperHandlePreviewRecallNotifications','lodash','util','moment','bluebird','../../mysqldb','../../config/logger','rpc','GetCmHopper','CmHopper','findAll','options','raw','where','attributes','limit','map','model','include','then','info','debug','stringify','error','message','ShowCmHopper','find','catch','CreateCmHopper','create','body','UpdateCmHopper\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','UpdateCmHopper','destroy','DestroyCmHopper','GetContactDialer','describe','sequelize','transaction','order','LOCK','UPDATE','CmContact','Contact','keys','User','Agent','name','UserId','update','includes','push','all','length','GetContactDialer\x20hopperId\x20[%s]\x20-\x20contactId\x20[%s]\x20-\x20active\x20status\x20[%s]','dataValues','ContactId','active','MoveContactManagedDialer','CmHopperFinal','MoveContactManagedDialer\x20hopper\x20options\x20[%s]\x20active\x20status\x20[%s]','CountReScheduled','COUNT','literal','`scheduledat`\x20>=\x20','format','\x22%s\x22','\x20,\x201,\x20null','contactsRescheduled','GetContactRecallMe','GetCmHopperPreview','GetContactByPhone','findOne','phone','dialTimezone','DESC','getContactByPhone','ResetActiveCalls','voiceQueueIds','interval','availableAgentsIds','NOW()\x20+\x20INTERVAL\x20','NOW()','voicePause','CmList'];(function(_0x470d13,_0x3f22fa){var _0x18cc32=function(_0x58b827){while(--_0x58b827){_0x470d13['push'](_0x470d13['shift']());}};_0x18cc32(++_0x3f22fa);}(_0x4f34,0xae));var _0x44f3=function(_0x2dee81,_0x58c3df){_0x2dee81=_0x2dee81-0x0;var _0xa3a214=_0x4f34[_0x2dee81];return _0xa3a214;};'use strict';var _=require(_0x44f3('0x0'));var util=require(_0x44f3('0x1'));var moment=require(_0x44f3('0x2'));var BPromise=require(_0x44f3('0x3'));var db=require(_0x44f3('0x4'))['db'];var logger=require(_0x44f3('0x5'))(_0x44f3('0x6'));exports[_0x44f3('0x7')]=function(_0x485752){var _0x3c5e88=this;return new Promise(function(_0x33b6ac,_0xfd29d7){return db[_0x44f3('0x8')][_0x44f3('0x9')]({'raw':_0x485752[_0x44f3('0xa')]?_0x485752['options'][_0x44f3('0xb')]===undefined?!![]:![]:!![],'where':_0x485752['options']?_0x485752[_0x44f3('0xa')][_0x44f3('0xc')]||null:null,'attributes':_0x485752[_0x44f3('0xa')]?_0x485752[_0x44f3('0xa')][_0x44f3('0xd')]||null:null,'limit':_0x485752[_0x44f3('0xa')]?_0x485752[_0x44f3('0xa')][_0x44f3('0xe')]||null:null,'include':_0x485752['options']?_0x485752['options']['include']?_[_0x44f3('0xf')](_0x485752[_0x44f3('0xa')]['include'],function(_0x17f25a){return{'model':db[_0x17f25a[_0x44f3('0x10')]],'as':_0x17f25a['as'],'attributes':_0x17f25a[_0x44f3('0xd')],'include':_0x17f25a[_0x44f3('0x11')]?_[_0x44f3('0xf')](_0x17f25a[_0x44f3('0x11')],function(_0x41d4ee){return{'model':db[_0x41d4ee['model']],'as':_0x41d4ee['as'],'attributes':_0x41d4ee[_0x44f3('0xd')],'include':_0x41d4ee[_0x44f3('0x11')]?_['map'](_0x41d4ee[_0x44f3('0x11')],function(_0x3de4df){return{'model':db[_0x3de4df[_0x44f3('0x10')]],'as':_0x3de4df['as'],'attributes':_0x3de4df[_0x44f3('0xd')]};}):[]};}):[]};}):[]:[]})[_0x44f3('0x12')](function(_0x4fd26d){logger[_0x44f3('0x13')](_0x44f3('0x7'),_0x485752);logger[_0x44f3('0x14')](_0x44f3('0x7'),_0x485752,JSON[_0x44f3('0x15')](_0x4fd26d));_0x33b6ac(_0x4fd26d);})['catch'](function(_0x147495){logger[_0x44f3('0x16')](_0x44f3('0x7'),_0x147495[_0x44f3('0x17')],_0x485752);_0xfd29d7(_0x3c5e88[_0x44f3('0x16')](0x1f4,_0x147495[_0x44f3('0x17')]));});});};exports[_0x44f3('0x18')]=function(_0x4cf4dd){var _0x2c8514=this;return new Promise(function(_0x316693,_0x52d04c){return db[_0x44f3('0x8')][_0x44f3('0x19')]({'raw':_0x4cf4dd[_0x44f3('0xa')]?_0x4cf4dd['options'][_0x44f3('0xb')]===undefined?!![]:![]:!![],'where':_0x4cf4dd[_0x44f3('0xa')]?_0x4cf4dd[_0x44f3('0xa')][_0x44f3('0xc')]||null:null,'attributes':_0x4cf4dd[_0x44f3('0xa')]?_0x4cf4dd[_0x44f3('0xa')][_0x44f3('0xd')]||null:null,'include':_0x4cf4dd[_0x44f3('0xa')]?_0x4cf4dd['options']['include']?_[_0x44f3('0xf')](_0x4cf4dd[_0x44f3('0xa')][_0x44f3('0x11')],function(_0x332663){return{'model':db[_0x332663[_0x44f3('0x10')]],'as':_0x332663['as'],'attributes':_0x332663[_0x44f3('0xd')],'include':_0x332663[_0x44f3('0x11')]?_['map'](_0x332663['include'],function(_0x2414bb){return{'model':db[_0x2414bb['model']],'as':_0x2414bb['as'],'attributes':_0x2414bb['attributes'],'include':_0x2414bb['include']?_[_0x44f3('0xf')](_0x2414bb[_0x44f3('0x11')],function(_0x421531){return{'model':db[_0x421531[_0x44f3('0x10')]],'as':_0x421531['as'],'attributes':_0x421531[_0x44f3('0xd')]};}):[]};}):[]};}):[]:[]})[_0x44f3('0x12')](function(_0x8f8d04){logger[_0x44f3('0x13')](_0x44f3('0x18'),_0x4cf4dd);logger[_0x44f3('0x14')](_0x44f3('0x18'),_0x4cf4dd,JSON[_0x44f3('0x15')](_0x8f8d04));_0x316693(_0x8f8d04);})[_0x44f3('0x1a')](function(_0x170e48){logger[_0x44f3('0x16')](_0x44f3('0x18'),_0x170e48[_0x44f3('0x17')],_0x4cf4dd);_0x52d04c(_0x2c8514[_0x44f3('0x16')](0x1f4,_0x170e48[_0x44f3('0x17')]));});});};exports[_0x44f3('0x1b')]=function(_0x513677){var _0x3bf583=this;return new Promise(function(_0x39b091,_0x7ec595){return db['CmHopper'][_0x44f3('0x1c')](_0x513677[_0x44f3('0x1d')],{'raw':_0x513677[_0x44f3('0xa')]?_0x513677[_0x44f3('0xa')][_0x44f3('0xb')]===undefined?!![]:![]:!![]})['then'](function(_0x282de0){logger['info'](_0x44f3('0x1b'),_0x513677);logger[_0x44f3('0x14')]('CreateCmHopper',_0x513677,JSON[_0x44f3('0x15')](_0x282de0));_0x39b091(_0x282de0);})[_0x44f3('0x1a')](function(_0x5d4e43){logger[_0x44f3('0x16')]('CreateCmHopper',_0x5d4e43['message'],_0x513677);_0x7ec595(_0x3bf583['error'](0x1f4,_0x5d4e43[_0x44f3('0x17')]));});});};exports['UpdateCmHopper']=function(_0x496b07){var _0x161afb=this;return new Promise(function(_0x5a6c5b,_0x4572f5){return db[_0x44f3('0x8')]['update'](_0x496b07[_0x44f3('0x1d')],{'raw':_0x496b07[_0x44f3('0xa')]?_0x496b07['options']['raw']===undefined?!![]:![]:!![],'individualHooks':!![],'where':_0x496b07['options']?_0x496b07['options'][_0x44f3('0xc')]||null:null,'attributes':_0x496b07[_0x44f3('0xa')]?_0x496b07[_0x44f3('0xa')][_0x44f3('0xd')]||null:null,'limit':_0x496b07[_0x44f3('0xa')]?_0x496b07['options'][_0x44f3('0xe')]||null:null})['then'](function(_0x4f3d9){logger[_0x44f3('0x13')]('UpdateCmHopper',_0x496b07);logger[_0x44f3('0x13')](_0x44f3('0x1e'),JSON['stringify'](_0x496b07[_0x44f3('0xa')][_0x44f3('0xc')]),_0x496b07['body']['active']);logger[_0x44f3('0x14')]('UpdateCmHopper',_0x496b07,JSON[_0x44f3('0x15')](_0x4f3d9));_0x5a6c5b(_0x4f3d9);})['catch'](function(_0x48345d){logger[_0x44f3('0x16')](_0x44f3('0x1f'),_0x48345d[_0x44f3('0x17')],_0x496b07);_0x4572f5(_0x161afb[_0x44f3('0x16')](0x1f4,_0x48345d['message']));});});};exports['DestroyCmHopper']=function(_0x595d9d){var _0x377cdb=this;return new Promise(function(_0x21aa64,_0x518ce9){return db[_0x44f3('0x8')][_0x44f3('0x20')]({'where':_0x595d9d[_0x44f3('0xa')]?_0x595d9d[_0x44f3('0xa')]['where']||null:null})['then'](function(_0x58d6ef){logger['info'](_0x44f3('0x21'),_0x595d9d);logger[_0x44f3('0x14')](_0x44f3('0x21'),_0x595d9d,JSON[_0x44f3('0x15')](_0x58d6ef));_0x21aa64(_0x58d6ef);})[_0x44f3('0x1a')](function(_0x809476){logger[_0x44f3('0x16')]('DestroyCmHopper',_0x809476['message'],_0x595d9d);_0x518ce9(_0x377cdb['error'](0x1f4,_0x809476[_0x44f3('0x17')]));});});};exports[_0x44f3('0x22')]=function(_0xb511a3){var _0x298f00=this;return new Promise(function(_0x2e2724,_0xcb9b19){return db['CmContact'][_0x44f3('0x23')]()[_0x44f3('0x12')](function(_0x2ce287){return db[_0x44f3('0x24')][_0x44f3('0x25')](function(_0xf13466){return db[_0x44f3('0x8')]['findAll']({'where':_0xb511a3['options']?_0xb511a3['options'][_0x44f3('0xc')]||null:null,'attributes':_0xb511a3['options']?_0xb511a3[_0x44f3('0xa')]['attributes']||null:null,'limit':_0xb511a3[_0x44f3('0xa')]?_0xb511a3[_0x44f3('0xa')][_0x44f3('0xe')]||null:null,'order':_0xb511a3[_0x44f3('0xa')]?_0xb511a3['options'][_0x44f3('0x26')]||null:null,'transaction':_0xf13466,'lock':_0xf13466[_0x44f3('0x27')][_0x44f3('0x28')],'include':[{'model':db[_0x44f3('0x29')],'as':_0x44f3('0x2a'),'attributes':_[_0x44f3('0x2b')](_0x2ce287)},{'model':db[_0x44f3('0x2c')],'as':_0x44f3('0x2d'),'attributes':['id',_0x44f3('0x2e'),'voicePause']}]})['then'](function(_0x53da11){var _0x3b3076=[];var _0x54a690=[];for(var _0x34f90f=0x0;_0x34f90f<_0x53da11['length'];_0x34f90f+=0x1){var _0x5a189e=_0x53da11[_0x34f90f][_0x44f3('0x2f')];if(_0x5a189e===null){_0x3b3076['push'](_0x53da11[_0x34f90f][_0x44f3('0x30')](_0xb511a3[_0x44f3('0x1d')],{'transaction':_0xf13466}));}else if(!_0x54a690[_0x44f3('0x31')](_0x5a189e)){_0x54a690[_0x44f3('0x32')](_0x5a189e);_0x3b3076['push'](_0x53da11[_0x34f90f][_0x44f3('0x30')](_0xb511a3[_0x44f3('0x1d')],{'transaction':_0xf13466}));}}return BPromise[_0x44f3('0x33')](_0x3b3076);});})[_0x44f3('0x12')](function(_0x18bdea){logger['info'](_0x44f3('0x22'),_0xb511a3);if(_0x18bdea[_0x44f3('0x34')]>0x0){logger['info'](_0x44f3('0x35'),_0x18bdea[0x0][_0x44f3('0x36')]['id'],_0x18bdea[0x0][_0x44f3('0x36')][_0x44f3('0x37')],_0x18bdea[0x0][_0x44f3('0x36')][_0x44f3('0x38')]);}logger[_0x44f3('0x14')](_0x44f3('0x22'),_0xb511a3,JSON['stringify'](_0x18bdea));_0x2e2724(_0x18bdea);})[_0x44f3('0x1a')](function(_0x5cd1cb){logger['error'](_0x44f3('0x22'),_0x5cd1cb[_0x44f3('0x17')],_0xb511a3);_0xcb9b19(_0x298f00[_0x44f3('0x16')](0x1f4,_0x5cd1cb['message']));});});});};exports[_0x44f3('0x39')]=function(_0x278d72){var _0x46d8af=this;return new Promise(function(_0x490dbb,_0x379fb7){return db[_0x44f3('0x24')][_0x44f3('0x25')](function(_0x26641f){return db[_0x44f3('0x3a')]['create'](_0x278d72[_0x44f3('0x1d')],{'raw':_0x278d72[_0x44f3('0xa')]?_0x278d72[_0x44f3('0xa')]['raw']===undefined?!![]:![]:!![],'transaction':_0x26641f})['then'](function(){logger['info'](_0x44f3('0x3b'),JSON['stringify'](_0x278d72[_0x44f3('0xa')][_0x44f3('0xc')]),_0x278d72['options']['where']['active']);return db['CmHopper'][_0x44f3('0x20')]({'where':_0x278d72[_0x44f3('0xa')]?_0x278d72[_0x44f3('0xa')][_0x44f3('0xc')]||null:null,'transaction':_0x26641f});});})[_0x44f3('0x12')](function(_0x234c24){logger[_0x44f3('0x13')]('MoveContactManagedDialer',_0x278d72);logger[_0x44f3('0x14')]('MoveContactManagedDialer',_0x278d72,JSON[_0x44f3('0x15')](_0x234c24));_0x490dbb(_0x234c24);})[_0x44f3('0x1a')](function(_0x28f438){logger[_0x44f3('0x16')]('MoveContactManagedDialer',_0x28f438[_0x44f3('0x17')],_0x278d72);_0x379fb7(_0x46d8af[_0x44f3('0x16')](0x1f4,_0x28f438[_0x44f3('0x17')]));});});};exports[_0x44f3('0x3c')]=function(_0xd5897a){var _0x115f47=this;return new Promise(function(_0x21e300,_0x4e2c8c){return db[_0x44f3('0x8')][_0x44f3('0x9')]({'raw':_0xd5897a['options']?_0xd5897a[_0x44f3('0xa')][_0x44f3('0xb')]===undefined?!![]:![]:!![],'where':_0xd5897a[_0x44f3('0xa')]?_0xd5897a[_0x44f3('0xa')][_0x44f3('0xc')]||null:null,'attributes':[[db[_0x44f3('0x24')]['fn'](_0x44f3('0x3d'),db[_0x44f3('0x24')]['fn']('IF',db[_0x44f3('0x24')][_0x44f3('0x3e')](_0x44f3('0x3f')+util[_0x44f3('0x40')](_0x44f3('0x41'),moment()[_0x44f3('0x40')]('YYYY-MM-DD\x20HH:mm:ss'))+_0x44f3('0x42')))),_0x44f3('0x43')]]})[_0x44f3('0x12')](function(_0x1d47a4){logger['info'](_0x44f3('0x3c'),_0xd5897a);logger['debug']('CountReScheduled',_0xd5897a,JSON['stringify'](_0x1d47a4));_0x21e300(_0x1d47a4);})[_0x44f3('0x1a')](function(_0x391d59){logger[_0x44f3('0x16')]('CountReScheduled',_0x391d59[_0x44f3('0x17')],_0xd5897a);_0x4e2c8c(_0x115f47[_0x44f3('0x16')](0x1f4,_0x391d59[_0x44f3('0x17')]));});});};exports[_0x44f3('0x44')]=function(_0x4b97cd){var _0x4363f1=this;return new Promise(function(_0x3ac196,_0x2d7622){return db[_0x44f3('0x29')][_0x44f3('0x23')]()[_0x44f3('0x12')](function(){return db[_0x44f3('0x24')]['transaction'](function(_0xdb672e){return db['CmHopper'][_0x44f3('0x9')]({'where':_0x4b97cd[_0x44f3('0xa')]?_0x4b97cd[_0x44f3('0xa')]['where']||null:null,'attributes':_0x4b97cd[_0x44f3('0xa')]?_0x4b97cd[_0x44f3('0xa')][_0x44f3('0xd')]||null:null,'limit':0x1,'order':_0x4b97cd[_0x44f3('0xa')]?_0x4b97cd['options'][_0x44f3('0x26')]||null:null,'group':db['CmHopper']['UserId'],'transaction':_0xdb672e,'lock':_0xdb672e[_0x44f3('0x27')][_0x44f3('0x28')],'include':_0x4b97cd['options']?_0x4b97cd[_0x44f3('0xa')][_0x44f3('0x11')]?_[_0x44f3('0xf')](_0x4b97cd[_0x44f3('0xa')]['include'],function(_0x5f2c24){return{'model':db[_0x5f2c24[_0x44f3('0x10')]],'as':_0x5f2c24['as'],'attributes':_0x5f2c24['attributes'],'include':_0x5f2c24['include']?_[_0x44f3('0xf')](_0x5f2c24[_0x44f3('0x11')],function(_0x278be9){return{'model':db[_0x278be9[_0x44f3('0x10')]],'as':_0x278be9['as'],'attributes':_0x278be9[_0x44f3('0xd')],'include':_0x278be9['include']?_[_0x44f3('0xf')](_0x278be9[_0x44f3('0x11')],function(_0x2f6fd7){return{'model':db[_0x2f6fd7['model']],'as':_0x2f6fd7['as'],'attributes':_0x2f6fd7[_0x44f3('0xd')]};}):[]};}):[]};}):[]:[]})[_0x44f3('0x12')](function(_0x348294){var _0x2276a8=[];for(var _0x1a9396=0x0;_0x1a9396<_0x348294[_0x44f3('0x34')];_0x1a9396+=0x1){_0x2276a8['push'](_0x348294[_0x1a9396][_0x44f3('0x30')](_0x4b97cd[_0x44f3('0x1d')],{'transaction':_0xdb672e}));}return BPromise[_0x44f3('0x33')](_0x2276a8);});})['then'](function(_0xab74a5){logger['info']('GetContactRecallMe',_0x4b97cd);logger['debug']('GetContactRecallMe',_0x4b97cd,JSON['stringify'](_0xab74a5));_0x3ac196(_0xab74a5);})['catch'](function(_0x493163){logger[_0x44f3('0x16')](_0x44f3('0x44'),_0x493163[_0x44f3('0x17')],_0x4b97cd);_0x2d7622(_0x4363f1[_0x44f3('0x16')](0x1f4,_0x493163[_0x44f3('0x17')]));});});});};exports[_0x44f3('0x45')]=function(_0x328abb){var _0x26df8d=this;return new Promise(function(_0x2c5515,_0x39b1cf){db['CmContact'][_0x44f3('0x23')]()['then'](function(_0x5a5b33){return db[_0x44f3('0x8')][_0x44f3('0x9')]({'raw':_0x328abb[_0x44f3('0xa')]?_0x328abb['options'][_0x44f3('0xb')]===undefined?!![]:![]:!![],'where':_0x328abb['options']?_0x328abb[_0x44f3('0xa')]['where']||null:null,'attributes':_0x328abb[_0x44f3('0xa')]?_0x328abb[_0x44f3('0xa')][_0x44f3('0xd')]||null:null,'limit':_0x328abb[_0x44f3('0xa')]?_0x328abb[_0x44f3('0xa')][_0x44f3('0xe')]||null:null,'include':_0x328abb[_0x44f3('0xa')]?_0x328abb[_0x44f3('0xa')]['include']?_['map'](_0x328abb[_0x44f3('0xa')][_0x44f3('0x11')],function(_0x1d1745){return{'model':db[_0x1d1745[_0x44f3('0x10')]],'as':_0x1d1745['as'],'attributes':_0x1d1745['as']===_0x44f3('0x2a')?_[_0x44f3('0x2b')](_0x5a5b33):_0x1d1745[_0x44f3('0xd')],'include':_0x1d1745[_0x44f3('0x11')]?_[_0x44f3('0xf')](_0x1d1745['include'],function(_0x45d91e){return{'model':db[_0x45d91e[_0x44f3('0x10')]],'as':_0x45d91e['as'],'attributes':_0x45d91e[_0x44f3('0xd')],'include':_0x45d91e[_0x44f3('0x11')]?_[_0x44f3('0xf')](_0x45d91e[_0x44f3('0x11')],function(_0xa96f8d){return{'model':db[_0xa96f8d['model']],'as':_0xa96f8d['as'],'attributes':_0xa96f8d[_0x44f3('0xd')]};}):[]};}):[]};}):[]:[]})['then'](function(_0xa911f8){logger[_0x44f3('0x13')](_0x44f3('0x7'),_0x328abb);logger['debug'](_0x44f3('0x7'),_0x328abb,JSON[_0x44f3('0x15')](_0xa911f8));_0x2c5515(_0xa911f8);})['catch'](function(_0x2a22bf){logger['error'](_0x44f3('0x7'),_0x2a22bf[_0x44f3('0x17')],_0x328abb);_0x39b1cf(_0x26df8d[_0x44f3('0x16')](0x1f4,_0x2a22bf['message']));});});});};exports[_0x44f3('0x46')]=function(_0x124255){var _0xe4a24b=this;return new Promise(function(_0x2a6512,_0x297def){return db[_0x44f3('0x29')][_0x44f3('0x47')]({'raw':!![],'where':{'phone':_0x124255[_0x44f3('0xa')][_0x44f3('0xc')][_0x44f3('0x48')]},'attributes':['id',_0x44f3('0x49')],'order':[['id',_0x44f3('0x4a')]]})[_0x44f3('0x12')](function(_0x25eae3){logger[_0x44f3('0x13')](_0x44f3('0x4b'),_0x124255);logger[_0x44f3('0x14')]('getContactByPhone',_0x124255,JSON[_0x44f3('0x15')](_0x25eae3));_0x2a6512(_0x25eae3);})[_0x44f3('0x1a')](function(_0x4bc8b9){logger[_0x44f3('0x16')](_0x44f3('0x4b'),_0x4bc8b9[_0x44f3('0x17')],_0x124255);_0x297def(_0xe4a24b[_0x44f3('0x16')](0x1f4,_0x4bc8b9['message']));});});};exports[_0x44f3('0x4c')]=function(_0x55f443){var _0x14dd45=this;return new Promise(function(_0x1c3ef0,_0x202477){return db['sequelize']['transaction'](function(_0x5c1f49){var _0x50baf3=_0x55f443[_0x44f3('0xa')]&&_0x55f443[_0x44f3('0xa')][_0x44f3('0xc')]?_0x55f443[_0x44f3('0xa')][_0x44f3('0xc')]:{};return db[_0x44f3('0x8')][_0x44f3('0x30')](_0x55f443['body'],{'where':_0x50baf3,'transaction':_0x5c1f49})['then'](function(_0x13c1b4){logger[_0x44f3('0x13')](_0x44f3('0x4c'),_0x55f443);logger['debug'](_0x44f3('0x4c'),_0x55f443,JSON['stringify'](_0x13c1b4));_0x1c3ef0(_0x13c1b4);})[_0x44f3('0x1a')](function(_0x5ef058){logger[_0x44f3('0x16')](_0x44f3('0x4c'),_0x5ef058[_0x44f3('0x17')],_0x55f443);_0x202477(_0x14dd45[_0x44f3('0x16')](0x1f4,_0x5ef058[_0x44f3('0x17')]));});});});};exports['CmHopperHandlePreviewRecallNotifications']=function(_0x12b1cb){var _0x2e645a=this;var _0x10e38d=_0x12b1cb['body'][_0x44f3('0xc')][_0x44f3('0x4d')];var _0x421b6c=_0x12b1cb[_0x44f3('0x1d')][_0x44f3('0xc')][_0x44f3('0x4e')];var _0x5c5056=_0x12b1cb[_0x44f3('0x1d')]['where'][_0x44f3('0x4f')];return new Promise(function(_0x3565ad,_0x2d0e3b){return db['CmHopper'][_0x44f3('0x9')]({'where':{'voiceQueueId':{'$in':_0x10e38d},'recallme':0x1,'active':0x0,'recallmeNotifiedDate':{'$eq':null},'scheduledat':{'$and':{'$lte':db[_0x44f3('0x24')]['literal'](_0x44f3('0x50')+_0x421b6c+'\x20MINUTE'),'$gt':db[_0x44f3('0x24')]['literal'](_0x44f3('0x51'))}},'UserId':{'$in':_0x5c5056}},'include':[{'model':db[_0x44f3('0x29')],'as':_0x44f3('0x2a')},{'model':db[_0x44f3('0x2c')],'as':'Agent','attributes':['id',_0x44f3('0x2e'),_0x44f3('0x52')]},{'model':db[_0x44f3('0x53')],'as':_0x44f3('0x54')}]})[_0x44f3('0x12')](function(_0x8596f9){if(_0x8596f9['length']>0x0){return db[_0x44f3('0x24')][_0x44f3('0x25')](function(_0x5302ed){return db[_0x44f3('0x8')][_0x44f3('0x30')]({'recallmeNotifiedDate':db['sequelize'][_0x44f3('0x3e')](_0x44f3('0x51'))},{'where':{'id':{'$in':_[_0x44f3('0xf')](_0x8596f9,'id')}},'transaction':_0x5302ed})[_0x44f3('0x12')](function(){_0x3565ad(_0x8596f9);})[_0x44f3('0x1a')](function(_0x4e7f0e){logger[_0x44f3('0x16')](_0x44f3('0x55'),_0x4e7f0e[_0x44f3('0x17')],_0x12b1cb);_0x2d0e3b(_0x2e645a[_0x44f3('0x16')](0x1f4,_0x4e7f0e['message']));});})[_0x44f3('0x1a')](function(_0x2aba5d){logger[_0x44f3('0x16')](_0x44f3('0x55'),_0x2aba5d[_0x44f3('0x17')],_0x12b1cb);_0x2d0e3b(_0x2e645a[_0x44f3('0x16')](0x1f4,_0x2aba5d[_0x44f3('0x17')]));});}else{_0x3565ad(_0x8596f9);}});});};
\ No newline at end of file