From f41fd3df0cdbeaed22b12b693a93e79aa5fbb754 Mon Sep 17 00:00:00 2001 From: Remigijus Kiminas Date: Thu, 25 Nov 2021 23:40:23 -0500 Subject: [PATCH 01/14] Identifier support --- .../design/defaulttheme/js/widgetv2/index.js | 2 +- .../defaulttheme/js/widgetv2/index.js.map | 2 +- .../lhabstract/custom/widget_theme.tpl.php | 19 +- .../defaulttheme/tpl/lhchat/start.tpl.php | 2 +- .../tpl/lhdepartment/form.tpl.php | 16 +- .../defaulttheme/widget/wrapper/dist/index.js | 2 +- .../widget/wrapper/dist/index.js.map | 2 +- .../wrapper/src/lib/widgets/mainWidget.js | 2 +- .../wrapper/src/lib/widgets/statusWidget.js | 2 +- lhc_web/doc/update_db/structure.json | 24 ++ lhc_web/doc/update_db/update_260.sql | 5 + .../fields/erlhabstractmodelwidgettheme.php | 7 + lhc_web/lib/core/lhchat/lhchat.php | 40 ++- .../lib/core/lhdepartament/lhdepartament.php | 8 + .../erlhabstractmodelwidgettheme.php | 2 + .../erlhcoreclassmodeldepartament.php | 4 +- lhc_web/modules/lhchat/chat.php | 4 +- lhc_web/modules/lhchat/chatcheckstatus.php | 5 +- lhc_web/modules/lhchat/chatwidget.php | 18 +- lhc_web/modules/lhchat/chatwidgetchat.php | 4 +- lhc_web/modules/lhchat/checkchatstatus.php | 4 +- lhc_web/modules/lhchat/getstatus.php | 13 +- lhc_web/modules/lhchat/getstatusembed.php | 10 +- lhc_web/modules/lhchat/htmlsnippet.php | 10 +- lhc_web/modules/lhchat/logpageview.php | 5 +- .../modules/lhchat/readoperatormessage.php | 12 +- lhc_web/modules/lhchat/reopen.php | 4 +- lhc_web/modules/lhchat/start.php | 11 +- lhc_web/modules/lhchat/startchat.php | 11 +- lhc_web/modules/lhchat/syncuser.php | 12 +- .../lhwidgetrestapi/chatcheckstatus.php | 4 +- .../lhwidgetrestapi/checkchatstatus.php | 14 +- .../lhwidgetrestapi/checkinvitation.php | 4 +- lhc_web/modules/lhwidgetrestapi/executejs.php | 3 +- .../modules/lhwidgetrestapi/fetchmessages.php | 2 +- .../modules/lhwidgetrestapi/getinvitation.php | 5 +- lhc_web/modules/lhwidgetrestapi/initchat.php | 4 +- .../lhwidgetrestapi/onlinesettings.php | 37 ++- lhc_web/modules/lhwidgetrestapi/settings.php | 18 +- .../modules/lhwidgetrestapi/submitoffline.php | 7 +- .../modules/lhwidgetrestapi/submitonline.php | 9 +- lhc_web/modules/lhwidgetrestapi/theme.php | 6 +- .../modules/lhwidgetrestapi/themeneedhelp.php | 6 +- lhc_web/modules/lhwidgetrestapi/themepage.php | 4 + .../modules/lhwidgetrestapi/themestatus.php | 6 +- .../erlhabstractmodelwidgettheme.php | 2 +- .../erlhcoreclassmodeldepartament.php | 257 +----------------- 47 files changed, 295 insertions(+), 355 deletions(-) create mode 100644 lhc_web/doc/update_db/update_260.sql diff --git a/lhc_web/design/defaulttheme/js/widgetv2/index.js b/lhc_web/design/defaulttheme/js/widgetv2/index.js index 3042f1936f..6ffde551b4 100644 --- a/lhc_web/design/defaulttheme/js/widgetv2/index.js +++ b/lhc_web/design/defaulttheme/js/widgetv2/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -(function(){var __webpack_modules__={9272:function(t,e,i){"use strict";var n=i(723),s=[],r=[],o=n.makeRequestCallFromTimer((function(){if(r.length)throw r.shift()}));function a(t){var e;(e=s.length?s.pop():new u).task=t,n(e)}function u(){this.task=null}t.exports=a,u.prototype.call=function(){try{this.task.call()}catch(t){a.onerror?a.onerror(t):(r.push(t),o())}finally{this.task=null,s[s.length]=this}}},723:function(t,e,i){"use strict";function n(t){r.length||s(),r[r.length]=t}t.exports=n;var s,r=[],o=0;function a(){for(;o1024){for(var e=0,i=r.length-o;e'+n+""),this.elmDomDoc.close(),this.insertCssFile(t),this.insertContent()}},{key:"insertContent",value:function(){this.elmDomDoc.body.innerHTML=this.tmpl}}]),c}(c.Y)},574:function(t,e,i){"use strict";i.d(e,{Y:function(){return u}});var n=i(5671),s=i(3144),r=i(2137),o=i(7761),a=i(593),u=function(){function t(e,i,s,r,o){(0,n.Z)(this,t);var a=this;this.elementId=e||"",this.style=i||"",this.tagName=r||"div",this.tmpl="",this.elmDom=null,this.elmDomDoc=o||document,this.attributes={},this.classNames=[],this.elementId&&(this.attributes.id=this.elementId),s&&Object.keys(s).forEach((function(t){a.attributes[t]=s[t]}))}return(0,s.Z)(t,[{key:"constructUI",value:function(t){return this.elmDomDoc=t||this.elmDomDoc,this.elmDom=r.a.initElement(this.elmDomDoc,this.tagName,this.attributes,this.style,this.tmpl),this.elmDom.className+=this.classNames.join(" "),this.elmDom}},{key:"restyle",value:function(t,e){e&&(this.elmDom?this.elmDom.style.cssText+=";"+t+":"+e:this.style+=";"+t+":"+e)}},{key:"attachUserEventListener",value:function(t,e,i,n){var s;(s=i?this.getElementById(i):this.elmDom)&&(1<(i=t.split(" ")).length?i.forEach((function(t){a.U.listen(s,t,e,t+n)})):a.U.listen(s,t,e,n))}},{key:"getElementById",value:function(t){return this.elmDom?this.elmDomDoc.getElementById(t):null}},{key:"hide",value:function(){this.restyle("display","none !important")}},{key:"show",value:function(){this.restyle("display","block !important")}},{key:"insertCssFile",value:function(t,e){var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=r.a.initElement(this.elmDomDoc,"style",{type:"text/css"}),a=this.elmDomDoc.createTextNode(e?t:o.X.ResetStyle+""+t);n.appendChild(s),i.appendChild(n),s.styleSheet?s.styleSheet.cssText=a.nodeValue:s.appendChild(a)}},{key:"insertCssRemoteFile",value:function(t){var e=null;if(t.id&&t.href&&null!==(e=this.elmDomDoc.getElementById(t.id)))e.href=t.href;else{var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=this.elmDomDoc.createElement("link");for(var r in s.rel="stylesheet",s.crossOrigin="*",t)s[r]=t[r];n.appendChild(s),i.appendChild(n)}}},{key:"insertJSFile",value:function(t,e,i,n){var s=this.elmDomDoc.getElementsByTagName("head")[0],r=this.elmDomDoc.createDocumentFragment(),o=this.elmDomDoc.createElement("script");o.type="text/javascript",void 0!==e&&!0!==e||(o.async=!0),o.crossOrigin="*",o.src=t,i&&(o.onload=i),n&&Object.keys(n).forEach((function(t){o.setAttribute(t,n[t])})),r.appendChild(o),s.appendChild(r)}},{key:"massRestyle",value:function(t){for(var e in t)t.hasOwnProperty(e)&&this.restyle(e,t[e])}}]),t}()},1660:function(t,e,i){"use strict";i.d(e,{T:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.isNotificationsSubscribed=!1,this.applicationServerPublicKey=null,this.eventEmitter=null}return(0,s.Z)(t,[{key:"setPublicKey",value:function(t,e){this.applicationServerPublicKey=t,this.eventEmitter=e}},{key:"sendNotification",value:function(){var t=this,e=this.applicationServerPublicKey,i=null;if("serviceWorker"in navigator&&"PushManager"in window)if("Notification"in window){if("granted"===Notification.permission);else if("denied"!==Notification.permission)Notification.requestPermission((function(t){"granted"===t||alert("Sorry but you have denied notification!")}));else if("denied"===Notification.permission)return void alert("Sorry but you have denied notification!");t=this,navigator.serviceWorker.register("/sw.lhc.js?v=2").then((function(n){(i=n).pushManager.getSubscription().then((function(n){var s;t.isNotificationsSubscribed=!(null===n),t.isNotificationsSubscribed,s=function(t){for(var e=(t+"=".repeat((4-t.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(e),n=new Uint8Array(i.length),s=0;s',null===this.cont.constructUIIframe("",this.attributes.staticJS.dir,this.attributes.staticJS.cl,this.attributes.hhtml))return this.isLoaded=!0,null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile lhc-mode-"+this.attributes.mode:"lhc-desktop lhc-mode-"+this.attributes.mode,this.attributes.cont_ss&&(this.originalCSS=this.cont.elmDom.style.cssText,this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"init",value:function(t,e){var i=this;if(this.attributes=t,null===this.makeContent())return null;!this.attributes.userSession.getSessionAttributes().id&&e||this.bootstrap(),this.toggleVisibilityWrap=function(t){i.toggleVisibility(t)},t.widgetStatus.subscribe(this.toggleVisibilityWrap),this.monitorDimensionsWrap=function(t){i.monitorDimensions(t)},t.widgetDimesions.subscribe(this.monitorDimensionsWrap),t.eventEmitter.addListener("reloadWidget",(function(){i.isLoaded=!1,i.makeContent(),t.eventEmitter.emitEvent("widgetHeight",[{reset_height:!0}]),i.toggleVisibility(t.widgetStatus.valueInternal)}))}},{key:"bootstrap",value:function(){var t=this;!0!==this.isLoaded&&(this.isLoaded=!0,this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({rel:"stylesheet",crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.theme>0&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/theme/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0),this.cont.insertCssRemoteFile({onload:function(){t.loadStatus.css=!0,t.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.widget_css},!0),1==this.attributes.isMobile&&"widget"==this.attributes.mode&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.widget_mobile_css}),"embed"==this.attributes.mode&&(this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.embed_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v})),this.cont.insertJSFile(this.attributes.staticJS.vendor,!1,(function(){t.cont.insertJSFile(t.attributes.staticJS.app,!1,(function(){t.loadStatus.main=!0,t.checkLoadStatus()}),{scope:t.attributes.prefixLowercase})}),{scope:this.attributes.prefixLowercase}),this.attributes.staticJS.ex_js&&this.attributes.staticJS.ex_js.length>0&&this.attributes.staticJS.ex_js.forEach((function(e){t.cont.insertJSFile(e,!1)})))}},{key:"toggleVisibility",value:function(t){0==t?this.hide():this.show()}},{key:"monitorDimensions",value:function(t){this.width=t.width_override||t.width,this.height=t.height_override||t.height,this.bottom=t.bottom_override?t.bottom_override+(t.wbottom?t.wbottom:0):30+(!0===this.attributes.clinst?70:0)+(t.wbottom?t.wbottom:0),this.right=t.right_override?t.right_override+(t.wright_inv?t.wright_inv:0):30+(t.wright?t.wright:0),this.units=t.width_override||t.height_override||t.bottom_override||t.right_override?"px":t.units,this.resize(),this.bottom_override=!!t.bottom_override}},{key:"hide",value:function(){this.cont.hide()}},{key:"hideInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"showInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText=this.originalCSS),this.show()}},{key:"show",value:function(){!1===this.isLoaded&&this.bootstrap(),this.cont.show()}}]),t}()},5962:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{f:function(){return mainWidgetPopup}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),mainWidgetPopup=function(){function mainWidgetPopup(){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,mainWidgetPopup),this.attributes={},this.width=null,this.height=null,this.units="px",this.freeup()}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(mainWidgetPopup,[{key:"freeup",value:function(){this.cont={}}},{key:"parseOptions",value:function(){var t=new Array,e="";if(void 0!==this.attributes){if(void 0!==this.attributes.LHCChatOptions.attr&&this.attributes.LHCChatOptions.attr.length>0)for(var i in this.attributes.LHCChatOptions.attr)void 0!==this.attributes.LHCChatOptions.attr[i]&&void 0!==this.attributes.LHCChatOptions.attr[i].type&&t.push("name[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].name)+"&encattr[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].encrypted&&1==this.attributes.LHCChatOptions.attr[i].encrypted?"t":"f")+"&value[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].value)+"&type[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].type)+"&size[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].size)+"&req[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].req&&1==this.attributes.LHCChatOptions.attr[i].req?"t":"f")+"&sh[]="+(void 0===this.attributes.LHCChatOptions.attr[i].show||"on"!=this.attributes.LHCChatOptions.attr[i].show&&"off"!=this.attributes.LHCChatOptions.attr[i].show?"b":this.attributes.LHCChatOptions.attr[i].show));if(void 0!==this.attributes.LHCChatOptions.attr_prefill&&this.attributes.LHCChatOptions.attr_prefill.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill)void 0!==this.attributes.LHCChatOptions.attr_prefill[i]&&void 0!==this.attributes.LHCChatOptions.attr_prefill[i].name&&t.push("prefill["+this.attributes.LHCChatOptions.attr_prefill[i].name+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[i].value));if(void 0!==this.attributes.LHCChatOptions.attr_prefill_admin&&this.attributes.LHCChatOptions.attr_prefill_admin.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill_admin)void 0!==this.attributes.LHCChatOptions.attr_prefill_admin[i]&&t.push("value_items_admin["+this.attributes.LHCChatOptions.attr_prefill_admin[i].index+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[i].value));t.length>0&&(e="&"+t.join("&"))}return e}},{key:"init",value:function(t,e,i){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed)void 0!==i&&"undefined"!==i.event&&i.event.preventDefault(),this.cont.elementReferrerPopup.focus();else{this.attributes=t;var n={static_chat:this.attributes.userSession.getSessionAttributes()},s="";n.static_chat.id&&n.static_chat.hash&&(s=s+"/(id)/"+n.static_chat.id+"/(hash)/"+n.static_chat.hash),null!==this.attributes.theme&&(s=s+"/(theme)/"+this.attributes.theme),null!==n.static_chat.vid&&!0===this.attributes.storageHandler.cookieEnabled&&(s=s+"/(vid)/"+n.static_chat.vid),this.attributes.isMobile&&(s+="/(mobile)/true"),this.attributes.department.length>0&&(s=s+"/(department)/"+this.attributes.department.join("/")),""!=this.attributes.identifier&&(s=s+"/(identifier)/"+this.attributes.identifier),this.attributes.operator&&(s=s+"/(operator)/"+this.attributes.operator),this.attributes.survey&&(s=s+"/(survey)/"+this.attributes.survey),this.attributes.bot_id&&(s=s+"/(bot)/"+this.attributes.bot_id),this.attributes.trigger_id&&(s=s+"/(trigger)/"+this.attributes.trigger_id),this.attributes.priority&&(s=s+"/(priority)/"+this.attributes.priority),"lhc"!=this.attributes.prefixLowercase&&(s=s+"/(scope)/"+this.attributes.prefixLowercase),s=s+"/(sound)/"+(1==this.attributes.toggleSound.value?1:0),this.attributes.proactive.invitation&&(s=s+"/(inv)/"+this.attributes.proactive.invitation,"popup"==this.attributes.mode&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_invt",1));var r=this.attributes.storageHandler.getLocalStorage(this.attributes.prefixStorage+"_dfs");r&&(s=s+"/(fs)/"+parseInt(r)),!0===this.attributes.leaveMessage&&(s+="/(leaveamessage)/true"),s=null!==this.attributes.userSession.getSessionReferrer()&&""!=this.attributes.userSession.getSessionReferrer()?s+"?ses_ref="+this.attributes.userSession.getSessionReferrer()+this.parseOptions():s+"?"+this.parseOptions();var o=void 0!==window.screenLeft?window.screenLeft:window.screenX,a=void 0!==window.screenTop?window.screenTop:window.screenY,u=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,c=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,h=u/window.screen.availWidth,l=(u-parseInt(this.attributes.popupDimesnions.pwidth))/2/h+o,d=(c-parseInt(this.attributes.popupDimesnions.pheight))/2/h+a,p="scrollbars=yes,menubar=1,resizable=1,width="+this.attributes.popupDimesnions.pwidth+",height="+this.attributes.popupDimesnions.pheight+",top="+d+",left="+l,m=window.open("",this.attributes.prefixStorage+"_popup_v2",p),_=!1,f=!1;try{!m||m.closed||void 0===m.closed||"about:blank"===m.location.href?(m=this.cont.elementReferrerPopup=window.open(this.attributes.base_url+this.attributes.lang+"chat/start"+s,this.attributes.prefixStorage+"_popup_v2",p),f=!0):_=!0}catch(t){_=!0}if(!m||m.closed||void 0===m.closed)try{this.attributes.viewHandler.cont.getElementById("status-icon").href=this.attributes.base_url+this.attributes.lang+"chat/start"+s}catch(t){alert("You have disabled popups!")}else 1==f?(void 0!==e&&!1===this.attributes.kcw&&e.sendChildEvent("endedChat",[{sender:"endButton"}]),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault()):!0===_&&(this.cont.elementReferrerPopup=m,m.focus(),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault())}}},{key:"sendParameters",value:function sendParameters(chatEvents){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed){var js_vars=this.attributes.jsVars.value,js_args={},currentVar=null;for(var index in js_vars)try{currentVar=eval(js_vars[index].var),null!=currentVar&&""!==currentVar&&(js_args[js_vars[index].id]=currentVar)}catch(t){}chatEvents.sendChildEvent("jsVars",[js_args])}}}]),mainWidgetPopup}()},3678:function(t,e,i){"use strict";i.d(e,{T:function(){return a}});var n=i(5671),s=i(3144),r=(i(7761),i(3908)),o=i(2137),a=function(){function t(e){(0,n.Z)(this,t),this.attributes={},this.controlMode=!1,this.cont=new r.a((e||"lhc")+"_status_widget_v2",o.a.getAbstractStyle({zindex:"2147483640",width:"95px",height:"95px",position:"fixed",display:"none",maxheight:"95px",maxwidth:"95px",minheight:"95px",minwidth:"95px"}),null,"iframe"),this.loadStatus={main:!1,theme:!1,font:!0,widget:!1,shidden:!1},this.lload=!1,this.unread_counter=0}return(0,s.Z)(t,[{key:"toggleOfflineIcon",value:function(t){var e=this.cont.getElementById("status-icon");t?(this.attributes.leaveMessage||this.show(),o.a.removeClass(e,"offline-status")):this.attributes.leaveMessage?o.a.addClass(e,"offline-status"):this.hide()}},{key:"checkLoadStatus",value:function(){1==this.loadStatus.theme&&1==this.loadStatus.main&&1==this.loadStatus.font&&1==this.loadStatus.widget&&0==this.loadStatus.shidden&&(this.cont.getElementById("lhc_status_container").style.display="",this.attributes.sload.next(!0))}},{key:"init",value:function(t,e){var i=this;this.attributes=t;var n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",right:10+this.attributes.widgetDimesions.value.sright+"px"};if("bottom_left"==t.position_placement||"full_height_left"==t.position_placement?n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",left:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_right"==t.position_placement?n={bottom:"calc(50% - 45px)",right:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_left"==t.position_placement&&(n={bottom:"calc(50% - 45px)",left:10+this.attributes.widgetDimesions.value.sright+"px"}),this.cont.massRestyle(n),this.cont.tmpl='',null===this.cont.constructUIIframe(""))return null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile":"lhc-desktop";var s=this;this.lload=!!e,!0===this.lload?this.loadStatus.widget=!0:t.wloaded.subscribe((function(t){t&&(i.loadStatus.widget=!0,i.checkLoadStatus())})),t.shidden.subscribe((function(t){t?i.attributes.userSession.getSessionAttributes().id||1==i.attributes.widgetStatus.value||(i.loadStatus.shidden=!0,i.hide()):(i.loadStatus.shidden=!1,i.checkLoadStatus(),i.show())})),this.cont.attachUserEventListener("click",(function(e){!1===t.onlineStatus.value&&t.eventEmitter.emitEvent("offlineClickAction"),!1===t.onlineStatus.value&&null!==t.offline_redirect?(document.location=t.offline_redirect,e.preventDefault()):1==s.controlMode?(t.eventEmitter.emitEvent("closeWidget",[{sender:"closeButton"}]),e.preventDefault()):(t.eventEmitter.emitEvent("showWidget",[{event:e}]),t.eventEmitter.emitEvent("clickAction"))}),"lhc_status_container","minifiedclick"),this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.staticJS.font_status&&this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.font=!0,i.checkLoadStatus()},as:"font",rel:"preload",type:"font/woff",crossOrigin:"anonymous",href:this.attributes.staticJS.font_status}),this.attributes.theme>0?(this.loadStatus.theme=!1,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.theme=!0,i.checkLoadStatus()},id:"lhc-theme-status",crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0)):this.loadStatus.theme=!0,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.main=!0,i.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.status_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v}),t.onlineStatus.subscribe((function(t){return i.toggleOfflineIcon(t)})),t.widgetStatus.subscribe((function(t){if("popup"!==i.attributes.mode){var e=i.attributes.userSession.getSessionAttributes();1==t||!i.attributes.leaveMessage&&0==i.attributes.onlineStatus.value&&!e.id?i.hide():i.show()}})),"popup"===this.attributes.mode&&this.show();var r=t.storageHandler.getSessionStorage(this.attributes.prefixStorage+"_unr");t.eventEmitter.addListener("unread_message",(function(t){var e=t&&t.otm;e&&(e=parseInt(e),e+=i.unread_counter),i.attributes.unread_counter.next(e),i.showUnreadIndicator(e)})),null!==r&&(t.eventEmitter.emitEvent("unread_message",[{otm:r,init:!0}]),null===r||isNaN(r)||(this.unread_counter=parseInt(r))),t.eventEmitter.addListener("reloadWidget",(function(){i.attributes.theme>0&&i.cont.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-status",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+i.attributes.theme+"?v="+Date.now()},!0),o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+i.attributes.theme+"?v="+Date.now()})}))}},{key:"hide",value:function(){if(this.removeUnreadIndicator(),!0===this.attributes.clinst&&0==this.attributes.isMobile){var t=this.attributes.userSession.getSessionAttributes();if((1==this.attributes.leaveMessage||1==this.attributes.onlineStatus.value||t.id)&&(("api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&(t.id&&t.hash||1==this.attributes.widgetStatus.value))&&(!0!==this.attributes.hide_status||t.id&&t.hash)&&this.cont.show(),!0!==this.attributes.hide_status||t.id&&t.hash||1==this.attributes.widgetStatus.value)){if(1==this.attributes.widgetStatus.value){this.controlMode=!0;var e=this.cont.getElementById("status-icon");o.a.addClass(e,"close-status")}return}}this.cont.hide()}},{key:"showUnreadIndicator",value:function(t){var e=t||"!",i=this.cont.getElementById("lhc_status_container");o.a.addClass(i,"has-uread-message");var n=this.cont.getElementById("unread-msg-number");n&&(n.innerText=e),this.attributes.storageHandler&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_unr",e)}},{key:"removeUnreadIndicator",value:function(){var t=this.cont.getElementById("lhc_status_container");o.a.removeClass(t,"has-uread-message"),this.attributes.storageHandler&&this.attributes.storageHandler.removeSessionStorage(this.attributes.prefixStorage+"_unr"),this.attributes.eventEmitter.emitEvent("remove_unread_indicator",[]),this.attributes.unread_counter.next(0),this.unread_counter=0}},{key:"show",value:function(){if(!1===this.attributes.hideOffline){var t=this.attributes.userSession.getSessionAttributes();if(!0===this.attributes.clinst&&0==this.attributes.isMobile&&1!=this.attributes.widgetStatus.value){var e=this.cont.getElementById("status-icon");o.a.removeClass(e,"close-status"),this.controlMode=!1}"api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&t.id&&t.hash?this.cont.show():!0===this.attributes.clinst&&1!=this.attributes.widgetStatus.value&&this.cont.hide()}else this.cont.hide()}}]),t}()},6349:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Z:function(){return chatEventsHandler}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),chatEventsHandler=function(){function chatEventsHandler(t){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,chatEventsHandler),this.attributes=t}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(chatEventsHandler,[{key:"getJSVarsValues",value:function getJSVarsValues(jsVars){var js_args={};if(jsVars.length>0){var currentVar=null;for(var index in jsVars)try{currentVar=eval("window."+jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[jsVars[index].id]=currentVar)}catch(t){}return js_args}return js_args}},{key:"getInitAttributes",value:function(){var t={onlineStatus:this.attributes.onlineStatus.value,toggleSound:this.attributes.toggleSound.value,widgetStatus:this.attributes.widgetStatus.value,jsVars:this.getJSVarsValues(this.attributes.jsVars.value),isMobile:this.attributes.isMobile,department:this.attributes.department,product:this.attributes.product,theme:this.attributes.theme,base_url:this.attributes.base_url,mode:this.attributes.mode,captcha:this.attributes.captcha,staticJS:this.attributes.staticJS,static_chat:this.attributes.userSession.getSessionAttributes(),domain_lhc:this.attributes.domain_lhc,leave_message:this.attributes.leaveMessage,scope_prefix:this.attributes.prefixLowercase};if(1==this.attributes.fresh&&(t.static_chat.id&&delete t.static_chat.id,t.static_chat.hash&&delete t.static_chat.hash),""!=this.attributes.bot_id&&(t.bot_id=this.attributes.bot_id),""!=this.attributes.trigger_id&&(t.trigger_id=this.attributes.trigger_id),""!=this.attributes.priority&&(t.priority=this.attributes.priority),null!==this.attributes.phash&&(t.phash=this.attributes.phash),null!==this.attributes.survey&&(t.survey=this.attributes.survey),null!==this.attributes.pvhash&&(t.pvhash=this.attributes.pvhash),null!==this.attributes.operator&&(t.operator=this.attributes.operator),null!==this.attributes.profile_pic&&(t.profile_pic=this.attributes.profile_pic),""!=this.attributes.lang&&(t.lang=this.attributes.lang),this.attributes.proactive.invitation&&(t.proactive=this.attributes.proactive),null!==this.attributes.dep_default&&(t.dep_default=this.attributes.dep_default),this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr){var e=this.attributes.LHCChatOptions.attr,i=[];e.forEach((function(t,e){i.push({show:void 0===t.show||"on"!=t.show&&"off"!=t.show?"b":t.show,value:t.value,index:e,name:t.name,class:"form-control form-control-sm",type:t.type,identifier:"additional_"+e,placeholder:"",width:t.size||6,encrypted:t.encrypted||!1,required:t.req||!1,label:t.name})})),t.CUSTOM_FIELDS=i}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill){e=this.attributes.LHCChatOptions.attr_prefill;var n=[];e.forEach((function(t){"email"==t.name?n.push({Email:t.value}):"username"==t.name?n.push({Username:t.value}):"phone"==t.name?n.push({Phone:t.value}):"question"==t.name&&n.push({Question:t.value})})),t.attr_prefill=n}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill_admin){e=this.attributes.LHCChatOptions.attr_prefill_admin;var s=[];e.forEach((function(t){s.push({value:t.value,index:t.index})})),t.attr_prefill_admin=s}return null!==this.attributes.userSession.getSessionReferrer()&&(t.ses_ref=this.attributes.userSession.getSessionReferrer()),t}},{key:"sendChildCommand",value:function(t){this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(t,"/"),this.attributes.popupWidget.cont.elementReferrerPopup&&!1===this.attributes.popupWidget.cont.elementReferrerPopup.closed&&this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(t,"*")}},{key:"sendReadyEvent",value:function(t){var e=this.getInitAttributes();!0!==t&&this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage("lhc_init:"+JSON.stringify(e),"/")}},{key:"sendChildEvent",value:function(t,e,i){void 0===i&&(i="lhc_event"),this.sendChildCommand(i+":"+t+"::"+JSON.stringify(e))}}]),chatEventsHandler}()},593:function(t,e,i){"use strict";i.d(e,{U:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.events={}}return(0,s.Z)(t,[{key:"attachEvent",value:function(t,e,i){var n=this,s=function(e){i.call(t,n.getEvent(e))};return t.attachEvent("on"+e,s),s}},{key:"unlisten",value:function(t){var e;this.events[t]&&(e=this.events[t],this.events[t]=null,this.removeEventHandler(e.element,e.eventName,e.eventListener))}},{key:"listen",value:function(t,e,i,n){var s;if(n){if(this.events[n]&&(s=this.events[n],this.events[n]=null,this.removeEventHandler(s.element,s.eventName,s.eventListener)),t.addEventListener)t.addEventListener(e,i,!1);else{if(!document.attachEvent)return null;i=this.attachEvent(t,e,i)}return this.events[n]={element:t,eventName:e,eventListener:i},i}}},{key:"removeEventHandler",value:function(t,e,i){document.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent("on"+e,i)}},{key:"getEvent",value:function(t){var e=t||_this.event;if(!e)for(t=this.getEvent.caller;t&&(!(e=t.arguments[0])||Event!=e.constructor);)t=t.caller;return e}}]),t}())},6419:function(t,e,i){"use strict";i.d(e,{h:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i){(0,n.Z)(this,t),this.valueInternal=e,this.listeners=[],this.params=i||{}}return(0,s.Z)(t,[{key:"value",get:function(){return this.valueInternal},set:function(t){this.next(t)}},{key:"next",value:function(t){this.valueInternal=t,this.callListeners()}},{key:"nextProperty",value:function(t,e){this.valueInternal[t]=e,this.callListeners()}},{key:"callListeners",value:function(){var t=this;this.listeners.forEach((function(e){e&&"function"==typeof e&&e(t.valueInternal)}))}},{key:"unsubscribe",value:function(t){-1!==this.listeners.indexOf(t)&&this.listeners.splice(this.listeners.indexOf(t),1)}},{key:"subscribe",value:function(t){this.listeners.push(t),this.params.ignore_sub||t(this.valueInternal)}}]),t}()},5545:function(t,e,i){"use strict";i.d(e,{Q:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i,s,r){(0,n.Z)(this,t),this.window=e,this.cookieEnabled=!1,this.cookiesSupportChecked=!1,1==r&&this.checkCookiesSupport(),this.domain=i,this.secureCookie=!1,this.cookiePerPage=!1,this.prefix=s||"lhc"}return(0,s.Z)(t,[{key:"checkCookiesSupport",value:function(){if(!0===this.cookiesSupportChecked)return this.cookieEnabled;this.cookiesSupportChecked=!0;try{this.hasSessionStorage=!!this.window.sessionStorage}catch(t){this.hasSessionStorage=!1}try{this.hasLocalStorage=!!this.window.localStorage}catch(t){this.hasLocalStorage=!1}try{document.cookie="cookietest=1",this.cookieEnabled=-1!==document.cookie.indexOf("cookietest="),document.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"}catch(t){}return this.cookieEnabled}},{key:"setCookieDomain",value:function(t){this.domain=t}},{key:"setCookiePerPage",value:function(t){this.cookiePerPage=t}},{key:"getCookieDomain",value:function(){return this.domain?"."+this.domain:null}},{key:"setSecureCookie",value:function(t){this.secureCookie=t}},{key:"setHTTPCookie",value:function(t,e,i,n){if(!1!==this.cookieEnabled){var s="";i||((i=new Date).setTime(i.getTime()+15552e6),s="; expires="+i.toGMTString()),document.cookie=t+"="+e+s+(!1===this.cookiePerPage?"; path=/":!0===this.cookiePerPage?"":"; path="+this.cookiePerPage)+(this.secureCookie?";secure":"")+(n?";domain="+n:"")+";SameSite=Lax"}}},{key:"getHTTPCookie",value:function(t){if(!1===this.cookieEnabled)return[];var e,i,n=[],s=t+"=",r=document.cookie.split(";");for(t=0,e=r.length;t0){var js_args={},currentVar=null;for(var index in this.jsVars)try{currentVar=-1!==this.jsVars[index].var.indexOf("lhc_var.")?this.attributes.lhc_var[this.jsVars[index].var.replace("lhc_var.","")]||null:eval(this.jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[this.jsVars[index].id]=currentVar)}catch(t){}return js_args}return null}},{key:"getAppendVariables",value:function(){var t="";return null!==this.vid&&(t=t+"/(vid)/"+this.vid),null!==this.hash&&null!==this.id&&(t=t+"/(hash)/"+this.id+"_"+this.hash),t}},{key:"updateJSVars",value:function(t,e){var i=this.getVars(t),n=new XMLHttpRequest;n.open("POST",this.attributes.LHC_API.args.lhc_base_url+"/chat/updatejsvars"+this.getAppendVariables(),!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.send("data="+encodeURIComponent(this.JSON.stringify(i))),void 0!==e&&null===this.hash&&null===this.id&&e(i)}},{key:"setChatInformation",value:function(t,e){this.id=t.id,this.hash=t.hash,null===this.id||e||(this.hnh=Math.round(Date.now()/1e3))}}]),userSession}()},891:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return v}});const n=/iPhone/i,s=/iPod/i,r=/iPad/i,o=/\bAndroid(?:.+)Mobile\b/i,a=/Android/i,u=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,c=/Silk/i,h=/Windows Phone/i,l=/\bWindows(?:.+)ARM\b/i,d=/BlackBerry/i,p=/BB10/i,m=/Opera Mini/i,_=/\b(CriOS|Chrome)(?:.+)Mobile/i,f=/Mobile(?:.+)Firefox\b/i;function g(t,e){return t.test(e)}function v(t){let e=(t=t||("undefined"!=typeof navigator?navigator.userAgent:"")).split("[FBAN");void 0!==e[1]&&(t=e[0]),e=t.split("Twitter"),void 0!==e[1]&&(t=e[0]);const i={apple:{phone:g(n,t)&&!g(h,t),ipod:g(s,t),tablet:!g(n,t)&&g(r,t)&&!g(h,t),device:(g(n,t)||g(s,t)||g(r,t))&&!g(h,t)},amazon:{phone:g(u,t),tablet:!g(u,t)&&g(c,t),device:g(u,t)||g(c,t)},android:{phone:!g(h,t)&&g(u,t)||!g(h,t)&&g(o,t),tablet:!g(h,t)&&!g(u,t)&&!g(o,t)&&(g(c,t)||g(a,t)),device:!g(h,t)&&(g(u,t)||g(c,t)||g(o,t)||g(a,t))||g(/\bokhttp\b/i,t)},windows:{phone:g(h,t),tablet:g(l,t),device:g(h,t)||g(l,t)},other:{blackberry:g(d,t),blackberry10:g(p,t),opera:g(m,t),firefox:g(f,t),chrome:g(_,t),device:g(d,t)||g(p,t)||g(m,t)||g(f,t)||g(_,t)},any:!1,phone:!1,tablet:!1};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}},8259:function(t,e,i){"use strict";t.exports=i(2159)},3434:function(t,e,i){"use strict";var n=i(723);function s(){}var r=null,o={};function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("Promise constructor's argument is not a function");this._h=0,this._i=0,this._j=null,this._k=null,t!==s&&p(t,this)}function u(t,e){for(;3===t._i;)t=t._j;if(a._l&&a._l(t),0===t._i)return 0===t._h?(t._h=1,void(t._k=e)):1===t._h?(t._h=2,void(t._k=[t._k,e])):void t._k.push(e);!function(t,e){n((function(){var i=1===t._i?e.onFulfilled:e.onRejected;if(null!==i){var n=function(t,e){try{return t(e)}catch(t){return r=t,o}}(i,t._j);n===o?h(e.promise,r):c(e.promise,n)}else 1===t._i?c(e.promise,t._j):h(e.promise,t._j)}))}(t,e)}function c(t,e){if(e===t)return h(t,new TypeError("A promise cannot be resolved with itself."));if(e&&("object"==typeof e||"function"==typeof e)){var i=function(t){try{return t.then}catch(t){return r=t,o}}(e);if(i===o)return h(t,r);if(i===t.then&&e instanceof a)return t._i=3,t._j=e,void l(t);if("function"==typeof i)return void p(i.bind(e),t)}t._i=1,t._j=e,l(t)}function h(t,e){t._i=2,t._j=e,a._m&&a._m(t,e),l(t)}function l(t){if(1===t._h&&(u(t,t._k),t._k=null),2===t._h){for(var e=0;e "+e+") {","args = new Array(arguments.length + 1);","for (var i = 0; i < arguments.length; i++) {","args[i] = arguments[i];","}","}","return new Promise(function (rs, rj) {","var cb = "+r+";","var res;","switch (argLength) {",i.concat(["extra"]).map((function(t,e){return"case "+e+":res = fn.call("+["self"].concat(i.slice(0,e)).concat("cb").join(",")+");break;"})).join(""),"default:","args[argLength] = cb;","res = fn.apply(self, args);","}","if (res &&",'(typeof res === "object" || typeof res === "function") &&','typeof res.then === "function"',") {rs(res);}","});","};"].join("");return Function(["Promise","fn"],o)(n,t)}(t)};var r="function (err, res) {if (err) { rj(err); } else { rs(res); }}";n.nodeify=function(t){return function(){var e=Array.prototype.slice.call(arguments),i="function"==typeof e[e.length-1]?e.pop():null,r=this;try{return t.apply(this,arguments).nodeify(i,r)}catch(t){if(null==i)return new n((function(e,i){i(t)}));s((function(){i.call(r,t)}))}}},n.prototype.nodeify=function(t,e){if("function"!=typeof t)return this;this.then((function(i){s((function(){t.call(e,null,i)}))}),(function(i){s((function(){t.call(e,i)}))}))}},3690:function(t,e,i){"use strict";var n=i(3434);t.exports=n,n.enableSynchronous=function(){n.prototype.isPending=function(){return 0==this.getState()},n.prototype.isFulfilled=function(){return 1==this.getState()},n.prototype.isRejected=function(){return 2==this.getState()},n.prototype.getValue=function(){if(3===this._i)return this._j.getValue();if(!this.isFulfilled())throw new Error("Cannot get a value of an unfulfilled promise.");return this._j},n.prototype.getReason=function(){if(3===this._i)return this._j.getReason();if(!this.isRejected())throw new Error("Cannot get a rejection reason of a non-rejected promise.");return this._j},n.prototype.getState=function(){return 3===this._i?this._j.getState():-1===this._i||-2===this._i?0:this._i}},n.disableSynchronous=function(){n.prototype.isPending=void 0,n.prototype.isFulfilled=void 0,n.prototype.isRejected=void 0,n.prototype.getValue=void 0,n.prototype.getReason=void 0,n.prototype.getState=void 0}},4795:function(t,e,i){var n;!function(e){"use strict";function s(){}var r=s.prototype,o=e.EventEmitter;function a(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function u(t){return function(){return this[t].apply(this,arguments)}}function c(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&c(t.listener)}r.getListeners=function(t){var e,i,n=this._getEvents();if(t instanceof RegExp)for(i in e={},n)n.hasOwnProperty(i)&&t.test(i)&&(e[i]=n[i]);else e=n[t]||(n[t]=[]);return e},r.flattenListeners=function(t){var e,i=[];for(e=0;e0&&C.userSession.setupVarsMonitoring(t.js_vars,(function(t){E.sendChildEvent("jsVars",[t])}))),"widget"!=C.mode&&"popup"!=C.mode||C.viewHandler.init(C,t.ll),"api"==C.position&&"embed"==C.mode||C.mainWidget.init(C,t.ll),"widget"!=C.mode&&"popup"!=C.mode||x.cont.show(),C.loadcb&&C.loadcb(C),t.init_calls&&(C.init_calls=t.init_calls),C.proactive_interval=t.chat_ui.proactive_interval,"widget"!=C.mode&&"popup"!=C.mode&&"embed"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I(),C.init_calls.length>0&&C.init_calls.forEach((function(t){"nodeJSChat"==t.extension&&Promise.all([__webpack_require__.e(572),__webpack_require__.e(417)]).then(__webpack_require__.bind(__webpack_require__,9417)).then((function(e){e.nodeJSChat.setParams(t.params,C,E)}))})));else{if(t.terminate)return;C.userSession.setVID(t.vid),C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2");var n=document.createElement("script");n.type=i.type,n.id=C.prefixLowercase+"-js-reload",n.async=!0,i.getAttribute("scope")&&n.setAttribute("scope",i.getAttribute("scope")),n.src=i.getAttribute("src")+"&r="+(new Date).getHours()+(new Date).getMinutes();var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(n,s)}})),C.eventEmitter.addListener("closeWidget",(function(){C.widgetStatus.next(!1),E.sendChildEvent("closedWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("sendChildEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg]):C.childCommands.push(t)})),C.eventEmitter.addListener("sendChildExtEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext"):C.childExtCommands.push(t)})),C.eventEmitter.addListener("toggleSound",(function(){var t=!C.toggleSound.value;C.toggleSound.next(t)})),C.eventEmitter.addListener("enableCookies",(function(){if(!0===m.checkCookiesSupport()){var t=C.userSession.getSessionAttributes();void 0!==t.hnh&&delete t.hnh,C.storageHandler.storeSessionInformation(t),void 0!==r.args.orig&&(C.mode=r.args.mode=r.args.orig.mode,r.args.proactive=r.args.orig.proactive,r.args.check_messages=r.args.orig.check_messages,d.makeRequest(r.args.lhc_base_url+C.lang+"widgetrestapi/settings",{params:D()},(function(t){C.eventEmitter.emitEvent("sendChildEvent",[{cmd:"attr_set",arg:{type:"attr_set",attr:["mode"],data:C.mode}}]),"widget"==C.mode&&null!==C.nh&&O(C.nh),"widget"!=C.mode&&"popup"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I()})))}})),C.eventEmitter.addListener("endChatCookies",(function(t){(!1===C.kcw||t&&1==t.force)&&(C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={})})),C.eventEmitter.addListener("endChat",(function(t){C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={},"popup"==C.mode||t&&t.show_start||C.widgetStatus.next(!1),C.viewHandler&&(C.viewHandler.removeUnreadIndicator(),C.eventEmitter.emitEvent("hide_msg_snippet")),C.widgetDimesions.nextProperty("height_override",null),E.sendChildEvent("endedChat",[{sender:"endButton"}]),("embed"==C.mode||t&&t.show_start)&&C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),"popup"==C.mode&&C.popupWidget.freeup()})),C.eventEmitter.addListener("showWidget",(function(t){C.mainWidget.hideInvitation(),C.widgetStatus.next(!0),"popup"==C.mode?(C.popupWidget.init(C,E,t),C.viewHandler.removeUnreadIndicator(),C.mainWidget.hide()):void 0!==t&&void 0!==t.event&&t.event.preventDefault(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("addTag",(function(t){C.tag=""!=C.tag?C.tag+","+t:t,C.eventEmitter.emitEvent("tagAdded")})),C.eventEmitter.addListener("addEvent",(function(t){C.events=t,C.eventEmitter.emitEvent("eventAdded")})),C.eventEmitter.addListener("openPopup",(function(){C.popupWidget.init(C,E),C.viewHandler.removeUnreadIndicator(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),C.widgetStatus.next(!1)})),C.eventEmitter.addListener("chatStarted",(function(t,e){C.widgetDimesions.nextProperty("height_override",null),"popup"===e&&!0!==C.kcw||C.userSession.setChatInformation(t,C.nh&&C.nh.ap),"popup"==e&&C.mainWidget.hide(),!1!==C.fresh||"popup"===e&&!0!==C.kcw||C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes())})),C.eventEmitter.addListener("subscribeEvent",(function(t){C.chatNotifications.setPublicKey(t.pk,C.eventEmitter),C.chatNotifications.sendNotification()})),C.eventEmitter.addListener("subcribedEvent",(function(t){E.sendChildEvent("subcribedEvent",[t])})),C.widgetStatus.subscribe((function(t){"popup"!==C.mode&&("embed"!==C.mode&&C.storageHandler.setSessionStorage(b+"_ws",t),E.sendChildEvent("widgetStatus",[t]))})),C.toggleSound.subscribe((function(t){C.storageHandler.setSessionStorage(b+"_sound",t)})),C.onlineStatus.subscribe((function(t){E.sendChildEvent("onlineStatus",[t])})),C.eventEmitter.addListener("screenshot",(function(t){d.makeScreenshot(C.staticJS.screenshot,t)})),C.eventEmitter.addListener("screenshare",(function(t){__webpack_require__.e(398).then(__webpack_require__.bind(__webpack_require__,7398)).then((function(e){e.screenShare.setParams(t||{},C,E)}))})),C.eventEmitter.addListener("location",(function(t){document.location=t})),C.eventEmitter.addListener("terminated",(function(t){C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2")})),C.eventEmitter.addListener("showInvitation",(function(t){C.widgetDimesions.nextProperty("bottom_override",75),C.widgetDimesions.nextProperty("right_override",75),C.mainWidget.showInvitation()})),C.eventEmitter.addListener("hideInvitation",(function(t){C.mainWidget.hideInvitation(),t.full?(C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),C.eventEmitter.emitEvent("fullInvitation",[t])):C.eventEmitter.emitEvent("cancelInvitation",[])})),C.eventEmitter.addListener("msgSnippet",(function(t){if("widget"==C.mode&&!1===C.widgetStatus.value){if(t.full_widget)return void C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]);"api"==C.position&&C.viewHandler&&C.viewHandler.show(),__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet?C.msgSnippet.showSnippet(t,!0):(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t)),C.eventEmitter.emitEvent("unread_message",[{otm:1}])}))}})),C.eventEmitter.addListener("unread_message",(function(t){t&&t.msg_body&&!C.msgSnippet&&__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet||(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t))}))})),C.originalTitle=document.title,C.blinkInterval=null,C.eventEmitter.addListener("unread_message_title",(function(t){clearInterval(C.blinkInterval),0==t.status?C.blinkInterval=setInterval((function(){document.title=Math.round((new Date).getTime()/1e3)%2?"💬 "+C.originalTitle:C.originalTitle}),1e3):(C.focused=!0,document.title=C.originalTitle)})),C.eventEmitter.addListener("widgetHeight",(function(e){if(e.reset_height)return C.widgetDimesions.nextProperty("height_override",null),C.widgetDimesions.nextProperty("bottom_override",null),C.widgetDimesions.nextProperty("right_override",null),void C.widgetDimesions.nextProperty("width_override",null);if(e.force_height||e.force_width||e.force_bottom||e.force_right)return e.force_height&&C.widgetDimesions.nextProperty("height_override",e.force_height),e.force_width&&C.widgetDimesions.nextProperty("width_override",e.force_width),e.force_right&&C.widgetDimesions.nextProperty("right_override",e.force_right),void(e.force_bottom&&C.widgetDimesions.nextProperty("bottom_override",e.force_bottom));if("widget"==C.mode&&0==C.isMobile){var i=document,n=i.documentElement,s=i.getElementsByTagName("body")[0],r=t.innerHeight||n.clientHeight||s.clientHeight;parseInt(e.height)>C.widgetDimesions.value.height&&r>parseInt(e.height)?C.widgetDimesions.nextProperty("height_override",parseInt(e.height)):C.widgetDimesions.value.height_override&&C.widgetDimesions.value.height_override>r&&C.widgetDimesions.nextProperty("height_override",null)}}));var P=!1;try{P="serviceWorker"in navigator}catch(t){}if(!0===P)try{navigator.serviceWorker.addEventListener("message",(function(t){try{void 0!==t.data.lhc_ch&&void 0!==t.data.lhc_cid&&(C.widgetStatus.next(!0),"popup"==C.mode?(C.userSession.setChatInformation({id:t.data.lhc_cid,hash:t.data.lhc_ch}),C.eventEmitter.emitEvent("unread_message")):(E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),E.sendChildEvent("reopenNotification",[{id:t.data.lhc_cid,hash:t.data.lhc_ch}])))}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}))}catch(t){}var j=function(t){if(!0!==C.terminated&&"string"==typeof t.data&&!t.data.indexOf(C.prefixLowercase+"::")){var i=t.data.split("::");if(void 0!==t.origin){var n=t.origin.replace("http://","").replace("https://","").replace(/:(\d+)$/,"");if(n!==document.domain&&C.domain_lhc!==n&&"started"!==i[1]&&"isstarted"!==i[1])return}if("ready"==i[1]){E.sendReadyEvent("true"==i[2]),C.storageHandler.getSessionStorage(b+"_screenshare")&&C.eventEmitter.emitEvent("screenshare",[{auto_start:!0}]);var s=function(t){var e="focus"===t.type;C.focused=e,E.sendChildEvent("focus_changed",[{status:e}])};window.addEventListener("focus",s),window.addEventListener("blur",s),window.addEventListener("pageshow",s),window.addEventListener("pagehide",s),e.loaded=!0,E.sendChildEvent("ext_modules",[C.staticJS.ex_cb_js]),C.childExtCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext")})),C.childCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg])})),null!==C.react_attr&&C.react_attr.forEach((function(t){E.sendChildEvent("attr_set",[{type:"attr_set",attr:t.k,data:t.v}])}))}else"ready_popup"==i[1]?C.popupWidget.sendParameters(E):"isstarted"==i[1]?C.eventEmitter.emitEvent("terminated",[]):"started"==i[1]?C.hide_parent?C.eventEmitter.emitEvent("terminated",[]):t.source.postMessage("lhc::isstarted","*"):C.eventEmitter.emitEvent(i[1],JSON.parse(i[2]))}};window.addEventListener?window.addEventListener("message",j,!1):window.attachEvent?window.attachEvent("onmessage",j):document.attachEvent&&document.attachEvent("onmessage",j)},a=function(){!0!==e.ready&&(document.body&&(e.ready=!0),e.init=o,r.args.before_init&&r.args.before_init(e),r.args.manual_init||o())},u=__webpack_require__(593).U;a(),!e.ready||(u.listen(document,"DOMContentLoaded",(function(){a()}),"domloaded"),u.listen(document,"readystatechange",(function(){("complete"===document.readyState||"interactive"===document.readyState&&document.body)&&a()}),"domstatechange"),u.listen(t,"load",(function(){a()}),"windowload"))}.call(this,t["$_"+n],t[n+"_API"])}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}}(window),this.LiveHelperChat=__webpack_exports__.LiveHelperChatDefault})(); +(function(){var __webpack_modules__={9272:function(t,e,i){"use strict";var n=i(723),s=[],r=[],o=n.makeRequestCallFromTimer((function(){if(r.length)throw r.shift()}));function a(t){var e;(e=s.length?s.pop():new u).task=t,n(e)}function u(){this.task=null}t.exports=a,u.prototype.call=function(){try{this.task.call()}catch(t){a.onerror?a.onerror(t):(r.push(t),o())}finally{this.task=null,s[s.length]=this}}},723:function(t,e,i){"use strict";function n(t){r.length||s(),r[r.length]=t}t.exports=n;var s,r=[],o=0;function a(){for(;o1024){for(var e=0,i=r.length-o;e'+n+""),this.elmDomDoc.close(),this.insertCssFile(t),this.insertContent()}},{key:"insertContent",value:function(){this.elmDomDoc.body.innerHTML=this.tmpl}}]),c}(c.Y)},574:function(t,e,i){"use strict";i.d(e,{Y:function(){return u}});var n=i(5671),s=i(3144),r=i(2137),o=i(7761),a=i(593),u=function(){function t(e,i,s,r,o){(0,n.Z)(this,t);var a=this;this.elementId=e||"",this.style=i||"",this.tagName=r||"div",this.tmpl="",this.elmDom=null,this.elmDomDoc=o||document,this.attributes={},this.classNames=[],this.elementId&&(this.attributes.id=this.elementId),s&&Object.keys(s).forEach((function(t){a.attributes[t]=s[t]}))}return(0,s.Z)(t,[{key:"constructUI",value:function(t){return this.elmDomDoc=t||this.elmDomDoc,this.elmDom=r.a.initElement(this.elmDomDoc,this.tagName,this.attributes,this.style,this.tmpl),this.elmDom.className+=this.classNames.join(" "),this.elmDom}},{key:"restyle",value:function(t,e){e&&(this.elmDom?this.elmDom.style.cssText+=";"+t+":"+e:this.style+=";"+t+":"+e)}},{key:"attachUserEventListener",value:function(t,e,i,n){var s;(s=i?this.getElementById(i):this.elmDom)&&(1<(i=t.split(" ")).length?i.forEach((function(t){a.U.listen(s,t,e,t+n)})):a.U.listen(s,t,e,n))}},{key:"getElementById",value:function(t){return this.elmDom?this.elmDomDoc.getElementById(t):null}},{key:"hide",value:function(){this.restyle("display","none !important")}},{key:"show",value:function(){this.restyle("display","block !important")}},{key:"insertCssFile",value:function(t,e){var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=r.a.initElement(this.elmDomDoc,"style",{type:"text/css"}),a=this.elmDomDoc.createTextNode(e?t:o.X.ResetStyle+""+t);n.appendChild(s),i.appendChild(n),s.styleSheet?s.styleSheet.cssText=a.nodeValue:s.appendChild(a)}},{key:"insertCssRemoteFile",value:function(t){var e=null;if(t.id&&t.href&&null!==(e=this.elmDomDoc.getElementById(t.id)))e.href=t.href;else{var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=this.elmDomDoc.createElement("link");for(var r in s.rel="stylesheet",s.crossOrigin="*",t)s[r]=t[r];n.appendChild(s),i.appendChild(n)}}},{key:"insertJSFile",value:function(t,e,i,n){var s=this.elmDomDoc.getElementsByTagName("head")[0],r=this.elmDomDoc.createDocumentFragment(),o=this.elmDomDoc.createElement("script");o.type="text/javascript",void 0!==e&&!0!==e||(o.async=!0),o.crossOrigin="*",o.src=t,i&&(o.onload=i),n&&Object.keys(n).forEach((function(t){o.setAttribute(t,n[t])})),r.appendChild(o),s.appendChild(r)}},{key:"massRestyle",value:function(t){for(var e in t)t.hasOwnProperty(e)&&this.restyle(e,t[e])}}]),t}()},1660:function(t,e,i){"use strict";i.d(e,{T:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.isNotificationsSubscribed=!1,this.applicationServerPublicKey=null,this.eventEmitter=null}return(0,s.Z)(t,[{key:"setPublicKey",value:function(t,e){this.applicationServerPublicKey=t,this.eventEmitter=e}},{key:"sendNotification",value:function(){var t=this,e=this.applicationServerPublicKey,i=null;if("serviceWorker"in navigator&&"PushManager"in window)if("Notification"in window){if("granted"===Notification.permission);else if("denied"!==Notification.permission)Notification.requestPermission((function(t){"granted"===t||alert("Sorry but you have denied notification!")}));else if("denied"===Notification.permission)return void alert("Sorry but you have denied notification!");t=this,navigator.serviceWorker.register("/sw.lhc.js?v=2").then((function(n){(i=n).pushManager.getSubscription().then((function(n){var s;t.isNotificationsSubscribed=!(null===n),t.isNotificationsSubscribed,s=function(t){for(var e=(t+"=".repeat((4-t.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(e),n=new Uint8Array(i.length),s=0;s',null===this.cont.constructUIIframe("",this.attributes.staticJS.dir,this.attributes.staticJS.cl,this.attributes.hhtml))return this.isLoaded=!0,null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile lhc-mode-"+this.attributes.mode:"lhc-desktop lhc-mode-"+this.attributes.mode,this.attributes.cont_ss&&(this.originalCSS=this.cont.elmDom.style.cssText,this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"init",value:function(t,e){var i=this;if(this.attributes=t,null===this.makeContent())return null;!this.attributes.userSession.getSessionAttributes().id&&e||this.bootstrap(),this.toggleVisibilityWrap=function(t){i.toggleVisibility(t)},t.widgetStatus.subscribe(this.toggleVisibilityWrap),this.monitorDimensionsWrap=function(t){i.monitorDimensions(t)},t.widgetDimesions.subscribe(this.monitorDimensionsWrap),t.eventEmitter.addListener("reloadWidget",(function(){i.isLoaded=!1,i.makeContent(),t.eventEmitter.emitEvent("widgetHeight",[{reset_height:!0}]),i.toggleVisibility(t.widgetStatus.valueInternal)}))}},{key:"bootstrap",value:function(){var t=this;!0!==this.isLoaded&&(this.isLoaded=!0,this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({rel:"stylesheet",crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.theme&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/theme/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0),this.cont.insertCssRemoteFile({onload:function(){t.loadStatus.css=!0,t.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.widget_css},!0),1==this.attributes.isMobile&&"widget"==this.attributes.mode&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.widget_mobile_css}),"embed"==this.attributes.mode&&(this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.embed_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v})),this.cont.insertJSFile(this.attributes.staticJS.vendor,!1,(function(){t.cont.insertJSFile(t.attributes.staticJS.app,!1,(function(){t.loadStatus.main=!0,t.checkLoadStatus()}),{scope:t.attributes.prefixLowercase})}),{scope:this.attributes.prefixLowercase}),this.attributes.staticJS.ex_js&&this.attributes.staticJS.ex_js.length>0&&this.attributes.staticJS.ex_js.forEach((function(e){t.cont.insertJSFile(e,!1)})))}},{key:"toggleVisibility",value:function(t){0==t?this.hide():this.show()}},{key:"monitorDimensions",value:function(t){this.width=t.width_override||t.width,this.height=t.height_override||t.height,this.bottom=t.bottom_override?t.bottom_override+(t.wbottom?t.wbottom:0):30+(!0===this.attributes.clinst?70:0)+(t.wbottom?t.wbottom:0),this.right=t.right_override?t.right_override+(t.wright_inv?t.wright_inv:0):30+(t.wright?t.wright:0),this.units=t.width_override||t.height_override||t.bottom_override||t.right_override?"px":t.units,this.resize(),this.bottom_override=!!t.bottom_override}},{key:"hide",value:function(){this.cont.hide()}},{key:"hideInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"showInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText=this.originalCSS),this.show()}},{key:"show",value:function(){!1===this.isLoaded&&this.bootstrap(),this.cont.show()}}]),t}()},5962:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{f:function(){return mainWidgetPopup}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),mainWidgetPopup=function(){function mainWidgetPopup(){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,mainWidgetPopup),this.attributes={},this.width=null,this.height=null,this.units="px",this.freeup()}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(mainWidgetPopup,[{key:"freeup",value:function(){this.cont={}}},{key:"parseOptions",value:function(){var t=new Array,e="";if(void 0!==this.attributes){if(void 0!==this.attributes.LHCChatOptions.attr&&this.attributes.LHCChatOptions.attr.length>0)for(var i in this.attributes.LHCChatOptions.attr)void 0!==this.attributes.LHCChatOptions.attr[i]&&void 0!==this.attributes.LHCChatOptions.attr[i].type&&t.push("name[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].name)+"&encattr[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].encrypted&&1==this.attributes.LHCChatOptions.attr[i].encrypted?"t":"f")+"&value[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].value)+"&type[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].type)+"&size[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].size)+"&req[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].req&&1==this.attributes.LHCChatOptions.attr[i].req?"t":"f")+"&sh[]="+(void 0===this.attributes.LHCChatOptions.attr[i].show||"on"!=this.attributes.LHCChatOptions.attr[i].show&&"off"!=this.attributes.LHCChatOptions.attr[i].show?"b":this.attributes.LHCChatOptions.attr[i].show));if(void 0!==this.attributes.LHCChatOptions.attr_prefill&&this.attributes.LHCChatOptions.attr_prefill.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill)void 0!==this.attributes.LHCChatOptions.attr_prefill[i]&&void 0!==this.attributes.LHCChatOptions.attr_prefill[i].name&&t.push("prefill["+this.attributes.LHCChatOptions.attr_prefill[i].name+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[i].value));if(void 0!==this.attributes.LHCChatOptions.attr_prefill_admin&&this.attributes.LHCChatOptions.attr_prefill_admin.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill_admin)void 0!==this.attributes.LHCChatOptions.attr_prefill_admin[i]&&t.push("value_items_admin["+this.attributes.LHCChatOptions.attr_prefill_admin[i].index+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[i].value));t.length>0&&(e="&"+t.join("&"))}return e}},{key:"init",value:function(t,e,i){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed)void 0!==i&&"undefined"!==i.event&&i.event.preventDefault(),this.cont.elementReferrerPopup.focus();else{this.attributes=t;var n={static_chat:this.attributes.userSession.getSessionAttributes()},s="";n.static_chat.id&&n.static_chat.hash&&(s=s+"/(id)/"+n.static_chat.id+"/(hash)/"+n.static_chat.hash),null!==this.attributes.theme&&(s=s+"/(theme)/"+this.attributes.theme),null!==n.static_chat.vid&&!0===this.attributes.storageHandler.cookieEnabled&&(s=s+"/(vid)/"+n.static_chat.vid),this.attributes.isMobile&&(s+="/(mobile)/true"),this.attributes.department.length>0&&(s=s+"/(department)/"+this.attributes.department.join("/")),""!=this.attributes.identifier&&(s=s+"/(identifier)/"+this.attributes.identifier),this.attributes.operator&&(s=s+"/(operator)/"+this.attributes.operator),this.attributes.survey&&(s=s+"/(survey)/"+this.attributes.survey),this.attributes.bot_id&&(s=s+"/(bot)/"+this.attributes.bot_id),this.attributes.trigger_id&&(s=s+"/(trigger)/"+this.attributes.trigger_id),this.attributes.priority&&(s=s+"/(priority)/"+this.attributes.priority),"lhc"!=this.attributes.prefixLowercase&&(s=s+"/(scope)/"+this.attributes.prefixLowercase),s=s+"/(sound)/"+(1==this.attributes.toggleSound.value?1:0),this.attributes.proactive.invitation&&(s=s+"/(inv)/"+this.attributes.proactive.invitation,"popup"==this.attributes.mode&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_invt",1));var r=this.attributes.storageHandler.getLocalStorage(this.attributes.prefixStorage+"_dfs");r&&(s=s+"/(fs)/"+parseInt(r)),!0===this.attributes.leaveMessage&&(s+="/(leaveamessage)/true"),s=null!==this.attributes.userSession.getSessionReferrer()&&""!=this.attributes.userSession.getSessionReferrer()?s+"?ses_ref="+this.attributes.userSession.getSessionReferrer()+this.parseOptions():s+"?"+this.parseOptions();var o=void 0!==window.screenLeft?window.screenLeft:window.screenX,a=void 0!==window.screenTop?window.screenTop:window.screenY,u=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,c=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,h=u/window.screen.availWidth,l=(u-parseInt(this.attributes.popupDimesnions.pwidth))/2/h+o,d=(c-parseInt(this.attributes.popupDimesnions.pheight))/2/h+a,p="scrollbars=yes,menubar=1,resizable=1,width="+this.attributes.popupDimesnions.pwidth+",height="+this.attributes.popupDimesnions.pheight+",top="+d+",left="+l,m=window.open("",this.attributes.prefixStorage+"_popup_v2",p),_=!1,f=!1;try{!m||m.closed||void 0===m.closed||"about:blank"===m.location.href?(m=this.cont.elementReferrerPopup=window.open(this.attributes.base_url+this.attributes.lang+"chat/start"+s,this.attributes.prefixStorage+"_popup_v2",p),f=!0):_=!0}catch(t){_=!0}if(!m||m.closed||void 0===m.closed)try{this.attributes.viewHandler.cont.getElementById("status-icon").href=this.attributes.base_url+this.attributes.lang+"chat/start"+s}catch(t){alert("You have disabled popups!")}else 1==f?(void 0!==e&&!1===this.attributes.kcw&&e.sendChildEvent("endedChat",[{sender:"endButton"}]),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault()):!0===_&&(this.cont.elementReferrerPopup=m,m.focus(),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault())}}},{key:"sendParameters",value:function sendParameters(chatEvents){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed){var js_vars=this.attributes.jsVars.value,js_args={},currentVar=null;for(var index in js_vars)try{currentVar=eval(js_vars[index].var),null!=currentVar&&""!==currentVar&&(js_args[js_vars[index].id]=currentVar)}catch(t){}chatEvents.sendChildEvent("jsVars",[js_args])}}}]),mainWidgetPopup}()},3678:function(t,e,i){"use strict";i.d(e,{T:function(){return a}});var n=i(5671),s=i(3144),r=(i(7761),i(3908)),o=i(2137),a=function(){function t(e){(0,n.Z)(this,t),this.attributes={},this.controlMode=!1,this.cont=new r.a((e||"lhc")+"_status_widget_v2",o.a.getAbstractStyle({zindex:"2147483640",width:"95px",height:"95px",position:"fixed",display:"none",maxheight:"95px",maxwidth:"95px",minheight:"95px",minwidth:"95px"}),null,"iframe"),this.loadStatus={main:!1,theme:!1,font:!0,widget:!1,shidden:!1},this.lload=!1,this.unread_counter=0}return(0,s.Z)(t,[{key:"toggleOfflineIcon",value:function(t){var e=this.cont.getElementById("status-icon");t?(this.attributes.leaveMessage||this.show(),o.a.removeClass(e,"offline-status")):this.attributes.leaveMessage?o.a.addClass(e,"offline-status"):this.hide()}},{key:"checkLoadStatus",value:function(){1==this.loadStatus.theme&&1==this.loadStatus.main&&1==this.loadStatus.font&&1==this.loadStatus.widget&&0==this.loadStatus.shidden&&(this.cont.getElementById("lhc_status_container").style.display="",this.attributes.sload.next(!0))}},{key:"init",value:function(t,e){var i=this;this.attributes=t;var n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",right:10+this.attributes.widgetDimesions.value.sright+"px"};if("bottom_left"==t.position_placement||"full_height_left"==t.position_placement?n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",left:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_right"==t.position_placement?n={bottom:"calc(50% - 45px)",right:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_left"==t.position_placement&&(n={bottom:"calc(50% - 45px)",left:10+this.attributes.widgetDimesions.value.sright+"px"}),this.cont.massRestyle(n),this.cont.tmpl='',null===this.cont.constructUIIframe(""))return null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile":"lhc-desktop";var s=this;this.lload=!!e,!0===this.lload?this.loadStatus.widget=!0:t.wloaded.subscribe((function(t){t&&(i.loadStatus.widget=!0,i.checkLoadStatus())})),t.shidden.subscribe((function(t){t?i.attributes.userSession.getSessionAttributes().id||1==i.attributes.widgetStatus.value||(i.loadStatus.shidden=!0,i.hide()):(i.loadStatus.shidden=!1,i.checkLoadStatus(),i.show())})),this.cont.attachUserEventListener("click",(function(e){!1===t.onlineStatus.value&&t.eventEmitter.emitEvent("offlineClickAction"),!1===t.onlineStatus.value&&null!==t.offline_redirect?(document.location=t.offline_redirect,e.preventDefault()):1==s.controlMode?(t.eventEmitter.emitEvent("closeWidget",[{sender:"closeButton"}]),e.preventDefault()):(t.eventEmitter.emitEvent("showWidget",[{event:e}]),t.eventEmitter.emitEvent("clickAction"))}),"lhc_status_container","minifiedclick"),this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.staticJS.font_status&&this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.font=!0,i.checkLoadStatus()},as:"font",rel:"preload",type:"font/woff",crossOrigin:"anonymous",href:this.attributes.staticJS.font_status}),this.attributes.theme?(this.loadStatus.theme=!1,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.theme=!0,i.checkLoadStatus()},id:"lhc-theme-status",crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0)):this.loadStatus.theme=!0,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.main=!0,i.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.status_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v}),t.onlineStatus.subscribe((function(t){return i.toggleOfflineIcon(t)})),t.widgetStatus.subscribe((function(t){if("popup"!==i.attributes.mode){var e=i.attributes.userSession.getSessionAttributes();1==t||!i.attributes.leaveMessage&&0==i.attributes.onlineStatus.value&&!e.id?i.hide():i.show()}})),"popup"===this.attributes.mode&&this.show();var r=t.storageHandler.getSessionStorage(this.attributes.prefixStorage+"_unr");t.eventEmitter.addListener("unread_message",(function(t){var e=t&&t.otm;e&&(e=parseInt(e),e+=i.unread_counter),i.attributes.unread_counter.next(e),i.showUnreadIndicator(e)})),null!==r&&(t.eventEmitter.emitEvent("unread_message",[{otm:r,init:!0}]),null===r||isNaN(r)||(this.unread_counter=parseInt(r))),t.eventEmitter.addListener("reloadWidget",(function(){i.attributes.theme>0&&i.cont.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-status",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+i.attributes.theme+"?v="+Date.now()},!0),o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+i.attributes.theme+"?v="+Date.now()})}))}},{key:"hide",value:function(){if(this.removeUnreadIndicator(),!0===this.attributes.clinst&&0==this.attributes.isMobile){var t=this.attributes.userSession.getSessionAttributes();if((1==this.attributes.leaveMessage||1==this.attributes.onlineStatus.value||t.id)&&(("api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&(t.id&&t.hash||1==this.attributes.widgetStatus.value))&&(!0!==this.attributes.hide_status||t.id&&t.hash)&&this.cont.show(),!0!==this.attributes.hide_status||t.id&&t.hash||1==this.attributes.widgetStatus.value)){if(1==this.attributes.widgetStatus.value){this.controlMode=!0;var e=this.cont.getElementById("status-icon");o.a.addClass(e,"close-status")}return}}this.cont.hide()}},{key:"showUnreadIndicator",value:function(t){var e=t||"!",i=this.cont.getElementById("lhc_status_container");o.a.addClass(i,"has-uread-message");var n=this.cont.getElementById("unread-msg-number");n&&(n.innerText=e),this.attributes.storageHandler&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_unr",e)}},{key:"removeUnreadIndicator",value:function(){var t=this.cont.getElementById("lhc_status_container");o.a.removeClass(t,"has-uread-message"),this.attributes.storageHandler&&this.attributes.storageHandler.removeSessionStorage(this.attributes.prefixStorage+"_unr"),this.attributes.eventEmitter.emitEvent("remove_unread_indicator",[]),this.attributes.unread_counter.next(0),this.unread_counter=0}},{key:"show",value:function(){if(!1===this.attributes.hideOffline){var t=this.attributes.userSession.getSessionAttributes();if(!0===this.attributes.clinst&&0==this.attributes.isMobile&&1!=this.attributes.widgetStatus.value){var e=this.cont.getElementById("status-icon");o.a.removeClass(e,"close-status"),this.controlMode=!1}"api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&t.id&&t.hash?this.cont.show():!0===this.attributes.clinst&&1!=this.attributes.widgetStatus.value&&this.cont.hide()}else this.cont.hide()}}]),t}()},6349:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Z:function(){return chatEventsHandler}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),chatEventsHandler=function(){function chatEventsHandler(t){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,chatEventsHandler),this.attributes=t}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(chatEventsHandler,[{key:"getJSVarsValues",value:function getJSVarsValues(jsVars){var js_args={};if(jsVars.length>0){var currentVar=null;for(var index in jsVars)try{currentVar=eval("window."+jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[jsVars[index].id]=currentVar)}catch(t){}return js_args}return js_args}},{key:"getInitAttributes",value:function(){var t={onlineStatus:this.attributes.onlineStatus.value,toggleSound:this.attributes.toggleSound.value,widgetStatus:this.attributes.widgetStatus.value,jsVars:this.getJSVarsValues(this.attributes.jsVars.value),isMobile:this.attributes.isMobile,department:this.attributes.department,product:this.attributes.product,theme:this.attributes.theme,base_url:this.attributes.base_url,mode:this.attributes.mode,captcha:this.attributes.captcha,staticJS:this.attributes.staticJS,static_chat:this.attributes.userSession.getSessionAttributes(),domain_lhc:this.attributes.domain_lhc,leave_message:this.attributes.leaveMessage,scope_prefix:this.attributes.prefixLowercase};if(1==this.attributes.fresh&&(t.static_chat.id&&delete t.static_chat.id,t.static_chat.hash&&delete t.static_chat.hash),""!=this.attributes.bot_id&&(t.bot_id=this.attributes.bot_id),""!=this.attributes.trigger_id&&(t.trigger_id=this.attributes.trigger_id),""!=this.attributes.priority&&(t.priority=this.attributes.priority),null!==this.attributes.phash&&(t.phash=this.attributes.phash),null!==this.attributes.survey&&(t.survey=this.attributes.survey),null!==this.attributes.pvhash&&(t.pvhash=this.attributes.pvhash),null!==this.attributes.operator&&(t.operator=this.attributes.operator),null!==this.attributes.profile_pic&&(t.profile_pic=this.attributes.profile_pic),""!=this.attributes.lang&&(t.lang=this.attributes.lang),this.attributes.proactive.invitation&&(t.proactive=this.attributes.proactive),null!==this.attributes.dep_default&&(t.dep_default=this.attributes.dep_default),this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr){var e=this.attributes.LHCChatOptions.attr,i=[];e.forEach((function(t,e){i.push({show:void 0===t.show||"on"!=t.show&&"off"!=t.show?"b":t.show,value:t.value,index:e,name:t.name,class:"form-control form-control-sm",type:t.type,identifier:"additional_"+e,placeholder:"",width:t.size||6,encrypted:t.encrypted||!1,required:t.req||!1,label:t.name})})),t.CUSTOM_FIELDS=i}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill){e=this.attributes.LHCChatOptions.attr_prefill;var n=[];e.forEach((function(t){"email"==t.name?n.push({Email:t.value}):"username"==t.name?n.push({Username:t.value}):"phone"==t.name?n.push({Phone:t.value}):"question"==t.name&&n.push({Question:t.value})})),t.attr_prefill=n}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill_admin){e=this.attributes.LHCChatOptions.attr_prefill_admin;var s=[];e.forEach((function(t){s.push({value:t.value,index:t.index})})),t.attr_prefill_admin=s}return null!==this.attributes.userSession.getSessionReferrer()&&(t.ses_ref=this.attributes.userSession.getSessionReferrer()),t}},{key:"sendChildCommand",value:function(t){this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(t,"/"),this.attributes.popupWidget.cont.elementReferrerPopup&&!1===this.attributes.popupWidget.cont.elementReferrerPopup.closed&&this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(t,"*")}},{key:"sendReadyEvent",value:function(t){var e=this.getInitAttributes();!0!==t&&this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage("lhc_init:"+JSON.stringify(e),"/")}},{key:"sendChildEvent",value:function(t,e,i){void 0===i&&(i="lhc_event"),this.sendChildCommand(i+":"+t+"::"+JSON.stringify(e))}}]),chatEventsHandler}()},593:function(t,e,i){"use strict";i.d(e,{U:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.events={}}return(0,s.Z)(t,[{key:"attachEvent",value:function(t,e,i){var n=this,s=function(e){i.call(t,n.getEvent(e))};return t.attachEvent("on"+e,s),s}},{key:"unlisten",value:function(t){var e;this.events[t]&&(e=this.events[t],this.events[t]=null,this.removeEventHandler(e.element,e.eventName,e.eventListener))}},{key:"listen",value:function(t,e,i,n){var s;if(n){if(this.events[n]&&(s=this.events[n],this.events[n]=null,this.removeEventHandler(s.element,s.eventName,s.eventListener)),t.addEventListener)t.addEventListener(e,i,!1);else{if(!document.attachEvent)return null;i=this.attachEvent(t,e,i)}return this.events[n]={element:t,eventName:e,eventListener:i},i}}},{key:"removeEventHandler",value:function(t,e,i){document.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent("on"+e,i)}},{key:"getEvent",value:function(t){var e=t||_this.event;if(!e)for(t=this.getEvent.caller;t&&(!(e=t.arguments[0])||Event!=e.constructor);)t=t.caller;return e}}]),t}())},6419:function(t,e,i){"use strict";i.d(e,{h:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i){(0,n.Z)(this,t),this.valueInternal=e,this.listeners=[],this.params=i||{}}return(0,s.Z)(t,[{key:"value",get:function(){return this.valueInternal},set:function(t){this.next(t)}},{key:"next",value:function(t){this.valueInternal=t,this.callListeners()}},{key:"nextProperty",value:function(t,e){this.valueInternal[t]=e,this.callListeners()}},{key:"callListeners",value:function(){var t=this;this.listeners.forEach((function(e){e&&"function"==typeof e&&e(t.valueInternal)}))}},{key:"unsubscribe",value:function(t){-1!==this.listeners.indexOf(t)&&this.listeners.splice(this.listeners.indexOf(t),1)}},{key:"subscribe",value:function(t){this.listeners.push(t),this.params.ignore_sub||t(this.valueInternal)}}]),t}()},5545:function(t,e,i){"use strict";i.d(e,{Q:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i,s,r){(0,n.Z)(this,t),this.window=e,this.cookieEnabled=!1,this.cookiesSupportChecked=!1,1==r&&this.checkCookiesSupport(),this.domain=i,this.secureCookie=!1,this.cookiePerPage=!1,this.prefix=s||"lhc"}return(0,s.Z)(t,[{key:"checkCookiesSupport",value:function(){if(!0===this.cookiesSupportChecked)return this.cookieEnabled;this.cookiesSupportChecked=!0;try{this.hasSessionStorage=!!this.window.sessionStorage}catch(t){this.hasSessionStorage=!1}try{this.hasLocalStorage=!!this.window.localStorage}catch(t){this.hasLocalStorage=!1}try{document.cookie="cookietest=1",this.cookieEnabled=-1!==document.cookie.indexOf("cookietest="),document.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"}catch(t){}return this.cookieEnabled}},{key:"setCookieDomain",value:function(t){this.domain=t}},{key:"setCookiePerPage",value:function(t){this.cookiePerPage=t}},{key:"getCookieDomain",value:function(){return this.domain?"."+this.domain:null}},{key:"setSecureCookie",value:function(t){this.secureCookie=t}},{key:"setHTTPCookie",value:function(t,e,i,n){if(!1!==this.cookieEnabled){var s="";i||((i=new Date).setTime(i.getTime()+15552e6),s="; expires="+i.toGMTString()),document.cookie=t+"="+e+s+(!1===this.cookiePerPage?"; path=/":!0===this.cookiePerPage?"":"; path="+this.cookiePerPage)+(this.secureCookie?";secure":"")+(n?";domain="+n:"")+";SameSite=Lax"}}},{key:"getHTTPCookie",value:function(t){if(!1===this.cookieEnabled)return[];var e,i,n=[],s=t+"=",r=document.cookie.split(";");for(t=0,e=r.length;t0){var js_args={},currentVar=null;for(var index in this.jsVars)try{currentVar=-1!==this.jsVars[index].var.indexOf("lhc_var.")?this.attributes.lhc_var[this.jsVars[index].var.replace("lhc_var.","")]||null:eval(this.jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[this.jsVars[index].id]=currentVar)}catch(t){}return js_args}return null}},{key:"getAppendVariables",value:function(){var t="";return null!==this.vid&&(t=t+"/(vid)/"+this.vid),null!==this.hash&&null!==this.id&&(t=t+"/(hash)/"+this.id+"_"+this.hash),t}},{key:"updateJSVars",value:function(t,e){var i=this.getVars(t),n=new XMLHttpRequest;n.open("POST",this.attributes.LHC_API.args.lhc_base_url+"/chat/updatejsvars"+this.getAppendVariables(),!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.send("data="+encodeURIComponent(this.JSON.stringify(i))),void 0!==e&&null===this.hash&&null===this.id&&e(i)}},{key:"setChatInformation",value:function(t,e){this.id=t.id,this.hash=t.hash,null===this.id||e||(this.hnh=Math.round(Date.now()/1e3))}}]),userSession}()},891:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return v}});const n=/iPhone/i,s=/iPod/i,r=/iPad/i,o=/\bAndroid(?:.+)Mobile\b/i,a=/Android/i,u=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,c=/Silk/i,h=/Windows Phone/i,l=/\bWindows(?:.+)ARM\b/i,d=/BlackBerry/i,p=/BB10/i,m=/Opera Mini/i,_=/\b(CriOS|Chrome)(?:.+)Mobile/i,f=/Mobile(?:.+)Firefox\b/i;function g(t,e){return t.test(e)}function v(t){let e=(t=t||("undefined"!=typeof navigator?navigator.userAgent:"")).split("[FBAN");void 0!==e[1]&&(t=e[0]),e=t.split("Twitter"),void 0!==e[1]&&(t=e[0]);const i={apple:{phone:g(n,t)&&!g(h,t),ipod:g(s,t),tablet:!g(n,t)&&g(r,t)&&!g(h,t),device:(g(n,t)||g(s,t)||g(r,t))&&!g(h,t)},amazon:{phone:g(u,t),tablet:!g(u,t)&&g(c,t),device:g(u,t)||g(c,t)},android:{phone:!g(h,t)&&g(u,t)||!g(h,t)&&g(o,t),tablet:!g(h,t)&&!g(u,t)&&!g(o,t)&&(g(c,t)||g(a,t)),device:!g(h,t)&&(g(u,t)||g(c,t)||g(o,t)||g(a,t))||g(/\bokhttp\b/i,t)},windows:{phone:g(h,t),tablet:g(l,t),device:g(h,t)||g(l,t)},other:{blackberry:g(d,t),blackberry10:g(p,t),opera:g(m,t),firefox:g(f,t),chrome:g(_,t),device:g(d,t)||g(p,t)||g(m,t)||g(f,t)||g(_,t)},any:!1,phone:!1,tablet:!1};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}},8259:function(t,e,i){"use strict";t.exports=i(2159)},3434:function(t,e,i){"use strict";var n=i(723);function s(){}var r=null,o={};function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("Promise constructor's argument is not a function");this._h=0,this._i=0,this._j=null,this._k=null,t!==s&&p(t,this)}function u(t,e){for(;3===t._i;)t=t._j;if(a._l&&a._l(t),0===t._i)return 0===t._h?(t._h=1,void(t._k=e)):1===t._h?(t._h=2,void(t._k=[t._k,e])):void t._k.push(e);!function(t,e){n((function(){var i=1===t._i?e.onFulfilled:e.onRejected;if(null!==i){var n=function(t,e){try{return t(e)}catch(t){return r=t,o}}(i,t._j);n===o?h(e.promise,r):c(e.promise,n)}else 1===t._i?c(e.promise,t._j):h(e.promise,t._j)}))}(t,e)}function c(t,e){if(e===t)return h(t,new TypeError("A promise cannot be resolved with itself."));if(e&&("object"==typeof e||"function"==typeof e)){var i=function(t){try{return t.then}catch(t){return r=t,o}}(e);if(i===o)return h(t,r);if(i===t.then&&e instanceof a)return t._i=3,t._j=e,void l(t);if("function"==typeof i)return void p(i.bind(e),t)}t._i=1,t._j=e,l(t)}function h(t,e){t._i=2,t._j=e,a._m&&a._m(t,e),l(t)}function l(t){if(1===t._h&&(u(t,t._k),t._k=null),2===t._h){for(var e=0;e "+e+") {","args = new Array(arguments.length + 1);","for (var i = 0; i < arguments.length; i++) {","args[i] = arguments[i];","}","}","return new Promise(function (rs, rj) {","var cb = "+r+";","var res;","switch (argLength) {",i.concat(["extra"]).map((function(t,e){return"case "+e+":res = fn.call("+["self"].concat(i.slice(0,e)).concat("cb").join(",")+");break;"})).join(""),"default:","args[argLength] = cb;","res = fn.apply(self, args);","}","if (res &&",'(typeof res === "object" || typeof res === "function") &&','typeof res.then === "function"',") {rs(res);}","});","};"].join("");return Function(["Promise","fn"],o)(n,t)}(t)};var r="function (err, res) {if (err) { rj(err); } else { rs(res); }}";n.nodeify=function(t){return function(){var e=Array.prototype.slice.call(arguments),i="function"==typeof e[e.length-1]?e.pop():null,r=this;try{return t.apply(this,arguments).nodeify(i,r)}catch(t){if(null==i)return new n((function(e,i){i(t)}));s((function(){i.call(r,t)}))}}},n.prototype.nodeify=function(t,e){if("function"!=typeof t)return this;this.then((function(i){s((function(){t.call(e,null,i)}))}),(function(i){s((function(){t.call(e,i)}))}))}},3690:function(t,e,i){"use strict";var n=i(3434);t.exports=n,n.enableSynchronous=function(){n.prototype.isPending=function(){return 0==this.getState()},n.prototype.isFulfilled=function(){return 1==this.getState()},n.prototype.isRejected=function(){return 2==this.getState()},n.prototype.getValue=function(){if(3===this._i)return this._j.getValue();if(!this.isFulfilled())throw new Error("Cannot get a value of an unfulfilled promise.");return this._j},n.prototype.getReason=function(){if(3===this._i)return this._j.getReason();if(!this.isRejected())throw new Error("Cannot get a rejection reason of a non-rejected promise.");return this._j},n.prototype.getState=function(){return 3===this._i?this._j.getState():-1===this._i||-2===this._i?0:this._i}},n.disableSynchronous=function(){n.prototype.isPending=void 0,n.prototype.isFulfilled=void 0,n.prototype.isRejected=void 0,n.prototype.getValue=void 0,n.prototype.getReason=void 0,n.prototype.getState=void 0}},4795:function(t,e,i){var n;!function(e){"use strict";function s(){}var r=s.prototype,o=e.EventEmitter;function a(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function u(t){return function(){return this[t].apply(this,arguments)}}function c(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&c(t.listener)}r.getListeners=function(t){var e,i,n=this._getEvents();if(t instanceof RegExp)for(i in e={},n)n.hasOwnProperty(i)&&t.test(i)&&(e[i]=n[i]);else e=n[t]||(n[t]=[]);return e},r.flattenListeners=function(t){var e,i=[];for(e=0;e0&&C.userSession.setupVarsMonitoring(t.js_vars,(function(t){E.sendChildEvent("jsVars",[t])}))),"widget"!=C.mode&&"popup"!=C.mode||C.viewHandler.init(C,t.ll),"api"==C.position&&"embed"==C.mode||C.mainWidget.init(C,t.ll),"widget"!=C.mode&&"popup"!=C.mode||x.cont.show(),C.loadcb&&C.loadcb(C),t.init_calls&&(C.init_calls=t.init_calls),C.proactive_interval=t.chat_ui.proactive_interval,"widget"!=C.mode&&"popup"!=C.mode&&"embed"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I(),C.init_calls.length>0&&C.init_calls.forEach((function(t){"nodeJSChat"==t.extension&&Promise.all([__webpack_require__.e(572),__webpack_require__.e(417)]).then(__webpack_require__.bind(__webpack_require__,9417)).then((function(e){e.nodeJSChat.setParams(t.params,C,E)}))})));else{if(t.terminate)return;C.userSession.setVID(t.vid),C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2");var n=document.createElement("script");n.type=i.type,n.id=C.prefixLowercase+"-js-reload",n.async=!0,i.getAttribute("scope")&&n.setAttribute("scope",i.getAttribute("scope")),n.src=i.getAttribute("src")+"&r="+(new Date).getHours()+(new Date).getMinutes();var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(n,s)}})),C.eventEmitter.addListener("closeWidget",(function(){C.widgetStatus.next(!1),E.sendChildEvent("closedWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("sendChildEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg]):C.childCommands.push(t)})),C.eventEmitter.addListener("sendChildExtEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext"):C.childExtCommands.push(t)})),C.eventEmitter.addListener("toggleSound",(function(){var t=!C.toggleSound.value;C.toggleSound.next(t)})),C.eventEmitter.addListener("enableCookies",(function(){if(!0===m.checkCookiesSupport()){var t=C.userSession.getSessionAttributes();void 0!==t.hnh&&delete t.hnh,C.storageHandler.storeSessionInformation(t),void 0!==r.args.orig&&(C.mode=r.args.mode=r.args.orig.mode,r.args.proactive=r.args.orig.proactive,r.args.check_messages=r.args.orig.check_messages,d.makeRequest(r.args.lhc_base_url+C.lang+"widgetrestapi/settings",{params:D()},(function(t){C.eventEmitter.emitEvent("sendChildEvent",[{cmd:"attr_set",arg:{type:"attr_set",attr:["mode"],data:C.mode}}]),"widget"==C.mode&&null!==C.nh&&O(C.nh),"widget"!=C.mode&&"popup"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I()})))}})),C.eventEmitter.addListener("endChatCookies",(function(t){(!1===C.kcw||t&&1==t.force)&&(C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={})})),C.eventEmitter.addListener("endChat",(function(t){C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={},"popup"==C.mode||t&&t.show_start||C.widgetStatus.next(!1),C.viewHandler&&(C.viewHandler.removeUnreadIndicator(),C.eventEmitter.emitEvent("hide_msg_snippet")),C.widgetDimesions.nextProperty("height_override",null),E.sendChildEvent("endedChat",[{sender:"endButton"}]),("embed"==C.mode||t&&t.show_start)&&C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),"popup"==C.mode&&C.popupWidget.freeup()})),C.eventEmitter.addListener("showWidget",(function(t){C.mainWidget.hideInvitation(),C.widgetStatus.next(!0),"popup"==C.mode?(C.popupWidget.init(C,E,t),C.viewHandler.removeUnreadIndicator(),C.mainWidget.hide()):void 0!==t&&void 0!==t.event&&t.event.preventDefault(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("addTag",(function(t){C.tag=""!=C.tag?C.tag+","+t:t,C.eventEmitter.emitEvent("tagAdded")})),C.eventEmitter.addListener("addEvent",(function(t){C.events=t,C.eventEmitter.emitEvent("eventAdded")})),C.eventEmitter.addListener("openPopup",(function(){C.popupWidget.init(C,E),C.viewHandler.removeUnreadIndicator(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),C.widgetStatus.next(!1)})),C.eventEmitter.addListener("chatStarted",(function(t,e){C.widgetDimesions.nextProperty("height_override",null),"popup"===e&&!0!==C.kcw||C.userSession.setChatInformation(t,C.nh&&C.nh.ap),"popup"==e&&C.mainWidget.hide(),!1!==C.fresh||"popup"===e&&!0!==C.kcw||C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes())})),C.eventEmitter.addListener("subscribeEvent",(function(t){C.chatNotifications.setPublicKey(t.pk,C.eventEmitter),C.chatNotifications.sendNotification()})),C.eventEmitter.addListener("subcribedEvent",(function(t){E.sendChildEvent("subcribedEvent",[t])})),C.widgetStatus.subscribe((function(t){"popup"!==C.mode&&("embed"!==C.mode&&C.storageHandler.setSessionStorage(b+"_ws",t),E.sendChildEvent("widgetStatus",[t]))})),C.toggleSound.subscribe((function(t){C.storageHandler.setSessionStorage(b+"_sound",t)})),C.onlineStatus.subscribe((function(t){E.sendChildEvent("onlineStatus",[t])})),C.eventEmitter.addListener("screenshot",(function(t){d.makeScreenshot(C.staticJS.screenshot,t)})),C.eventEmitter.addListener("screenshare",(function(t){__webpack_require__.e(398).then(__webpack_require__.bind(__webpack_require__,7398)).then((function(e){e.screenShare.setParams(t||{},C,E)}))})),C.eventEmitter.addListener("location",(function(t){document.location=t})),C.eventEmitter.addListener("terminated",(function(t){C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2")})),C.eventEmitter.addListener("showInvitation",(function(t){C.widgetDimesions.nextProperty("bottom_override",75),C.widgetDimesions.nextProperty("right_override",75),C.mainWidget.showInvitation()})),C.eventEmitter.addListener("hideInvitation",(function(t){C.mainWidget.hideInvitation(),t.full?(C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),C.eventEmitter.emitEvent("fullInvitation",[t])):C.eventEmitter.emitEvent("cancelInvitation",[])})),C.eventEmitter.addListener("msgSnippet",(function(t){if("widget"==C.mode&&!1===C.widgetStatus.value){if(t.full_widget)return void C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]);"api"==C.position&&C.viewHandler&&C.viewHandler.show(),__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet?C.msgSnippet.showSnippet(t,!0):(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t)),C.eventEmitter.emitEvent("unread_message",[{otm:1}])}))}})),C.eventEmitter.addListener("unread_message",(function(t){t&&t.msg_body&&!C.msgSnippet&&__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet||(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t))}))})),C.originalTitle=document.title,C.blinkInterval=null,C.eventEmitter.addListener("unread_message_title",(function(t){clearInterval(C.blinkInterval),0==t.status?C.blinkInterval=setInterval((function(){document.title=Math.round((new Date).getTime()/1e3)%2?"💬 "+C.originalTitle:C.originalTitle}),1e3):(C.focused=!0,document.title=C.originalTitle)})),C.eventEmitter.addListener("widgetHeight",(function(e){if(e.reset_height)return C.widgetDimesions.nextProperty("height_override",null),C.widgetDimesions.nextProperty("bottom_override",null),C.widgetDimesions.nextProperty("right_override",null),void C.widgetDimesions.nextProperty("width_override",null);if(e.force_height||e.force_width||e.force_bottom||e.force_right)return e.force_height&&C.widgetDimesions.nextProperty("height_override",e.force_height),e.force_width&&C.widgetDimesions.nextProperty("width_override",e.force_width),e.force_right&&C.widgetDimesions.nextProperty("right_override",e.force_right),void(e.force_bottom&&C.widgetDimesions.nextProperty("bottom_override",e.force_bottom));if("widget"==C.mode&&0==C.isMobile){var i=document,n=i.documentElement,s=i.getElementsByTagName("body")[0],r=t.innerHeight||n.clientHeight||s.clientHeight;parseInt(e.height)>C.widgetDimesions.value.height&&r>parseInt(e.height)?C.widgetDimesions.nextProperty("height_override",parseInt(e.height)):C.widgetDimesions.value.height_override&&C.widgetDimesions.value.height_override>r&&C.widgetDimesions.nextProperty("height_override",null)}}));var P=!1;try{P="serviceWorker"in navigator}catch(t){}if(!0===P)try{navigator.serviceWorker.addEventListener("message",(function(t){try{void 0!==t.data.lhc_ch&&void 0!==t.data.lhc_cid&&(C.widgetStatus.next(!0),"popup"==C.mode?(C.userSession.setChatInformation({id:t.data.lhc_cid,hash:t.data.lhc_ch}),C.eventEmitter.emitEvent("unread_message")):(E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),E.sendChildEvent("reopenNotification",[{id:t.data.lhc_cid,hash:t.data.lhc_ch}])))}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}))}catch(t){}var j=function(t){if(!0!==C.terminated&&"string"==typeof t.data&&!t.data.indexOf(C.prefixLowercase+"::")){var i=t.data.split("::");if(void 0!==t.origin){var n=t.origin.replace("http://","").replace("https://","").replace(/:(\d+)$/,"");if(n!==document.domain&&C.domain_lhc!==n&&"started"!==i[1]&&"isstarted"!==i[1])return}if("ready"==i[1]){E.sendReadyEvent("true"==i[2]),C.storageHandler.getSessionStorage(b+"_screenshare")&&C.eventEmitter.emitEvent("screenshare",[{auto_start:!0}]);var s=function(t){var e="focus"===t.type;C.focused=e,E.sendChildEvent("focus_changed",[{status:e}])};window.addEventListener("focus",s),window.addEventListener("blur",s),window.addEventListener("pageshow",s),window.addEventListener("pagehide",s),e.loaded=!0,E.sendChildEvent("ext_modules",[C.staticJS.ex_cb_js]),C.childExtCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext")})),C.childCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg])})),null!==C.react_attr&&C.react_attr.forEach((function(t){E.sendChildEvent("attr_set",[{type:"attr_set",attr:t.k,data:t.v}])}))}else"ready_popup"==i[1]?C.popupWidget.sendParameters(E):"isstarted"==i[1]?C.eventEmitter.emitEvent("terminated",[]):"started"==i[1]?C.hide_parent?C.eventEmitter.emitEvent("terminated",[]):t.source.postMessage("lhc::isstarted","*"):C.eventEmitter.emitEvent(i[1],JSON.parse(i[2]))}};window.addEventListener?window.addEventListener("message",j,!1):window.attachEvent?window.attachEvent("onmessage",j):document.attachEvent&&document.attachEvent("onmessage",j)},a=function(){!0!==e.ready&&(document.body&&(e.ready=!0),e.init=o,r.args.before_init&&r.args.before_init(e),r.args.manual_init||o())},u=__webpack_require__(593).U;a(),!e.ready||(u.listen(document,"DOMContentLoaded",(function(){a()}),"domloaded"),u.listen(document,"readystatechange",(function(){("complete"===document.readyState||"interactive"===document.readyState&&document.body)&&a()}),"domstatechange"),u.listen(t,"load",(function(){a()}),"windowload"))}.call(this,t["$_"+n],t[n+"_API"])}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}}(window),this.LiveHelperChat=__webpack_exports__.LiveHelperChatDefault})(); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lhc_web/design/defaulttheme/js/widgetv2/index.js.map b/lhc_web/design/defaulttheme/js/widgetv2/index.js.map index 0ee351453a..1f34f473d0 100644 --- a/lhc_web/design/defaulttheme/js/widgetv2/index.js.map +++ b/lhc_web/design/defaulttheme/js/widgetv2/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":";uEAGA,IAAIA,EAAU,EAAQ,KAElBC,EAAY,GAGZC,EAAgB,GAChBC,EAAoBH,EAAQI,0BAEhC,WACI,GAAIF,EAAcG,OACd,MAAMH,EAAcI,WAa5B,SAASC,EAAKC,GACV,IAAIC,GAEAA,EADAR,EAAUI,OACAJ,EAAUS,MAEV,IAAIC,GAEVH,KAAOA,EACfR,EAAQS,GAKZ,SAASE,IACLC,KAAKJ,KAAO,KAfhBK,EAAOC,QAAUP,EAoBjBI,EAAQI,UAAUC,KAAO,WACrB,IACIJ,KAAKJ,KAAKQ,OACZ,MAAOC,GACDV,EAAKW,QAILX,EAAKW,QAAQD,IAKbf,EAAciB,KAAKF,GACnBd,KAEN,QACES,KAAKJ,KAAO,KACZP,EAAUA,EAAUI,QAAUO,yCClDtC,SAASZ,EAAQQ,GACRY,EAAMf,QACPgB,IAIJD,EAAMA,EAAMf,QAAUG,EAP1BK,EAAOC,QAAUd,EAUjB,IAOIqB,EAPAD,EAAQ,GAWRE,EAAQ,EAYZ,SAASC,IACL,KAAOD,EAAQF,EAAMf,QAAQ,CACzB,IAAImB,EAAeF,EAUnB,GAPAA,GAAgB,EAChBF,EAAMI,GAAcR,OAMhBM,EApBG,KAoBe,CAGlB,IAAK,IAAIG,EAAO,EAAGC,EAAYN,EAAMf,OAASiB,EAAOG,EAAOC,EAAWD,IACnEL,EAAMK,GAAQL,EAAMK,EAAOH,GAE/BF,EAAMf,QAAUiB,EAChBA,EAAQ,GAGhBF,EAAMf,OAAS,EACfiB,EAAQ,EAcZ,IA0DQK,EACAC,EACAC,EA5DJC,OAA0B,IAAX,EAAAC,EAAyB,EAAAA,EAASC,KACjDC,EAA0BH,EAAMI,kBAAoBJ,EAAMK,uBA2G9D,SAAS/B,EAAyBgC,GAC9B,OAAO,WAKH,IAAIC,EAAgBC,WAAWC,EAAa,GAIxCC,EAAiBC,YAAYF,EAAa,IAE9C,SAASA,IAGLG,aAAaL,GACbM,cAAcH,GACdJ,MA/G2B,mBAA5BH,GA4CHN,EAAS,EACTC,EAAW,IAAIK,EA5CgCV,GA6C/CM,EAAOe,SAASC,eAAe,IACnCjB,EAASkB,QAAQjB,EAAM,CAACkB,eAAe,IA9CvC1B,EA+CO,WACHM,GAAUA,EACVE,EAAKmB,KAAOrB,IAnBhBN,EAAejB,EAAyBmB,GAQ5CvB,EAAQqB,aAAeA,EAgFvBrB,EAAQI,yBAA2BA,6FCvNpB,SAAS6C,EAAgBC,EAAGC,GAMzC,OALAF,EAAkBG,OAAOC,gBAAkB,SAAyBH,EAAGC,GAErE,OADAD,EAAEI,UAAYH,EACPD,GAGFD,EAAgBC,EAAGC,GCNb,SAASI,EAAQC,GAa9B,OATED,EADoB,mBAAXE,QAAoD,iBAApBA,OAAOC,SACtC,SAAiBF,GACzB,cAAcA,GAGN,SAAiBA,GACzB,OAAOA,GAAyB,mBAAXC,QAAyBD,EAAIG,cAAgBF,QAAUD,IAAQC,OAAO1C,UAAY,gBAAkByC,GAItHD,EAAQC,GCXF,SAASI,EAA2B5B,EAAMhB,GACvD,GAAIA,IAA2B,WAAlBuC,EAAQvC,IAAsC,mBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAI6C,UAAU,4DAGtB,OCTa,SAAgC7B,GAC7C,QAAa,IAATA,EACF,MAAM,IAAI8B,eAAe,6DAG3B,OAAO9B,EDIA,CAAsBA,GEThB,SAAS+B,EAAgBb,GAItC,OAHAa,EAAkBX,OAAOC,eAAiBD,OAAOY,eAAiB,SAAyBd,GACzF,OAAOA,EAAEI,WAAaF,OAAOY,eAAed,IAEvCa,EAAgBb,0BCDlB,IAAMe,EAAb,aCFe,SAAmBC,EAAUC,GAC1C,GAA0B,mBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAIN,UAAU,sDAGtBK,EAASnD,UAAYqC,OAAOgB,OAAOD,GAAcA,EAAWpD,UAAW,CACrE4C,YAAa,CACXU,MAAOH,EACPI,UAAU,EACVC,cAAc,KAGdJ,GAAY,EAAeD,EAAUC,GDV3C,oaAEI,WAAYK,EAAWC,EAAOC,EAAYC,EAASC,GAAa,6BAC5D,cAAMJ,EAAWC,EAAOC,EAAYC,EAASC,IACxCC,OAAS,GAF8C,EAFpE,gDAOI,SAAkBJ,EAAOK,EAAKC,EAAIC,GAe9B,QAbmB,IAARF,IACPA,EAAM,YAGQ,IAAPC,IACPA,EAAK,WAGa,IAAXC,IACPA,EAAS,IAGbpE,KAAKqE,UAAYC,EAAAA,EAAAA,YAA4BtE,KAAKuE,QAC3B,OAAnBvE,KAAKqE,UAAoB,OAAO,KACpCrE,KAAKqE,UAAUG,OACfxE,KAAKqE,UAAUI,QAAQ,6BAA6BP,EAAI,WAAWC,EAAG,yLAAyLC,EAAO,gBAA+B,IAAfpE,KAAKiE,OAAe,QAAQjE,KAAKiE,OAAO,KAAO,IAAI,mBACzUjE,KAAKqE,UAAUK,QACf1E,KAAK2E,cAAcd,GACnB7D,KAAK4E,kBA3Bb,2BA8BI,WACI5E,KAAKqE,UAAUQ,KAAKC,UAAY9E,KAAK+E,SA/B7C,GAAyCC,EAAAA,0HEC5BA,EAAb,WACI,WAAYpB,EAAWC,EAAOC,EAAYC,EAASC,IAAa,eAC5D,IAAIiB,EAAIjF,KACRA,KAAK4D,UAAYA,GAAa,GAC9B5D,KAAK6D,MAAQA,GAAS,GACtB7D,KAAKkF,QAAUnB,GAAW,MAC1B/D,KAAK+E,KAAO,GACZ/E,KAAKuE,OAAS,KACdvE,KAAKqE,UAAYL,GAAehC,SAChChC,KAAK8D,WAAa,GAClB9D,KAAKmF,WAAa,GAElBnF,KAAK4D,YAAc5D,KAAK8D,WAAWsB,GAAKpF,KAAK4D,WAE7CE,GAActB,OAAO6C,KAAKvB,GAAYwB,SAAQ,SAAUC,GACpDN,EAAEnB,WAAWyB,GAAQzB,EAAWyB,MAf5C,0CAmBI,SAAYC,GAKR,OAJAxF,KAAKqE,UACDmB,GAAKxF,KAAKqE,UACdrE,KAAKuE,OAASD,EAAAA,EAAAA,YAA4BtE,KAAKqE,UAAWrE,KAAKkF,QAASlF,KAAK8D,WAAY9D,KAAK6D,MAAO7D,KAAK+E,MAC1G/E,KAAKuE,OAAOkB,WAAazF,KAAKmF,WAAWO,KAAK,KACvC1F,KAAKuE,SAxBpB,qBA2BI,SAAQgB,EAAM1B,GACVA,IAAU7D,KAAKuE,OAASvE,KAAKuE,OAAOV,MAAM8B,SAAW,IAAMJ,EAAO,IAAM1B,EAAQ7D,KAAK6D,OAAS,IAAM0B,EAAO,IAAM1B,KA5BzH,qCA+BI,SAAwB2B,EAAGI,EAAGC,EAAGC,GAC7B,IAAIC,GACAA,EAAIF,EAAI7F,KAAKgG,eAAeH,GAAK7F,KAAKuE,UAA0B,GAAlBsB,EAAIL,EAAES,MAAM,MAAYxG,OAASoG,EAAEP,SAAQ,SAAUE,GACnGU,EAAAA,EAAAA,OAAwBH,EAAGP,EAAGI,EAAGJ,EAAIM,MACpCI,EAAAA,EAAAA,OAAwBH,EAAGP,EAAGI,EAAGE,MAnC9C,4BAsCI,SAAeN,GACX,OAAOxF,KAAKuE,OAASvE,KAAKqE,UAAU2B,eAAeR,GAAK,OAvChE,kBA0CI,WACIxF,KAAKmG,QAAQ,UAAW,qBA3ChC,kBA8CI,WACInG,KAAKmG,QAAQ,UAAW,sBA/ChC,2BAkDI,SAActC,EAAOuC,GACjB,IAAIP,EAAI7F,KAAKqE,UAAUgC,qBAAqB,QAAQ,GAChDP,EAAI9F,KAAKqE,UAAUiC,yBACnBP,EAAIzB,EAAAA,EAAAA,YAA4BtE,KAAKqE,UAAW,QAAS,CAACkC,KAAM,aAChEtB,EAAIjF,KAAKqE,UAAUpC,eAAemE,EAAQvC,EAAQ2C,EAAAA,EAAAA,WAAsB,GAAK3C,GACjFiC,EAAEW,YAAYV,GACdF,EAAEY,YAAYX,GACdC,EAAEW,WAAaX,EAAEW,WAAWf,QAAUV,EAAE0B,UAAYZ,EAAEU,YAAYxB,KAzD1E,iCA4DI,SAAoBM,GAEhB,IAAIqB,EAAM,KAEV,GAAIrB,EAAKH,IAAMG,EAAKsB,MAA2D,QAAlDD,EAAM5G,KAAKqE,UAAU2B,eAAeT,EAAKH,KAClEwB,EAAIC,KAAOtB,EAAKsB,SADpB,CAKA,IAAIhB,EAAI7F,KAAKqE,UAAUgC,qBAAqB,QAAQ,GAChDP,EAAI9F,KAAKqE,UAAUiC,yBACnBP,EAAI/F,KAAKqE,UAAUyC,cAAc,QAKrC,IAAK,IAAIC,KAHThB,EAAEiB,IAAM,aACRjB,EAAEkB,YAAc,IAEF1B,EAAMQ,EAAEgB,GAAKxB,EAAKwB,GAEhCjB,EAAEW,YAAYV,GACdF,EAAEY,YAAYX,MA/EtB,0BAkFI,SAAaoB,EAAKC,EAAOC,EAAQ7B,GAC7B,IAAIM,EAAI7F,KAAKqE,UAAUgC,qBAAqB,QAAQ,GAChDP,EAAI9F,KAAKqE,UAAUiC,yBACnBP,EAAI/F,KAAKqE,UAAUyC,cAAc,UAEjCf,EAAEQ,KAAO,uBACY,IAAVY,IAAmC,IAAVA,IAChCpB,EAAEoB,OAAQ,GAGdpB,EAAEkB,YAAc,IAChBlB,EAAEmB,IAAMA,EAEJE,IACArB,EAAEsB,OAASD,GAGX7B,GACA/C,OAAO6C,KAAKE,GAAMD,SAAQ,SAAAgC,GACtBvB,EAAEwB,aAAaD,EAAI/B,EAAK+B,OAIhCxB,EAAEW,YAAYV,GACdF,EAAEY,YAAYX,KA1G1B,yBA6GI,SAAYN,GACR,IAAK,IAAIuB,KAAKvB,EAAGA,EAAEgC,eAAeT,IAAM/G,KAAKmG,QAAQY,EAAGvB,EAAEuB,QA9GlE,gGC+HMU,EAAoB,IAlIpBC,WACF,cAAc,eACV1H,KAAK2H,2BAA4B,EACjC3H,KAAK4H,2BAA6B,KAClC5H,KAAK6H,aAAe,gDAGxB,SAAaC,EAAWD,GACpB7H,KAAK4H,2BAA6BE,EAClC9H,KAAK6H,aAAeA,kCAGzB,WAEC,IAAIE,EAAO/H,KACP4H,EAA6B5H,KAAK4H,2BAElCI,EAAiB,KAErB,GAAM,kBAAmBC,WAAgB,gBAAiBC,OAM1D,GAAM,iBAAkBA,OAAxB,CAKK,GAAgC,YAA5BC,aAAaC,iBAKjB,GAAgC,WAA5BD,aAAaC,WAClBD,aAAaE,mBAAkB,SAAUD,GAElB,YAAfA,GACAE,MAAM,mDAIX,GAAgC,WAA5BH,aAAaC,WAEpB,YADAE,MAAM,2CAsCNP,EAAO/H,KAuCXiI,UAAUM,cAAcC,SAAS,kBAAkBC,MAAK,SAASC,IAC7DV,EAAiBU,GAbFC,YAAYC,kBAAkBH,MAAK,SAASI,GAzB/D,IACQC,EAyBAf,EAAKJ,4BAA+C,OAAjBkB,GAC/Bd,EAAKJ,0BA1BTmB,EArCR,SAA4BC,GASxB,IARA,IACIC,GAAUD,EADA,IAAIE,QAAQ,EAAIF,EAAatJ,OAAS,GAAK,IAExDyJ,QAAQ,MAAO,KACfA,QAAQ,KAAM,KAEXC,EAAUjB,OAAOkB,KAAKJ,GACtBK,EAAc,IAAIC,WAAWH,EAAQ1J,QAEhC8J,EAAI,EAAGA,EAAIJ,EAAQ1J,SAAU8J,EAClCF,EAAYE,GAAKJ,EAAQK,WAAWD,GAExC,OAAOF,EAyBoBI,CAAmB7B,GAC9CI,EAAeW,YAAYe,UAAU,CACjC,iBAAmB,EACnB,qBAAwBZ,IACzBL,MAAK,SAASI,IA1BrB,SAAoCA,EAAca,GAC9C,GAAqB,OAAjBb,EAAJ,CAIA,IAAIvB,EAAMuB,EAAac,OAAO,UAC1BC,EAAQf,EAAac,OAAO,QAC5BE,GAAmBC,YAAYC,2BAA6B,CAAC,WAAW,GAExEC,EAAUC,KAAKC,UAAU,CACzBC,SAAUtB,EAAasB,SACvBrC,UAAWR,EAAM8C,KAAKC,OAAOC,aAAaC,MAAM,KAAM,IAAIjB,WAAWhC,KAAS,KAC9EkD,UAAWZ,EAAQQ,KAAKC,OAAOC,aAAaC,MAAM,KAAM,IAAIjB,WAAWM,KAAW,KAClFC,gBAAkBA,IAGtB9B,EAAKF,aAAa4C,UAAU,iBAAkB,CAAC,CAAC,QAAYT,OAWxDU,CAA2B7B,GAC3Bd,EAAKJ,2BAA4B,gBAjErCW,MAAM,2DANNA,MAAM,4DApBRZ,+FC6LApD,EAAkB,IA7LlBqG,WACF,cAAc,yDAGd,SAAYnF,EAAGI,EAAGmB,EAAGjB,EAAG8E,GACpB,IAAI7E,EAGJ,IAAKA,KAFLP,EAAIA,EAAEsB,cAAclB,GACpBmB,EAAIA,GAAK,GACIvB,EAAEO,GAAKgB,EAAEhB,GAGtB,OAFA6E,GAAK,WAAahF,IAAMJ,EAAEV,UAAY8F,GACtC9E,IAAMN,EAAE3B,MAAM8B,QAAUG,GACjBN,6BAGX,SAAYA,GACR,OAAOA,EAAEqF,cAAgBrF,EAAEqF,cAAc7I,SAAWwD,EAAEsF,gBAAkBtF,EAAEsF,gBAAkBtF,EAAExD,SAAWwD,EAAExD,SAAW,+BAG1H,SAAW+I,GAEP,IAAIC,EAAO,KACX,SAAOA,EAAOhJ,SAASgE,eAAe+E,KAAQC,EAAKC,WAAWC,YAAYF,8BAI9E,WACI,IACI,OAAOG,KAAKC,iBAAiBC,kBAAkBC,SACjD,MAAOvF,GACLwF,KAAKpL,UAAUqL,kBAAoB,WAC/B,IAAIC,EAAM,IAAIF,KAAKvL,KAAK0L,cAAe,EAAG,GACtCC,EAAM,IAAIJ,KAAKvL,KAAK0L,cAAe,EAAG,GAC1C,OAAOE,KAAKC,IAAIJ,EAAIK,oBAAqBH,EAAIG,sBAGjDP,KAAKpL,UAAU4L,IAAM,WACjB,OAAO/L,KAAK8L,oBAAsB9L,KAAKwL,qBAG3C,IAAIQ,EAAQ,IAAIT,KAShB,OANIS,EAAMD,MACWC,EAAMF,oBAENE,EAAMF,oBAAoB,IAGxB,IAAK,mCAIpC,SAAiBG,GACb,MAAO,CACH,gCAAkCA,EAAOC,QAAUD,EAAOC,QAAU,QAAU,gBAC9E,gCAAkCD,EAAOE,WAAaF,EAAOE,WAAa,WAAa,gBACvF,gCAAkCF,EAAOG,OAASH,EAAOG,OAAS,QAAU,gBAC5E,gCAAkCH,EAAOI,UAAYJ,EAAOI,UAAY,QAAU,MAClF,gCAAkCJ,EAAOK,SAAWL,EAAOK,SAAW,WAAa,MACnF,kCAAoCL,EAAOM,WAAaN,EAAOM,WAAa,QAAU,gBACtF,kCAAoCN,EAAOO,QAAUP,EAAOO,QAAU,KAAO,gBAC7E,gDAAkDP,EAAOO,QAAU,IAAMP,EAAOO,QAAU,OAAS,iBACnG,iFAAmFP,EAAOO,QAAUP,EAAOO,QAAU,KAAO,iBAC5H,kCAAoCP,EAAOO,QAAUP,EAAOO,QAAU,KAAO,gBAC7E,kCAAoCP,EAAOO,QAAUP,EAAOO,QAAU,KAAO,gBAC7E,kCAAoCP,EAAOQ,IAAMR,EAAOQ,IAAM,QAAU,KACxE,kCAAoCR,EAAOS,MAAQT,EAAOS,MAAQ,QAAU,KAC5E,kCAAoCT,EAAOU,OAASV,EAAOU,OAAS,QAAU,KAC9E,kCAAoCV,EAAOW,KAAOX,EAAOW,KAAO,QAAU,KAC1E,kCAAoCX,EAAOY,SAAWZ,EAAOY,SAAW,YAAc,gBACtF,kCAAoCZ,EAAOa,OAASb,EAAOa,OAAS,KAAO,gBAC3E,kCAAoCb,EAAOc,UAAYd,EAAOc,UAAY,QAAU,KACpF,kCAAoCd,EAAOe,SAAWf,EAAOe,SAAW,QAAU,KAClF,kCAAoCf,EAAOgB,UAAYhB,EAAOgB,UAAY,QAAU,KACpF,kCAAoChB,EAAOiB,SAAWjB,EAAOiB,SAAW,QAAU,KAClF,kCAAoCjB,EAAOkB,QAAUlB,EAAOkB,QAAU,KAAO,gBAC7E,kCAAoClB,EAAOmB,OAASnB,EAAOmB,OAAS,KAAO,gBAC3E,kCAAoCnB,EAAOoB,WAAapB,EAAOoB,WAAa,QAAU,gBACtF,kCAAoCpB,EAAOoB,WAAapB,EAAOoB,WAAa,QAAU,gBACtF,kCAAoCpB,EAAOoB,WAAapB,EAAOoB,WAAa,QAAU,gBACtF,kCAAoCpB,EAAOoB,WAAapB,EAAOoB,WAAa,QAAU,gBACtF,kCAAoCpB,EAAOqB,UAAYrB,EAAOqB,UAAY,QAAU,gBACpF,kCAAoCrB,EAAOqB,UAAYrB,EAAOqB,UAAY,QAAU,gBACpF,kCAAoCrB,EAAOqB,UAAYrB,EAAOqB,UAAY,QAAU,gBACpF,kCAAoCrB,EAAOsB,MAAQtB,EAAOsB,MAAQ,QAAU,MAC5E,kCAAoCtB,EAAOuB,OAASvB,EAAOuB,OAAS,QAAU,MAC9E,kCAAoCvB,EAAOwB,QAAUxB,EAAOwB,QAAU,SAAW,gBACjF,kCAAoCxB,EAAOyB,OAASzB,EAAOyB,OAAS,QAAU,MAC9E,kCAAoCzB,EAAO0B,gBAAkB1B,EAAO0B,gBAAkB,eAAiB,gBACvG,kCAAoC1B,EAAO2B,OAAS3B,EAAO2B,OAAS,QAAU,gBAC9E,kCAAoC3B,EAAM,MAAYA,EAAM,MAAY,QAAU,gBAClF,kCAAoCA,EAAO4B,aAAe5B,EAAO4B,aAAe,SAAW,MAAMnI,KAAK,IAAIwD,QAAQ,OAAQ,4BAGlI,SAAS4E,EAASrI,GACd,GAAgB,OAAZqI,EACJ,OAAOA,EAAQC,UAAYD,EAAQC,UAAUC,SAASvI,KAAeqI,EAAQrI,UAAUwI,MAAMC,OAAO,UAAYzI,EAAY,oCAGhI,SAASqI,EAASrI,GACE,OAAZqI,IACJA,EAAQC,UAAYD,EAAQC,UAAUI,IAAI1I,GAAazF,KAAKoO,SAASN,EAASrI,KAAeqI,EAAQrI,WAAa,IAAMA,+BAG5H,SAAYqI,EAASrI,GACD,OAAZqI,IACJA,EAAQC,UAAYD,EAAQC,UAAUM,OAAO5I,GAAazF,KAAKoO,SAASN,EAASrI,KAAeqI,EAAQrI,UAAYqI,EAAQrI,UAAUyD,QAAQgF,OAAO,UAAYzI,EAAY,WAAY,qCAG7L,SAAe6I,EAAWC,GAAK,WAE3B,GAA0B,oBAAfC,YAA4B,CACnC,IAAIC,EAAKzM,SAASqE,qBAAqB,QAAQ,GAC3CuE,EAAI5I,SAAS8E,cAAc,UAC/B8D,EAAErD,aAAa,OAAO,mBACtBqD,EAAErD,aAAa,MAAM+G,GACrBG,EAAGhI,YAAYmE,GAEfA,EAAE8D,mBAAqB9D,EAAEvD,OAAS,WAC9B,EAAKsH,eAAeL,EAAYC,SAGpC,IACIC,YAAYxM,SAAS6C,KAAM,CACvB+J,WAAY,SAASC,GACjB,IAAIC,EAAM,IAAIC,eACdD,EAAItK,KAAM,OAAQ+J,GAAK,GACvBO,EAAIE,iBAAiB,eAAgB,qCACrCF,EAAIG,KAAM,QAAUC,mBAAoBL,EAAOM,iBAGzD,MAAMC,8BAMhB,SAAUnD,GAEN,IAAIoD,EAAMC,EAAQ,GAClB,IAAKD,KAAQpD,EACW,IAAhBA,EAAOoD,IAA+B,MAAhBpD,EAAOoD,IAC7BpD,EAAOzE,eAAe6H,IAASC,EAAM/O,KAAK2O,mBAAmBG,GAAQ,IAAMH,mBAAmBjD,EAAOoD,KAG7G,OAAOC,EAAM5J,KAAK,gCAGtB,SAAY6I,EAAKtC,EAAQzK,GACrB,IAAI+N,EAAU,IAAIR,eACdS,EAAcjB,EAAM,IAAMvO,KAAKyP,UAAUxD,EAAOA,QAapD,OAZAsD,EAAQ/K,KAAK,MAAMgL,GAAY,GAC/BD,EAAQb,mBAAqB,WAC1B,GAAI,GAAKa,EAAQG,YAAgC,GAAlBH,EAAQI,OACnC,IACInO,EAASyI,KAAK2F,MAAML,EAAQM,eAC9B,MAAO9J,GAEL,MADAA,EAAE+J,SAAW,KAAON,EAAP,MAA+BD,EAAQI,OAAO,MAAQJ,EAAQM,aACrE9J,IAIjBwJ,EAAQN,OACD,CAAC1I,KAAM,MAAOwJ,IAAKR,sCAG9B,SAAoBhK,GAEhB,IAAIqB,EAAM,KAEV,GAAIrB,EAAKH,IAAMG,EAAKsB,MAAqD,QAA5CD,EAAM5E,SAASgE,eAAeT,EAAKH,KAC5DwB,EAAIC,KAAOtB,EAAKsB,SADpB,CAKA,IAAIhB,EAAI7D,SAASqE,qBAAqB,QAAQ,GAC1CP,EAAI9D,SAASsE,yBACbP,EAAI/D,SAAS8E,cAAc,QAK/B,IAAK,IAAIC,KAHThB,EAAEiB,IAAM,aACRjB,EAAEkB,YAAc,IAEF1B,EAAMQ,EAAEgB,GAAKxB,EAAKwB,GAEhCjB,EAAEW,YAAYV,GACdF,EAAEY,YAAYX,UAzLhB6E,uECDN,IAAInE,EAAW,CAEfA,WAAsB,2pDCATwJ,EACT,WAAYC,EAAQC,IAAO,eACvBlQ,KAAKmQ,KAAO,IAAInL,EAAAA,GAAeiL,GAAU,OAAO,gBAAiB,wSACjEjQ,KAAKmQ,KAAKC,cACPF,GAASlO,SAASgE,eAAekK,GAAOzJ,YAAYzG,KAAKmQ,KAAK5L,SAAYvC,SAAS6C,KAAK4B,YAAYzG,KAAKmQ,KAAK5L,wHCH5G8L,EAAb,WACI,WAAYJ,IAAQ,eAEhBjQ,KAAK8D,WAAa,GAElB9D,KAAKuN,MAAQ,MACbvN,KAAKwN,OAAS,MACdxN,KAAK2M,OAAS,KACd3M,KAAK0M,MAAQ,KACb1M,KAAKsQ,MAAQ,KACbtQ,KAAKuQ,YAAc,GACnBvQ,KAAKwQ,iBAAkB,EAEvBxQ,KAAKmQ,KAAO,IAAI9M,EAAAA,GAAqB4M,GAAU,OAAO,aAAc3L,EAAAA,EAAAA,iBAAiC,CACjGoJ,OAAQ,aACRH,MAAO,OACPC,OAAQ,OACRX,SAAU,QACVY,QAAS,OACTR,UAAW,OACXC,SAAU,OACVH,UAAW,OACXC,SAAU,SACV,KAAM,UAEVhN,KAAKyQ,UAAW,EAEhBzQ,KAAK0Q,WAAa,CAACC,MAAM,EAAOC,KAAK,GA3B7C,qCA8BI,WAEI,IAAIC,EAAe,CACfrD,OAAQxN,KAAKwN,OAASxN,KAAKsQ,MAC3B,aAActQ,KAAKwN,OAASxN,KAAKsQ,MACjC,aAActQ,KAAKwN,OAASxN,KAAKsQ,MACjC/C,MAAOvN,KAAKuN,MAAQvN,KAAKsQ,MACzB,YAAatQ,KAAKuN,MAAQvN,KAAKsQ,MAC/B,YAAatQ,KAAKuN,MAAQvN,KAAKsQ,MAC/B3D,OAAuB,MAAd3M,KAAKsQ,MAAgBtQ,KAAK2M,OAAS,KAAO,OAGZ,gBAAtC3M,KAAK8D,WAAWgN,oBAA8E,eAAtC9Q,KAAK8D,WAAWgN,oBAAgE,GAAxB9Q,KAAKwQ,kBACtHK,EAAY,OAAc,oBAGY,eAAtC7Q,KAAK8D,WAAWgN,oBAA6E,eAAtC9Q,KAAK8D,WAAWgN,oBAA6E,oBAAtC9Q,KAAK8D,WAAWgN,mBAC9HD,EAAY,KAA0B,MAAd7Q,KAAKsQ,MAAgBtQ,KAAK0M,MAAQ,KAAO,MAEjEmE,EAAY,MAA2B,MAAd7Q,KAAKsQ,MAAgBtQ,KAAK0M,MAAQ,KAAO,MAG3B,qBAAtC1M,KAAK8D,WAAWgN,oBAAmF,oBAAtC9Q,KAAK8D,WAAWgN,oBAA8C9Q,KAAKwQ,kBACjIK,EAAa,cAAgB,OAC7BA,EAAa,cAAgB,OAC7BA,EAAY,OAAa,OACzBA,EAAY,OAAa,MAEiB,oBAAtC7Q,KAAK8D,WAAWgN,mBAChBD,EAAY,KAAW,MAEvBA,EAAY,MAAY,OAIJ,SAAxB7Q,KAAK8D,WAAWiN,OAChBF,EAAa,aAAe,OAC5BA,EAAa,aAAe,OAC5BA,EAAY,MAAY,OACxBA,EAAY,UAAgB7Q,KAAK8D,WAAWkN,QAAU,QAAU,YAAc,aAC9EH,EAAY,OAAa,OACzBA,EAAY,MAAY,QAG5B7Q,KAAKmQ,KAAKc,YAAYJ,KA1E9B,6BA6EI,WACmC,GAA3B7Q,KAAK0Q,WAAL,MAA6D,GAA1B1Q,KAAK0Q,WAAL,KACnC1Q,KAAK8D,WAAWoN,QAAQC,MAAK,KA/EzC,yBAmFI,WAKI,GAJAnR,KAAKmQ,KAAKlM,OAAS,cAEnBjE,KAAKmQ,KAAKpL,KAAO,gGAA8H,IAA7B/E,KAAK8D,WAAWsN,SAAoB,aAAe,gBAAkBpR,KAAK8D,WAAWkN,QAAU,eAAiB,KAA6C,oBAAtChR,KAAK8D,WAAWgN,oBAAkF,qBAAtC9Q,KAAK8D,WAAWgN,mBAA4C,mBAAqB,IAAI,WAE1P,OAA5H9Q,KAAKmQ,KAAKkB,kBAAkB,GAAIrR,KAAK8D,WAAWwN,SAAhB,IAAiCtR,KAAK8D,WAAWwN,SAAhB,GAAgCtR,KAAK8D,WAAWyN,OAEjH,OADAvR,KAAKyQ,UAAW,EACT,KAGXzQ,KAAKmQ,KAAK5L,OAAOkB,WAAyC,IAA7BzF,KAAK8D,WAAWsN,SAAoB,uBAAuBpR,KAAK8D,WAAWiN,KAAO,wBAAwB/Q,KAAK8D,WAAWiN,KAEnJ/Q,KAAK8D,WAAW0N,UAChBxR,KAAKuQ,YAAcvQ,KAAKmQ,KAAK5L,OAAOV,MAAM8B,QAC1C3F,KAAKmQ,KAAK5L,OAAOV,MAAM8B,SAAW3F,KAAK8D,WAAW0N,WAjG9D,kBAqGI,SAAK1N,EAAY2N,GAAU,WAIvB,GAFAzR,KAAK8D,WAAaA,EAES,OAAvB9D,KAAK0R,cACL,OAAO,MAGQ1R,KAAK8D,WAAL,YAA+B6N,uBAEpC,IAAWF,GACrBzR,KAAK4R,YAGT5R,KAAK6R,qBAAuB,SAACzP,GACrB,EAAK0P,iBAAiB1P,IAG9B0B,EAAWiO,aAAarI,UAAU1J,KAAK6R,sBAEvC7R,KAAKgS,sBAAwB,SAAC5P,GAC1B,EAAK6P,kBAAkB7P,IAG3B0B,EAAWoO,gBAAgBxI,UAAU1J,KAAKgS,uBAE1ClO,EAAW+D,aAAasK,YAAY,gBAAe,WAC/C,EAAK1B,UAAW,EAChB,EAAKiB,cACL5N,EAAW+D,aAAa4C,UAAU,eAAe,CAAC,CAAC,cAAiB,KACpE,EAAKqH,iBAAiBhO,EAAWiO,aAAaK,oBAnI1D,uBAwII,WAAY,YAEc,IAAlBpS,KAAKyQ,WAITzQ,KAAKyQ,UAAW,EAEZzQ,KAAK8D,WAAWwN,SAAhB,SACAtR,KAAKmQ,KAAKkC,oBAAoB,CAACrL,IAAI,aAAcC,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,UAGpFtR,KAAK8D,WAAWwO,MAAQ,GACxBtS,KAAKmQ,KAAKkC,oBAAoB,CAACpL,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWyO,QAAQC,KAAKC,aAAe,wBAA0BzS,KAAK8D,WAAWwO,MAAQ,MAAQtS,KAAK8D,WAAW4O,UAAU,GAGtM1S,KAAKmQ,KAAKkC,oBAAoB,CAAChL,OAAQ,WAC/B,EAAKqJ,WAAL,KAAyB,EACzB,EAAKiC,mBACP1L,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,aAAyC,GAElD,GAA5BtR,KAAK8D,WAAWsN,UAA4C,UAAxBpR,KAAK8D,WAAWiN,MACpD/Q,KAAKmQ,KAAKkC,oBAAoB,CAACpL,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,oBAG1C,SAAxBtR,KAAK8D,WAAWiN,OAChB/Q,KAAKmQ,KAAKkC,oBAAoB,CAACpL,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,YAE9DtR,KAAK8D,WAAWwN,SAAhB,UACAhN,EAAAA,EAAAA,oBAAoC,CAAC2C,YAAc,YAAa7B,GAAI,iBAAkByB,KAAO7G,KAAK8D,WAAWyO,QAAQC,KAAKC,aAAe,4BAA8BzS,KAAK8D,WAAWwO,MAAQ,MAAQtS,KAAK8D,WAAW4O,WAI/N1S,KAAKmQ,KAAKyC,aAAa5S,KAAK8D,WAAWwN,SAAhB,QAAoC,GAAO,WAC9D,EAAKnB,KAAKyC,aAAa,EAAK9O,WAAWwN,SAAhB,KAAiC,GAAO,WAC3D,EAAKZ,WAAL,MAA0B,EAC1B,EAAKiC,oBACN,CAAC,MAAS,EAAK7O,WAAW+O,oBAC9B,CAAC,MAAS7S,KAAK8D,WAAW+O,kBAEzB7S,KAAK8D,WAAWwN,SAAhB,OAAqCtR,KAAK8D,WAAWwN,SAAhB,MAAkC7R,OAAS,GAChFO,KAAK8D,WAAWwN,SAAhB,MAAkChM,SAAQ,SAAC+J,GACvC,EAAKc,KAAKyC,aAAavD,GAAM,SAlL7C,8BAuLI,SAAiBjN,GACL,GAARA,EAAgBpC,KAAK8S,OAAS9S,KAAK+S,SAxL3C,+BA2LI,SAAkB3Q,GACdpC,KAAKuN,MAAQnL,EAAK4Q,gBAAkB5Q,EAAKmL,MACzCvN,KAAKwN,OAASpL,EAAK6Q,iBAAmB7Q,EAAKoL,OAC3CxN,KAAK2M,OAASvK,EAAKoO,gBAAmBpO,EAAKoO,iBAAmBpO,EAAK8Q,QAAU9Q,EAAK8Q,QAAU,GAAO,KAAiC,IAA3BlT,KAAK8D,WAAWqP,OAAkB,GAAK,IAAM/Q,EAAK8Q,QAAU9Q,EAAK8Q,QAAU,GACpLlT,KAAK0M,MAAQtK,EAAKgR,eAAkBhR,EAAKgR,gBAAkBhR,EAAKiR,WAAajR,EAAKiR,WAAa,GAAO,IAAMjR,EAAKkR,OAASlR,EAAKkR,OAAS,GACxItT,KAAKsQ,MAASlO,EAAK4Q,gBAAkB5Q,EAAK6Q,iBAAmB7Q,EAAKoO,iBAAmBpO,EAAKgR,eAAkB,KAAOhR,EAAKkO,MACxHtQ,KAAKoM,SAELpM,KAAKwQ,kBAAoBpO,EAAKoO,kBAnMtC,kBAsMI,WACIxQ,KAAKmQ,KAAK2C,SAvMlB,4BA0MI,WACQ9S,KAAK8D,WAAW0N,UAChBxR,KAAKmQ,KAAK5L,OAAOV,MAAM8B,SAAW3F,KAAK8D,WAAW0N,WA5M9D,4BAgNI,WACQxR,KAAK8D,WAAW0N,UAChBxR,KAAKmQ,KAAK5L,OAAOV,MAAM8B,QAAU3F,KAAKuQ,aAE1CvQ,KAAK+S,SApNb,kBAuNI,YAC2B,IAAlB/S,KAAKyQ,UACLzQ,KAAK4R,YAET5R,KAAKmQ,KAAK4C,WA3NnB,+WCHaQ,gBAAb,WACI,4BAAc,8FAEVvT,KAAK8D,WAAa,GAElB9D,KAAKuN,MAAQ,KACbvN,KAAKwN,OAAS,KACdxN,KAAKsQ,MAAQ,KACbtQ,KAAKwT,SARb,iHAWI,WACIxT,KAAKmQ,KAAO,KAZpB,0BAeI,WACI,IAAIsD,EAAiB,IAAIC,MACrBC,EAAe,GACnB,QAA8B,IAAnB3T,KAAK8D,WAA2B,CACvC,QAAkD,IAAvC9D,KAAK8D,WAAW8P,eAAerO,MAClCvF,KAAK8D,WAAW8P,eAAerO,KAAK9F,OAAS,EAC7C,IAAK,IAAIiB,KAASV,KAAK8D,WAAW8P,eAAerO,UACY,IAA9CvF,KAAK8D,WAAW8P,eAAerO,KAAK7E,SAAmF,IAAnDV,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAO6F,MACtHkN,EAAelT,KAAK,UAAY2O,mBAAmBlP,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOmT,MAAQ,oBAAgF,IAAxD7T,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOoT,WAAoF,GAAxD9T,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOoT,UAAoB,IAAM,KAAO,YAAc5E,mBAAmBlP,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAO+C,OAAS,WAAayL,mBAAmBlP,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAO6F,MAAQ,WAAa2I,mBAAmBlP,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqT,MAAQ,gBAAsE,IAAlD/T,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqP,KAAwE,GAAlD/P,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqP,IAAc,IAAM,KAAO,eAAuE,IAAnD/P,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqS,MAA2E,MAAnD/S,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqS,MAAmE,OAAnD/S,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqS,KAAoE,IAAlD/S,KAAK8D,WAAW8P,eAAerO,KAAK7E,GAAOqS,OAMj7B,QAA0D,IAA/C/S,KAAK8D,WAAW8P,eAAeI,cAClChU,KAAK8D,WAAW8P,eAAeI,aAAavU,OAAS,EACrD,IAAK,IAAIiB,KAASV,KAAK8D,WAAW8P,eAAeI,kBACoB,IAAtDhU,KAAK8D,WAAW8P,eAAeI,aAAatT,SAA2F,IAA3DV,KAAK8D,WAAW8P,eAAeI,aAAatT,GAAOmT,MACtIJ,EAAelT,KAAK,WAAaP,KAAK8D,WAAW8P,eAAeI,aAAatT,GAAOmT,KAAO,KAAO3E,mBAAmBlP,KAAK8D,WAAW8P,eAAeI,aAAatT,GAAO+C,QAMxL,QAAgE,IAArDzD,KAAK8D,WAAW8P,eAAeK,oBAClCjU,KAAK8D,WAAW8P,eAAeK,mBAAmBxU,OAAS,EAC3D,IAAK,IAAIiB,KAASV,KAAK8D,WAAW8P,eAAeK,wBAC0B,IAA5DjU,KAAK8D,WAAW8P,eAAeK,mBAAmBvT,IACzD+S,EAAelT,KAAK,qBAAuBP,KAAK8D,WAAW8P,eAAeK,mBAAmBvT,GAAOA,MAAQ,KAAOwO,mBAAmBlP,KAAK8D,WAAW8P,eAAeK,mBAAmBvT,GAAO+C,QAM3MgQ,EAAehU,OAAS,IACxBkU,EAAe,IAAMF,EAAe/N,KAAK,MAIjD,OAAOiO,IAtDf,kBAyDI,SAAK7P,EAAYoQ,EAAYC,GAEzB,GAAInU,KAAKmQ,KAAKiE,uBAAkE,IAA1CpU,KAAKmQ,KAAKiE,qBAAqBC,YAC1C,IAAhBF,GAAqD,cAAtBA,EAAYG,OAAyBH,EAAYG,MAAMC,iBAC7FvU,KAAKmQ,KAAKiE,qBAAqBI,YAC5B,CAEHxU,KAAK8D,WAAaA,EAElB,IAAIyB,EAAO,CACP,YAAevF,KAAK8D,WAAL,YAA+B6N,wBAG9C8C,EAAe,GAEflP,EAAI,YAAJ,IAA6BA,EAAI,YAAJ,OAC7BkP,EAAeA,EAAe,SAAWlP,EAAI,YAAJ,GAA4B,WAAaA,EAAI,YAAJ,MAGrD,OAA7BvF,KAAK8D,WAAL,QACA2Q,EAAeA,EAAe,YAAczU,KAAK8D,WAAL,OAGb,OAA/ByB,EAAI,YAAJ,MAAwF,IAAjDvF,KAAK8D,WAAW4Q,eAAeC,gBACtEF,EAAeA,EAAe,UAAYlP,EAAI,YAAJ,KAG1CvF,KAAK8D,WAAL,WACA2Q,GAA8B,kBAG9BzU,KAAK8D,WAAL,WAA8BrE,OAAS,IACvCgV,EAAeA,EAAe,iBAAmBzU,KAAK8D,WAAL,WAA8B4B,KAAK,MAGnD,IAAjC1F,KAAK8D,WAAL,aACA2Q,EAAeA,EAAe,iBAAmBzU,KAAK8D,WAAL,YAGjD9D,KAAK8D,WAAL,WACA2Q,EAAeA,EAAe,eAAiBzU,KAAK8D,WAAL,UAG/C9D,KAAK8D,WAAL,SACA2Q,EAAeA,EAAe,aAAezU,KAAK8D,WAAL,QAG7C9D,KAAK8D,WAAL,SACA2Q,EAAeA,EAAe,UAAYzU,KAAK8D,WAAL,QAG1C9D,KAAK8D,WAAL,aACA2Q,EAAeA,EAAe,cAAgBzU,KAAK8D,WAAL,YAG9C9D,KAAK8D,WAAL,WACA2Q,EAAeA,EAAe,eAAiBzU,KAAK8D,WAAL,UAGT,OAAtC9D,KAAK8D,WAAL,kBACA2Q,EAAeA,EAAe,YAAczU,KAAK8D,WAAL,iBAGhD2Q,EAAeA,EAAe,aAAoD,GAArCzU,KAAK8D,WAAW8Q,YAAYnR,MAAgB,EAAI,GAEzFzD,KAAK8D,WAAL,uBACA2Q,EAAeA,EAAe,UAAYzU,KAAK8D,WAAL,qBACX,SAA3B9D,KAAK8D,WAAL,MACA9D,KAAK8D,WAAW4Q,eAAeG,kBAAkB7U,KAAK8D,WAAL,cAAiC,QAAS,IAInG,IAAIgR,EAAW9U,KAAK8D,WAAW4Q,eAAeK,gBAAgB/U,KAAK8D,WAAL,cAAiC,QAE3FgR,IACAL,EAAeA,EAAe,SAAWO,SAASF,KAGd,IAApC9U,KAAK8D,WAAL,eACA2Q,GAA8B,yBAI9BA,EADwD,OAAxDzU,KAAK8D,WAAL,YAA+BmR,sBAAwF,IAAvDjV,KAAK8D,WAAL,YAA+BmR,qBAChFR,EAAe,YAAczU,KAAK8D,WAAL,YAA+BmR,qBAAuBjV,KAAKkV,eAExFT,EAAe,IAAMzU,KAAKkV,eAG7C,IAAMC,OAAwCC,IAAvBlN,OAAOmN,WAA4BnN,OAAOmN,WAAanN,OAAOoN,QAC/EC,OAAsCH,IAAtBlN,OAAOsN,UAA6BtN,OAAOsN,UAAatN,OAAOuN,QAE/ElI,EAAQrF,OAAOwN,WAAaxN,OAAOwN,WAAa1T,SAAS2T,gBAAgBC,YAAc5T,SAAS2T,gBAAgBC,YAAcC,OAAOtI,MACrIC,EAAStF,OAAO4N,YAAc5N,OAAO4N,YAAc9T,SAAS2T,gBAAgBI,aAAe/T,SAAS2T,gBAAgBI,aAAeF,OAAOrI,OAE1IwI,EAAazI,EAAQrF,OAAO2N,OAAOI,WACnCrJ,GAAQW,EAAQyH,SAAShV,KAAK8D,WAAL,yBAAiD,EAAIkS,EAAab,EAC3F1I,GAAOe,EAASwH,SAAShV,KAAK8D,WAAL,0BAAkD,EAAIkS,EAAaT,EAE9FW,EAAe,8CAAgDlW,KAAK8D,WAAL,uBAA+C,WAAa9D,KAAK8D,WAAL,wBAAgD,QAAU2I,EAAM,SAAWG,EACtMuJ,EAASjO,OAAO1D,KAAK,GAAIxE,KAAK8D,WAAL,cAAmC,YAAaoS,GACzEE,GAAa,EACbC,GAAgB,EAGpB,KAESF,GAAUA,EAAO9B,aAAgC,IAAf8B,EAAO9B,QAAgD,gBAAzB8B,EAAOG,SAASzP,MACjFsP,EAASnW,KAAKmQ,KAAKiE,qBAAuBlM,OAAO1D,KAAKxE,KAAK8D,WAAL,SAA8B9D,KAAK8D,WAAL,KAA0B,aAAe2Q,EAAczU,KAAK8D,WAAL,cAAiC,YAAaoS,GACzLG,GAAgB,GAEhBD,GAAa,EAEnB,MAAOrQ,GACLqQ,GAAa,EAIjB,IAAKD,GAAUA,EAAO9B,aAAgC,IAAf8B,EAAO9B,OAC1C,IACIrU,KAAK8D,WAAWyS,YAAYpG,KAAKnK,eAAe,eAAea,KAAO7G,KAAK8D,WAAL,SAA8B9D,KAAK8D,WAAL,KAA0B,aAAe2Q,EAC/I,MAAO1O,GACLuC,MAAM,kCAEc,GAAjB+N,QACe,IAAfnC,IAAsD,IAAxBlU,KAAK8D,WAAW0S,KAAiBtC,EAAWuC,eAAe,YAAa,CAAC,CAAC,OAAU,oBAClG,IAAhBtC,GAAqD,cAAtBA,EAAYG,OAAyBH,EAAYG,MAAMC,mBACvE,IAAf6B,IACPpW,KAAKmQ,KAAKiE,qBAAuB+B,EACjCA,EAAO3B,aACgB,IAAhBL,GAAqD,cAAtBA,EAAYG,OAAyBH,EAAYG,MAAMC,qBA1L7G,4BA+LI,SAAAmC,eAAexC,YACX,GAAIlU,KAAKmQ,KAAKiE,uBAAkE,IAA1CpU,KAAKmQ,KAAKiE,qBAAqBC,OAAkB,CACnF,IAAIsC,QAAU3W,KAAK8D,WAAL,OAA0BL,MACpCmT,QAAU,GACVC,WAAa,KACjB,IAAK,IAAInW,SAASiW,QACd,IACIE,WAAaC,KAAKH,QAAQjW,OAAOqW,KAC7B,MAAOF,YAAoE,KAAfA,aAC5DD,QAAQD,QAAQjW,OAAO0E,IAAMyR,YAEnC,MAAOzH,IAIb8E,WAAWuC,eAAe,SAAU,CAACG,eA9MjD,4ICIaI,EAAb,WACI,WAAY/G,IAAQ,eAEhBjQ,KAAK8D,WAAa,GAClB9D,KAAKiX,aAAc,EAEnBjX,KAAKmQ,KAAO,IAAI9M,EAAAA,GAAqB4M,GAAU,OAAO,oBAAqB3L,EAAAA,EAAAA,iBAAiC,CACxGoJ,OAAQ,aACRH,MAAO,OACPC,OAAQ,OACRX,SAAU,QACVY,QAAS,OACTR,UAAW,OACXC,SAAU,OACVH,UAAW,OACXC,SAAU,SACV,KAAM,UAEVhN,KAAK0Q,WAAa,CAACC,MAAO,EAAO2B,OAAO,EAAO4E,MAAM,EAAMC,QAAS,EAAOC,SAAS,GACpFpX,KAAKqX,OAAQ,EACbrX,KAAKsX,eAAiB,EApB9B,gDAuBI,SAAkBC,GACd,IAAIC,EAAOxX,KAAKmQ,KAAKnK,eAAe,eAEhCuR,GACKvX,KAAK8D,WAAW2T,cACjBzX,KAAK+S,OAETzO,EAAAA,EAAAA,YAA4BkT,EAAM,mBAE7BxX,KAAK8D,WAAW2T,aAGjBnT,EAAAA,EAAAA,SAAyBkT,EAAM,kBAF/BxX,KAAK8S,SAjCrB,6BAwCI,WACoC,GAA5B9S,KAAK0Q,WAAL,OAA+D,GAA3B1Q,KAAK0Q,WAAL,MAA8D,GAA3B1Q,KAAK0Q,WAAL,MAAgE,GAA7B1Q,KAAK0Q,WAAL,QAAmE,GAA9B1Q,KAAK0Q,WAAL,UAC/I1Q,KAAKmQ,KAAKnK,eAAe,wBAAwBnC,MAAM4J,QAAU,GACjEzN,KAAK8D,WAAW4T,MAAMvG,MAAK,MA3CvC,kBA+CI,SAAKrN,EAAYuT,GAAO,WAEpBrX,KAAK8D,WAAaA,EAElB,IAAI6T,EAAY,CAAChL,OAAS,GAAG3M,KAAK8D,WAAWoO,gBAAgBzO,MAAMmU,QAAW,KAAMlL,MAAQ,GAAG1M,KAAK8D,WAAWoO,gBAAgBzO,MAAMoU,OAAU,MAc/I,GAZqC,eAAjC/T,EAAWgN,oBAAwE,oBAAjChN,EAAWgN,mBAC7D6G,EAAY,CAAEhL,OAAS,GAAG3M,KAAK8D,WAAWoO,gBAAgBzO,MAAMmU,QAAW,KAAMhL,KAAO,GAAG5M,KAAK8D,WAAWoO,gBAAgBzO,MAAMoU,OAAU,MACnG,gBAAjC/T,EAAWgN,mBAClB6G,EAAY,CAAChL,OAAQ,mBAAmBD,MAAQ,GAAG1M,KAAK8D,WAAWoO,gBAAgBzO,MAAMoU,OAAU,MAC3D,eAAjC/T,EAAWgN,qBAClB6G,EAAY,CAAChL,OAAQ,mBAAmBC,KAAO,GAAG5M,KAAK8D,WAAWoO,gBAAgBzO,MAAMoU,OAAU,OAGtG7X,KAAKmQ,KAAKc,YAAY0G,GAEtB3X,KAAKmQ,KAAKpL,KAAO,2CAAyE,IAA7B/E,KAAK8D,WAAWsN,SAAoB,aAAe,eAAiB,6JAEzF,OAApCpR,KAAKmQ,KAAKkB,kBAAkB,IAC5B,OAAO,KAGXrR,KAAKmQ,KAAK5L,OAAOkB,WAAyC,IAA7BzF,KAAK8D,WAAWsN,SAAoB,aAAe,cAEhF,IAAI0G,EAAQ9X,KAEZA,KAAKqX,QAAWA,GAGG,IAAfrX,KAAKqX,MACLrX,KAAK0Q,WAAL,QAA4B,EAG5B5M,EAAWoN,QAAQxH,WAAU,SAACtH,GAAeA,IAAM,EAAKsO,WAAL,QAA4B,EAAM,EAAKiC,sBAG9F7O,EAAWsT,QAAQ1N,WAAU,SAACtH,GACtBA,EACmB,EAAK0B,WAAL,YAA+B6N,uBACnC,IAAgD,GAAtC,EAAK7N,WAAWiO,aAAatO,QAClD,EAAKiN,WAAL,SAA6B,EAC7B,EAAKoC,SAGT,EAAKpC,WAAL,SAA6B,EAC7B,EAAKiC,kBACL,EAAKI,WAIb/S,KAAKmQ,KAAK4H,wBAAwB,SAAS,SAAUhS,IAEf,IAAlCjC,EAAWyT,aAAa9T,OAAmBK,EAAW+D,aAAa4C,UAAU,uBAEvC,IAAlC3G,EAAWyT,aAAa9T,OAAmD,OAAhCK,EAAWkU,kBACtDhW,SAASsU,SAAWxS,EAAWkU,iBAC/BjS,EAAEwO,kBAEuB,GAArBuD,EAAMb,aACNnT,EAAW+D,aAAa4C,UAAU,cAAe,CAAC,CAAC,OAAW,iBAC9D1E,EAAEwO,mBAEFzQ,EAAW+D,aAAa4C,UAAU,aAAc,CAAC,CAAC,MAAQ1E,KAC1DjC,EAAW+D,aAAa4C,UAAU,kBAI3C,uBAAwB,iBAEvBzK,KAAK8D,WAAWwN,SAAhB,SACAtR,KAAKmQ,KAAKkC,oBAAoB,CAACpL,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,UAGlEtR,KAAK8D,WAAWwN,SAAhB,aACAtR,KAAKmQ,KAAKkC,oBAAoB,CAAChL,OAAQ,WAAO,EAAKqJ,WAAL,MAA0B,EAAM,EAAKiC,mBAAmB,GAAK,OAAQ3L,IAAI,UAAWT,KAAM,YAAaU,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,cAGxLtR,KAAK8D,WAAWwO,MAAQ,GACxBtS,KAAK0Q,WAAL,OAA2B,EAC3B1Q,KAAKmQ,KAAKkC,oBAAoB,CAAChL,OAAQ,WAAK,EAAKqJ,WAAL,OAA2B,EAAM,EAAKiC,mBAAoBvN,GAAI,mBAAoB6B,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWyO,QAAQC,KAAKC,aAAe,8BAAgCzS,KAAK8D,WAAWwO,MAAQ,MAAQtS,KAAK8D,WAAW4O,UAAU,IAEvS1S,KAAK0Q,WAAL,OAA2B,EAG/B1Q,KAAKmQ,KAAKkC,oBAAoB,CAAChL,OAAQ,WAAK,EAAKqJ,WAAL,MAA0B,EAAM,EAAKiC,mBAAoB1L,YAAc,YAAcJ,KAAO7G,KAAK8D,WAAWwN,SAAhB,aAEpItR,KAAK8D,WAAWwN,SAAhB,UACAhN,EAAAA,EAAAA,oBAAoC,CAAC2C,YAAc,YAAa7B,GAAI,iBAAkByB,KAAO7G,KAAK8D,WAAWyO,QAAQC,KAAKC,aAAe,4BAA8BzS,KAAK8D,WAAWwO,MAAQ,MAAQtS,KAAK8D,WAAW4O,UAG3N5O,EAAWyT,aAAa7N,WAAU,SAACtH,GAAD,OAAU,EAAK6V,kBAAkB7V,MAEnE0B,EAAWiO,aAAarI,WAAU,SAACtH,GAC/B,GAA6B,UAAzB,EAAK0B,WAAWiN,KAAkB,CAClC,IAAMmH,EAAa,EAAKpU,WAAL,YAA+B6N,uBACzC,GAARvP,IAAkB,EAAK0B,WAAW2T,cAAsD,GAAtC,EAAK3T,WAAWyT,aAAa9T,QAAmByU,EAAU,GAAW,EAAKpF,OAAS,EAAKC,WAI1H,UAAzB/S,KAAK8D,WAAWiN,MAAoB/Q,KAAK+S,OACzC,IAAIoF,EAAuBrU,EAAW4Q,eAAe0D,kBAAkBpY,KAAK8D,WAAL,cAAiC,QAExGA,EAAW+D,aAAasK,YAAY,kBAAkB,SAAC/P,GACnD,IAAIiW,EAAejW,GAAQA,EAAKkW,IAC5BD,IACAA,EAAcrD,SAASqD,GACvBA,GAAe,EAAKf,gBAExB,EAAKxT,WAAWwT,eAAenG,KAAKkH,GACpC,EAAKE,oBAAoBF,MAGA,OAAzBF,IACArU,EAAW+D,aAAa4C,UAAU,iBAAiB,CAAC,CAAC6N,IAAIH,EAAsBK,MAAM,KACxD,OAAzBL,GAAkCM,MAAMN,KACxCnY,KAAKsX,eAAiBtC,SAASmD,KAOvCrU,EAAW+D,aAAasK,YAAY,gBAAe,WAC3C,EAAKrO,WAAWwO,MAAQ,GACxB,EAAKnC,KAAKkC,oBAAoB,CAACpL,YAAc,YAAa7B,GAAI,mBAAoByB,KAAO,EAAK/C,WAAWyO,QAAQC,KAAKC,aAAe,8BAAgC,EAAK3O,WAAWwO,MAAQ,MAAQ/G,KAAKmN,QAAQ,GAEtNpU,EAAAA,EAAAA,oBAAoC,CAAC2C,YAAc,YAAa7B,GAAI,iBAAkByB,KAAO,EAAK/C,WAAWyO,QAAQC,KAAKC,aAAe,4BAA8B,EAAK3O,WAAWwO,MAAQ,MAAQ/G,KAAKmN,aA7KxN,kBAiLI,WAII,GAFA1Y,KAAK2Y,yBAE0B,IAA3B3Y,KAAK8D,WAAWqP,QAA+C,GAA5BnT,KAAK8D,WAAWsN,SAAmB,CACtE,IAAM8G,EAAalY,KAAK8D,WAAL,YAA+B6N,uBAClD,IAAoC,GAAhC3R,KAAK8D,WAAW2T,cAA8D,GAAtCzX,KAAK8D,WAAWyT,aAAa9T,OAAiByU,EAAU,OAE7D,OAA/BlY,KAAK8D,WAAL,UAAwE,OAA/B9D,KAAK8D,WAAL,WAA2E,IAAnC9D,KAAK8D,WAAL,cAA6CoU,EAAU,IAAUA,EAAU,MAAmD,GAAtClY,KAAK8D,WAAWiO,aAAatO,WAC/J,IAAnCzD,KAAK8D,WAAL,aAA4CoU,EAAU,IAAUA,EAAU,OAC1ElY,KAAKmQ,KAAK4C,QAIqB,IAAnC/S,KAAK8D,WAAL,aAA4CoU,EAAU,IAAUA,EAAU,MAAmD,GAAtClY,KAAK8D,WAAWiO,aAAatO,OAAe,CACnI,GAA0C,GAAtCzD,KAAK8D,WAAWiO,aAAatO,MAAc,CAC3CzD,KAAKiX,aAAc,EACnB,IAAIO,EAAOxX,KAAKmQ,KAAKnK,eAAe,eACpC1B,EAAAA,EAAAA,SAAyBkT,EAAM,gBAEnC,QAMZxX,KAAKmQ,KAAK2C,SA3MlB,iCA8MI,SAAoB8F,GAChB,IAAIC,EAAWD,GAAU,IACrBpB,EAAOxX,KAAKmQ,KAAKnK,eAAe,wBACpC1B,EAAAA,EAAAA,SAAyBkT,EAAM,qBAE/B,IAAIsB,EAAY9Y,KAAKmQ,KAAKnK,eAAe,qBACrC8S,IACAA,EAAUC,UAAYF,GAGtB7Y,KAAK8D,WAAW4Q,gBAChB1U,KAAK8D,WAAW4Q,eAAeG,kBAAkB7U,KAAK8D,WAAL,cAAiC,OAAO+U,KAzNrG,mCA4NI,WACI,IAAIrB,EAAOxX,KAAKmQ,KAAKnK,eAAe,wBACpC1B,EAAAA,EAAAA,YAA4BkT,EAAM,qBAC9BxX,KAAK8D,WAAW4Q,gBAChB1U,KAAK8D,WAAW4Q,eAAesE,qBAAqBhZ,KAAK8D,WAAL,cAAiC,QAEzF9D,KAAK8D,WAAW+D,aAAa4C,UAAU,0BAA2B,IAClEzK,KAAK8D,WAAWwT,eAAenG,KAAK,GACpCnR,KAAKsX,eAAiB,IApO9B,kBAuOI,WAEI,IAAoC,IAAhCtX,KAAK8D,WAAWmV,YAAuB,CAEvC,IAAMf,EAAalY,KAAK8D,WAAL,YAA+B6N,uBAElD,IAA+B,IAA3B3R,KAAK8D,WAAWqP,QAA+C,GAA5BnT,KAAK8D,WAAWsN,UACT,GAAtCpR,KAAK8D,WAAWiO,aAAatO,MAAe,CAC5C,IAAI+T,EAAOxX,KAAKmQ,KAAKnK,eAAe,eACpC1B,EAAAA,EAAAA,YAA4BkT,EAAM,gBAClCxX,KAAKiX,aAAc,EAKQ,OAA/BjX,KAAK8D,WAAL,UAAwE,OAA/B9D,KAAK8D,WAAL,WAA2E,IAAnC9D,KAAK8D,WAAL,aAA2CoU,EAAU,IAAUA,EAAU,KAC1JlY,KAAKmQ,KAAK4C,QACwB,IAA3B/S,KAAK8D,WAAWqP,QACmB,GAAtCnT,KAAK8D,WAAWiO,aAAatO,OAC7BzD,KAAKmQ,KAAK2C,YAKlB9S,KAAKmQ,KAAK2C,WA/PtB,iXCHMoG,kBAAAA,WAEF,2BAAY3T,IAAM,gGACdvF,KAAK8D,WAAayB,8HAGtB,SAAA4T,gBAAgBC,QACZ,IAAIxC,QAAU,GAEd,GAAIwC,OAAO3Z,OAAS,EAAG,CAEnB,IAAIoX,WAAa,KAEjB,IAAK,IAAInW,SAAS0Y,OACd,IACIvC,WAAaC,KAAK,UAAUsC,OAAO1Y,OAAOqW,KACtC,MAAOF,YAAoE,KAAfA,aAC5DD,QAAQwC,OAAO1Y,OAAO0E,IAAMyR,YAElC,MAAMzH,IAGZ,OAAOwH,QAGX,OAAOA,yCAGX,WACI,IAAIrR,EAAQ,CACR,aAAiBvF,KAAK8D,WAAL,aAAgCL,MACjD,YAAgBzD,KAAK8D,WAAL,YAA+BL,MAC/C,aAAiBzD,KAAK8D,WAAL,aAAgCL,MACjD,OAAWzD,KAAKmZ,gBAAgBnZ,KAAK8D,WAAL,OAA0BL,OAC1D,SAAazD,KAAK8D,WAAL,SACb,WAAe9D,KAAK8D,WAAL,WACf,QAAY9D,KAAK8D,WAAL,QACZ,MAAU9D,KAAK8D,WAAL,MACV,SAAa9D,KAAK8D,WAAL,SACb,KAAS9D,KAAK8D,WAAL,KACT,QAAY9D,KAAK8D,WAAL,QACZ,SAAa9D,KAAK8D,WAAL,SACb,YAAgB9D,KAAK8D,WAAL,YAA+B6N,uBAC/C,WAAc3R,KAAK8D,WAAL,WACd,cAAiB9D,KAAK8D,WAAL,aACjB,aAAgB9D,KAAK8D,WAAL,iBAyDpB,GAtDgC,GAA5B9D,KAAK8D,WAAL,QACIyB,EAAI,YAAJ,WACOA,EAAI,YAAJ,GAGPA,EAAI,YAAJ,aACOA,EAAI,YAAJ,MAIkB,IAA7BvF,KAAK8D,WAAL,SACAyB,EAAI,OAAavF,KAAK8D,WAAL,QAGgB,IAAjC9D,KAAK8D,WAAL,aACAyB,EAAI,WAAiBvF,KAAK8D,WAAL,YAGU,IAA/B9D,KAAK8D,WAAL,WACAyB,EAAI,SAAevF,KAAK8D,WAAL,UAGU,OAA7B9D,KAAK8D,WAAL,QACAyB,EAAI,MAAYvF,KAAK8D,WAAL,OAGc,OAA9B9D,KAAK8D,WAAL,SACAyB,EAAI,OAAavF,KAAK8D,WAAL,QAGa,OAA9B9D,KAAK8D,WAAL,SACAyB,EAAI,OAAavF,KAAK8D,WAAL,QAGe,OAAhC9D,KAAK8D,WAAL,WACAyB,EAAI,SAAevF,KAAK8D,WAAL,UAGgB,OAAnC9D,KAAK8D,WAAL,cACAyB,EAAI,YAAkBvF,KAAK8D,WAAL,aAGK,IAA3B9D,KAAK8D,WAAL,OACAyB,EAAI,KAAWvF,KAAK8D,WAAL,MAGf9D,KAAK8D,WAAL,uBACAyB,EAAI,UAAgBvF,KAAK8D,WAAL,WAGe,OAAnC9D,KAAK8D,WAAL,cACAyB,EAAI,YAAkBvF,KAAK8D,WAAL,aAGtB9D,KAAK8D,WAAW8P,gBAAkB5T,KAAK8D,WAAW8P,eAAerO,KAAM,CACvE,IAAI8T,EAAiBrZ,KAAK8D,WAAW8P,eAAerO,KAChD+T,EAAe,GACnBD,EAAe/T,SAAQ,SAAC+J,EAAM3O,GAC1B4Y,EAAa/Y,KAAK,CAACwS,UAA8B,IAAb1D,EAAK0D,MAAqC,MAAb1D,EAAK0D,MAA6B,OAAb1D,EAAK0D,KAA8B,IAAZ1D,EAAK0D,KAActP,MAAQ4L,EAAK5L,MAAO/C,MAAQA,EAAOmT,KAAOxE,EAAKwE,KAAM,MAAS,+BAAgC,KAASxE,EAAK9I,KAAM,WAAe,cAAgB7F,EAAQ,YAAgB,GAAI,MAAW2O,EAAK0E,MAAQ,EAAI,UAAc1E,EAAKyE,YAAa,EAAQ,SAAczE,EAAKU,MAAO,EAAQ,MAAUV,EAAKwE,UAGtatO,EAAI,cAAoB+T,EAG5B,GAAItZ,KAAK8D,WAAW8P,gBAAkB5T,KAAK8D,WAAW8P,eAAeI,aAAc,CAC3EqF,EAAiBrZ,KAAK8D,WAAW8P,eAAeI,aAApD,IACIuF,EAAoB,GACxBF,EAAe/T,SAAQ,SAAC+J,GACH,SAAbA,EAAKwE,KACL0F,EAAkBhZ,KAAK,CAAC,MAAU8O,EAAK5L,QACnB,YAAb4L,EAAKwE,KACZ0F,EAAkBhZ,KAAK,CAAC,SAAa8O,EAAK5L,QACtB,SAAb4L,EAAKwE,KACZ0F,EAAkBhZ,KAAK,CAAC,MAAU8O,EAAK5L,QACnB,YAAb4L,EAAKwE,MACZ0F,EAAkBhZ,KAAK,CAAC,SAAa8O,EAAK5L,WAGlD8B,EAAI,aAAmBgU,EAG3B,GAAIvZ,KAAK8D,WAAW8P,gBAAkB5T,KAAK8D,WAAW8P,eAAeK,mBAAoB,CACjFoF,EAAiBrZ,KAAK8D,WAAW8P,eAAeK,mBAApD,IACIsF,EAAoB,GACxBF,EAAe/T,SAAQ,SAAC+J,GAClBkK,EAAkBhZ,KAAK,CAAC,MAAU8O,EAAK5L,MAAO,MAAU4L,EAAK3O,WAEnE6E,EAAI,mBAAyBgU,EAOjC,OAJ4D,OAAxDvZ,KAAK8D,WAAL,YAA+BmR,uBAC/B1P,EAAI,QAAcvF,KAAK8D,WAAL,YAA+BmR,sBAG9C1P,kCAGX,SAAiBiU,GACTxZ,KAAK8D,WAAWuM,WAAWF,KAAK5L,QAAUvE,KAAK8D,WAAWuM,WAAWF,KAAK5L,OAAOsG,eAEjF7K,KAAK8D,WAAWuM,WAAWF,KAAK5L,OAAOsG,cAAc4O,YAAYD,EAAS,KAG1ExZ,KAAK8D,WAAW4V,YAAYvJ,KAAKiE,uBAAyF,IAAjEpU,KAAK8D,WAAW4V,YAAYvJ,KAAKiE,qBAAqBC,QAE/GrU,KAAK8D,WAAW4V,YAAYvJ,KAAKiE,qBAAqBqF,YAAYD,EAAS,mCAInF,SAAgBG,GAEZ,IAAInH,EAAOxS,KAAK4Z,qBAEA,IAAVD,GAAmB3Z,KAAK8D,WAAWuM,WAAWF,KAAK5L,QAAUvE,KAAK8D,WAAWuM,WAAWF,KAAK5L,OAAOsG,eAEtG7K,KAAK8D,WAAWuM,WAAWF,KAAK5L,OAAOsG,cAAc4O,YAAY,YAAcxP,KAAKC,UAAUsI,GAAO,mCAI7G,SAAe8B,EAAO9B,EAAMjM,QACJ,IAATA,IACPA,EAAO,aAEXvG,KAAK6Z,iBAAiBtT,EAAK,IAAI+N,EAAQ,KAAOrK,KAAKC,UAAUsI,0BA3K/D0G,6FCoDAhT,EAAmB,IApDnB4T,WACF,cAAc,eACV9Z,KAAK+Z,OAAS,6CAGlB,SAAaC,EAAQ1F,EAAO9S,GACxB,IAAIsE,EAAI9F,KAAMia,EAAW,SAAUlT,GAC/BvF,EAASpB,KAAK4Z,EAAQlU,EAAEoU,SAASnT,KAGrC,OADAiT,EAAOG,YAAY,KAAO7F,EAAO2F,GAC1BA,0BAGX,SAASG,GACL,IAAIC,EACJra,KAAK+Z,OAAOK,KAAeC,EAAera,KAAK+Z,OAAOK,GAAYpa,KAAK+Z,OAAOK,GAAa,KAAMpa,KAAKsa,mBAAmBD,EAAavM,QAASuM,EAAaD,UAAWC,EAAaE,sCAGxL,SAAOP,EAAQ1F,EAAO9S,EAAU4Y,GAC5B,IAAIC,EACJ,GAAID,EAAW,CAGX,GAFApa,KAAK+Z,OAAOK,KAAeC,EAAera,KAAK+Z,OAAOK,GAAYpa,KAAK+Z,OAAOK,GAAa,KAAMpa,KAAKsa,mBAAmBD,EAAavM,QAASuM,EAAaD,UAAWC,EAAaE,gBAEhLP,EAAOQ,iBACPR,EAAOQ,iBAAiBlG,EAAO9S,GAAU,OACtC,KAAIQ,SAASmY,YAGhB,OAAO,KAFP3Y,EAAWxB,KAAKma,YAAYH,EAAQ1F,EAAO9S,GAO/C,OAFAxB,KAAK+Z,OAAOK,GAAa,CAACtM,QAASkM,EAAQI,UAAW9F,EAAOiG,cAAe/Y,GAErEA,qCAIf,SAAmBwY,EAAQ1F,EAAOmG,GAC9BzY,SAAS0Y,oBAAsBV,EAAOU,oBAAoBpG,EAAOmG,GAAU,GAAMT,EAAOW,YAAY,KAAOrG,EAAOmG,2BAGtH,SAASnG,GACL,IAAIsG,EAAgBtG,GAASuG,MAAMvG,MACnC,IAAKsG,EACD,IAAKtG,EAAQtU,KAAKka,SAASY,OAAQxG,MAAYsG,EAAgBtG,EAAMyG,UAAU,KAAOC,OAASJ,EAAc7X,cACzGuR,EAAQA,EAAMwG,OAGtB,OAAOF,QAhDTd,+FCAOmB,EAAb,WACI,WAAYxX,EAAOwI,IAAQ,eACvBjM,KAAKoS,cAAgB3O,EACrBzD,KAAKkb,UAAY,GACjBlb,KAAKiM,OAASA,GAAU,GAJhC,kCAOI,WACI,OAAOjM,KAAKoS,eARpB,IAWI,SAAU+I,GACNnb,KAAKmR,KAAKgK,KAZlB,kBAeI,SAAKA,GACDnb,KAAKoS,cAAgB+I,EACrBnb,KAAKob,kBAjBb,0BAoBI,SAAa9T,EAAK6T,GACdnb,KAAKoS,cAAc9K,GAAO6T,EAC1Bnb,KAAKob,kBAtBb,2BAyBI,WAAgB,WACZpb,KAAKkb,UAAU5V,SAAQ,SAAC+J,GAChBA,GAAwB,mBAATA,GACfA,EAAK,EAAK+C,oBA5B1B,yBAiCI,SAAY5Q,IACkC,IAAtCxB,KAAKkb,UAAUG,QAAQ7Z,IACvBxB,KAAKkb,UAAUI,OAAOtb,KAAKkb,UAAUG,QAAQ7Z,GAAW,KAnCpE,uBAuCI,SAAUA,GACNxB,KAAKkb,UAAU3a,KAAKiB,GAEfxB,KAAKiM,OAAL,YACDzK,EAASxB,KAAKoS,mBA3C1B,gGCAasC,EAAb,WACI,WAAY6G,EAAQC,EAAQvL,EAAQ0E,IAAe,eAC/C3U,KAAKkI,OAASqT,EACdvb,KAAK2U,eAAgB,EAGrB3U,KAAKyb,uBAAwB,EAGR,GAAjB9G,GACA3U,KAAK0b,sBAGT1b,KAAKwb,OAASA,EACdxb,KAAK2b,cAAe,EACpB3b,KAAK4b,eAAgB,EACrB5b,KAAKiQ,OAASA,GAAU,MAhBhC,kDAmBI,WAEI,IAAmC,IAA/BjQ,KAAKyb,sBACL,OAAOzb,KAAK2U,cAGhB3U,KAAKyb,uBAAwB,EAE7B,IACIzb,KAAK6b,oBAAsB7b,KAAKkI,OAAO4T,eACzC,MAAO/V,GACL/F,KAAK6b,mBAAoB,EAG7B,IACI7b,KAAK+b,kBAAoB/b,KAAKkI,OAAO8T,aACvC,MAAOjW,GACL/F,KAAK+b,iBAAkB,EAG3B,IAEI/Z,SAASia,OAAS,eAClBjc,KAAK2U,eAA4D,IAA5C3S,SAASia,OAAOZ,QAAQ,eAE7CrZ,SAASia,OAAS,sDACpB,MAAOlW,IAIT,OAAO/F,KAAK2U,gBAjDpB,6BAoDI,SAAgB6G,GACZxb,KAAKwb,OAASA,IArDtB,8BAwDI,SAAiBI,GACb5b,KAAK4b,cAAgBA,IAzD7B,6BA4DI,WACI,OAAI5b,KAAKwb,OACE,IAAMxb,KAAKwb,OAEX,OAhEnB,6BAoEI,SAAgB7L,GACZ3P,KAAK2b,aAAehM,IArE5B,2BAwEI,SAAcuM,EAAaC,EAAaC,EAAYZ,GAChD,IAA2B,IAAvBxb,KAAK2U,cAAT,CACA,IAAI0H,EAAS,GACbD,KAAeA,EAAa,IAAI7Q,MAAiB+Q,QAAQF,EAAWG,UAAY,SAAUF,EAAS,aAAeD,EAAWI,eAC7Hxa,SAASia,OAASC,EAAc,IAAMC,EAAcE,IAAiC,IAAvBrc,KAAK4b,cAA0B,YAAqC,IAAvB5b,KAAK4b,cAAyB,GAAK,UAAY5b,KAAK4b,gBAAmB5b,KAAK2b,aAAe,UAAY,KAAOH,EAAS,WAAaA,EAAS,IAAM,mBA5EtQ,2BA+EI,SAAciB,GACV,IAA2B,IAAvBzc,KAAK2U,cAAyB,MAAO,GACzC,IAAI5N,EAAGlB,EAAGC,EAAI,GAAI4W,EAAaD,EAAa,IAAK1W,EAAI/D,SAASia,OAAOhW,MAAM,KAE3E,IADAwW,EAAa,EACR1V,EAAIhB,EAAEtG,OAAQgd,EAAa1V,EAAG0V,IAAc,CAC7C,IAAK5W,EAAIE,EAAE0W,GAAa,MAAQ5W,EAAE8W,OAAO,IAAK9W,EAAIA,EAAE+W,UAAU,EAAG/W,EAAEpG,QACnE,IAAMoG,EAAEwV,QAAQqB,IAAe5W,EAAEvF,KAAKsF,EAAE+W,UAAUF,EAAWjd,OAAQoG,EAAEpG,SAI3E,GAAgB,GAAZqG,EAAErG,OAAa,CACf,IAAIod,EAAQ3U,OAAOoO,SAASwG,UAAY9a,SAASsU,SAASuG,KAC1DzW,EAAQsW,EAAa,kDACjBG,IACA7a,SAASia,OAAS7V,EAClBpE,SAASia,OAAS7V,EAAQ,aAAeyW,GAIjD,OAAO/W,IAlGf,+BAqGI,SAAkBwB,EAAK7D,GACnB,GAAIzD,KAAK6b,mBAAqBC,eAAeiB,QAAS,IAClDjB,eAAeiB,QAAQzV,EAAK7D,GAC9B,MAAOoC,OAxGjB,kCA4GI,SAAqByB,GACjB,GAAItH,KAAK6b,mBAAqBC,eAAekB,WAAY,IACrDlB,eAAekB,WAAW1V,GAC5B,MAAOzB,OA/GjB,+BAmHI,SAAkBL,GACd,OAAOxF,KAAK6b,mBAAqBC,eAAemB,QAC5CnB,eAAemB,QAAQzX,GAAK,OArHxC,6BAwHI,SAAgB8B,EAAK7D,GACjB,GAAIzD,KAAK+b,iBAAmBC,aAAae,QAAS,IAC9Cf,aAAae,QAAQzV,EAAK7D,GAC5B,MAAOoC,OA3HjB,6BA+HI,SAAgBL,GACZ,OAAOxF,KAAK+b,iBAAmBC,aAAaiB,QACxCjB,aAAaiB,QAAQzX,GAAK,OAjItC,gCAoII,SAAmB8B,GACf,GAAItH,KAAK+b,iBAAmBC,aAAagB,WAAY,IACjDhB,aAAagB,WAAW1V,GAC1B,MAAOzB,OAvIjB,+BA2II,SAAkBqX,GACTld,KAAKoY,kBAAkBpY,KAAKiQ,OAAO,SACpCjQ,KAAK6U,kBAAkB7U,KAAKiQ,OAAO,OAAOiN,KA7ItD,gCAiJI,WACI,OAAOld,KAAKoY,kBAAkBpY,KAAKiQ,OAAO,UAlJlD,mCAqJI,WACI,IAAIzK,EAGJ,OAFAxF,KAAKmd,qBAAuB3X,EAAIxF,KAAKmd,oBACrC3X,IAAMA,EAAIxF,KAAKod,cAAcpd,KAAKiQ,OAAS,QAAQ,IAC5CjQ,KAAKqd,wBAAwB7X,KAzJ5C,2BA4JI,SAAc2X,GAEV,IAAI7N,EAAQ,GAKZ,OAJA9M,OAAO6C,KAAK8X,GAAoB7X,SAAQ,SAAAgC,GACpC,IAAI7D,EAAQ0Z,EAAmB7V,GAC/BgI,EAAM/O,KAAK+G,EAAM,IAAM7D,MAEpB6L,EAAM5J,KAAK,OAnK1B,qCAsKI,SAAwByX,GACpBnd,KAAKsd,cAActd,KAAKiQ,OAAO,OAAQjQ,KAAKud,cAAcJ,IAAqB,EAAOnd,KAAKwd,mBAC3Fxd,KAAKmd,mBAAqBA,IAxKlC,qCA2KI,SAAwBM,GAEpB,GAAIA,IAAqC,IAA1BA,EAAQpC,QAAQ,KAAa,CAIxC,IAHA,IAAIqC,EAAgB,GAChBC,EAAQF,EAAQxX,MAAM,KAEjBsD,EAAI,EAAGA,EAAIoU,EAAMle,OAAS,EAAG8J,IAClCmU,EAAcC,EAAU,EAAJpU,IAAUoU,EAAW,EAAJpU,EAAS,GAGlD,OAAOmU,EAEP,OAAID,EACOxT,KAAK2F,MAAMgO,SAASH,IAEpB,OA1LvB,2WCAaI,YAAb,WAEI,wBAAc,0FACV7d,KAAK8d,IAAM,KACX9d,KAAK+d,IAAM,KAEX/d,KAAK8D,WAAa,GAClB9D,KAAKkd,IAAM,KACXld,KAAKoF,GAAK,KACVpF,KAAKge,KAAO,KACZhe,KAAKoZ,OAAS,GACdpZ,KAAKie,kBAAoB,KACzBje,KAAKiK,KAAO,CACR2F,MAAO1H,OAAO+B,OAAS/B,OAAO+B,KAAK2F,OAAS1H,OAAO+B,KAAKiU,SAAW7T,OAAOlK,UAAUge,UAAY,SAASC,GAAK,OAAO/T,OAAO+T,GAAKD,aAAgBE,EAAEC,WAAaD,EAAEF,SAClKjU,UAAY1H,OAAO+b,QAAUrW,OAAO+B,OAAS/B,OAAO+B,KAAKC,WAAahC,OAAO+B,KAAKuU,SAAWH,EAAEE,QAd3G,oHAkBI,SAAcza,GACV9D,KAAK8D,WAAaA,IAnB1B,gCAsBI,SAAmBoZ,GACfld,KAAKkd,IAAMA,IAvBnB,gCA0BI,WACI,OAAOld,KAAKkd,MA3BpB,oBA8BI,WACI,OAAOld,KAAK8d,MA/BpB,oBAkCI,SAAOA,GACH9d,KAAK8d,IAAMA,IAnCnB,mCAsCI,SAAsB7R,GAClBjM,KAAK8d,IAAM7R,EAAM,KAAW,KAC5BjM,KAAK+d,IAAM9R,EAAM,KAAW,KAC5BjM,KAAKge,KAAO/R,EAAM,MAAY,KAC9BjM,KAAKoF,GAAK6G,EAAM,IAAU,OA1ClC,kCA6CI,WACI,IAAI1G,EAAO,GAkBX,OAhBiB,OAAbvF,KAAK8d,MACLvY,EAAI,IAAUvF,KAAK8d,KAGN,OAAb9d,KAAK+d,MACLxY,EAAI,IAAUvF,KAAK+d,KAGP,OAAZ/d,KAAKoF,KACLG,EAAI,GAASvF,KAAKoF,IAGJ,OAAdpF,KAAKge,OACLzY,EAAI,KAAWvF,KAAKge,MAGjBzY,IAhEf,iCAmEI,SAAoB6T,EAAQqF,GAAI,WAC5Bze,KAAKoZ,OAASA,EAGd,IACI,GAAgC,OAA5BpZ,KAAK8D,WAAW4a,QACpB,CAEI,IAAIC,EAAY,CACZC,IAAK,SAAChc,EAAKic,EAAMpb,GAQb,OANAb,EAAIic,GAAQpb,EAEZ3B,aAAa,EAAKmc,mBAClB,EAAKA,kBAAoBvc,YAAY,WAAO,EAAKod,aAAalc,EAAK6b,KAAQ,MAGpE,IAIfze,KAAK8D,WAAW4a,QAAU,IAAIK,MAAM/e,KAAK8D,WAAW4a,QAAQC,GAGxD3e,KAAK8D,WAAWyO,QAAQC,KAAKkM,QAC7B1e,KAAK8D,WAAWyO,QAAQC,KAAKkM,QAAU1e,KAAK8D,WAAW4a,QAChDA,UACPA,QAAU1e,KAAK8D,WAAW4a,SAI9B1e,KAAK8e,aAAa9e,KAAK8D,WAAW4a,UAEzC,MAAMtP,GACH4P,QAAQC,IAAI7P,MArGxB,qBA0GI,SAAA8P,UACI,GAAIlf,KAAKoZ,OAAO3Z,OAAS,EAAG,CACxB,IAAImX,QAAU,GACVC,WAAa,KAEjB,IAAK,IAAInW,SAASV,KAAKoZ,OACnB,IAGQvC,YADgD,IAAhD7W,KAAKoZ,OAAO1Y,OAAOqW,IAAIsE,QAAQ,YAClBrb,KAAK8D,WAAW4a,QAAQ1e,KAAKoZ,OAAO1Y,OAAOqW,IAAI7N,QAAQ,WAAW,MAAQ,KAE1E4N,KAAK9W,KAAKoZ,OAAO1Y,OAAOqW,KAGrC,MAAOF,YAAoE,KAAfA,aAC5DD,QAAQ5W,KAAKoZ,OAAO1Y,OAAO0E,IAAMyR,YAEvC,MAAMzH,IAKZ,OAAOwH,QAEX,OAAO,OAlIf,gCAqII,WACI,IAAIuI,EAAS,GAUb,OARiB,OAAbnf,KAAK8d,MACLqB,EAASA,EAAS,UAAYnf,KAAK8d,KAGrB,OAAd9d,KAAKge,MAA6B,OAAZhe,KAAKoF,KAC3B+Z,EAASA,EAAS,WAAanf,KAAKoF,GAAM,IAAMpF,KAAKge,MAGlDmB,IAhJf,0BAmJI,SAAaC,EAAMX,GAEf,IAAIY,EAAWrf,KAAKkf,QAAQE,GAExBtQ,EAAM,IAAIC,eACdD,EAAItK,KAAM,OAAQxE,KAAK8D,WAAWyO,QAAQC,KAAKC,aAAe,qBAAuBzS,KAAKsf,sBAAsB,GAChHxQ,EAAIE,iBAAiB,eAAgB,qCACrCF,EAAIG,KAAM,QAAUC,mBAAoBlP,KAAKiK,KAAKC,UAAUmV,UAE1C,IAAPZ,GAAoC,OAAdze,KAAKge,MAA6B,OAAZhe,KAAKoF,IACxDqZ,EAAGY,KA7Jf,gCAiKI,SAAmBjd,EAAMmd,GACrBvf,KAAKoF,GAAKhD,EAAKgD,GACfpF,KAAKge,KAAO5b,EAAK4b,KAED,OAAZhe,KAAKoF,IAAgBma,IACrBvf,KAAK+d,IAAMnS,KAAK4T,MAAMjU,KAAKmN,MAAQ,UAtK/C,8FCDA,MAAM+G,EAAc,UACdC,EAAY,QACZC,EAAc,QACdC,EAAe,2BACfC,EAAgB,WAChBC,EAAc,qCACdC,EAAe,QACfC,EAAe,iBACfC,EAAgB,wBAChBC,EAAkB,cAClBC,EAAoB,QACpBC,EAAa,cACbC,EAAc,gCACdC,EAAe,yBACrB,SAASrS,EAAMsS,EAAOC,GAClB,OAAOD,EAAME,KAAKD,GAEP,SAASpP,EAASoP,GAG7B,IAAIE,GAFJF,EACIA,IAAmC,oBAAdvY,UAA4BA,UAAUuY,UAAY,KACvDva,MAAM,cACJ,IAAXya,EAAI,KACXF,EAAYE,EAAI,IAEpBA,EAAMF,EAAUva,MAAM,gBACA,IAAXya,EAAI,KACXF,EAAYE,EAAI,IAEpB,MAAMC,EAAS,CACXC,MAAO,CACHC,MAAO5S,EAAMwR,EAAae,KAAevS,EAAM+R,EAAcQ,GAC7DM,KAAM7S,EAAMyR,EAAWc,GACvBO,QAAS9S,EAAMwR,EAAae,IACxBvS,EAAM0R,EAAaa,KAClBvS,EAAM+R,EAAcQ,GACzBQ,QAAS/S,EAAMwR,EAAae,IACxBvS,EAAMyR,EAAWc,IACjBvS,EAAM0R,EAAaa,MAClBvS,EAAM+R,EAAcQ,IAE7BS,OAAQ,CACJJ,MAAO5S,EAAM6R,EAAaU,GAC1BO,QAAS9S,EAAM6R,EAAaU,IAAcvS,EAAM8R,EAAcS,GAC9DQ,OAAQ/S,EAAM6R,EAAaU,IAAcvS,EAAM8R,EAAcS,IAEjEU,QAAS,CACLL,OAAS5S,EAAM+R,EAAcQ,IAAcvS,EAAM6R,EAAaU,KACxDvS,EAAM+R,EAAcQ,IAAcvS,EAAM2R,EAAcY,GAC5DO,QAAS9S,EAAM+R,EAAcQ,KACxBvS,EAAM6R,EAAaU,KACnBvS,EAAM2R,EAAcY,KACpBvS,EAAM8R,EAAcS,IAAcvS,EAAM4R,EAAeW,IAC5DQ,QAAU/S,EAAM+R,EAAcQ,KACzBvS,EAAM6R,EAAaU,IAChBvS,EAAM8R,EAAcS,IACpBvS,EAAM2R,EAAcY,IACpBvS,EAAM4R,EAAeW,KACzBvS,EAAM,cAAeuS,IAE7BW,QAAS,CACLN,MAAO5S,EAAM+R,EAAcQ,GAC3BO,OAAQ9S,EAAMgS,EAAeO,GAC7BQ,OAAQ/S,EAAM+R,EAAcQ,IAAcvS,EAAMgS,EAAeO,IAEnEY,MAAO,CACHC,WAAYpT,EAAMiS,EAAiBM,GACnCc,aAAcrT,EAAMkS,EAAmBK,GACvCe,MAAOtT,EAAMmS,EAAYI,GACzBgB,QAASvT,EAAMqS,EAAcE,GAC7BiB,OAAQxT,EAAMoS,EAAaG,GAC3BQ,OAAQ/S,EAAMiS,EAAiBM,IAC3BvS,EAAMkS,EAAmBK,IACzBvS,EAAMmS,EAAYI,IAClBvS,EAAMqS,EAAcE,IACpBvS,EAAMoS,EAAaG,IAE3BkB,KAAK,EACLb,OAAO,EACPE,QAAQ,GAWZ,OATAJ,EAAOe,IACHf,EAAOC,MAAMI,QACTL,EAAOO,QAAQF,QACfL,EAAOQ,QAAQH,QACfL,EAAOS,MAAMJ,OACrBL,EAAOE,MACHF,EAAOC,MAAMC,OAASF,EAAOO,QAAQL,OAASF,EAAOQ,QAAQN,MACjEF,EAAOI,OACHJ,EAAOC,MAAMG,QAAUJ,EAAOO,QAAQH,QAAUJ,EAAOQ,QAAQJ,OAC5DJ,sCCvFX1gB,EAAOC,QAAU,EAAjB,yCCAA,IAAIP,EAAO,EAAQ,KAEnB,SAASgiB,KAmBT,IAAIC,EAAa,KACbC,EAAW,GA6Bf,SAASC,EAAQC,GACf,GAAoB,iBAAT/hB,KACT,MAAM,IAAIiD,UAAU,wCAEtB,GAAkB,mBAAP8e,EACT,MAAM,IAAI9e,UAAU,oDAEtBjD,KAAKgiB,GAAK,EACVhiB,KAAKiiB,GAAK,EACVjiB,KAAKkiB,GAAK,KACVliB,KAAKmiB,GAAK,KACNJ,IAAOJ,GACXS,EAAUL,EAAI/hB,MAsBhB,SAASqiB,EAAOjhB,EAAMkhB,GACpB,KAAmB,IAAZlhB,EAAK6gB,IACV7gB,EAAOA,EAAK8gB,GAKd,GAHIJ,EAAQS,IACVT,EAAQS,GAAGnhB,GAEG,IAAZA,EAAK6gB,GACP,OAAgB,IAAZ7gB,EAAK4gB,IACP5gB,EAAK4gB,GAAK,OACV5gB,EAAK+gB,GAAKG,IAGI,IAAZlhB,EAAK4gB,IACP5gB,EAAK4gB,GAAK,OACV5gB,EAAK+gB,GAAK,CAAC/gB,EAAK+gB,GAAIG,UAGtBlhB,EAAK+gB,GAAG5hB,KAAK+hB,IAMjB,SAAwBlhB,EAAMkhB,GAC5B3iB,GAAK,WACH,IAAI8e,EAAiB,IAAZrd,EAAK6gB,GAAWK,EAASE,YAAcF,EAASG,WACzD,GAAW,OAAPhE,EAAJ,CAQA,IAAIiE,EAxFR,SAAoBX,EAAIvc,GACtB,IACE,OAAOuc,EAAGvc,GACV,MAAOmd,GAEP,OADAf,EAAae,EACNd,GAmFGe,CAAWnE,EAAIrd,EAAK8gB,IAC1BQ,IAAQb,EACVgB,EAAOP,EAASQ,QAASlB,GAEzBmB,EAAQT,EAASQ,QAASJ,QAXV,IAAZthB,EAAK6gB,GACPc,EAAQT,EAASQ,QAAS1hB,EAAK8gB,IAE/BW,EAAOP,EAASQ,QAAS1hB,EAAK8gB,OAVpCc,CAAe5hB,EAAMkhB,GAsBvB,SAASS,EAAQ3hB,EAAM6hB,GAErB,GAAIA,IAAa7hB,EACf,OAAOyhB,EACLzhB,EACA,IAAI6B,UAAU,8CAGlB,GACEggB,IACqB,iBAAbA,GAA6C,mBAAbA,GACxC,CACA,IAAIxa,EArHR,SAAiB7F,GACf,IACE,OAAOA,EAAI6F,KACX,MAAOka,GAEP,OADAf,EAAae,EACNd,GAgHIqB,CAAQD,GACnB,GAAIxa,IAASoZ,EACX,OAAOgB,EAAOzhB,EAAMwgB,GAEtB,GACEnZ,IAASrH,EAAKqH,MACdwa,aAAoBnB,EAKpB,OAHA1gB,EAAK6gB,GAAK,EACV7gB,EAAK8gB,GAAKe,OACVE,EAAO/hB,GAEF,GAAoB,mBAATqH,EAEhB,YADA2Z,EAAU3Z,EAAK2a,KAAKH,GAAW7hB,GAInCA,EAAK6gB,GAAK,EACV7gB,EAAK8gB,GAAKe,EACVE,EAAO/hB,GAGT,SAASyhB,EAAOzhB,EAAM6hB,GACpB7hB,EAAK6gB,GAAK,EACV7gB,EAAK8gB,GAAKe,EACNnB,EAAQuB,IACVvB,EAAQuB,GAAGjiB,EAAM6hB,GAEnBE,EAAO/hB,GAET,SAAS+hB,EAAO/hB,GAKd,GAJgB,IAAZA,EAAK4gB,KACPK,EAAOjhB,EAAMA,EAAK+gB,IAClB/gB,EAAK+gB,GAAK,MAEI,IAAZ/gB,EAAK4gB,GAAU,CACjB,IAAK,IAAIzY,EAAI,EAAGA,EAAInI,EAAK+gB,GAAG1iB,OAAQ8J,IAClC8Y,EAAOjhB,EAAMA,EAAK+gB,GAAG5Y,IAEvBnI,EAAK+gB,GAAK,MAId,SAASmB,EAAQd,EAAaC,EAAYK,GACxC9iB,KAAKwiB,YAAqC,mBAAhBA,EAA6BA,EAAc,KACrExiB,KAAKyiB,WAAmC,mBAAfA,EAA4BA,EAAa,KAClEziB,KAAK8iB,QAAUA,EASjB,SAASV,EAAUL,EAAIe,GACrB,IAAIS,GAAO,EACPC,EA7JN,SAAoBzB,EAAIvc,EAAGuB,GACzB,IACEgb,GA2JuB,SAAUte,GAC7B8f,IACJA,GAAO,EACPR,EAAQD,EAASrf,OAChB,SAAUggB,GACPF,IACJA,GAAO,EACPV,EAAOC,EAASW,OAjKhB,MAAOd,GAEP,OADAf,EAAae,EACNd,GAwJC6B,CAAW3B,GAShBwB,GAAQC,IAAQ3B,IACnB0B,GAAO,EACPV,EAAOC,EAASlB,IA/JpB3hB,EAAOC,QAAU4hB,EAgBjBA,EAAQS,GAAK,KACbT,EAAQuB,GAAK,KACbvB,EAAQ6B,GAAKhC,EAEbG,EAAQ3hB,UAAUsI,KAAO,SAAS+Z,EAAaC,GAC7C,GAAIziB,KAAK+C,cAAgB+e,EACvB,OAOJ,SAAkB1gB,EAAMohB,EAAaC,GACnC,OAAO,IAAIrhB,EAAK2B,aAAY,SAAUggB,EAASF,GAC7C,IAAIW,EAAM,IAAI1B,EAAQH,GACtB6B,EAAI/a,KAAKsa,EAASF,GAClBR,EAAOjhB,EAAM,IAAIkiB,EAAQd,EAAaC,EAAYe,OAX3CI,CAAS5jB,KAAMwiB,EAAaC,GAErC,IAAIe,EAAM,IAAI1B,EAAQH,GAEtB,OADAU,EAAOriB,KAAM,IAAIsjB,EAAQd,EAAaC,EAAYe,IAC3CA,sCC3ET,IAAI1B,EAAU,EAAQ,MAEtB7hB,EAAOC,QAAU4hB,EACjBA,EAAQ3hB,UAAUojB,KAAO,SAAUf,EAAaC,GAC9C,IAAIrhB,EAAO2Z,UAAUtb,OAASO,KAAKyI,KAAK8B,MAAMvK,KAAM+a,WAAa/a,KACjEoB,EAAKqH,KAAK,MAAM,SAAU2G,GACxB1N,YAAW,WACT,MAAM0N,IACL,0CCNP,IAAI0S,EAAU,EAAQ,MAEtB7hB,EAAOC,QAAU4hB,EAIjB,IAAI+B,EAAOC,GAAa,GACpBC,EAAQD,GAAa,GACrBE,EAAOF,EAAa,MACpBG,EAAYH,OAAa1O,GACzB8O,EAAOJ,EAAa,GACpBK,EAAcL,EAAa,IAE/B,SAASA,EAAargB,GACpB,IAAIlB,EAAI,IAAIuf,EAAQA,EAAQ6B,IAG5B,OAFAphB,EAAE0f,GAAK,EACP1f,EAAE2f,GAAKze,EACAlB,EAETuf,EAAQiB,QAAU,SAAUtf,GAC1B,GAAIA,aAAiBqe,EAAS,OAAOre,EAErC,GAAc,OAAVA,EAAgB,OAAOugB,EAC3B,QAAc5O,IAAV3R,EAAqB,OAAOwgB,EAChC,IAAc,IAAVxgB,EAAgB,OAAOogB,EAC3B,IAAc,IAAVpgB,EAAiB,OAAOsgB,EAC5B,GAAc,IAAVtgB,EAAa,OAAOygB,EACxB,GAAc,KAAVzgB,EAAc,OAAO0gB,EAEzB,GAAqB,iBAAV1gB,GAAuC,mBAAVA,EACtC,IACE,IAAIgF,EAAOhF,EAAMgF,KACjB,GAAoB,mBAATA,EACT,OAAO,IAAIqZ,EAAQrZ,EAAK2a,KAAK3f,IAE/B,MAAOkf,GACP,OAAO,IAAIb,GAAQ,SAAUiB,EAASF,GACpCA,EAAOF,MAIb,OAAOmB,EAAargB,IAGtBqe,EAAQsC,IAAM,SAAUC,GACtB,IAAI7R,EAAOkB,MAAMvT,UAAUmkB,MAAMlkB,KAAKikB,GAEtC,OAAO,IAAIvC,GAAQ,SAAUiB,EAASF,GACpC,GAAoB,IAAhBrQ,EAAK/S,OAAc,OAAOsjB,EAAQ,IACtC,IAAIwB,EAAY/R,EAAK/S,OACrB,SAAS+jB,EAAIja,EAAG4R,GACd,GAAIA,IAAuB,iBAARA,GAAmC,mBAARA,GAAqB,CACjE,GAAIA,aAAe2G,GAAW3G,EAAI1S,OAASqZ,EAAQ3hB,UAAUsI,KAAM,CACjE,KAAkB,IAAX0S,EAAI8G,IACT9G,EAAMA,EAAI+G,GAEZ,OAAe,IAAX/G,EAAI8G,GAAiBuB,EAAIja,EAAG4R,EAAI+G,KACrB,IAAX/G,EAAI8G,IAAUY,EAAO1H,EAAI+G,SAC7B/G,EAAI1S,MAAK,SAAU0S,GACjBqI,EAAIja,EAAG4R,KACN0H,IAGH,IAAIpa,EAAO0S,EAAI1S,KACf,GAAoB,mBAATA,EAKT,YAJQ,IAAIqZ,EAAQrZ,EAAK2a,KAAKjI,IAC5B1S,MAAK,SAAU0S,GACfqI,EAAIja,EAAG4R,KACN0H,GAKTrQ,EAAKjJ,GAAK4R,EACU,KAAdoJ,GACJxB,EAAQvQ,GAGZ,IAAK,IAAIjJ,EAAI,EAAGA,EAAIiJ,EAAK/S,OAAQ8J,IAC/Bia,EAAIja,EAAGiJ,EAAKjJ,QAKlBuY,EAAQe,OAAS,SAAUpf,GACzB,OAAO,IAAIqe,GAAQ,SAAUiB,EAASF,GACpCA,EAAOpf,OAIXqe,EAAQ0C,KAAO,SAAUC,GACvB,OAAO,IAAI3C,GAAQ,SAAUiB,EAASF,GACpC4B,EAAOnf,SAAQ,SAAS7B,GACtBqe,EAAQiB,QAAQtf,GAAOgF,KAAKsa,EAASF,UAO3Cf,EAAQ3hB,UAAiB,MAAI,SAAUsiB,GACrC,OAAOziB,KAAKyI,KAAK,KAAMga,uCCvGzB,IAAIX,EAAU,EAAQ,MAEtB7hB,EAAOC,QAAU4hB,EACjBA,EAAQ3hB,UAAUukB,QAAU,SAAUzf,GACpC,OAAOjF,KAAKyI,MAAK,SAAUhF,GACzB,OAAOqe,EAAQiB,QAAQ9d,KAAKwD,MAAK,WAC/B,OAAOhF,QAER,SAAU2L,GACX,OAAO0S,EAAQiB,QAAQ9d,KAAKwD,MAAK,WAC/B,MAAM2G,4CCVZnP,EAAOC,QAAU,EAAjB,MACA,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,MACR,EAAQ,yCCFR,IAAI4hB,EAAU,EAAQ,MAClBniB,EAAO,EAAQ,MAEnBM,EAAOC,QAAU4hB,EAIjBA,EAAQ6C,UAAY,SAAU5C,EAAI6C,GAChC,MAC2B,iBAAlBA,GAA8BA,IAAkBC,EAAAA,EAa3D,SAA4B9C,EAAI6C,GAE9B,IADA,IAAIpS,EAAO,GACFjJ,EAAI,EAAGA,EAAIqb,EAAerb,IACjCiJ,EAAKjS,KAAK,IAAMgJ,GAElB,IAAI1E,EAAO,CACT,oBAAsB2N,EAAK9M,KAAK,KAAO,MACvC,mBACA,yCACA,qBACA,CAAC,QAAQof,OAAOtS,GAAMsS,OAAO,CAACC,IAAarf,KAAK,KAChD,KACA,aACA,4DACA,iCACA,eACA,MACA,MACAA,KAAK,IACP,OAAOsf,SAAS,CAAC,UAAW,MAAOngB,EAA5BmgB,CAAkClD,EAASC,GA9BzCkD,CAAmBlD,EAAI6C,GAgClC,SAA+B7C,GAG7B,IAFA,IAAImD,EAAWtZ,KAAKC,IAAIkW,EAAGtiB,OAAS,EAAG,GACnC+S,EAAO,GACFjJ,EAAI,EAAGA,EAAI2b,EAAU3b,IAC5BiJ,EAAKjS,KAAK,IAAMgJ,GAElB,IAAI1E,EAAO,CACT,oBAAsB2N,EAAK9M,KAAK,KAAO,MACvC,mBACA,YACA,oCACA,0BAA4Bwf,EAAW,MACvC,0CACA,+CACA,0BACA,IACA,IACA,yCACA,YAAcH,EAAa,IAC3B,WACA,uBACAvS,EAAKsS,OAAO,CAAC,UAAUK,KAAI,SAAUC,EAAG1kB,GACtC,MACE,QAAU,EAAV,kBACmB,CAAC,QAAQokB,OAAOtS,EAAK8R,MAAM,EAAG5jB,IAAQokB,OAAO,MAAMpf,KAAK,KAFtE,cAKNA,KAAK,IACR,WACA,wBACA,8BACA,IAEA,aACA,4DACA,iCACA,eACA,MACA,MACAA,KAAK,IAEP,OAAOsf,SACL,CAAC,UAAW,MACZngB,EAFKmgB,CAGLlD,EAASC,GA1EFsD,CAAsBtD,IAIjC,IAAIgD,EAAa,gEAyEjBjD,EAAQwD,QAAU,SAAUvD,GAC1B,OAAO,WACL,IAAIvP,EAAOkB,MAAMvT,UAAUmkB,MAAMlkB,KAAK2a,WAClCvZ,EAC+B,mBAA1BgR,EAAKA,EAAK/S,OAAS,GAAoB+S,EAAK1S,MAAQ,KACzDylB,EAAMvlB,KACV,IACE,OAAO+hB,EAAGxX,MAAMvK,KAAM+a,WAAWuK,QAAQ9jB,EAAU+jB,GACnD,MAAO5C,GACP,GAAInhB,MAAAA,EACF,OAAO,IAAIsgB,GAAQ,SAAUiB,EAASF,GACpCA,EAAOF,MAGThjB,GAAK,WACH6B,EAASpB,KAAKmlB,EAAK5C,SAO7Bb,EAAQ3hB,UAAUmlB,QAAU,SAAU9jB,EAAU+jB,GAC9C,GAAuB,mBAAZ/jB,EAAwB,OAAOxB,KAE1CA,KAAKyI,MAAK,SAAUhF,GAClB9D,GAAK,WACH6B,EAASpB,KAAKmlB,EAAK,KAAM9hB,SAE1B,SAAU2L,GACXzP,GAAK,WACH6B,EAASpB,KAAKmlB,EAAKnW,6CC5HzB,IAAI0S,EAAU,EAAQ,MAEtB7hB,EAAOC,QAAU4hB,EACjBA,EAAQ0D,kBAAoB,WAC1B1D,EAAQ3hB,UAAUslB,UAAY,WAC5B,OAA0B,GAAnBzlB,KAAK0lB,YAGd5D,EAAQ3hB,UAAUwlB,YAAc,WAC9B,OAA0B,GAAnB3lB,KAAK0lB,YAGd5D,EAAQ3hB,UAAUylB,WAAa,WAC7B,OAA0B,GAAnB5lB,KAAK0lB,YAGd5D,EAAQ3hB,UAAU0lB,SAAW,WAC3B,GAAgB,IAAZ7lB,KAAKiiB,GACP,OAAOjiB,KAAKkiB,GAAG2D,WAGjB,IAAK7lB,KAAK2lB,cACR,MAAM,IAAIG,MAAM,iDAGlB,OAAO9lB,KAAKkiB,IAGdJ,EAAQ3hB,UAAU4lB,UAAY,WAC5B,GAAgB,IAAZ/lB,KAAKiiB,GACP,OAAOjiB,KAAKkiB,GAAG6D,YAGjB,IAAK/lB,KAAK4lB,aACR,MAAM,IAAIE,MAAM,4DAGlB,OAAO9lB,KAAKkiB,IAGdJ,EAAQ3hB,UAAUulB,SAAW,WAC3B,OAAgB,IAAZ1lB,KAAKiiB,GACAjiB,KAAKkiB,GAAGwD,YAEA,IAAb1lB,KAAKiiB,KAA0B,IAAbjiB,KAAKiiB,GAClB,EAGFjiB,KAAKiiB,KAIhBH,EAAQkE,mBAAqB,WAC3BlE,EAAQ3hB,UAAUslB,eAAYrQ,EAC9B0M,EAAQ3hB,UAAUwlB,iBAAcvQ,EAChC0M,EAAQ3hB,UAAUylB,gBAAaxQ,EAC/B0M,EAAQ3hB,UAAU0lB,cAAWzQ,EAC7B0M,EAAQ3hB,UAAU4lB,eAAY3Q,EAC9B0M,EAAQ3hB,UAAUulB,cAAWtQ,yBC5D/B,OAOE,SAAUlV,GACR,aAQA,SAAS+lB,KAGT,IAAIC,EAAQD,EAAa9lB,UACrBgmB,EAAsBjmB,EAAQ+lB,aAUlC,SAASG,EAAgBlL,EAAWT,GAEhC,IADA,IAAIlR,EAAI2R,EAAUzb,OACX8J,KACH,GAAI2R,EAAU3R,GAAGkR,WAAaA,EAC1B,OAAOlR,EAIf,OAAQ,EAUZ,SAAS8c,EAAMxS,GACX,OAAO,WACH,OAAO7T,KAAK6T,GAAMtJ,MAAMvK,KAAM+a,YAsEtC,SAASuL,EAAiB7L,GACtB,MAAwB,mBAAbA,GAA2BA,aAAoBvM,WAE/CuM,GAAgC,iBAAbA,IACnB6L,EAAgB7L,EAASA,UA7DxCyL,EAAMK,aAAe,SAAsBC,GACvC,IACIC,EACAnf,EAFAyS,EAAS/Z,KAAK0mB,aAMlB,GAAIF,aAAetY,OAEf,IAAK5G,KADLmf,EAAW,GACC1M,EACJA,EAAOvS,eAAeF,IAAQkf,EAAI/F,KAAKnZ,KACvCmf,EAASnf,GAAOyS,EAAOzS,SAK/Bmf,EAAW1M,EAAOyM,KAASzM,EAAOyM,GAAO,IAG7C,OAAOC,GASXP,EAAMS,iBAAmB,SAA0BzL,GAC/C,IACI3R,EADAqd,EAAgB,GAGpB,IAAKrd,EAAI,EAAGA,EAAI2R,EAAUzb,OAAQ8J,GAAK,EACnCqd,EAAcrmB,KAAK2a,EAAU3R,GAAGkR,UAGpC,OAAOmM,GASXV,EAAMW,qBAAuB,SAA8BL,GACvD,IACIC,EADAvL,EAAYlb,KAAKumB,aAAaC,GAQlC,OALItL,aAAqBxH,SACrB+S,EAAW,IACFD,GAAOtL,GAGbuL,GAAYvL,GAuBvBgL,EAAM/T,YAAc,SAAqBqU,EAAK/L,GAC1C,IAAK6L,EAAgB7L,GACjB,MAAM,IAAIxX,UAAU,+BAGxB,IAEIqE,EAFA4T,EAAYlb,KAAK6mB,qBAAqBL,GACtCM,EAAwC,iBAAbrM,EAG/B,IAAKnT,KAAO4T,EACJA,EAAU1T,eAAeF,KAAuD,IAA/C8e,EAAgBlL,EAAU5T,GAAMmT,IACjES,EAAU5T,GAAK/G,KAAKumB,EAAoBrM,EAAW,CAC/CA,SAAUA,EACVsM,MAAM,IAKlB,OAAO/mB,MAMXkmB,EAAMc,GAAKX,EAAM,eAUjBH,EAAMe,gBAAkB,SAAyBT,EAAK/L,GAClD,OAAOza,KAAKmS,YAAYqU,EAAK,CACzB/L,SAAUA,EACVsM,MAAM,KAOdb,EAAMa,KAAOV,EAAM,mBASnBH,EAAMgB,YAAc,SAAqBV,GAErC,OADAxmB,KAAKumB,aAAaC,GACXxmB,MASXkmB,EAAMiB,aAAe,SAAsBC,GACvC,IAAK,IAAI7d,EAAI,EAAGA,EAAI6d,EAAK3nB,OAAQ8J,GAAK,EAClCvJ,KAAKknB,YAAYE,EAAK7d,IAE1B,OAAOvJ,MAWXkmB,EAAMmB,eAAiB,SAAwBb,EAAK/L,GAChD,IACI/Z,EACA4G,EAFA4T,EAAYlb,KAAK6mB,qBAAqBL,GAI1C,IAAKlf,KAAO4T,EACJA,EAAU1T,eAAeF,KAGV,KAFf5G,EAAQ0lB,EAAgBlL,EAAU5T,GAAMmT,KAGpCS,EAAU5T,GAAKgU,OAAO5a,EAAO,GAKzC,OAAOV,MAMXkmB,EAAMoB,IAAMjB,EAAM,kBAYlBH,EAAMqB,aAAe,SAAsBf,EAAKtL,GAE5C,OAAOlb,KAAKwnB,qBAAoB,EAAOhB,EAAKtL,IAahDgL,EAAMuB,gBAAkB,SAAyBjB,EAAKtL,GAElD,OAAOlb,KAAKwnB,qBAAoB,EAAMhB,EAAKtL,IAe/CgL,EAAMsB,oBAAsB,SAA6BnZ,EAAQmY,EAAKtL,GAClE,IAAI3R,EACA9F,EACAikB,EAASrZ,EAASrO,KAAKqnB,eAAiBrnB,KAAKmS,YAC7CwV,EAAWtZ,EAASrO,KAAKynB,gBAAkBznB,KAAKunB,aAGpD,GAAmB,iBAARf,GAAsBA,aAAetY,OAmB5C,IADA3E,EAAI2R,EAAUzb,OACP8J,KACHme,EAAOtnB,KAAKJ,KAAMwmB,EAAKtL,EAAU3R,SAnBrC,IAAKA,KAAKid,EACFA,EAAIhf,eAAe+B,KAAO9F,EAAQ+iB,EAAIjd,MAEjB,mBAAV9F,EACPikB,EAAOtnB,KAAKJ,KAAMuJ,EAAG9F,GAIrBkkB,EAASvnB,KAAKJ,KAAMuJ,EAAG9F,IAevC,OAAOzD,MAYXkmB,EAAM0B,YAAc,SAAqBpB,GACrC,IAEIlf,EAFAf,SAAcigB,EACdzM,EAAS/Z,KAAK0mB,aAIlB,GAAa,WAATngB,SAEOwT,EAAOyM,QAEb,GAAIA,aAAetY,OAEpB,IAAK5G,KAAOyS,EACJA,EAAOvS,eAAeF,IAAQkf,EAAI/F,KAAKnZ,WAChCyS,EAAOzS,eAMftH,KAAK6nB,QAGhB,OAAO7nB,MAQXkmB,EAAM4B,mBAAqBzB,EAAM,eAcjCH,EAAMzb,UAAY,SAAmB+b,EAAKhU,GACtC,IACI0I,EACAT,EACAlR,EACAjC,EAJAygB,EAAe/nB,KAAK6mB,qBAAqBL,GAO7C,IAAKlf,KAAOygB,EACR,GAAIA,EAAavgB,eAAeF,GAG5B,IAFA4T,EAAY6M,EAAazgB,GAAKgd,MAAM,GAE/B/a,EAAI,EAAGA,EAAI2R,EAAUzb,OAAQ8J,KAKR,KAFtBkR,EAAWS,EAAU3R,IAERwd,MACT/mB,KAAKqnB,eAAeb,EAAK/L,EAASA,UAG3BA,EAASA,SAASlQ,MAAMvK,KAAMwS,GAAQ,MAEhCxS,KAAKgoB,uBAClBhoB,KAAKqnB,eAAeb,EAAK/L,EAASA,UAMlD,OAAOza,MAMXkmB,EAAM+B,QAAU5B,EAAM,aAUtBH,EAAMgC,KAAO,SAAc1B,GACvB,IAAIhU,EAAOkB,MAAMvT,UAAUmkB,MAAMlkB,KAAK2a,UAAW,GACjD,OAAO/a,KAAKyK,UAAU+b,EAAKhU,IAW/B0T,EAAMiC,mBAAqB,SAA4B1kB,GAEnD,OADAzD,KAAKooB,iBAAmB3kB,EACjBzD,MAWXkmB,EAAM8B,oBAAsB,WACxB,OAAIhoB,KAAKwH,eAAe,qBACbxH,KAAKooB,kBAapBlC,EAAMQ,WAAa,WACf,OAAO1mB,KAAK6nB,UAAY7nB,KAAK6nB,QAAU,KAQ3C5B,EAAaoC,WAAa,WAEtB,OADAnoB,EAAQ+lB,aAAeE,EAChBF,QAON,KAFD,aACI,OAAOA,GACV,8BAtdR,CA8dmB,oBAAX/d,OAAyBA,OAASlI,MAAQ,uCCrepC,SAASsoB,EAAgBC,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIvlB,UAAU,wGCFxB,SAASwlB,EAAkBC,EAAQC,GACjC,IAAK,IAAIpf,EAAI,EAAGA,EAAIof,EAAMlpB,OAAQ8J,IAAK,CACrC,IAAIqf,EAAaD,EAAMpf,GACvBqf,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWjlB,cAAe,EACtB,UAAWilB,IAAYA,EAAWllB,UAAW,GACjDlB,OAAOsmB,eAAeJ,EAAQE,EAAWthB,IAAKshB,IAInC,SAASG,EAAaP,EAAaQ,EAAYC,GAG5D,OAFID,GAAYP,EAAkBD,EAAYroB,UAAW6oB,GACrDC,GAAaR,EAAkBD,EAAaS,GACzCT,oCCZLU,yBAA2B,GCD3BC,WACAC,kBDGJ,SAASC,oBAAoBC,GAE5B,IAAIC,EAAeL,yBAAyBI,GAC5C,QAAqBlU,IAAjBmU,EACH,OAAOA,EAAarpB,QAGrB,IAAID,EAASipB,yBAAyBI,GAAY,CAGjDppB,QAAS,IAOV,OAHAspB,oBAAoBF,GAAUlpB,KAAKH,EAAOC,QAASD,EAAQA,EAAOC,QAASmpB,qBAGpEppB,EAAOC,QAIfmpB,oBAAoBI,EAAID,oBExBxBH,oBAAoBK,EAAI,SAASzpB,GAChC,IAAI0pB,EAAS1pB,GAAUA,EAAO2pB,WAC7B,WAAa,OAAO3pB,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADAopB,oBAAoBxjB,EAAE8jB,EAAQ,CAAEnkB,EAAGmkB,IAC5BA,GCLRN,oBAAoBxjB,EAAI,SAAS3F,EAAS2pB,GACzC,IAAI,IAAIviB,KAAOuiB,EACXR,oBAAoB/mB,EAAEunB,EAAYviB,KAAS+hB,oBAAoB/mB,EAAEpC,EAASoH,IAC5E9E,OAAOsmB,eAAe5oB,EAASoH,EAAK,CAAEuhB,YAAY,EAAMiB,IAAKD,EAAWviB,MCJ3E+hB,oBAAoBpkB,EAAI,GAGxBokB,oBAAoBtjB,EAAI,SAASgkB,GAChC,OAAOjI,QAAQsC,IAAI5hB,OAAO6C,KAAKgkB,oBAAoBpkB,GAAG+kB,QAAO,SAASC,EAAU3iB,GAE/E,OADA+hB,oBAAoBpkB,EAAEqC,GAAKyiB,EAASE,GAC7BA,IACL,MCNJZ,oBAAoBa,EAAI,SAASH,GAEhC,MAAY,CAAC,GAAK,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,uBAAuB,IAAM,wBAAwBA,GAAW,OCHjQV,oBAAoBloB,EAAI,WACvB,GAA0B,iBAAfgpB,WAAyB,OAAOA,WAC3C,IACC,OAAOnqB,MAAQ,IAAIglB,SAAS,cAAb,GACd,MAAOjf,GACR,GAAsB,iBAAXmC,OAAqB,OAAOA,QALjB,GCAxBmhB,oBAAoB/mB,EAAI,SAASM,EAAKic,GAAQ,OAAOrc,OAAOrC,UAAUqH,eAAepH,KAAKwC,EAAKic,INA3FsK,WAAa,GACbC,kBAAoB,kBAExBC,oBAAoBe,EAAI,SAAS7b,EAAKgV,EAAMjc,EAAKyiB,GAChD,GAAGZ,WAAW5a,GAAQ4a,WAAW5a,GAAKhO,KAAKgjB,OAA3C,CACA,IAAI8G,EAAQC,EACZ,QAAWlV,IAAR9N,EAEF,IADA,IAAIijB,EAAUvoB,SAASqE,qBAAqB,UACpCkD,EAAI,EAAGA,EAAIghB,EAAQ9qB,OAAQ8J,IAAK,CACvC,IAAIqB,EAAI2f,EAAQhhB,GAChB,GAAGqB,EAAE4f,aAAa,QAAUjc,GAAO3D,EAAE4f,aAAa,iBAAmBpB,kBAAoB9hB,EAAK,CAAE+iB,EAASzf,EAAG,OAG1Gyf,IACHC,GAAa,GACbD,EAASroB,SAAS8E,cAAc,WAEzB2jB,QAAU,QACjBJ,EAAOK,QAAU,IACbrB,oBAAoBsB,IACvBN,EAAO9iB,aAAa,QAAS8hB,oBAAoBsB,IAElDN,EAAO9iB,aAAa,eAAgB6hB,kBAAoB9hB,GACxD+iB,EAAOnjB,IAAMqH,EAC4C,IAArD8b,EAAOnjB,IAAImU,QAAQnT,OAAOoO,SAASsU,OAAS,OAC/CP,EAAOpjB,YAAc,cAGvBkiB,WAAW5a,GAAO,CAACgV,GACnB,IAAIsH,EAAmB,SAASC,EAAMxW,GAErC+V,EAAO/pB,QAAU+pB,EAAOhjB,OAAS,KACjCvF,aAAa4oB,GACb,IAAIK,EAAU5B,WAAW5a,GAIzB,UAHO4a,WAAW5a,GAClB8b,EAAOpf,YAAcof,EAAOpf,WAAWC,YAAYmf,GACnDU,GAAWA,EAAQzlB,SAAQ,SAASyc,GAAM,OAAOA,EAAGzN,MACjDwW,EAAM,OAAOA,EAAKxW,IAGlBoW,EAAUhpB,WAAWmpB,EAAiBzH,KAAK,UAAMhO,EAAW,CAAE7O,KAAM,UAAWmiB,OAAQ2B,IAAW,MACtGA,EAAO/pB,QAAUuqB,EAAiBzH,KAAK,KAAMiH,EAAO/pB,SACpD+pB,EAAOhjB,OAASwjB,EAAiBzH,KAAK,KAAMiH,EAAOhjB,QACnDijB,GAActoB,SAASgpB,KAAKvkB,YAAY4jB,KO1CzChB,oBAAoB4B,EAAI,SAAS/qB,GACX,oBAAX2C,QAA0BA,OAAOqoB,aAC1C1oB,OAAOsmB,eAAe5oB,EAAS2C,OAAOqoB,YAAa,CAAEznB,MAAO,WAE7DjB,OAAOsmB,eAAe5oB,EAAS,aAAc,CAAEuD,OAAO,KCLvD4lB,oBAAoB9mB,EAAI,gBCKxB,IAAI4oB,EAAkB,CACrB,IAAK,GAGN9B,oBAAoBpkB,EAAEmmB,EAAI,SAASrB,EAASE,GAE1C,IAAIoB,EAAqBhC,oBAAoB/mB,EAAE6oB,EAAiBpB,GAAWoB,EAAgBpB,QAAW3U,EACtG,GAA0B,IAAvBiW,EAGF,GAAGA,EACFpB,EAAS1pB,KAAK8qB,EAAmB,QAC3B,CAGL,IAAIvI,EAAU,IAAIhB,SAAQ,SAASiB,EAASF,GAAUwI,EAAqBF,EAAgBpB,GAAW,CAAChH,EAASF,MAChHoH,EAAS1pB,KAAK8qB,EAAmB,GAAKvI,GAGtC,IAAIvU,EAAM8a,oBAAoB9mB,EAAI8mB,oBAAoBa,EAAEH,GAEpD1pB,EAAQ,IAAIylB,MAgBhBuD,oBAAoBe,EAAE7b,GAfH,SAAS+F,GAC3B,GAAG+U,oBAAoB/mB,EAAE6oB,EAAiBpB,KAEf,KAD1BsB,EAAqBF,EAAgBpB,MACRoB,EAAgBpB,QAAW3U,GACrDiW,GAAoB,CACtB,IAAIC,EAAYhX,IAAyB,SAAfA,EAAM/N,KAAkB,UAAY+N,EAAM/N,MAChEglB,EAAUjX,GAASA,EAAMoU,QAAUpU,EAAMoU,OAAOxhB,IACpD7G,EAAMyP,QAAU,iBAAmBia,EAAU,cAAgBuB,EAAY,KAAOC,EAAU,IAC1FlrB,EAAMwT,KAAO,iBACbxT,EAAMkG,KAAO+kB,EACbjrB,EAAMkP,QAAUgc,EAChBF,EAAmB,GAAGhrB,MAIgB,SAAW0pB,EAASA,KAiBlE,IAAIyB,EAAuB,SAASC,EAA4BrpB,GAC/D,IAKIknB,EAAUS,EALV2B,EAAWtpB,EAAK,GAChBupB,EAAcvpB,EAAK,GACnBwpB,EAAUxpB,EAAK,GAGImH,EAAI,EAC3B,GAAGmiB,EAASG,MAAK,SAASzmB,GAAM,OAA+B,IAAxB+lB,EAAgB/lB,MAAe,CACrE,IAAIkkB,KAAYqC,EACZtC,oBAAoB/mB,EAAEqpB,EAAarC,KACrCD,oBAAoBI,EAAEH,GAAYqC,EAAYrC,IAG7CsC,GAAsBA,EAAQvC,qBAGlC,IADGoC,GAA4BA,EAA2BrpB,GACrDmH,EAAImiB,EAASjsB,OAAQ8J,IACzBwgB,EAAU2B,EAASniB,GAChB8f,oBAAoB/mB,EAAE6oB,EAAiBpB,IAAYoB,EAAgBpB,IACrEoB,EAAgBpB,GAAS,KAE1BoB,EAAgBO,EAASniB,IAAM,GAK7BuiB,EAAqB1qB,KAAiC,2BAAIA,KAAiC,4BAAK,GACpG0qB,EAAmBxmB,QAAQkmB,EAAqBpI,KAAK,KAAM,IAC3D0I,EAAmBvrB,KAAOirB,EAAqBpI,KAAK,KAAM0I,EAAmBvrB,KAAK6iB,KAAK0I,mCCvFvF,SAAWvQ,GAEP,IACQgP,EADJwB,EAAgB/pB,SAAS+pB,gBACrBxB,EAAUvoB,SAASqE,qBAAqB,WAC7BkkB,EAAQ9qB,OAAS,GAGhCusB,EAAcD,EAAcvB,aAAa,UAAY,MAEzD,IAAI,0EAA0E/J,KAAKxY,UAAUuY,WAA7F,CAIA,IAAKjF,EAAOyQ,EAAY,QAAS,CAC7B,IAAIzQ,EAAM,QAGN,OAFAA,EAAOyQ,EAAY,QAAUzQ,EAAM,QAM3C,IAAI0Q,EAAW,CACXhN,IAAM,SAASnP,EAASoc,EAAUC,EAAYC,EAAOC,GACjD,IAAItmB,GACJA,EAAI,IACF+J,QAAUA,GAAW,GACvB/J,EAAE+J,SAAW,KAAOyL,EAAOtT,UAAUuY,UACrCza,EAAEuQ,SAAWA,UAAYA,SAASzP,KAAOyP,SAASzP,KAAO,GACzDd,EAAEumB,KAAOJ,GAAY,GACrBnmB,EAAEwmB,KAAOJ,GAAc,GACvBpmB,EAAEsmB,OAASA,GAAU,GACrBtmB,EAAEqmB,MAAQA,EAAQniB,KAAKC,UAAUkiB,GAAS,GAC1CrmB,EAAEqmB,MAAQrmB,EAAEqmB,MAAMljB,QAAQ,iBAAkB,IAC5C,IAAI4F,EAAM,IAAIC,eACdD,EAAItK,KAAM,OAAQ+W,EAAOyQ,EAAY,QAAnB,kBAAqD,oBAAoB,GAC3Fld,EAAIE,iBAAiB,eAAgB,qCACrCF,EAAIG,KAAM,QAAUC,mBAAoBjF,KAAKC,UAAUnE,OAI/D,IAEImC,OAAOsS,iBAAiB,SAAS,SAAUzU,GACnCkmB,IAA8G,IAAlGlmB,EAAEmmB,SAAS7Q,QAAQE,EAAOyQ,EAAY,QAAnB,kBAAmD9iB,QAAQ,gBAC1F+iB,EAAShN,IAAIlZ,EAAE+J,QAAS/J,EAAEmmB,SAAUnmB,EAAEomB,YAAcpmB,EAAEymB,OAAQzmB,EAAE1F,MAAM+rB,MAAOrmB,EAAE0mB,UAIvFlR,EAAO,KAAOyQ,EAAc,aAAe,KAC3CzQ,EAAO,KAAOyQ,EAAc,WAAY,EACxCzQ,EAAO,KAAOyQ,GAAezQ,EAAO,KAAOyQ,IAAgB,GAE3D,SAAWU,EAAKna,GAEZma,EAAIC,QAAS,EACbD,EAAIE,WAAY,EAChBF,EAAIG,OAAQ,EACZH,EAAII,QAAU,IAEd,IAAItU,EAAO,WAEF+C,EAAOuG,UACRvG,EAAOuG,QAAUiL,oBAAQ,OAG7B,IAAIC,EAAkBD,oBAAAA,MAAAA,EAClB9G,EAAe8G,oBAAQ,MAEvB/V,EAAe+V,oBAAAA,MAAAA,EACf1c,EAAa0c,oBAAAA,MAAAA,EACbxZ,EAAkBwZ,oBAAAA,MAAAA,EAClB/c,EAAgB+c,oBAAAA,MAAAA,EAChBzoB,EAAkByoB,oBAAAA,MAAAA,EAClBlP,EAAckP,oBAAAA,MAAAA,EACdrY,EAAiBqY,oBAAAA,MAAAA,EACjBtlB,EAAoBslB,oBAAAA,MAAAA,EACpB7T,EAAoB6T,oBAAAA,MAAAA,EAIpB3b,EAFiB2b,oBAAQ,KAEDE,QAAQ1R,EAAOtT,UAAUuY,WAAWK,MAEhEtO,EAAQC,KAAOD,EAAQC,MAAQ,QAES,IAA7BD,EAAQC,KAAK0a,cACpB9b,EAAWmB,EAAQC,KAAK0a,aAG5B,IAAMra,EAAkBmZ,EAAYmB,cAC9BC,EAAiBva,GAAmBN,EAAQC,KAAK6a,cAAgBxa,EAAkB,MACnFya,OAA2D,IAAhC/a,EAAQC,KAAK+a,gBAAiChb,EAAQC,KAAK+a,eACtFC,EAAWjb,EAAQC,KAAKzB,MAAQ,UAKD,KAHjC2D,EAAiB,IAAIA,EAAe6G,EAAQhJ,EAAQC,KAAKgJ,QAAU,KAAM4R,EAAeE,IAGzE3Y,eAAuC,UAAZ6Y,IAC1Cjb,EAAQC,KAAKib,KAAO,GACpBlb,EAAQC,KAAKib,KAAK1c,KAAOwB,EAAQC,KAAKzB,KACtCwB,EAAQC,KAAKib,KAAKC,UAAYnb,EAAQC,KAAKkb,UAC3Cnb,EAAQC,KAAKib,KAAKE,eAAiBpb,EAAQC,KAAKmb,eAEhDpb,EAAQC,KAAKzB,KAAO,QACpBwB,EAAQC,KAAKkb,WAAY,EACzBnb,EAAQC,KAAKmb,gBAAiB,GAG9Bpb,EAAQC,KAAKob,iBACblZ,EAAemZ,iBAAiBtb,EAAQC,KAAKob,iBAGjD,IAAIE,EAAY9rB,SAAS8rB,SAAY9rB,SAAS8rB,SAASC,OAAO/rB,SAAS8rB,SAASzS,QAAQ,OAAS,GAAK,GAClG/E,EAAYtU,SAASsU,SAAYpH,mBAAmBhH,OAAOoO,SAASzP,KAAK+V,UAAU1U,OAAOoO,SAAS0X,SAASvuB,SAAW,GAE3HiV,EAAeuZ,kBAAkBH,GAEjCA,EAAWA,EAAW5e,mBAAmB4e,GAAY,GAEjDvb,EAAQC,KAAK0b,OACb3b,EAAQC,KAAK0b,KAAO3b,EAAQC,KAAK0b,KAAKhlB,QAAQ,IAAK,IAAM,KAI7D,IAAIilB,EAAmB,CACnBC,YAAY,EACZvb,gBAAiBA,EACjBua,cAAeA,EACfiB,YAAarC,EACbuB,eAAgBD,EAChB/a,QAASA,EACTgE,YAAa,KACb+X,WAAY,KACZC,WAAYhc,EAAQC,KAAK+b,YAAc,KACvCC,YAAajc,EAAQC,KAAKgc,cAAe,EACzCC,YAAalc,EAAQC,KAAKic,cAAe,EACzCC,YAAanc,EAAQC,KAAKkc,aAAe,KACzCre,WAAY,IAAIA,EAAWwC,GAC3B6G,YAAa,IAAInG,EACjB9L,kBAAmBA,EACnB2R,OAAQ,IAAI4T,GAAgB,GAC5BzV,aAAc,IAAIyV,GAAgB,GAClC9b,QAAS,IAAI8b,GAAgB,GAC7BtV,MAAO,IAAIsV,GAAgB,GAC3B5V,QAAS,IAAI4V,EAAgBza,EAAQC,KAAKkc,cAAe,GACzDC,kBAAmB,IAAI3B,GAAgB,GACvC1V,eAAgB,IAAI0V,EAAgB,GACpCjb,aAAc,IAAIib,EAA6E,SAA5DtY,EAAe0D,kBAAkBgV,EAAgB,QAAsB7a,EAAQC,KAAKzB,MAA6B,SAArBwB,EAAQC,KAAKzB,MAC5IlJ,aAAc,IAAIoe,EAClBrR,YAAa,IAAIoY,EAA+E,SAA/DtY,EAAe0D,kBAAkBgV,EAAgB,UAAsB,CAAC,YAAc,IACvHnU,aAAa,EACbjI,QAASuB,EAAQC,KAAKxB,UAAW,EACjCI,SAAUA,EACVwd,MAAiE,GAA1D3mB,UAAUuY,UAAUqO,cAAcxT,QAAQ,cAA2E,GAAtDpT,UAAUuY,UAAUqO,cAAcxT,QAAQ,SAA0C,mBAAlB7Y,OAAOssB,OAC/IC,MAAOxc,EAAQC,KAAKuc,QAAS,EAC7BC,gBAAiB,CAACC,QAAU1c,EAAQC,KAAKyc,SAAW,IAAMC,OAAS3c,EAAQC,KAAK0c,QAAU,KAC1FzX,aAAclF,EAAQC,KAAK2c,eAAiB,KAC5CC,WAAY7c,EAAQC,KAAK4c,YAAc,GACvCC,YAAa9c,EAAQC,KAAK6c,aAAe,KACzCC,QAAS/c,EAAQC,KAAK8c,SAAW,GACjChd,MAAOC,EAAQC,KAAKF,OAAS,KAC7BI,QAAS,KACT8I,OAAQjJ,EAAQC,KAAKgJ,QAAU,KAC/B+T,WAAY,KACZC,YAAa,EACbC,YAAald,EAAQC,KAAKid,aAAe,KACzC5iB,SAAU0F,EAAQC,KAAK3F,UAAY,eACnCiE,mBAAoByB,EAAQC,KAAK1B,oBAAsB,eACvD4e,SAAUnd,EAAQC,KAAKC,aACvB1B,KAAMwB,EAAQC,KAAKzB,MAAQ,SAC3B4e,IAAKpd,EAAQC,KAAKmd,KAAO,GACzBjC,UAAW,GACXkC,QAAS,KACTC,SAAS,EACT1c,QAAQ,EACRqD,IAAKjE,EAAQC,KAAKgE,MAAO,EACzBwB,iBAAkBzF,EAAQC,KAAKwF,kBAAoB,KACnD8X,WAAYvd,EAAQC,KAAKsd,YAAc,GACvCC,mBAAoB,KACpB7B,KAAM3b,EAAQC,KAAK0b,MAAQ,GAC3B8B,OAAQzd,EAAQC,KAAKwd,QAAU,GAC/BC,WAAY1d,EAAQC,KAAKyd,YAAc,GACvCC,SAAU3d,EAAQC,KAAK0d,UAAY,KACnCnW,OAAQxH,EAAQC,KAAKuH,QAAU,GAC/BxI,MAAOgB,EAAQC,KAAKjB,OAAS,GAC7B4e,OAAQ5d,EAAQC,KAAK2d,QAAU,KAC/BC,SAAU7d,EAAQC,KAAK4d,UAAY,KACnCC,MAAO9d,EAAQC,KAAK6d,OAAS,KAC7BC,OAAQ/d,EAAQC,KAAK8d,QAAU,KAE/BzS,YAAa,IAAIA,EACjBnJ,eAAgBA,EAChBpD,SAAU,GACVif,GAAK,KACLC,WAAY,GACZC,cAAe,GACfC,iBAAkB,GAClBhS,QAAUnM,EAAQC,KAAKkM,UAA+B,oBAAZA,QAA0BA,QAAU,MAC9EtX,OAAQmL,EAAQC,KAAKpL,QAAU,KAC/BwM,eAAgB2H,EAAOyQ,EAAc,gBAAkB,IAG3DmC,EAAiBjc,gBAAkB,IAAI8a,EAAgB,CACnDnV,OAAStF,EAAQC,KAAKqF,QAAU,EAChCD,QAAUrF,EAAQC,KAAKoF,SAAW,EAClCvE,WAAY,EACZH,QAAS,EACTI,OAAQ,EACR/F,MAAS6D,GAAY+c,EAAiBnd,QAAW,IAAOuB,EAAQC,KAAKme,QAAU,IAC/EnjB,OAAU4D,GAAY+c,EAAiBnd,QAAW,IAAOuB,EAAQC,KAAKoe,SAAW,IACjFtgB,MAASc,GAAY+c,EAAiBnd,QAAW,IAAM,OAG3D,IAAIkD,EAAa,IAAIgF,EAAkBiV,GASvC,GAPAzB,EAAInS,cAAgB4T,EAAiBtmB,aACrC6kB,EAAI5oB,WAAaqqB,EAEjBA,EAAiBtQ,YAAYgT,cAAc1C,GAC3CA,EAAiBtQ,YAAYiT,sBAAsB3C,EAAiBzZ,eAAeqc,yBACnF5C,EAAiBtQ,YAAYmT,mBAAmBtc,EAAeO,sBAElC,UAAzBkZ,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,KAAiB,CAEvE,IAAIkgB,EAAmB,IAAIjhB,EAAcme,EAAiBtb,gBAAiBN,EAAQC,KAAKtC,OAAS,MAEjGie,EAAiB5X,YAAc,IAAIS,EAAamX,EAAiBtb,iBACjEoe,EAAiB9gB,KAAK5L,OAAOkC,YAAY0nB,EAAiB5X,YAAYpG,KAAKC,eAAe,GAE7D,UAAzB+d,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,MACtDkgB,EAAiB9gB,KAAK5L,OAAOkC,YAAY0nB,EAAiB9d,WAAWF,KAAKC,eAAe,OAG1F,CACH,IAAI8gB,EAAelvB,SAASgE,eAAemoB,EAAiBtb,gBAAkB,0BACzD,OAAjBqe,GACAA,EAAazqB,YAAY0nB,EAAiB9d,WAAWF,KAAKC,eAC1D8gB,EAAartB,MAAM2J,QAAU+E,EAAQC,KAAKoe,SAAW,KAAO,MAE5DzC,EAAiBthB,SAAW,MAIpC,SAASskB,IACL,MAAO,CACH,IAAwC,IAAjCzc,EAAeC,cAA0B,EAAI,KACpD,IAAQpC,EAAQC,KAAK4e,MAAQjD,EAAiBtQ,YAAYwT,SAC1D,IAAOlD,EAAiBtQ,YAAYE,IACpC,GAAMzZ,EAAgBgtB,cACtB,EAAKxD,EACL,EAAKxX,EACL,GAAMpH,mBAAmBlN,SAASuvB,OAClC,GAAMpD,EAAiBS,KACvB,IAAOT,EAAiBiB,WAAW1pB,KAAK,KACxC,KAAQyoB,EAAiB2B,WACzB,IAAO3B,EAAiBwB,IACxB,MAASxB,EAAiB7b,OAIlC,SAASkf,EAAajB,GAClB,oFAAuC9nB,MAAK,SAACxI,GACzC,IAAIwxB,EAAiB,IAAIxxB,EAAOwxB,eAAetD,EAAiBtb,iBAChEoe,EAAiB9gB,KAAK5L,OAAOkC,YAAYgrB,EAAethB,KAAKC,eAAe,GAC5EqhB,EAAejZ,KAAK2V,EAAkBoC,MAI9C,SAASmB,IACL,oFAA+BjpB,MAAK,SAACxI,GACjCA,EAAO0xB,cAAcC,UAAU,CAC3B,SAAYzD,EAAiB4B,oBAC9B5B,EAAkBja,MAI7B5P,EAAgButB,YAAYtf,EAAQC,KAAKC,aAAe0b,EAAiBD,KAAO,yBAA0B,CACtGjiB,OAAQklB,MACT,SAAC/uB,GAEA,GAAIsqB,EAAII,UAAY1qB,EAAK0vB,IAAiF,OAA3E9vB,SAASgE,eAAemoB,EAAiBtb,gBAAgB,eA4BpFzQ,EAAK2vB,YAAgB5D,EAAiB1W,eAA+C,IAA/BrV,EAAK4vB,QAAQ7C,gBAA8C,IAAlB/sB,EAAK6vB,YAEhG1f,EAAQC,KAAKwF,kBAA6C,SAAzBmW,EAAiBpd,OAClD/O,SAASsU,SAAW/D,EAAQC,KAAKwF,kBAGjC5V,EAAK2vB,cAOR5D,EAAiBK,aAAeL,EAAiBM,aAAgBrsB,EAAK4vB,UAAY5vB,EAAK4vB,QAAQvD,aAAersB,EAAK4vB,QAAQxD,eAAkBtmB,OAAOoO,UAAYpO,OAAOgqB,OAAO5b,WAAqC,IAAzBpO,OAAOgqB,OAAO7d,QACzMnM,OAAOgqB,OAAOzY,YAAY,eAAe,KAG7C0U,EAAiB1W,aAAe0W,EAAiB1W,cAAgBrV,EAAK4vB,QAAQ7C,cAE1E/sB,EAAKgtB,aACLjB,EAAiBiB,WAAahtB,EAAKgtB,YAGvC+C,oBAAAA,EAA0B/vB,EAAKgwB,gBAAkB,IAE7ChwB,EAAKiwB,eACLlE,EAAiBzZ,eAAe4d,iBAAgB,GAGhDlwB,EAAKoZ,QACL2S,EAAiBzZ,eAAe6d,gBAAgBnwB,EAAKoZ,QAGrDpZ,EAAKowB,aACLrE,EAAiBD,KAAO9rB,EAAKowB,YAG7BpwB,EAAKqwB,SACLtE,EAAiB7c,SAAWlP,EAAKqwB,QAGjCrwB,EAAKswB,OACLvE,EAAiBa,gBAAkB5sB,EAAKswB,MAGxCtwB,EAAKuwB,YACLxE,EAAiBgC,OAAS/tB,EAAKuwB,WAG/BvwB,EAAKmtB,aACLpB,EAAiBoB,WAAantB,EAAKmtB,YAGnCntB,EAAKwwB,WACLzE,EAAiB3c,QAAUpP,EAAKwwB,UAGhCxwB,EAAKywB,YACL1E,EAAiBrd,mBAAqB1O,EAAKywB,WAG/C1E,EAAiByB,QAAU,CAAC5R,KAAM5b,EAAK4b,KAAM8U,GAAI1wB,EAAK2wB,SACtD5E,EAAiBtQ,YAAYmV,OAAO5wB,EAAK0b,KAGzCqQ,EAAiBzZ,eAAeue,wBAAwB9E,EAAiBtQ,YAAYlM,wBAErFwc,EAAiBlV,YAAc7W,EAAK6W,YACpCkV,EAAiB5W,aAAapG,KAAK/O,EAAK6vB,UAEpC7vB,EAAKkQ,QACL6b,EAAiB7b,MAAQlQ,EAAKkQ,MAC9B6b,EAAiBzb,QAAUtQ,EAAKsQ,SAGhCtQ,EAAK4vB,UAED5vB,EAAK4vB,QAAQxD,cACbL,EAAiBK,aAAc,IAG9BpsB,EAAK4vB,QAAQhhB,SAAoC,SAAzBmd,EAAiBpd,MAAoBod,EAAiBnd,WAC/Emd,EAAiBjc,gBAAgBghB,aAAa,QAAS,KACvD/E,EAAiBjc,gBAAgBghB,aAAa,SAAU,KACxD/E,EAAiBjc,gBAAgBghB,aAAa,QAAS,KACvD/E,EAAiBnd,QAAUI,EAAW+c,EAAiB/c,UAAW,GAGlEhP,EAAK4vB,QAAQpB,UAAYxf,GACzB+c,EAAiBjc,gBAAgBghB,aAAa,SAAU9wB,EAAK4vB,QAAQpB,SAGrExuB,EAAK4vB,QAAQrB,SAAWvf,GACxB+c,EAAiBjc,gBAAgBghB,aAAa,QAAS9wB,EAAK4vB,QAAQrB,QAGpEvuB,EAAK4vB,QAAQzgB,QACb4c,EAAiB5c,MAAQnP,EAAK4vB,QAAQzgB,OAGtCnP,EAAK4vB,QAAQxb,MACb2X,EAAiB3X,KAAM,GAGvBpU,EAAK4vB,QAAQ7e,SACbgb,EAAiBhb,QAAS,GAG1B/Q,EAAK4vB,QAAQ9e,SACbib,EAAiBjc,gBAAgBghB,aAAa,UAAW9wB,EAAK4vB,QAAQ9e,SAGtE9Q,EAAK4vB,QAAQpa,SACbuW,EAAiBjc,gBAAgBghB,aAAa,UAAW9wB,EAAK4vB,QAAQpa,SAGtExV,EAAK4vB,QAAQna,QACbsW,EAAiBjc,gBAAgBghB,aAAa,SAAU9wB,EAAK4vB,QAAQna,QAGrEzV,EAAK4vB,QAAQ1e,QACb6a,EAAiBjc,gBAAgBghB,aAAa,SAAU9wB,EAAK4vB,QAAQ1e,QAGrElR,EAAK4vB,QAAQ3e,YACb8a,EAAiBjc,gBAAgBghB,aAAa,aAAc9wB,EAAK4vB,QAAQ3e,YAGzEjR,EAAK4vB,QAAQmB,cAAgB/hB,IAC7B+c,EAAiBpd,KAAO,SAGxB3O,EAAK4vB,QAAQoB,eAAgF,OAA/D1e,EAAe0D,kBAAkBgV,EAAgB,WAC/Ee,EAAiBvZ,YAAYzD,MAAK,GAGlC/O,EAAKotB,cACLrB,EAAiBqB,YAAcptB,EAAKotB,aAGpCptB,EAAK4vB,QAAQqB,cACb,oFAAoC5qB,MAAK,SAACxI,GACtCA,EAAOqzB,mBAAmB1B,UAAU,CAChC,QAAWxvB,EAAK4vB,QAAQqB,aACxB,YAAejxB,EAAK4vB,QAAQuB,YAC5B,eAAkBnxB,EAAK4vB,QAAQwB,gBAChCrF,MAIP/rB,EAAKqxB,IACL,mFAAgChrB,MAAK,SAACxI,GAClCA,EAAOyzB,eAAe9B,UAAU,CAC5B,GAAMxvB,EAAKqxB,IACZtF,OAKX/rB,EAAKmuB,KAAiC,IAA3BpC,EAAiBY,OAAmD,OAAhCZ,EAAgB,WAC/DA,EAAiBoC,GAAKnuB,EAAKmuB,GACE,UAAzBpC,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,OAClD3O,EAAKmuB,GAAGoD,IAA0C,OAApCxF,EAAiBtQ,YAAYzY,KAC3CosB,EAAapvB,EAAKmuB,KAK1BnuB,EAAKuU,UAGLwX,EAAiB/U,OAAOjI,KAAK/O,EAAKuU,SAG9BvU,EAAKuU,QAAQlX,OAAS,GACtB0uB,EAAiBtQ,YAAY+V,oBAAoBxxB,EAAKuU,SAAS,SAACyI,GAC5DlL,EAAWuC,eAAe,SAAU,CAAC2I,QAMpB,UAAzB+O,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,MACtDod,EAAiB5X,YAAYiC,KAAK2V,EAAkB/rB,EAAKyxB,IAG1B,OAA7B1F,EAAiBthB,UAA8C,SAAzBshB,EAAiBpd,MACzDod,EAAiB9d,WAAWmI,KAAK2V,EAAkB/rB,EAAKyxB,IAI/B,UAAzB1F,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,MACtDkgB,EAAiB9gB,KAAK4C,OAGtBob,EAAiB/mB,QACjB+mB,EAAiB/mB,OAAO+mB,GAGxB/rB,EAAKouB,aACLrC,EAAiBqC,WAAapuB,EAAKouB,YAGvCrC,EAAiB4B,mBAAqB3tB,EAAK4vB,QAAQjC,mBAErB,UAAzB5B,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,MAA4C,SAAzBod,EAAiBpd,WAAuD,IAA3BwB,EAAQC,KAAKkb,YAAwD,IAA3Bnb,EAAQC,KAAKkb,WAAsG,OAA/ES,EAAiBzZ,eAAe0D,kBAAkBgV,EAAgB,UACvQsE,IAGAvD,EAAiBqC,WAAW/wB,OAAS,GACrC0uB,EAAiBqC,WAAWlrB,SAAQ,SAAC+J,GACX,cAAlBA,EAAKykB,WACL,8HAA4BrrB,MAAK,SAACxI,GAC9BA,EAAO8zB,WAAWnC,UAAUviB,EAAKpD,OAAQkiB,EAAkBja,cAjP3E,CAEI,GAAI9R,EAAK2vB,UACL,OAGJ5D,EAAiBtQ,YAAYmV,OAAO5wB,EAAK0b,KAGzCqQ,EAAiBC,YAAa,EAG9B9pB,EAAgB0vB,WAAW7F,EAAiBtb,gBAAgB,iBAC5DvO,EAAgB0vB,WAAW7F,EAAiBtb,gBAAgB,qBAG5D,IAAIohB,EAAKjyB,SAAS8E,cAAc,UAChCmtB,EAAG1tB,KAAOwlB,EAAcxlB,KACxB0tB,EAAG7uB,GAAK+oB,EAAiBtb,gBAAgB,aACzCohB,EAAG9sB,OAAQ,EACP4kB,EAAcvB,aAAa,UAAYyJ,EAAG1sB,aAAa,QAAQwkB,EAAcvB,aAAa,UAG9FyJ,EAAG/sB,IAAM6kB,EAAcvB,aAAa,OAAS,OAAQ,IAAIjf,MAAQ2oB,YAAc,IAAI3oB,MAAQ4oB,aAC3F,IAAIvpB,EAAI5I,SAASqE,qBAAqB,UAAU,GAAIuE,EAAEK,WAAWmpB,aAAaH,EAAIrpB,OAkO1FujB,EAAiBtmB,aAAasK,YAAY,eAAe,WACrDgc,EAAiBpc,aAAaZ,MAAK,GACnC+C,EAAWuC,eAAe,eAAgB,CAAC,CAAC,OAAU,oBAI1D0X,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAUlG,QACpC,IAAnBA,EAAM,KACbkiB,EAAiB9d,WAAWuB,YAEgB,GAAxCuc,EAAiB9d,WAAWI,UAAkC,GAAdic,EAAIC,OACpDzY,EAAWuC,eAAexK,EAAM,IAAS,CAACA,EAAM,MAEhDkiB,EAAiBsC,cAAclwB,KAAK0L,MAMhDkiB,EAAiBtmB,aAAasK,YAAY,qBAAqB,SAAUlG,QACvC,IAAnBA,EAAM,KACbkiB,EAAiB9d,WAAWuB,YAEgB,GAAxCuc,EAAiB9d,WAAWI,UAAkC,GAAdic,EAAIC,OACpDzY,EAAWuC,eAAexK,EAAM,IAAS,CAACA,EAAM,KAAU,gBAE1DkiB,EAAiBuC,iBAAiBnwB,KAAK0L,MAMnDkiB,EAAiBtmB,aAAasK,YAAY,eAAe,WACrD,IAAI8Q,GAAYkL,EAAiBvZ,YAAYnR,MAC7C0qB,EAAiBvZ,YAAYzD,KAAK8R,MAItCkL,EAAiBtmB,aAAasK,YAAY,iBAAiB,WAGvD,IAA6C,IAAzCuC,EAAegH,sBAAgC,CAE/C,IAAI2Y,EAAmBlG,EAAiBtQ,YAAYlM,4BAChB,IAAzB0iB,EAAiBtW,YAA8BsW,EAAgB,IAC1ElG,EAAiBzZ,eAAeue,wBAAwBoB,QAEvB,IAAtB9hB,EAAQC,KAAKib,OAEpBU,EAAiBpd,KAAOwB,EAAQC,KAAKzB,KAAOwB,EAAQC,KAAKib,KAAK1c,KAC9DwB,EAAQC,KAAKkb,UAAYnb,EAAQC,KAAKib,KAAKC,UAC3Cnb,EAAQC,KAAKmb,eAAiBpb,EAAQC,KAAKib,KAAKE,eAEhDrpB,EAAgButB,YAAYtf,EAAQC,KAAKC,aAAe0b,EAAiBD,KAAO,yBAA0B,CACtGjiB,OAAQklB,MACT,SAAC/uB,GAEA+rB,EAAiBtmB,aAAa4C,UAAU,iBAAiB,CAAC,CAAC,IAAQ,WAAY,IAAQ,CAAC,KAAO,WAAW,KAAQ,CAAC,QAASrI,KAAO+rB,EAAiBpd,SAGvH,UAAzBod,EAAiBpd,MAA4C,OAAxBod,EAAiBoC,IACtDiB,EAAarD,EAAiBoC,IAIJ,UAAzBpC,EAAiBpd,MAA6C,SAAzBod,EAAiBpd,WAAuD,IAA3BwB,EAAQC,KAAKkb,YAAwD,IAA3Bnb,EAAQC,KAAKkb,WAAsG,OAA/ES,EAAiBzZ,eAAe0D,kBAAkBgV,EAAgB,UACnOsE,YAUpBvD,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAUlG,KACrC,IAAzBkiB,EAAiB3X,KAAkBvK,GAA6B,GAAnBA,EAAM,SACnDkiB,EAAiBtQ,YAAYyW,mBAAmB,CAAC,GAAM,KAAM,KAAQ,OACrEnG,EAAiBzZ,eAAeue,wBAAwB9E,EAAiBtQ,YAAYlM,wBACrFwc,EAAiBT,UAAY,OAIrCS,EAAiBtmB,aAAasK,YAAY,WAAW,SAAUlG,GAE3DkiB,EAAiBtQ,YAAYyW,mBAAmB,CAAC,GAAM,KAAM,KAAQ,OACrEnG,EAAiBzZ,eAAeue,wBAAwB9E,EAAiBtQ,YAAYlM,wBAErFwc,EAAiBT,UAAY,GAEA,SAAzBS,EAAiBpd,MAAqB9E,GAAWA,EAAM,YACvDkiB,EAAiBpc,aAAaZ,MAAK,GAGnCgd,EAAiB5X,cACjB4X,EAAiB5X,YAAYoC,wBAC7BwV,EAAiBtmB,aAAa4C,UAAU,qBAG5C0jB,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,MAEjEhf,EAAWuC,eAAe,YAAa,CAAC,CAAC,OAAU,gBAEtB,SAAzB0X,EAAiBpd,MAAoB9E,GAAUA,EAAM,aACrDkiB,EAAiBtmB,aAAa4C,UAAU,aAAc,CAAC,CAAC,OAAU,iBAGzC,SAAzB0jB,EAAiBpd,MACjBod,EAAiBzU,YAAYlG,YAKrC2a,EAAiBtmB,aAAasK,YAAY,cAAc,SAAUlG,GAG9DkiB,EAAiB9d,WAAWkkB,iBAE5BpG,EAAiBpc,aAAaZ,MAAK,GAEN,SAAzBgd,EAAiBpd,MACjBod,EAAiBzU,YAAYlB,KAAK2V,EAAkBja,EAAYjI,GAEhEkiB,EAAiB5X,YAAYoC,wBAE7BwV,EAAiB9d,WAAWyC,aACH,IAAX7G,QAAkD,IAAjBA,EAAOqI,OACtDrI,EAAOqI,MAAMC,iBAGjBL,EAAWuC,eAAe,cAAe,CAAC,CAAC,OAAU,oBAIzD0X,EAAiBtmB,aAAasK,YAAY,UAAU,SAAUwd,GAC1DxB,EAAiBwB,IAA8B,IAAxBxB,EAAiBwB,IAAYxB,EAAiBwB,IAAM,IAAMA,EAAMA,EACvFxB,EAAiBtmB,aAAa4C,UAAU,eAI5C0jB,EAAiBtmB,aAAasK,YAAY,YAAY,SAAU4H,GAC5DoU,EAAiBpU,OAASA,EAC1BoU,EAAiBtmB,aAAa4C,UAAU,iBAI5C0jB,EAAiBtmB,aAAasK,YAAY,aAAa,WAEnDgc,EAAiBzU,YAAYlB,KAAK2V,EAAkBja,GAEpDia,EAAiB5X,YAAYoC,wBAE7BzE,EAAWuC,eAAe,cAAe,CAAC,CAAC,OAAU,iBAErD0X,EAAiBpc,aAAaZ,MAAK,MAKvCgd,EAAiBtmB,aAAasK,YAAY,eAAe,SAAU/P,EAAM2O,GAErEod,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,MAEpD,UAATniB,IAA6C,IAAzBod,EAAiB3X,KACrC2X,EAAiBtQ,YAAYyW,mBAAmBlyB,EAAM+rB,EAAiBoC,IAAMpC,EAAiBoC,GAAGoD,IAGzF,SAAR5iB,GACAod,EAAiB9d,WAAWyC,QAID,IAA3Bqb,EAAiBY,OAA6B,UAAThe,IAA6C,IAAzBod,EAAiB3X,KAC1E2X,EAAiBzZ,eAAeue,wBAAwB9E,EAAiBtQ,YAAYlM,2BAK7Fwc,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAU/P,GAClE+rB,EAAiB1mB,kBAAkB+sB,aAAapyB,EAAKqyB,GAAItG,EAAiBtmB,cAC1EsmB,EAAiB1mB,kBAAkBitB,sBAKvCvG,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAU/P,GAClE8R,EAAWuC,eAAe,iBAAkB,CAACrU,OAIjD+rB,EAAiBpc,aAAarI,WAAU,SAACtH,GACP,UAA1B+rB,EAAiBpd,OACa,UAA1Bod,EAAiBpd,MAEjBod,EAAiBzZ,eAAeG,kBAAkBuY,EAAgB,MAAOhrB,GAE7E8R,EAAWuC,eAAe,eAAgB,CAACrU,QAKnD+rB,EAAiBvZ,YAAYlL,WAAU,SAACtH,GACpC+rB,EAAiBzZ,eAAeG,kBAAkBuY,EAAgB,SAAUhrB,MAGhF+rB,EAAiB5W,aAAa7N,WAAU,SAACtH,GACrC8R,EAAWuC,eAAe,eAAgB,CAACrU,OAG/C+rB,EAAiBtmB,aAAasK,YAAY,cAAc,SAAC/P,GACrDkC,EAAgBqK,eAAewf,EAAiB7c,SAAjB,WAAyClP,MAG5E+rB,EAAiBtmB,aAAasK,YAAY,eAAe,SAAC/P,GACtD,oFAA6BqG,MAAK,SAACxI,GAC/BA,EAAO00B,YAAY/C,UAAWxvB,GAAQ,GAAK+rB,EAAkBja,SAIrEia,EAAiBtmB,aAAasK,YAAY,YAAY,SAAC/P,GACnDJ,SAASsU,SAAWlU,KAGxB+rB,EAAiBtmB,aAAasK,YAAY,cAAc,SAAC/P,GACrD+rB,EAAiBC,YAAa,EAE9B9pB,EAAgB0vB,WAAW7F,EAAiBtb,gBAAgB,iBAC5DvO,EAAgB0vB,WAAW7F,EAAiBtb,gBAAgB,wBAGhEsb,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAC/P,GACzD+rB,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,IACjE/E,EAAiBjc,gBAAgBghB,aAAa,iBAAkB,IAChE/E,EAAiB9d,WAAWukB,oBAGhCzG,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAC/P,GACzD+rB,EAAiB9d,WAAWkkB,iBACxBnyB,EAAKyyB,MACL1G,EAAiBtmB,aAAa4C,UAAU,aAAc,CAAC,CAAC,OAAU,iBAClE0jB,EAAiBtmB,aAAa4C,UAAU,iBAAkB,CAACrI,KAE3D+rB,EAAiBtmB,aAAa4C,UAAU,mBAAoB,OAIpE0jB,EAAiBtmB,aAAasK,YAAY,cAAc,SAAC/P,GACrD,GAA6B,UAAzB+rB,EAAiBpd,OAA4D,IAAxCod,EAAiBpc,aAAatO,MAAiB,CAEpF,GAAIrB,EAAK0yB,YAEL,YADA3G,EAAiBtmB,aAAa4C,UAAU,aAAc,CAAC,CAAC,OAAU,iBAIzC,OAA7B0jB,EAAiBthB,UAAqBshB,EAAiB5X,aAAe4X,EAAiB5X,YAAYxD,OAEnG,oFAAyCtK,MAAK,SAACxI,GACtCkuB,EAAiBG,WAKlBH,EAAiBG,WAAWyG,YAAY3yB,GAAM,IAJ9C+rB,EAAiBG,WAAa,IAAIruB,EAAO+0B,iBAAiB7G,EAAiBtb,iBAC3Eoe,EAAiB9gB,KAAK5L,OAAOkC,YAAY0nB,EAAiBG,WAAWne,KAAKC,eAAe,GACzF+d,EAAiBG,WAAW9V,KAAK2V,EAAkB/rB,IAIvD+rB,EAAiBtmB,aAAa4C,UAAU,iBAAiB,CAAC,CAAC6N,IAAK,YAK5E6V,EAAiBtmB,aAAasK,YAAY,kBAAkB,SAAC/P,GACrDA,GAAQA,EAAK6yB,WAAa9G,EAAiBG,YAC3C,oFAAyC7lB,MAAK,SAACxI,GACtCkuB,EAAiBG,aAClBH,EAAiBG,WAAa,IAAIruB,EAAO+0B,iBAAiB7G,EAAiBtb,iBAC3Eoe,EAAiB9gB,KAAK5L,OAAOkC,YAAY0nB,EAAiBG,WAAWne,KAAKC,eAAe,GACzF+d,EAAiBG,WAAW9V,KAAK2V,EAAkB/rB,UAMnE+rB,EAAiB+G,cAAgBlzB,SAASuvB,MAC1CpD,EAAiBgH,cAAgB,KAEjChH,EAAiBtmB,aAAasK,YAAY,wBAAwB,SAAC/P,GAC/DL,cAAcosB,EAAiBgH,eACZ,GAAf/yB,EAAKuN,OACLwe,EAAiBgH,cAAgBtzB,aAAY,WACzCG,SAASuvB,MAAS3lB,KAAK4T,OAAM,IAAIjU,MAAOgR,UAAY,KAAQ,EAAK,MAAQ4R,EAAiB+G,cAAgB/G,EAAiB+G,gBAC5H,MAEH/G,EAAiB0B,SAAU,EAC3B7tB,SAASuvB,MAAQpD,EAAiB+G,kBAI1C/G,EAAiBtmB,aAAasK,YAAY,gBAAgB,SAAC/P,GAEvD,GAAIA,EAAKgzB,aAKL,OAJAjH,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,MACjE/E,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,MACjE/E,EAAiBjc,gBAAgBghB,aAAa,iBAAkB,WAChE/E,EAAiBjc,gBAAgBghB,aAAa,iBAAkB,MAIpE,GAAI9wB,EAAKizB,cAAgBjzB,EAAKkzB,aAAelzB,EAAKmzB,cAAgBnzB,EAAKozB,YAKnE,OAJApzB,EAAKizB,cAAgBlH,EAAiBjc,gBAAgBghB,aAAa,kBAAmB9wB,EAAKizB,cAC3FjzB,EAAKkzB,aAAenH,EAAiBjc,gBAAgBghB,aAAa,iBAAkB9wB,EAAKkzB,aACzFlzB,EAAKozB,aAAerH,EAAiBjc,gBAAgBghB,aAAa,iBAAkB9wB,EAAKozB,kBACzFpzB,EAAKmzB,cAAgBpH,EAAiBjc,gBAAgBghB,aAAa,kBAAmB9wB,EAAKmzB,eAI/F,GAA6B,UAAzBpH,EAAiBpd,MAAiD,GAA7Bod,EAAiB/c,SAAmB,CACzE,IAAIvL,EAAI7D,SACJ+D,EAAIF,EAAE8P,gBACNxU,EAAI0E,EAAEQ,qBAAqB,QAAQ,GACnCovB,EAAIla,EAAOzF,aAAe/P,EAAEgQ,cAAgB5U,EAAE4U,aAC9Cf,SAAS5S,EAAKoL,QAAU2gB,EAAiBjc,gBAAgBzO,MAAjC,QAAoDgyB,EAAIzgB,SAAS5S,EAAKoL,QAC9F2gB,EAAiBjc,gBAAgBghB,aAAa,kBAAmBle,SAAS5S,EAAKoL,SACxE2gB,EAAiBjc,gBAAgBzO,MAAjC,iBAA6D0qB,EAAiBjc,gBAAgBzO,MAAjC,gBAA4DgyB,GAChItH,EAAiBjc,gBAAgBghB,aAAa,kBAAmB,UAK7E,IAAIwC,GAAyB,EAC7B,IACIA,EAA0B,kBAAmBztB,UAC/C,MAAOlC,IAIT,IAA+B,IAA3B2vB,EACA,IACIztB,UAAUM,cAAciS,iBAAiB,WAAW,SAAUlG,GAC1D,SACqC,IAAtBA,EAAMlS,KAAKuzB,aAAwD,IAAvBrhB,EAAMlS,KAAKwzB,UAC9DzH,EAAiBpc,aAAaZ,MAAK,GACN,SAAzBgd,EAAiBpd,MACjBod,EAAiBtQ,YAAYyW,mBAAmB,CAC5C,GAAMhgB,EAAMlS,KAAKwzB,QACjB,KAAQthB,EAAMlS,KAAKuzB,SAEvBxH,EAAiBtmB,aAAa4C,UAAU,oBAExCyJ,EAAWuC,eAAe,cAAe,CAAC,CAAC,OAAU,iBACrDvC,EAAWuC,eAAe,qBAAsB,CAAC,CAC7C,GAAMnC,EAAMlS,KAAKwzB,QACjB,KAAQthB,EAAMlS,KAAKuzB,YAIjC,MAAO5vB,GACL,IAAIkmB,EAAqF,MAAMnG,MAAM,SAAW/f,EAAE+J,SAApGmc,EAAShN,IAAIlZ,EAAE+J,QAAS,WAAY/J,EAAEomB,YAAcpmB,EAAEwmB,KAAMxmB,EAAEqmB,WAGtF,MAAOrmB,IAMb,IAAM8vB,EAAiB,SAAC9vB,GAEpB,IAAoC,IAAhCooB,EAAiBC,YAAyC,iBAAXroB,EAAE3D,OAAqB2D,EAAE3D,KAAKiZ,QAAQ8S,EAAiBtb,gBAAkB,MAA5H,CAIA,IAAM8K,EAAQ5X,EAAE3D,KAAK6D,MAAM,MAE3B,QAAwB,IAAbF,EAAE6kB,OAAwB,CACjC,IAAIkL,EAAe/vB,EAAE6kB,OAAO1hB,QAAQ,UAAW,IAAIA,QAAQ,WAAY,IAAIA,QAAQ,UAAW,IAG9F,GAAI4sB,IAAiB9zB,SAASwZ,QAAU2S,EAAiBoB,aAAeuG,GAA6B,YAAbnY,EAAM,IAAiC,cAAbA,EAAM,GACpH,OAIR,GAAgB,SAAZA,EAAM,GAAe,CACrBzJ,EAAW6hB,eAA2B,QAAZpY,EAAM,IAE5BwQ,EAAiBzZ,eAAe0D,kBAAkBgV,EAAgB,iBAClEe,EAAiBtmB,aAAa4C,UAAU,cAAe,CAAC,CAAC,YAAc,KAG3E,IAAMurB,EAAgB,SAACjwB,GACnB,IAAM8pB,EAAqB,UAAX9pB,EAAEQ,KAClB4nB,EAAiB0B,QAAUA,EAC3B3b,EAAWuC,eAAe,gBAAiB,CAAC,CAAC,OAAUoZ,MAG3D3nB,OAAOsS,iBAAiB,QAASwb,GACjC9tB,OAAOsS,iBAAiB,OAAQwb,GAChC9tB,OAAOsS,iBAAiB,WAAYwb,GACpC9tB,OAAOsS,iBAAiB,WAAYwb,GAGpCtJ,EAAIC,QAAS,EAEbzY,EAAWuC,eAAe,cAAe,CAAC0X,EAAiB7c,SAAjB,WAG1C6c,EAAiBuC,iBAAiBprB,SAAQ,SAAC2G,GACvCiI,EAAWuC,eAAexK,EAAM,IAAS,CAACA,EAAM,KAAU,mBAI9DkiB,EAAiBsC,cAAcnrB,SAAQ,SAAC2G,GACpCiI,EAAWuC,eAAexK,EAAM,IAAS,CAACA,EAAM,SAGhB,OAAhCkiB,EAAiBI,YACjBJ,EAAiBI,WAAWjpB,SAAQ,SAAA+J,GAChC6E,EAAWuC,eAAe,WAAW,CAAC,CAClC,KAAO,WAAW,KAAQpH,EAAI,EAC9BjN,KAAOiN,EAAI,YAKJ,eAAZsO,EAAM,GACbwQ,EAAiBzU,YAAYhD,eAAexC,GACzB,aAAZyJ,EAAM,GAEbwQ,EAAiBtmB,aAAa4C,UAAU,aAAc,IACnC,WAAZkT,EAAM,GACTwQ,EAAiBK,YACjBL,EAAiBtmB,aAAa4C,UAAU,aAAc,IAEtD1E,EAAEkwB,OAAOxc,YAAY,iBAAiB,KAG1C0U,EAAiBtmB,aAAa4C,UAAUkT,EAAM,GAAI1T,KAAK2F,MAAM+N,EAAM,OAIvEzV,OAAOsS,iBACPtS,OAAOsS,iBAAiB,UAAWqb,GAAgB,GAC5C3tB,OAAOiS,YACdjS,OAAOiS,YAAY,YAAa0b,GACzB7zB,SAASmY,aAChBnY,SAASmY,YAAY,YAAa0b,IAItCK,EAAU,YAGQ,IAAdxJ,EAAIG,QAKJ7qB,SAAS6C,OACT6nB,EAAIG,OAAQ,GAGhBH,EAAIlU,KAAOA,EAEPjG,EAAQC,KAAK2jB,aACb5jB,EAAQC,KAAK2jB,YAAYzJ,GAG7Bna,EAAQC,KAAK4jB,aAAe5d,MAG1B6d,EAAgBtJ,oBAAAA,KAAAA,EAErBmJ,KAAYxJ,EAAIG,QAAWwJ,EAAcC,OAAOt0B,SAAU,oBAAoB,WAC3Ek0B,MACD,aACCG,EAAcC,OAAOt0B,SAAU,oBAAoB,YAC9C,aAAeA,SAAS0N,YAAc,gBAAkB1N,SAAS0N,YAAc1N,SAAS6C,OAASqxB,MACnG,kBACHG,EAAcC,OAAO/a,EAAQ,QAAQ,WACjC2a,MACD,gBAER91B,KAAKJ,KAAMub,EAAO,KAAOyQ,GAAczQ,EAAOyQ,EAAc,SAEjE,MAAOjmB,GACL,IAAIkmB,EAAqF,MAAMnG,MAAM,SAAW/f,EAAE+J,SAApGmc,EAAShN,IAAIlZ,EAAE+J,QAAS,WAAY/J,EAAEomB,YAAcpmB,EAAEwmB,KAAMxmB,EAAEqmB,SAt/BpF,CAy/BGlkB","sources":["webpack://LiveHelperChat/./node_modules/asap/browser-asap.js","webpack://LiveHelperChat/./node_modules/asap/browser-raw.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://LiveHelperChat/./src/lib/UIConstructorIframe.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://LiveHelperChat/./src/lib/UIConsturctor.js","webpack://LiveHelperChat/./src/lib/chatNotifications.js","webpack://LiveHelperChat/./src/lib/helperFunctions.js","webpack://LiveHelperChat/./src/lib/settings.js","webpack://LiveHelperChat/./src/lib/widgets/containerChat.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidget.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidgetPopup.js","webpack://LiveHelperChat/./src/lib/widgets/statusWidget.js","webpack://LiveHelperChat/./src/util/chatEventsHandler.js","webpack://LiveHelperChat/./src/util/domEventsHandler.js","webpack://LiveHelperChat/./src/util/monitoredVariable.js","webpack://LiveHelperChat/./src/util/storageHandler.js","webpack://LiveHelperChat/./src/util/userSession.js","webpack://LiveHelperChat/./node_modules/ismobilejs/esm/isMobile.js","webpack://LiveHelperChat/./node_modules/promise/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/core.js","webpack://LiveHelperChat/./node_modules/promise/lib/done.js","webpack://LiveHelperChat/./node_modules/promise/lib/es6-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/finally.js","webpack://LiveHelperChat/./node_modules/promise/lib/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/node-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/synchronous.js","webpack://LiveHelperChat/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://LiveHelperChat/webpack/bootstrap","webpack://LiveHelperChat/webpack/runtime/load script","webpack://LiveHelperChat/webpack/runtime/compat get default export","webpack://LiveHelperChat/webpack/runtime/define property getters","webpack://LiveHelperChat/webpack/runtime/ensure chunk","webpack://LiveHelperChat/webpack/runtime/get javascript chunk filename","webpack://LiveHelperChat/webpack/runtime/global","webpack://LiveHelperChat/webpack/runtime/hasOwnProperty shorthand","webpack://LiveHelperChat/webpack/runtime/make namespace object","webpack://LiveHelperChat/webpack/runtime/publicPath","webpack://LiveHelperChat/webpack/runtime/jsonp chunk loading","webpack://LiveHelperChat/./src/index.js"],"sourcesContent":["\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import {UIConsturctor} from './UIConsturctor';\nimport {helperFunctions} from './helperFunctions';\n\nexport class UIConstructorIframe extends UIConsturctor {\n\n constructor(elementId, style, attributes, tagname, documentRef) {\n super(elementId, style, attributes, tagname, documentRef);\n this.bodyId = '';\n }\n\n constructUIIframe(style, dir, cl, header) {\n\n if (typeof dir === 'undefined'){\n dir = 'ltr';\n }\n\n if (typeof cl === 'undefined'){\n cl = 'en';\n }\n\n if (typeof header === 'undefined'){\n header = '';\n }\n\n this.elmDomDoc = helperFunctions.getDocument(this.elmDom);\n if (this.elmDomDoc === null) return null;\n this.elmDomDoc.open();\n this.elmDomDoc.writeln(''+header+'');\n this.elmDomDoc.close();\n this.insertCssFile(style);\n this.insertContent();\n };\n\n insertContent () {\n this.elmDomDoc.body.innerHTML = this.tmpl\n };\n};\n\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {helperFunctions} from './helperFunctions';\nimport {settings} from './settings.js';\nimport {domEventsHandler} from '../util/domEventsHandler';\n\nexport class UIConsturctor {\n constructor(elementId, style, attributes, tagname, documentRef) {\n var f = this;\n this.elementId = elementId || \"\";\n this.style = style || \"\";\n this.tagName = tagname || \"div\";\n this.tmpl = \"\";\n this.elmDom = null;\n this.elmDomDoc = documentRef || document;\n this.attributes = {};\n this.classNames = [];\n\n this.elementId && (this.attributes.id = this.elementId);\n\n attributes && Object.keys(attributes).forEach(function (attr) {\n f.attributes[attr] = attributes[attr]\n })\n }\n\n constructUI(a) {\n this.elmDomDoc =\n a || this.elmDomDoc;\n this.elmDom = helperFunctions.initElement(this.elmDomDoc, this.tagName, this.attributes, this.style, this.tmpl);\n this.elmDom.className += this.classNames.join(\" \");\n return this.elmDom\n };\n\n restyle(attr, style) {\n style && (this.elmDom ? this.elmDom.style.cssText += \";\" + attr + \":\" + style : this.style += \";\" + attr + \":\" + style)\n };\n\n attachUserEventListener(a, c, d, k) {\n var e;\n if (e = d ? this.getElementById(d) : this.elmDom) d = a.split(\" \"), 1 < d.length ? d.forEach(function (a) {\n domEventsHandler.listen(e, a, c, a + k)\n }) : domEventsHandler.listen(e, a, c, k)\n };\n\n getElementById(a) {\n return this.elmDom ? this.elmDomDoc.getElementById(a) : null\n };\n\n hide() {\n this.restyle(\"display\", \"none !important\");\n }\n\n show() {\n this.restyle(\"display\", \"block !important\");\n }\n\n insertCssFile(style, reset) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = helperFunctions.initElement(this.elmDomDoc, \"style\", {type: \"text/css\"}),\n f = this.elmDomDoc.createTextNode(reset ? style : settings.ResetStyle + \"\" + style);\n k.appendChild(e);\n d.appendChild(k);\n e.styleSheet ? e.styleSheet.cssText = f.nodeValue : e.appendChild(f)\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = this.elmDomDoc.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n insertJSFile(src, async, loadcb, attr) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('script');\n\n e.type = 'text/javascript';\n if (typeof async === 'undefined' || async === true) {\n e.async = true;\n }\n\n e.crossOrigin = \"*\";\n e.src = src;\n\n if (loadcb) {\n e.onload = loadcb;\n }\n\n if (attr) {\n Object.keys(attr).forEach(key => {\n e.setAttribute(key,attr[key]);\n })\n }\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n massRestyle(a) {\n for (var b in a) a.hasOwnProperty(b) && this.restyle(b, a[b])\n }\n};\n\n","\nclass _chatNotifications {\n constructor() {\n this.isNotificationsSubscribed = false;\n this.applicationServerPublicKey = null;\n this.eventEmitter = null;\n }\n\n setPublicKey(publicKey, eventEmitter) {\n this.applicationServerPublicKey = publicKey\n this.eventEmitter = eventEmitter\n }\n\n sendNotification() {\n\n var that = this;\n var applicationServerPublicKey = this.applicationServerPublicKey;\n\n var swRegistration = null;\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n\n // Let's check if the browser supports notifications\n if (!(\"Notification\" in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n // Let's check whether notification permissions have already been granted\n else if (Notification.permission === \"granted\") {\n // If it's okay let's create a notification\n //\n }\n // Otherwise, we need to ask the user for permission\n else if (Notification.permission !== \"denied\") {\n Notification.requestPermission(function (permission) {\n // If the user accepts, let's create a notification\n if (permission !== \"granted\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n });\n } else if (Notification.permission === \"denied\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n\n function urlB64ToUint8Array(base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n }\n\n function updateSubscriptionOnServer(subscription, subscribe) {\n if (subscription === null) {\n return;\n }\n\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n var contentEncoding = (PushManager.supportedContentEncodings || ['aesgcm'])[0];\n\n var payload = JSON.stringify({\n endpoint: subscription.endpoint,\n publicKey: key ? btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n authToken: token ? btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null,\n contentEncoding : contentEncoding\n });\n\n that.eventEmitter.emitEvent('subcribedEvent', [{'payload' : payload}]);\n }\n\n var that = this;\n\n function subscribeUser() {\n var applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);\n swRegistration.pushManager.subscribe({\n 'userVisibleOnly': true,\n 'applicationServerKey': applicationServerKey\n }).then(function(subscription) {\n updateSubscriptionOnServer(subscription, true);\n that.isNotificationsSubscribed = true;\n });\n }\n\n function unsubscribeUser() {\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n if (subscription) {\n updateSubscriptionOnServer(subscription,false);\n return subscription.unsubscribe();\n }\n }).then(function() {\n alert('You have unsubscribed!');\n that.isNotificationsSubscribed = false;\n });\n }\n\n function initializeUI() {\n // Set the initial subscription value\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n that.isNotificationsSubscribed = !(subscription === null);\n if (that.isNotificationsSubscribed) {\n subscribeUser();\n } else {\n subscribeUser();\n }\n });\n }\n\n // At last, if the user has denied notifications, and you\n // want to be respectful there is no need to bother them any more.\n navigator.serviceWorker.register('/sw.lhc.js?v=2').then(function(swReg) {\n swRegistration = swReg;\n initializeUI();\n });\n\n }\n\n};\n\nconst chatNotifications = new _chatNotifications();\nexport { chatNotifications };","\nclass _helperFunctions {\n constructor() {\n }\n\n initElement(a, c, b, k, s) {\n var e;\n a = a.createElement(c);\n b = b || {};\n for (e in b) a[e] = b[e];\n s && \"iframe\" !== c && (a.innerHTML = s);\n k && (a.style.cssText = k);\n return a\n };\n \n getDocument(a) {\n return a.contentWindow ? a.contentWindow.document : a.contentDocument ? a.contentDocument : a.document ? a.document : null\n };\n\n removeById(EId)\n {\n var EObj = null;\n return(EObj = document.getElementById(EId)) ? EObj.parentNode.removeChild(EObj) : false;\n }\n\n // Returns time zone offset\n getTzOffset() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n Date.prototype.stdTimezoneOffset = function() {\n var jan = new Date(this.getFullYear(), 0, 1);\n var jul = new Date(this.getFullYear(), 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n };\n\n Date.prototype.dst = function() {\n return this.getTimezoneOffset() < this.stdTimezoneOffset();\n };\n\n var today = new Date();\n var timeZoneOffset = 0;\n\n if (today.dst()) {\n timeZoneOffset = today.getTimezoneOffset();\n } else {\n timeZoneOffset = today.getTimezoneOffset()-60;\n };\n\n return (timeZoneOffset/60)*-1;\n }\n };\n\n getAbstractStyle(params) {\n return [\n \"outline: \" + (params.outline ? params.outline : \"none\") + \" !important; \",\n \"visibility: \" + (params.visibility ? params.visibility : \"visible\") + \" !important; \",\n \"resize: \" + (params.resize ? params.resize : \"none\") + \" !important; \",\n \"box-shadow: \" + (params.boxshadow ? params.boxshadow : \"none\") + \" ; \",\n \"overflow: \" + (params.overflow ? params.overflow : \"visible\") + \" ; \",\n \"background : \" + (params.background ? params.background : \"none\") + \" !important; \",\n \"opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"filter : alpha(opacity=\" + (params.opacity ? 100 * params.opacity : \"100\") + \") !important; \",\n \"-ms-filter : progid:DXImageTransform.Microsoft.Alpha(Opacity\" + (params.opacity ? params.opacity : \"1\") + \") !important; \",\n \"-moz-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"-khtml-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"top : \" + (params.top ? params.top : \"auto\") + \"; \",\n \"right : \" + (params.right ? params.right : \"auto\") + \"; \",\n \"bottom : \" + (params.bottom ? params.bottom : \"auto\") + \"; \",\n \"left : \" + (params.left ? params.left : \"auto\") + \"; \",\n \"position : \" + (params.position ? params.position : \"absolute\") + \" !important; \",\n \"border : \" + (params.border ? params.border : \"0\") + \" !important; \",\n \"min-height : \" + (params.minheight ? params.minheight : \"auto\") + \"; \",\n \"min-width : \" + (params.minwidth ? params.minwidth : \"auto\") + \"; \",\n \"max-height : \" + (params.maxheight ? params.maxheight : \"none\") + \"; \",\n \"max-width : \" + (params.maxwidth ? params.maxwidth : \"none\") + \"; \",\n \"padding : \" + (params.padding ? params.padding : \"0\") + \" !important; \",\n \"margin : \" + (params.margin ? params.margin : \"0\") + \" !important; \",\n \"-moz-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-webkit-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-o-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-webkit-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-ms-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"width : \" + (params.width ? params.width : \"auto\") + \" ; \",\n \"height : \" + (params.height ? params.height : \"auto\") + \" ; \",\n \"display : \" + (params.display ? params.display : \"block\") + \" !important; \",\n \"z-index : \" + (params.zindex ? params.zindex : \"none\") + \" ; \",\n \"background-color : \" + (params.backgroundcolor ? params.backgroundcolor : \"transparent\") + \" !important; \",\n \"cursor : \" + (params.cursor ? params.cursor : \"auto\") + \" !important; \",\n \"float : \" + (params[\"float\"] ? params[\"float\"] : \"none\") + \" !important; \",\n \"border-radius : \" + (params.borderRadius ? params.borderRadius : \"unset\") + \"; \"].join(\"\").replace(/\\s/gm, \"\")\n };\n\n hasClass(element, className) {\n if (element === null) return;\n return element.classList ? element.classList.contains(className) : !!element.className.match(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"))\n }\n\n addClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.add(className) : this.hasClass(element, className) || (element.className += \" \" + className)\n }\n\n removeClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.remove(className) : this.hasClass(element, className) && (element.className = element.className.replace(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"), \" \"))\n }\n\n makeScreenshot(screenshot,url) {\n var inst = this;\n if (typeof html2canvas == \"undefined\") {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src',screenshot);\n th.appendChild(s);\n\n s.onreadystatechange = s.onload = () => {\n this.makeScreenshot(screenshot, url);\n };\n } else {\n try {\n html2canvas(document.body, {\n onrendered: function(canvas) {\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", url, true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( canvas.toDataURL() ) );\n }\n });\n } catch(err) {\n\n }\n }\n }\n\n makeQuery(params)\n {\n var item, pairs = [];\n for (item in params) {\n if (params[item] != '' && params[item] != null) {\n params.hasOwnProperty(item) && pairs.push(encodeURIComponent(item) + \"=\" + encodeURIComponent(params[item]));\n }\n }\n return pairs.join(\"&\")\n }\n \n makeRequest(url, params, callback) {\n var request = new XMLHttpRequest;\n var urlRequest = url + '?' + this.makeQuery(params.params);\n request.open(\"GET\",urlRequest, true);\n request.onreadystatechange = function () {\n if (4 == request.readyState && request.status != 0) {\n try {\n callback(JSON.parse(request.responseText));\n } catch (e) {\n e.message += \"\\n\" + urlRequest + \"\\n\" + \"[\"+request.status+\"]\\n\" + request.responseText;\n throw e;\n }\n }\n };\n request.send();\n return {type: \"xhr\", req: request}\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = document.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = document.getElementsByTagName(\"head\")[0],\n k = document.createDocumentFragment(),\n e = document.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n};\n\nconst helperFunctions = new _helperFunctions();\nexport { helperFunctions };","var settings = {};\n\nsettings.ResetStyle = \"html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}html,body{height: 100% !important;\\n\" +\n \" min-height: 100% !important;\\n\" +\n \" max-height: 100% !important;\\n\" +\n \" width: 100% !important;\\n\" +\n \" min-width: 100% !important;\\n\" +\n \" max-width: 100% !important;}body{display: flex;flex-direction: column;background:transparent;font:13px Helvetica,Arial,sans-serif;position:relative}.clear{clear:both}.clearfix:after{content:'';display:block;height:0;clear:both;visibility:hidden}\";\n\nexport {settings};","import {UIConsturctor} from '../UIConsturctor';\n\nexport class containerChat{\n constructor(prefix, pnode) {\n this.cont = new UIConsturctor((prefix || 'lhc')+'_container_v2', \"border: 0 none !important; padding: 0 !important; margin: 0 !important; z-index: 999999999 !important; overflow : visible !important; min-width: 0 !important; min-height: 0 !important; max-width: none !important; max-height: none !important; width : auto !important; height : auto !important;\");\n this.cont.constructUI();\n (!!pnode && document.getElementById(pnode).appendChild(this.cont.elmDom)) || document.body.appendChild(this.cont.elmDom);\n }\n}","import {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class mainWidget{\n constructor(prefix) {\n\n this.attributes = {};\n\n this.width = '350';\n this.height = '520';\n this.bottom = '30';\n this.right = '30';\n this.units = 'px';\n this.originalCSS = '';\n this.bottom_override = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.isLoaded = false;\n\n this.loadStatus = {main: false, css: false};\n }\n\n resize() {\n\n let restyleStyle = {\n height: this.height + this.units,\n \"min-height\": this.height + this.units,\n \"max-height\": this.height + this.units,\n width: this.width + this.units,\n \"min-width\": this.width + this.units,\n \"max-width\": this.width + this.units,\n bottom: (this.units == 'px' ? this.bottom + \"px\" : '0px')\n };\n\n if ((this.attributes.position_placement == 'middle_right' || this.attributes.position_placement == 'middle_left') && this.bottom_override == true) {\n restyleStyle['bottom'] = \"calc(50% + 20px)\";\n }\n\n if (this.attributes.position_placement == 'middle_left' || this.attributes.position_placement == 'bottom_left' || this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n } else {\n restyleStyle['right'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n }\n\n if ((this.attributes.position_placement == 'full_height_right' || this.attributes.position_placement == 'full_height_left') && !this.bottom_override) {\n restyleStyle['min-height'] = '100%';\n restyleStyle['max-height'] = '100%';\n restyleStyle['height'] = '100%';\n restyleStyle['bottom'] = '0px';\n\n if (this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = '0px';\n } else {\n restyleStyle['right'] = '0px';\n }\n }\n\n if (this.attributes.mode == 'embed') {\n restyleStyle[\"max-width\"] = '100%';\n restyleStyle[\"min-width\"] = '100%';\n restyleStyle[\"width\"] = '100%';\n restyleStyle[\"position\"] = (this.attributes.fscreen ? 'fixed' : 'relative') + '!important';\n restyleStyle[\"bottom\"] = 'auto';\n restyleStyle[\"right\"] = 'auto';\n }\n\n this.cont.massRestyle(restyleStyle);\n }\n\n checkLoadStatus() {\n if (this.loadStatus['main'] == true && this.loadStatus['css'] == true ) {\n this.attributes.wloaded.next(true);\n }\n }\n\n makeContent() {\n this.cont.bodyId = 'chat-widget';\n\n this.cont.tmpl = '
';\n\n if (this.cont.constructUIIframe('', this.attributes.staticJS['dir'], this.attributes.staticJS['cl'], this.attributes.hhtml) === null) {\n this.isLoaded = true;\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile lhc-mode-'+this.attributes.mode : 'lhc-desktop lhc-mode-'+this.attributes.mode;\n\n if (this.attributes.cont_ss) {\n this.originalCSS = this.cont.elmDom.style.cssText;\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n init(attributes, lazyLoad) {\n\n this.attributes = attributes;\n\n if (this.makeContent() === null) {\n return null;\n };\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (chatParams['id'] || !lazyLoad) {\n this.bootstrap();\n }\n \n this.toggleVisibilityWrap = (data) => {\n this.toggleVisibility(data);\n };\n\n attributes.widgetStatus.subscribe(this.toggleVisibilityWrap);\n\n this.monitorDimensionsWrap = (data) => {\n this.monitorDimensions(data);\n };\n\n attributes.widgetDimesions.subscribe(this.monitorDimensionsWrap);\n\n attributes.eventEmitter.addListener('reloadWidget',() => {\n this.isLoaded = false;\n this.makeContent();\n attributes.eventEmitter.emitEvent('widgetHeight',[{'reset_height' : true}]);\n this.toggleVisibility(attributes.widgetStatus.valueInternal);\n });\n\n }\n\n bootstrap() {\n\n if (this.isLoaded === true) {\n return ;\n }\n\n this.isLoaded = true;\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({rel:\"stylesheet\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/theme/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n }\n\n this.cont.insertCssRemoteFile({onload: () => {\n this.loadStatus['css'] = true;\n this.checkLoadStatus();\n },crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_css']}, true);\n\n if (this.attributes.isMobile == true && this.attributes.mode == 'widget') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_mobile_css']});\n }\n\n if (this.attributes.mode == 'embed') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['embed_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n }\n\n this.cont.insertJSFile(this.attributes.staticJS['vendor'], false, () => {\n this.cont.insertJSFile(this.attributes.staticJS['app'], false, () => {\n this.loadStatus['main'] = true;\n this.checkLoadStatus();\n }, {'scope': this.attributes.prefixLowercase});\n }, {'scope': this.attributes.prefixLowercase});\n\n if (this.attributes.staticJS['ex_js'] && this.attributes.staticJS['ex_js'].length > 0) {\n this.attributes.staticJS['ex_js'].forEach((item) => {\n this.cont.insertJSFile(item, false);\n });\n }\n }\n\n toggleVisibility(data) {\n data == false ? this.hide() : this.show();\n }\n\n monitorDimensions(data) {\n this.width = data.width_override || data.width;\n this.height = data.height_override || data.height;\n this.bottom = data.bottom_override ? (data.bottom_override + (data.wbottom ? data.wbottom : 0)) : (30 + (this.attributes.clinst === true ? 70 : 0) + (data.wbottom ? data.wbottom : 0));\n this.right = data.right_override ? (data.right_override + (data.wright_inv ? data.wright_inv : 0)) : (30 + (data.wright ? data.wright : 0));\n this.units = (data.width_override || data.height_override || data.bottom_override || data.right_override) ? 'px' : data.units;\n this.resize();\n\n this.bottom_override = !!data.bottom_override;\n }\n\n hide () {\n this.cont.hide();\n }\n\n hideInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n showInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText = this.originalCSS;\n }\n this.show();\n }\n\n show () {\n if (this.isLoaded === false) {\n this.bootstrap();\n }\n this.cont.show();\n }\n}","export class mainWidgetPopup {\n constructor() {\n\n this.attributes = {};\n\n this.width = null;\n this.height = null;\n this.units = 'px';\n this.freeup();\n }\n\n freeup() {\n this.cont = {};\n }\n\n parseOptions() {\n var argumentsQuery = new Array();\n var paramsReturn = '';\n if (typeof this.attributes != 'undefined') {\n if (typeof this.attributes.LHCChatOptions.attr != 'undefined') {\n if (this.attributes.LHCChatOptions.attr.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr) {\n if (typeof this.attributes.LHCChatOptions.attr[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr[index].type != 'undefined') {\n argumentsQuery.push('name[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].name) + '&encattr[]=' + (typeof this.attributes.LHCChatOptions.attr[index].encrypted != 'undefined' && this.attributes.LHCChatOptions.attr[index].encrypted == true ? 't' : 'f') + '&value[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].value) + '&type[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].type) + '&size[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].size) + '&req[]=' + (typeof this.attributes.LHCChatOptions.attr[index].req != 'undefined' && this.attributes.LHCChatOptions.attr[index].req == true ? 't' : 'f') + '&sh[]=' + ((typeof this.attributes.LHCChatOptions.attr[index].show != 'undefined' && (this.attributes.LHCChatOptions.attr[index].show == 'on' || this.attributes.LHCChatOptions.attr[index].show == 'off')) ? this.attributes.LHCChatOptions.attr[index].show : 'b'));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr_prefill[index].name != 'undefined') {\n argumentsQuery.push('prefill[' + this.attributes.LHCChatOptions.attr_prefill[index].name + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[index].value));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill_admin.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill_admin) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin[index] != 'undefined') {\n argumentsQuery.push('value_items_admin[' + this.attributes.LHCChatOptions.attr_prefill_admin[index].index + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[index].value));\n }\n }\n }\n }\n\n if (argumentsQuery.length > 0) {\n paramsReturn = '&' + argumentsQuery.join('&');\n }\n }\n\n return paramsReturn;\n }\n\n init(attributes, chatEvents, paramsPopup) {\n\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n this.cont.elementReferrerPopup.focus();\n } else {\n\n this.attributes = attributes;\n\n let attr = {\n 'static_chat': this.attributes['userSession'].getSessionAttributes()\n };\n\n let urlArgumetns = '';\n\n if (attr['static_chat']['id'] && attr['static_chat']['hash']) {\n urlArgumetns = urlArgumetns + \"/(id)/\" + attr['static_chat']['id'] + \"/(hash)/\" + attr['static_chat']['hash'];\n }\n\n if (this.attributes['theme'] !== null) {\n urlArgumetns = urlArgumetns + \"/(theme)/\" + this.attributes['theme'];\n }\n\n if (attr['static_chat']['vid'] !== null && this.attributes.storageHandler.cookieEnabled === true) {\n urlArgumetns = urlArgumetns + \"/(vid)/\" + attr['static_chat']['vid'];\n }\n\n if (this.attributes['isMobile']) {\n urlArgumetns = urlArgumetns + \"/(mobile)/true\";\n }\n\n if (this.attributes['department'].length > 0) {\n urlArgumetns = urlArgumetns + \"/(department)/\" + this.attributes['department'].join('/');\n }\n\n if (this.attributes['identifier'] != '') {\n urlArgumetns = urlArgumetns + \"/(identifier)/\" + this.attributes['identifier'];\n }\n\n if (this.attributes['operator']) {\n urlArgumetns = urlArgumetns + \"/(operator)/\" + this.attributes['operator'];\n }\n\n if (this.attributes['survey']) {\n urlArgumetns = urlArgumetns + \"/(survey)/\" + this.attributes['survey'];\n }\n\n if (this.attributes['bot_id']) {\n urlArgumetns = urlArgumetns + \"/(bot)/\" + this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id']) {\n urlArgumetns = urlArgumetns + \"/(trigger)/\" + this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority']) {\n urlArgumetns = urlArgumetns + \"/(priority)/\" + this.attributes['priority'];\n }\n\n if (this.attributes['prefixLowercase'] != 'lhc') {\n urlArgumetns = urlArgumetns + \"/(scope)/\" + this.attributes['prefixLowercase'];\n }\n\n urlArgumetns = urlArgumetns + \"/(sound)/\" + (this.attributes.toggleSound.value == true ? 1 : 0);\n\n if (this.attributes['proactive']['invitation']) {\n urlArgumetns = urlArgumetns + \"/(inv)/\" + this.attributes['proactive']['invitation'];\n if (this.attributes['mode'] == 'popup') {\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_invt', 1);\n }\n }\n\n var fontSize = this.attributes.storageHandler.getLocalStorage(this.attributes['prefixStorage']+'_dfs');\n\n if (fontSize) {\n urlArgumetns = urlArgumetns + \"/(fs)/\" + parseInt(fontSize);\n }\n\n if (this.attributes['leaveMessage'] === true) {\n urlArgumetns = urlArgumetns + \"/(leaveamessage)/true\";\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null && this.attributes['userSession'].getSessionReferrer() != '') {\n urlArgumetns = urlArgumetns + '?ses_ref=' + this.attributes['userSession'].getSessionReferrer() + this.parseOptions();\n } else {\n urlArgumetns = urlArgumetns + '?' + this.parseOptions();\n }\n\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - parseInt(this.attributes['popupDimesnions']['pwidth'])) / 2 / systemZoom + dualScreenLeft;\n const top = (height - parseInt(this.attributes['popupDimesnions']['pheight'])) / 2 / systemZoom + dualScreenTop;\n\n var paramsWindow = \"scrollbars=yes,menubar=1,resizable=1,width=\" + this.attributes['popupDimesnions']['pwidth'] + \",height=\" + this.attributes['popupDimesnions']['pheight'] + \",top=\" + top + \",left=\" + left;\n var newWin = window.open(\"\", this.attributes['prefixStorage'] + '_popup_v2', paramsWindow);\n var needWindow = false;\n var windowCreated = false;\n\n // First try to find any existing window\n try {\n // It has to be new window or popup was blocked\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined' || newWin.location.href === \"about:blank\") {\n newWin = this.cont.elementReferrerPopup = window.open(this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns, this.attributes['prefixStorage']+'_popup_v2', paramsWindow);\n windowCreated = true;\n } else {\n needWindow = true;\n }\n } catch (e) { // We get cross-origin error only if window exist and it's location is other one than about:blank\n needWindow = true;\n }\n\n // Now if visitor has blocked popup change chat status link and just allow browser handle the rest.\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined') {\n try {\n this.attributes.viewHandler.cont.getElementById(\"status-icon\").href = this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns;\n } catch (e) {\n alert('You have disabled popups!');\n }\n } else if (windowCreated == true) {\n typeof chatEvents !== 'undefined' && this.attributes.kcw === false && chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n } else if (needWindow === true) {\n this.cont.elementReferrerPopup = newWin;\n newWin.focus();\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n }\n }\n }\n\n sendParameters(chatEvents) {\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n var js_vars = this.attributes['jsVars'].value;\n var js_args = {};\n var currentVar = null;\n for (var index in js_vars) {\n try {\n currentVar = eval(js_vars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[js_vars[index].id] = currentVar;\n }\n } catch (err) {\n\n }\n }\n chatEvents.sendChildEvent('jsVars', [js_args]);\n }\n }\n}","import {settings} from '../settings.js';\nimport {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class statusWidget{\n constructor(prefix) {\n\n this.attributes = {};\n this.controlMode = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_status_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.loadStatus = {main : false, theme: false, font: true, widget : false, shidden: false};\n this.lload = false;\n this.unread_counter = 0;\n }\n\n toggleOfflineIcon(onlineStatus) {\n var icon = this.cont.getElementById(\"status-icon\");\n\n if (onlineStatus) {\n if (!this.attributes.leaveMessage) {\n this.show();\n }\n helperFunctions.removeClass(icon, \"offline-status\");\n } else {\n if (!this.attributes.leaveMessage) {\n this.hide();\n } else {\n helperFunctions.addClass(icon, \"offline-status\");\n }\n }\n }\n\n checkLoadStatus() {\n if (this.loadStatus['theme'] == true && this.loadStatus['main'] == true && this.loadStatus['font'] == true && this.loadStatus['widget'] == true && this.loadStatus['shidden'] == false) {\n this.cont.getElementById('lhc_status_container').style.display = \"\";\n this.attributes.sload.next(true);\n }\n }\n\n init(attributes, lload) {\n\n this.attributes = attributes;\n\n var placement = {bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n\n if (attributes.position_placement == 'bottom_left' || attributes.position_placement == 'full_height_left') {\n placement = { bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_right') {\n placement = {bottom: \"calc(50% - 45px)\",right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_left') {\n placement = {bottom: \"calc(50% - 45px)\",left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n }\n\n this.cont.massRestyle(placement);\n\n this.cont.tmpl = '
!
';\n\n if (this.cont.constructUIIframe('') === null) {\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile' : 'lhc-desktop';\n\n var _inst = this;\n\n this.lload = !(!lload);\n\n // If it's lazy load we have always to consider widget as loaded\n if (this.lload === true) {\n this.loadStatus['widget'] = true;\n } else {\n // We wait untill widget content loads\n attributes.wloaded.subscribe((data) => { if (data){this.loadStatus['widget'] = true; this.checkLoadStatus()}});\n }\n\n attributes.shidden.subscribe((data) => {\n if (data) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (!chatParams['id'] && this.attributes.widgetStatus.value != true) {\n this.loadStatus['shidden'] = true;\n this.hide();\n }\n } else {\n this.loadStatus['shidden'] = false;\n this.checkLoadStatus();\n this.show();\n }\n });\n\n this.cont.attachUserEventListener(\"click\", function (e) {\n\n attributes.onlineStatus.value === false && attributes.eventEmitter.emitEvent('offlineClickAction');\n\n if (attributes.onlineStatus.value === false && attributes.offline_redirect !== null){\n document.location = attributes.offline_redirect;\n e.preventDefault();\n } else {\n if (_inst.controlMode == true) {\n attributes.eventEmitter.emitEvent('closeWidget', [{'sender' : 'closeButton'}]);\n e.preventDefault();\n } else {\n attributes.eventEmitter.emitEvent('showWidget', [{'event':e}]);\n attributes.eventEmitter.emitEvent('clickAction');\n }\n }\n\n }, \"lhc_status_container\", \"minifiedclick\");\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.staticJS['font_status']) {\n this.cont.insertCssRemoteFile({onload: () => {this.loadStatus['font'] = true; this.checkLoadStatus()},\"as\":\"font\", rel:\"preload\", type: \"font/woff\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['font_status']});\n }\n\n if (this.attributes.theme > 0) {\n this.loadStatus['theme'] = false;\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['theme'] = true; this.checkLoadStatus()}, id: \"lhc-theme-status\", crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n } else {\n this.loadStatus['theme'] = true;\n }\n\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['main'] = true; this.checkLoadStatus()}, crossOrigin : \"anonymous\", href : this.attributes.staticJS['status_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n\n attributes.onlineStatus.subscribe((data) => this.toggleOfflineIcon(data));\n\n attributes.widgetStatus.subscribe((data) => {\n if (this.attributes.mode !== 'popup') {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n (data == true || (!this.attributes.leaveMessage && this.attributes.onlineStatus.value == false && !chatParams['id'])) ? this.hide() : this.show();\n }\n });\n\n this.attributes.mode === 'popup' && this.show();\n let unreadMessagesNumber = attributes.storageHandler.getSessionStorage(this.attributes['prefixStorage']+'_unr');\n\n attributes.eventEmitter.addListener('unread_message', (data) => {\n var unreadTotal = (data && data.otm);\n if (unreadTotal) {\n unreadTotal = parseInt(unreadTotal);\n unreadTotal += this.unread_counter;\n }\n this.attributes.unread_counter.next(unreadTotal);\n this.showUnreadIndicator(unreadTotal);\n });\n\n if (unreadMessagesNumber !== null) {\n attributes.eventEmitter.emitEvent('unread_message',[{otm:unreadMessagesNumber, init: true}]);\n if (unreadMessagesNumber !== null && !isNaN(unreadMessagesNumber)) {\n this.unread_counter = parseInt(unreadMessagesNumber);\n }\n }\n\n // Widget reload was called\n // We avoid cache by using timestamp because we do not call init call.\n // We also always insert themepage even if there is no css in it.\n attributes.eventEmitter.addListener('reloadWidget',() => {\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-status\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + Date.now()}, true);\n }\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + Date.now()});\n });\n }\n\n hide () {\n\n this.removeUnreadIndicator();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (this.attributes.leaveMessage == true || this.attributes.onlineStatus.value == true || chatParams['id']) {\n\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && ((chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true))) {\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n }\n }\n\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true) {\n if (this.attributes.widgetStatus.value == true){\n this.controlMode = true;\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.addClass(icon, \"close-status\");\n }\n return ;\n }\n\n }\n }\n\n this.cont.hide();\n }\n\n showUnreadIndicator(number){\n var iconText = number || '!';\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.addClass(icon, \"has-uread-message\");\n\n var iconValue = this.cont.getElementById(\"unread-msg-number\");\n if (iconValue) {\n iconValue.innerText = iconText;\n }\n\n if (this.attributes.storageHandler)\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_unr',iconText);\n }\n\n removeUnreadIndicator() {\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.removeClass(icon, \"has-uread-message\");\n if (this.attributes.storageHandler) {\n this.attributes.storageHandler.removeSessionStorage(this.attributes['prefixStorage']+'_unr');\n }\n this.attributes.eventEmitter.emitEvent('remove_unread_indicator', []);\n this.attributes.unread_counter.next(0);\n this.unread_counter = 0;\n }\n\n show () {\n\n if (this.attributes.hideOffline === false) {\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n if (this.attributes.widgetStatus.value != true) {\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.removeClass(icon, \"close-status\");\n this.controlMode = false;\n }\n }\n\n // show status icon only if we are not in api mode or chat is going now\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n } else if (this.attributes.clinst === true) {\n if (this.attributes.widgetStatus.value != true) {\n this.cont.hide();\n }\n }\n\n } else {\n this.cont.hide();\n }\n }\n}","\nclass chatEventsHandler {\n\n constructor(attr) {\n this.attributes = attr\n }\n\n getJSVarsValues(jsVars) {\n var js_args = {};\n\n if (jsVars.length > 0) {\n\n var currentVar = null;\n\n for (var index in jsVars) {\n try {\n currentVar = eval('window.'+jsVars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[jsVars[index].id] = currentVar;\n }\n } catch(err) {\n }\n }\n return js_args;\n }\n\n return js_args;\n }\n\n getInitAttributes() {\n let attr = {\n 'onlineStatus' : this.attributes['onlineStatus'].value,\n 'toggleSound' : this.attributes['toggleSound'].value,\n 'widgetStatus' : this.attributes['widgetStatus'].value,\n 'jsVars' : this.getJSVarsValues(this.attributes['jsVars'].value),\n 'isMobile' : this.attributes['isMobile'],\n 'department' : this.attributes['department'],\n 'product' : this.attributes['product'],\n 'theme' : this.attributes['theme'],\n 'base_url' : this.attributes['base_url'],\n 'mode' : this.attributes['mode'],\n 'captcha' : this.attributes['captcha'],\n 'staticJS' : this.attributes['staticJS'],\n 'static_chat' : this.attributes['userSession'].getSessionAttributes(),\n 'domain_lhc': this.attributes['domain_lhc'],\n 'leave_message': this.attributes['leaveMessage'],\n 'scope_prefix': this.attributes['prefixLowercase']\n };\n\n if (this.attributes['fresh'] == true) {\n if (attr['static_chat']['id']) {\n delete attr['static_chat']['id'];\n }\n\n if (attr['static_chat']['hash']) {\n delete attr['static_chat']['hash'];\n }\n }\n\n if (this.attributes['bot_id'] != '') {\n attr['bot_id'] = this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id'] != '') {\n attr['trigger_id'] = this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority'] != '') {\n attr['priority'] = this.attributes['priority'];\n }\n \n if (this.attributes['phash'] !== null) {\n attr['phash'] = this.attributes['phash'];\n }\n\n if (this.attributes['survey'] !== null) {\n attr['survey'] = this.attributes['survey'];\n }\n\n if (this.attributes['pvhash'] !== null) {\n attr['pvhash'] = this.attributes['pvhash'];\n }\n\n if (this.attributes['operator'] !== null) {\n attr['operator'] = this.attributes['operator'];\n }\n\n if (this.attributes['profile_pic'] !== null) {\n attr['profile_pic'] = this.attributes['profile_pic'];\n }\n\n if (this.attributes['lang'] != '') {\n attr['lang'] = this.attributes['lang'];\n }\n\n if (this.attributes['proactive']['invitation']) {\n attr['proactive'] = this.attributes['proactive'];\n }\n\n if (this.attributes['dep_default'] !== null) {\n attr['dep_default'] = this.attributes['dep_default'];\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr) {\n var prefillOptions = this.attributes.LHCChatOptions.attr;\n let fieldsCustom = [];\n prefillOptions.forEach((item, index) => {\n fieldsCustom.push({show : (((typeof item.show != 'undefined' && (item.show == 'on' || item.show == 'off')) ? item.show : 'b')), value : item.value, index : index, name : item.name, \"class\": \"form-control form-control-sm\", 'type' : item.type, 'identifier': ('additional_' + index), 'placeholder' : '', 'width' : (item.size || 6), 'encrypted': (item.encrypted || false), 'required' : (item.req || false), 'label' : item.name});\n });\n\n attr['CUSTOM_FIELDS'] = fieldsCustom;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n if (item.name == 'email') {\n prefilOptionsList.push({'Email' : item.value});\n } else if (item.name == 'username') {\n prefilOptionsList.push({'Username' : item.value});\n } else if (item.name == 'phone') {\n prefilOptionsList.push({'Phone' : item.value});\n } else if (item.name == 'question') {\n prefilOptionsList.push({'Question' : item.value});\n }\n })\n attr['attr_prefill'] = prefilOptionsList;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill_admin) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill_admin;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n prefilOptionsList.push({'value' : item.value, 'index' : item.index});\n })\n attr['attr_prefill_admin'] = prefilOptionsList;\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null) {\n attr['ses_ref'] = this.attributes['userSession'].getSessionReferrer()\n }\n\n return attr;\n }\n\n sendChildCommand(command) {\n if (this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(command, '/');\n }\n\n if (this.attributes.popupWidget.cont.elementReferrerPopup && this.attributes.popupWidget.cont.elementReferrerPopup.closed === false)\n {\n this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(command, '*');\n }\n }\n\n sendReadyEvent (popup) {\n\n let args = this.getInitAttributes();\n\n if (!(popup === true) && this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage('lhc_init:' + JSON.stringify(args), '/');\n }\n }\n\n sendChildEvent(event, args, type) {\n if (typeof type === 'undefined') {\n type = 'lhc_event';\n }\n this.sendChildCommand(type+':'+event + '::' + JSON.stringify(args));\n }\n}\n\nexport { chatEventsHandler };","\nclass _domEventsHandler {\n constructor() {\n this.events = {}\n }\n\n attachEvent (object, event, callback) {\n var k = this, dispatch = function (b) {\n callback.call(object, k.getEvent(b))\n };\n object.attachEvent(\"on\" + event, dispatch);\n return dispatch\n };\n\n unlisten(eventName) {\n var presentEvent;\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n }\n\n listen(object, event, callback, eventName) {\n var presentEvent;\n if (eventName) {\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n\n if (object.addEventListener) {\n object.addEventListener(event, callback, !1);\n } else if (document.attachEvent) {\n callback = this.attachEvent(object, event, callback);\n } else {\n return null;\n }\n\n this.events[eventName] = {element: object, eventName: event, eventListener: callback};\n\n return callback\n }\n };\n\n removeEventHandler(object, event, listener) {\n document.removeEventListener ? object.removeEventListener(event, listener, !1) : object.detachEvent(\"on\" + event, listener)\n };\n\n getEvent(event) {\n var eventInstance = event || _this.event;\n if (!eventInstance) {\n for (event = this.getEvent.caller; event && (!(eventInstance = event.arguments[0]) || Event != eventInstance.constructor);) {\n event = event.caller\n };\n }\n return eventInstance\n };\n}\n\nconst domEventsHandler = new _domEventsHandler();\nexport { domEventsHandler };","\nexport class monitoredVariable {\n constructor(value, params) {\n this.valueInternal = value;\n this.listeners = [];\n this.params = params || {};\n }\n\n get value() {\n return this.valueInternal;\n }\n\n set value(val) {\n this.next(val);\n }\n\n next(val) {\n this.valueInternal = val;\n this.callListeners();\n }\n\n nextProperty(key, val) {\n this.valueInternal[key] = val;\n this.callListeners();\n }\n\n callListeners() {\n this.listeners.forEach((item) => {\n if (item && typeof item === \"function\") {\n item(this.valueInternal);\n }\n });\n }\n\n unsubscribe(callback) {\n if (this.listeners.indexOf(callback) !== -1) {\n this.listeners.splice(this.listeners.indexOf(callback), 1);\n }\n }\n\n subscribe(callback) {\n this.listeners.push(callback);\n \n if (!this.params['ignore_sub']) {\n callback(this.valueInternal);\n }\n }\n}\n\n","\nexport class storageHandler {\n constructor(global, domain, prefix, cookieEnabled) {\n this.window = global;\n this.cookieEnabled = false;\n\n // Have we checked cookies support\n this.cookiesSupportChecked = false;\n\n // We should try to enable cookie\n if (cookieEnabled == true) {\n this.checkCookiesSupport();\n }\n\n this.domain = domain;\n this.secureCookie = false;\n this.cookiePerPage = false;\n this.prefix = prefix || 'lhc';\n }\n\n checkCookiesSupport() {\n\n if (this.cookiesSupportChecked === true) {\n return this.cookieEnabled;\n }\n\n this.cookiesSupportChecked = true;\n\n try {\n this.hasSessionStorage = !!this.window.sessionStorage;\n } catch (e){\n this.hasSessionStorage = false;\n }\n\n try {\n this.hasLocalStorage = !!this.window.localStorage;\n } catch (e){\n this.hasLocalStorage = false;\n }\n\n try {\n // Create cookie\n document.cookie = 'cookietest=1';\n this.cookieEnabled = document.cookie.indexOf('cookietest=') !== -1;\n // Delete cookie\n document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';\n } catch (e) {\n\n }\n\n return this.cookieEnabled;\n }\n\n setCookieDomain(domain) {\n this.domain = domain;\n }\n\n setCookiePerPage(cookiePerPage) {\n this.cookiePerPage = cookiePerPage;\n }\n\n getCookieDomain() {\n if (this.domain) {\n return '.' + this.domain;\n } else {\n return null;\n }\n }\n\n setSecureCookie(status) {\n this.secureCookie = status;\n }\n\n setHTTPCookie(coookieName, cookieValue, expireTime, domain) {\n if (this.cookieEnabled === false) return ;\n var string = \"\";\n expireTime || (expireTime = new Date, expireTime.setTime(expireTime.getTime() + 15552E6), string = \"; expires=\" + expireTime.toGMTString());\n document.cookie = coookieName + \"=\" + cookieValue + string + (this.cookiePerPage === false ? \"; path=/\" : (this.cookiePerPage === true ? \"\" : '; path=' + this.cookiePerPage)) + (this.secureCookie ? \";secure\" : \"\") + (domain ? \";domain=\" + domain : \"\") + \";SameSite=Lax\";\n };\n\n getHTTPCookie(cookieName) {\n if (this.cookieEnabled === false) return [];\n var b, d, k = [], baseCookie = cookieName + \"=\", e = document.cookie.split(\";\");\n cookieName = 0;\n for (b = e.length; cookieName < b; cookieName++) {\n for (d = e[cookieName]; \" \" === d.charAt(0);) d = d.substring(1, d.length);\n 0 === d.indexOf(baseCookie) && k.push(d.substring(baseCookie.length, d.length))\n }\n\n // Reset duplicate cookies\n if (k.length == 2) {\n let host = (window.location.hostname || document.location.host),\n reset = baseCookie + \"0;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\";\n if (host) {\n document.cookie = reset;\n document.cookie = reset + \"; domain=.\" + host;\n }\n }\n\n return k;\n };\n\n setSessionStorage(key, value) {\n if (this.hasSessionStorage && sessionStorage.setItem) try {\n sessionStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n removeSessionStorage(key) {\n if (this.hasSessionStorage && sessionStorage.removeItem) try {\n sessionStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n getSessionStorage(a) {\n return this.hasSessionStorage && sessionStorage.getItem ?\n sessionStorage.getItem(a) : null\n }\n\n setLocalStorage(key, value) {\n if (this.hasLocalStorage && localStorage.setItem) try {\n localStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n getLocalStorage(a) {\n return this.hasLocalStorage && localStorage.getItem ?\n localStorage.getItem(a) : null\n }\n\n removeLocalStorage(key) {\n if (this.hasLocalStorage && localStorage.removeItem) try {\n localStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n setSessionReferer(ref) {\n if (!this.getSessionStorage(this.prefix+'_ref')) {\n this.setSessionStorage(this.prefix+'_ref',ref);\n }\n }\n\n getSessionReferrer() {\n return this.getSessionStorage(this.prefix+'_ref');\n }\n\n getSessionInformation() {\n var a;\n this.sessionInformation && (a = this.sessionInformation);\n a || (a = this.getHTTPCookie(this.prefix + \"_per\")[0]);\n return this.parseSessionInformation(a)\n };\n\n getStoreValue(sessionInformation)\n {\n let pairs = [];\n Object.keys(sessionInformation).forEach(key => {\n let value = sessionInformation[key];\n pairs.push(key + '|' + value);\n });\n return pairs.join('|');\n }\n\n storeSessionInformation(sessionInformation) {\n this.setHTTPCookie(this.prefix+\"_per\", this.getStoreValue(sessionInformation), false, this.getCookieDomain());\n this.sessionInformation = sessionInformation;\n };\n\n parseSessionInformation(content) {\n // Check was it stored as our format or JSON.\n if (content && content.indexOf('|') !== -1) {\n let contentReturn = {};\n let parts = content.split('|');\n\n for (var i = 0; i < parts.length / 2; i++) {\n contentReturn[parts[i * 2]] = parts[(i * 2) + 1];\n }\n\n return contentReturn;\n } else {\n if (content) {\n return JSON.parse(unescape(content))\n } else {\n return {};\n }\n }\n\n };\n}\n\n","\nexport class userSession {\n\n constructor() {\n this.vid = null;\n this.hnh = null;\n\n this.attributes = {};\n this.ref = null;\n this.id = null;\n this.hash = null;\n this.jsVars = [];\n this.updateVarsTimeout = null;\n this.JSON = {\n parse: window.JSON && (window.JSON.parse || window.JSON.decode) || String.prototype.evalJSON && function(str){return String(str).evalJSON();} || $.parseJSON || $.evalJSON,\n stringify: Object.toJSON || window.JSON && (window.JSON.stringify || window.JSON.encode) || $.toJSON\n };\n }\n\n setAttributes(attributes) {\n this.attributes = attributes;\n }\n\n setSessionReferrer(ref) {\n this.ref = ref;\n }\n\n getSessionReferrer() {\n return this.ref;\n }\n\n getVID() {\n return this.vid;\n }\n\n setVID(vid) {\n this.vid = vid;\n }\n\n setSessionInformation(params) {\n this.vid = params['vid'] || null;\n this.hnh = params['hnh'] || null;\n this.hash = params['hash'] || null;\n this.id = params['id'] || null;\n }\n\n getSessionAttributes() {\n var attr = {};\n\n if (this.vid !== null) {\n attr['vid'] = this.vid;\n }\n\n if (this.hnh !== null) {\n attr['hnh'] = this.hnh;\n }\n\n if (this.id !== null) {\n attr['id'] = this.id;\n }\n\n if (this.hash !== null) {\n attr['hash'] = this.hash;\n }\n\n return attr\n }\n\n setupVarsMonitoring(jsVars, cb) {\n this.jsVars = jsVars;\n\n // Try to monitor variable if it's lhc_var\n try {\n if (this.attributes.lhc_var !== null)\n {\n\n var validator = {\n set: (obj, prop, value) => {\n // The default behavior to store the value\n obj[prop] = value;\n\n clearTimeout(this.updateVarsTimeout);\n this.updateVarsTimeout = setTimeout( () =>{ this.updateJSVars(obj, cb); },1000);\n\n // Indicate success\n return true;\n }\n };\n\n this.attributes.lhc_var = new Proxy(this.attributes.lhc_var,validator);\n\n // Convert argument or global lhc_var to a reference\n if (this.attributes.LHC_API.args.lhc_var) {\n this.attributes.LHC_API.args.lhc_var = this.attributes.lhc_var;\n } else if (lhc_var) {\n lhc_var = this.attributes.lhc_var;\n }\n\n // Update vars initially\n this.updateJSVars(this.attributes.lhc_var);\n }\n } catch(err) {\n console.log(err);\n };\n\n }\n\n getVars() {\n if (this.jsVars.length > 0) {\n var js_args = {};\n var currentVar = null;\n\n for (var index in this.jsVars) {\n try {\n\n if (this.jsVars[index].var.indexOf('lhc_var.') !== -1) {\n currentVar = this.attributes.lhc_var[this.jsVars[index].var.replace('lhc_var.','')] || null;\n } else {\n currentVar = eval(this.jsVars[index].var);\n }\n\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[this.jsVars[index].id] = currentVar;\n }\n } catch(err) {\n\n }\n }\n\n return js_args;\n }\n return null;\n }\n\n getAppendVariables(){\n var append = '';\n\n if (this.vid !== null) {\n append = append + '/(vid)/' + this.vid ;\n }\n\n if (this.hash !== null && this.id !== null) {\n append = append + '/(hash)/' + this.id + '_' + this.hash;\n }\n\n return append;\n }\n\n updateJSVars(vars, cb) {\n\n let varsJSON = this.getVars(vars);\n\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", this.attributes.LHC_API.args.lhc_base_url + '/chat/updatejsvars' + this.getAppendVariables(), true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( this.JSON.stringify(varsJSON) ) );\n\n if (typeof cb !== 'undefined' && this.hash === null && this.id === null) {\n cb(varsJSON);\n }\n }\n\n setChatInformation(data, alwaysPersistentNeedHelp) {\n this.id = data.id;\n this.hash = data.hash;\n // Hide only chat starts otherwise don't touch it.\n if (this.id !== null && !alwaysPersistentNeedHelp) {\n this.hnh = Math.round(Date.now() / 1000);\n }\n }\n\n}","const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\nexport default function isMobile(userAgent) {\n userAgent =\n userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : '');\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n const result = {\n apple: {\n phone: match(appleIphone, userAgent) && !match(windowsPhone, userAgent),\n ipod: match(appleIpod, userAgent),\n tablet: !match(appleIphone, userAgent) &&\n match(appleTablet, userAgent) &&\n !match(windowsPhone, userAgent),\n device: (match(appleIphone, userAgent) ||\n match(appleIpod, userAgent) ||\n match(appleTablet, userAgent)) &&\n !match(windowsPhone, userAgent),\n },\n amazon: {\n phone: match(amazonPhone, userAgent),\n tablet: !match(amazonPhone, userAgent) && match(amazonTablet, userAgent),\n device: match(amazonPhone, userAgent) || match(amazonTablet, userAgent),\n },\n android: {\n phone: (!match(windowsPhone, userAgent) && match(amazonPhone, userAgent)) ||\n (!match(windowsPhone, userAgent) && match(androidPhone, userAgent)),\n tablet: !match(windowsPhone, userAgent) &&\n !match(amazonPhone, userAgent) &&\n !match(androidPhone, userAgent) &&\n (match(amazonTablet, userAgent) || match(androidTablet, userAgent)),\n device: (!match(windowsPhone, userAgent) &&\n (match(amazonPhone, userAgent) ||\n match(amazonTablet, userAgent) ||\n match(androidPhone, userAgent) ||\n match(androidTablet, userAgent))) ||\n match(/\\bokhttp\\b/i, userAgent),\n },\n windows: {\n phone: match(windowsPhone, userAgent),\n tablet: match(windowsTablet, userAgent),\n device: match(windowsPhone, userAgent) || match(windowsTablet, userAgent),\n },\n other: {\n blackberry: match(otherBlackBerry, userAgent),\n blackberry10: match(otherBlackBerry10, userAgent),\n opera: match(otherOpera, userAgent),\n firefox: match(otherFirefox, userAgent),\n chrome: match(otherChrome, userAgent),\n device: match(otherBlackBerry, userAgent) ||\n match(otherBlackBerry10, userAgent) ||\n match(otherOpera, userAgent) ||\n match(otherFirefox, userAgent) ||\n match(otherChrome, userAgent),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","'use strict';\n\nmodule.exports = require('./lib')\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._h = 0;\n this._i = 0;\n this._j = null;\n this._k = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._l = null;\nPromise._m = null;\nPromise._n = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._i === 3) {\n self = self._j;\n }\n if (Promise._l) {\n Promise._l(self);\n }\n if (self._i === 0) {\n if (self._h === 0) {\n self._h = 1;\n self._k = deferred;\n return;\n }\n if (self._h === 1) {\n self._h = 2;\n self._k = [self._k, deferred];\n return;\n }\n self._k.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._i === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._i === 1) {\n resolve(deferred.promise, self._j);\n } else {\n reject(deferred.promise, self._j);\n }\n return;\n }\n var ret = tryCallOne(cb, self._j);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._i = 3;\n self._j = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._i = 1;\n self._j = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._i = 2;\n self._j = newValue;\n if (Promise._m) {\n Promise._m(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._h === 1) {\n handle(self, self._k);\n self._k = null;\n }\n if (self._h === 2) {\n for (var i = 0; i < self._k.length; i++) {\n handle(self, self._k[i]);\n }\n self._k = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._n);\n p._i = 1;\n p._j = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._i === 3) {\n val = val._j;\n }\n if (val._i === 1) return res(i, val._j);\n if (val._i === 2) reject(val._j);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n return this.then(function (value) {\n return Promise.resolve(f()).then(function () {\n return value;\n });\n }, function (err) {\n return Promise.resolve(f()).then(function () {\n throw err;\n });\n });\n};\n","'use strict';\n\nmodule.exports = require('./core.js');\nrequire('./done.js');\nrequire('./finally.js');\nrequire('./es6-extensions.js');\nrequire('./node-extensions.js');\nrequire('./synchronous.js');\n","'use strict';\n\n// This file contains then/promise specific extensions that are only useful\n// for node.js interop\n\nvar Promise = require('./core.js');\nvar asap = require('asap');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n if (\n typeof argumentCount === 'number' && argumentCount !== Infinity\n ) {\n return denodeifyWithCount(fn, argumentCount);\n } else {\n return denodeifyWithoutCount(fn);\n }\n};\n\nvar callbackFn = (\n 'function (err, res) {' +\n 'if (err) { rj(err); } else { rs(res); }' +\n '}'\n);\nfunction denodeifyWithCount(fn, argumentCount) {\n var args = [];\n for (var i = 0; i < argumentCount; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'return new Promise(function (rs, rj) {',\n 'var res = fn.call(',\n ['self'].concat(args).concat([callbackFn]).join(','),\n ');',\n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n return Function(['Promise', 'fn'], body)(Promise, fn);\n}\nfunction denodeifyWithoutCount(fn) {\n var fnLength = Math.max(fn.length - 1, 3);\n var args = [];\n for (var i = 0; i < fnLength; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'var args;',\n 'var argLength = arguments.length;',\n 'if (arguments.length > ' + fnLength + ') {',\n 'args = new Array(arguments.length + 1);',\n 'for (var i = 0; i < arguments.length; i++) {',\n 'args[i] = arguments[i];',\n '}',\n '}',\n 'return new Promise(function (rs, rj) {',\n 'var cb = ' + callbackFn + ';',\n 'var res;',\n 'switch (argLength) {',\n args.concat(['extra']).map(function (_, index) {\n return (\n 'case ' + (index) + ':' +\n 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' +\n 'break;'\n );\n }).join(''),\n 'default:',\n 'args[argLength] = cb;',\n 'res = fn.apply(self, args);',\n '}',\n \n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n\n return Function(\n ['Promise', 'fn'],\n body\n )(Promise, fn);\n}\n\nPromise.nodeify = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var callback =\n typeof args[args.length - 1] === 'function' ? args.pop() : null;\n var ctx = this;\n try {\n return fn.apply(this, arguments).nodeify(callback, ctx);\n } catch (ex) {\n if (callback === null || typeof callback == 'undefined') {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n } else {\n asap(function () {\n callback.call(ctx, ex);\n })\n }\n }\n }\n};\n\nPromise.prototype.nodeify = function (callback, ctx) {\n if (typeof callback != 'function') return this;\n\n this.then(function (value) {\n asap(function () {\n callback.call(ctx, null, value);\n });\n }, function (err) {\n asap(function () {\n callback.call(ctx, err);\n });\n });\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.enableSynchronous = function () {\n Promise.prototype.isPending = function() {\n return this.getState() == 0;\n };\n\n Promise.prototype.isFulfilled = function() {\n return this.getState() == 1;\n };\n\n Promise.prototype.isRejected = function() {\n return this.getState() == 2;\n };\n\n Promise.prototype.getValue = function () {\n if (this._i === 3) {\n return this._j.getValue();\n }\n\n if (!this.isFulfilled()) {\n throw new Error('Cannot get a value of an unfulfilled promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getReason = function () {\n if (this._i === 3) {\n return this._j.getReason();\n }\n\n if (!this.isRejected()) {\n throw new Error('Cannot get a rejection reason of a non-rejected promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getState = function () {\n if (this._i === 3) {\n return this._j.getState();\n }\n if (this._i === -1 || this._i === -2) {\n return 0;\n }\n\n return this._i;\n };\n};\n\nPromise.disableSynchronous = function() {\n Promise.prototype.isPending = undefined;\n Promise.prototype.isFulfilled = undefined;\n Promise.prototype.isRejected = undefined;\n Promise.prototype.getValue = undefined;\n Promise.prototype.getReason = undefined;\n Promise.prototype.getState = undefined;\n};\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"LiveHelperChat:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"81\":\"75d1d932aa8416f0bf23\",\"213\":\"9704c8f8044bd52f066c\",\"398\":\"16da6b6586a6fd6028ae\",\"417\":\"2de2c9d370bb7f28def0\",\"530\":\"6607a807df452c8883cf\",\"572\":\"77adaf2dba091c4d50d1\",\"783\":\"a68fc3eccb8af7392e9f\",\"821\":\"47fccc99a929b98c866b\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLiveHelperChat\"] = self[\"webpackChunkLiveHelperChat\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","(function (global) {\n\n var currentScript = document.currentScript || (function() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n var scopeScript = currentScript.getAttribute('scope') || 'LHC';\n\n if (/google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent)) {\n return;\n }\n\n if (!global[scopeScript+'_API']) {\n if (global['LHC_API']) {\n global[scopeScript+'_API'] = global['LHC_API'];\n } else {\n return;\n }\n }\n\n var lhcError = {\n log : function(message, filename, lineNumber, stack, column) {\n var e;\n e = {};\n e.message = message || \"\";\n e.message += \"\\n\" + global.navigator.userAgent;\n e.location = location && location.href ? location.href : \"\";\n e.file = filename || \"\";\n e.line = lineNumber || \"\";\n e.column = column || \"\";\n e.stack = stack ? JSON.stringify(stack) : \"\";\n e.stack = e.stack.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", global[scopeScript+'_API']['args']['lhc_base_url'] + 'audit/logjserror', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( JSON.stringify(e) ) );\n }\n }\n\n try {\n\n window.addEventListener('error', function (e) {\n if (lhcError && e.filename.indexOf(global[scopeScript+'_API']['args']['lhc_base_url'].replace('index.php/')) !== -1) {\n lhcError.log(e.message, e.filename, e.lineNumber || e.lineno, e.error.stack, e.colno);\n }\n })\n\n global['$_' + scopeScript + '_Instance'] = null;\n global['$_' + scopeScript + '_Debug'] = false;\n global['$_' + scopeScript] = global['$_' + scopeScript] || {};\n\n (function (lhc, LHC_API) {\n\n lhc.loaded = false;\n lhc.connected = false;\n lhc.ready = false;\n lhc.version = 186;\n\n var init = () => {\n\n if (!global.Promise) {\n global.Promise = require('promise');\n }\n\n var BehaviorSubject = require('./util/monitoredVariable').monitoredVariable;\n var EventEmitter = require('wolfy87-eventemitter');\n\n var statusWidget = require('./lib/widgets/statusWidget').statusWidget;\n var mainWidget = require('./lib/widgets/mainWidget').mainWidget;\n var mainWidgetPopup = require('./lib/widgets/mainWidgetPopup').mainWidgetPopup;\n var containerChat = require('./lib/widgets/containerChat').containerChat;\n var helperFunctions = require('./lib/helperFunctions').helperFunctions;\n var userSession = require('./util/userSession').userSession;\n var storageHandler = require('./util/storageHandler').storageHandler;\n var chatNotifications = require('./lib/chatNotifications').chatNotifications;\n var chatEventsHandler = require('./util/chatEventsHandler').chatEventsHandler;\n\n const isMobileItem = require('ismobilejs');\n\n var isMobile = isMobileItem.default(global.navigator.userAgent).phone;\n\n LHC_API.args = LHC_API.args || {};\n\n if (typeof LHC_API.args.mobile_view !== 'undefined') {\n isMobile = LHC_API.args.mobile_view;\n }\n\n const prefixLowercase = scopeScript.toLowerCase();\n const prefixStorage = (prefixLowercase && LHC_API.args.scope_storage ? prefixLowercase : 'lhc');\n const cookieEnabledUser = typeof LHC_API.args.cookie_enabled !== 'undefined' ? LHC_API.args.cookie_enabled : true;\n const userMode = LHC_API.args.mode || 'widget';\n\n var storageHandler = new storageHandler(global, LHC_API.args.domain || null, prefixStorage, cookieEnabledUser);\n\n // Cookies are disabled and it's required for us to work. So switch to mode where cookies are not required\n if (storageHandler.cookieEnabled === false && userMode == 'widget') {\n LHC_API.args.orig = {}\n LHC_API.args.orig.mode = LHC_API.args.mode;\n LHC_API.args.orig.proactive = LHC_API.args.proactive;\n LHC_API.args.orig.check_messages = LHC_API.args.check_messages;\n\n LHC_API.args.mode = 'popup';\n LHC_API.args.proactive = false;\n LHC_API.args.check_messages = false;\n }\n\n if (LHC_API.args.cookie_per_page) {\n storageHandler.setCookiePerPage(LHC_API.args.cookie_per_page);\n }\n\n var referrer = (document.referrer) ? document.referrer.substr(document.referrer.indexOf('://') + 1) : '';\n var location = (document.location) ? encodeURIComponent(window.location.href.substring(window.location.protocol.length)) : '';\n\n storageHandler.setSessionReferer(referrer);\n\n referrer = referrer ? encodeURIComponent(referrer) : '';\n\n if (LHC_API.args.lang) {\n LHC_API.args.lang = LHC_API.args.lang.replace('/', '') + '/';\n }\n\n // Main attributes\n var attributesWidget = {\n terminated: false,\n prefixLowercase: prefixLowercase,\n prefixStorage: prefixStorage,\n prefixScope: scopeScript,\n cookie_enabled: cookieEnabledUser,\n LHC_API: LHC_API,\n viewHandler: null,\n msgSnippet: null,\n react_attr: LHC_API.args.react_attr || null,\n hide_parent: LHC_API.args.hide_parent || false,\n hide_iframe: LHC_API.args.hide_iframe || false,\n hide_status: LHC_API.args.hide_status || null,\n mainWidget: new mainWidget(prefixLowercase),\n popupWidget: new mainWidgetPopup(),\n chatNotifications: chatNotifications,\n jsVars: new BehaviorSubject(true),\n onlineStatus: new BehaviorSubject(true),\n wloaded: new BehaviorSubject(false),\n sload: new BehaviorSubject(false),\n shidden: new BehaviorSubject(LHC_API.args.hide_status || false),\n msgsnippet_status: new BehaviorSubject(false),\n unread_counter: new BehaviorSubject(0),\n widgetStatus: new BehaviorSubject((storageHandler.getSessionStorage(prefixStorage + '_ws') === 'true' || (LHC_API.args.mode && LHC_API.args.mode == 'embed'))),\n eventEmitter: new EventEmitter(),\n toggleSound: new BehaviorSubject(storageHandler.getSessionStorage(prefixStorage + '_sound') === 'true', {'ignore_sub': true}),\n hideOffline: false,\n fscreen: LHC_API.args.fscreen || false,\n isMobile: isMobile,\n isIE: (navigator.userAgent.toUpperCase().indexOf(\"TRIDENT/\") != -1 || navigator.userAgent.toUpperCase().indexOf(\"MSIE\") != -1 || typeof Object.assign !== 'function'),\n fresh: LHC_API.args.fresh || false,\n popupDimesnions: {pheight: (LHC_API.args.pheight || 520), pwidth: (LHC_API.args.pwidth || 500)},\n leaveMessage: LHC_API.args.leaveamessage || null,\n department: LHC_API.args.department || [],\n dep_default: LHC_API.args.dep_default || null,\n product: LHC_API.args.product || [],\n theme: LHC_API.args.theme || null,\n theme_v: null,\n domain: LHC_API.args.domain || null,\n domain_lhc: null,\n instance_id: 0,\n profile_pic: LHC_API.args.profile_pic || null,\n position: LHC_API.args.position || 'bottom_right',\n position_placement: LHC_API.args.position_placement || 'bottom_right',\n base_url: LHC_API.args.lhc_base_url,\n mode: LHC_API.args.mode || 'widget',\n tag: LHC_API.args.tag || '',\n proactive: {},\n captcha: null,\n focused: true,\n clinst: false,\n kcw: LHC_API.args.kcw || false,\n offline_redirect: LHC_API.args.offline_redirect || null,\n identifier: LHC_API.args.identifier || '',\n proactive_interval: null,\n lang: LHC_API.args.lang || '',\n bot_id: LHC_API.args.bot_id || '',\n trigger_id: LHC_API.args.trigger_id || '',\n priority: LHC_API.args.priority || null,\n events: LHC_API.args.events || [],\n hhtml: LHC_API.args.hhtml || '',\n survey: LHC_API.args.survey || null,\n operator: LHC_API.args.operator || null,\n phash: LHC_API.args.phash || null,\n pvhash: LHC_API.args.pvhash || null,\n // Login Objects\n userSession: new userSession(),\n storageHandler: storageHandler,\n staticJS: {},\n nh : null, // Need help data\n init_calls: [],\n childCommands: [],\n childExtCommands: [],\n lhc_var: (LHC_API.args.lhc_var || (typeof lhc_var !== 'undefined' ? lhc_var : null)),\n loadcb: LHC_API.args.loadcb || null,\n LHCChatOptions: global[scopeScript + 'ChatOptions'] || {}\n };\n\n attributesWidget.widgetDimesions = new BehaviorSubject({\n sright: (LHC_API.args.sright || 0),\n sbottom: (LHC_API.args.sbottom || 0),\n wright_inv: 0,\n wbottom: 0,\n wright: 0,\n width: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wwidth || 350)),\n height: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wheight || 520)),\n units: ((isMobile || attributesWidget.fscreen) ? '%' : 'px')\n });\n\n var chatEvents = new chatEventsHandler(attributesWidget);\n\n lhc.eventListener = attributesWidget.eventEmitter;\n lhc.attributes = attributesWidget;\n\n attributesWidget.userSession.setAttributes(attributesWidget);\n attributesWidget.userSession.setSessionInformation(attributesWidget.storageHandler.getSessionInformation());\n attributesWidget.userSession.setSessionReferrer(storageHandler.getSessionReferrer());\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n\n var containerChatObj = new containerChat(attributesWidget.prefixLowercase, LHC_API.args.pnode || null);\n\n attributesWidget.viewHandler = new statusWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.viewHandler.cont.constructUI(), !0);\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.elmDom.appendChild(attributesWidget.mainWidget.cont.constructUI(), !0);\n }\n\n } else {\n var embedWrapper = document.getElementById(attributesWidget.prefixLowercase + '_status_container_page');\n if (embedWrapper !== null) {\n embedWrapper.appendChild(attributesWidget.mainWidget.cont.constructUI());\n embedWrapper.style.height = (LHC_API.args.wheight || 520) + 'px';\n } else {\n attributesWidget.position = 'api';\n }\n }\n\n function getArguments(){\n return {\n 'cd': (storageHandler.cookieEnabled === false ? 1 : null),\n 'vid': (LHC_API.args.UUID || attributesWidget.userSession.getVID()),\n 'hnh': attributesWidget.userSession.hnh,\n 'tz': helperFunctions.getTzOffset(),\n 'r': referrer,\n 'l': location,\n 'dt': encodeURIComponent(document.title),\n 'ie': attributesWidget.isIE,\n 'dep': attributesWidget.department.join(','),\n 'idnt': attributesWidget.identifier,\n 'tag': attributesWidget.tag,\n 'theme': attributesWidget.theme\n };\n }\n\n function showNeedHelp(nh) {\n import('./lib/widgets/needhelpWidget').then((module) => {\n var needhelpWidget = new module.needhelpWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(needhelpWidget.cont.constructUI(), !0);\n needhelpWidget.init(attributesWidget, nh);\n });\n }\n\n function showProactive(){\n import('./util/proactiveChat').then((module) => {\n module.proactiveChat.setParams({\n 'interval': attributesWidget.proactive_interval\n }, attributesWidget, chatEvents);\n });\n }\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n\n if (lhc.version !== data.wv && document.getElementById(attributesWidget.prefixLowercase+'-js-reload') === null) {\n\n if (data.terminate) {\n return;\n }\n\n attributesWidget.userSession.setVID(data.vid);\n\n // Mark script as terminated\n attributesWidget.terminated = true;\n\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n\n // Create new embed script\n var po = document.createElement(\"script\");\n po.type = currentScript.type;\n po.id = attributesWidget.prefixLowercase+'-js-reload';\n po.async = true;\n if (currentScript.getAttribute('scope')) { po.setAttribute('scope',currentScript.getAttribute('scope')); }\n\n // Expires cache\n po.src = currentScript.getAttribute('src') + '&r='+ (new Date()).getHours() + (new Date()).getMinutes();\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n return;\n }\n\n if (data.terminate || ((!attributesWidget.leaveMessage && data.chat_ui.leaveamessage === false) && data.isOnline === false)) {\n\n if (LHC_API.args.offline_redirect && attributesWidget.mode == 'embed') {\n document.location = LHC_API.args.offline_redirect;\n }\n\n if (data.terminate) {\n return;\n }\n }\n\n // Send event that lhc has started\n // So parent page informs back that it has lhc\n if ((attributesWidget.hide_parent || attributesWidget.hide_iframe || (data.chat_ui && (data.chat_ui.hide_iframe || data.chat_ui.hide_parent))) && window.location != window.parent.location && window.parent.closed === false) {\n window.parent.postMessage('lhc::started','*');\n }\n\n attributesWidget.leaveMessage = attributesWidget.leaveMessage || data.chat_ui.leaveamessage;\n\n if (data.department) {\n attributesWidget.department = data.department;\n }\n\n __webpack_public_path__ = data.chunks_location + \"/\";\n\n if (data.secure_cookie) {\n attributesWidget.storageHandler.setSecureCookie(true);\n }\n\n if (data.domain) {\n attributesWidget.storageHandler.setCookieDomain(data.domain);\n }\n\n if (data.siteaccess) {\n attributesWidget.lang = data.siteaccess;\n }\n\n if (data.static) {\n attributesWidget.staticJS = data.static;\n }\n\n if (data.pdim) {\n attributesWidget.popupDimesnions = data.pdim;\n }\n\n if (data.survey_id) {\n attributesWidget.survey = data.survey_id;\n }\n\n if (data.domain_lhc) {\n attributesWidget.domain_lhc = data.domain_lhc;\n }\n\n if (data.cont_css) {\n attributesWidget.cont_ss = data.cont_css;\n }\n\n if (data.wposition) {\n attributesWidget.position_placement = data.wposition;\n }\n\n attributesWidget.captcha = {hash: data.hash, ts: data.hash_ts};\n attributesWidget.userSession.setVID(data.vid);\n\n // Store session\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.hideOffline = data.hideOffline;\n attributesWidget.onlineStatus.next(data.isOnline);\n\n if (data.theme) {\n attributesWidget.theme = data.theme;\n attributesWidget.theme_v = data.theme_v;\n }\n\n if (data.chat_ui) {\n\n if (data.chat_ui.hide_parent) {\n attributesWidget.hide_parent = true;\n }\n\n if ((data.chat_ui.fscreen && attributesWidget.mode == 'embed') || attributesWidget.fscreen) {\n attributesWidget.widgetDimesions.nextProperty('width', 100);\n attributesWidget.widgetDimesions.nextProperty('height', 100);\n attributesWidget.widgetDimesions.nextProperty('units', '%');\n attributesWidget.fscreen = isMobile = attributesWidget.isMobile = true;\n }\n\n if (data.chat_ui.wheight && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('height', data.chat_ui.wheight);\n }\n\n if (data.chat_ui.wwidth && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('width', data.chat_ui.wwidth);\n }\n\n if (data.chat_ui.hhtml) {\n attributesWidget.hhtml = data.chat_ui.hhtml;\n }\n\n if (data.chat_ui.kcw) {\n attributesWidget.kcw = true;\n }\n\n if (data.chat_ui.clinst) {\n attributesWidget.clinst = true;\n }\n\n if (data.chat_ui.wbottom) {\n attributesWidget.widgetDimesions.nextProperty('wbottom', data.chat_ui.wbottom);\n }\n\n if (data.chat_ui.sbottom) {\n attributesWidget.widgetDimesions.nextProperty('sbottom', data.chat_ui.sbottom);\n }\n\n if (data.chat_ui.sright) {\n attributesWidget.widgetDimesions.nextProperty('sright', data.chat_ui.sright);\n }\n\n if (data.chat_ui.wright) {\n attributesWidget.widgetDimesions.nextProperty('wright', data.chat_ui.wright);\n }\n\n if (data.chat_ui.wright_inv) {\n attributesWidget.widgetDimesions.nextProperty('wright_inv', data.chat_ui.wright_inv);\n }\n\n if (data.chat_ui.mobile_popup && isMobile) {\n attributesWidget.mode = 'popup';\n }\n\n if (data.chat_ui.sound_enabled && storageHandler.getSessionStorage(prefixStorage + '_sound') === null) {\n attributesWidget.toggleSound.next(true);\n }\n\n if (data.instance_id) {\n attributesWidget.instance_id = data.instance_id;\n }\n\n if (data.chat_ui.check_status) {\n import('./util/activityMonitoring').then((module) => {\n module.activityMonitoring.setParams({\n 'timeout': data.chat_ui.check_status,\n 'track_mouse': data.chat_ui.track_mouse,\n 'track_activity': data.chat_ui.track_activity\n }, attributesWidget);\n });\n }\n\n if (data.ga) {\n import('./util/analyticEvents').then((module) => {\n module.analyticEvents.setParams({\n 'ga': data.ga\n }, attributesWidget);\n });\n }\n }\n\n if (data.nh && attributesWidget.fresh === false && attributesWidget['position'] != 'api') {\n attributesWidget.nh = data.nh;\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n if (data.nh.ap || attributesWidget.userSession.id === null) {\n showNeedHelp(data.nh);\n }\n }\n }\n\n if (data.js_vars) {\n // Javascript custom variables init\n // Extensions can listen for these\n attributesWidget.jsVars.next(data.js_vars);\n\n // Monitor js vars if required\n if (data.js_vars.length > 0) {\n attributesWidget.userSession.setupVarsMonitoring(data.js_vars, (vars) => {\n chatEvents.sendChildEvent('jsVars', [vars]);\n });\n }\n }\n\n // Init main widgets\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n attributesWidget.viewHandler.init(attributesWidget, data.ll);\n }\n\n if (!(attributesWidget.position == 'api' && attributesWidget.mode == 'embed')) {\n attributesWidget.mainWidget.init(attributesWidget, data.ll);\n }\n\n // Show status widget\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.show();\n }\n\n if (attributesWidget.loadcb) {\n attributesWidget.loadcb(attributesWidget);\n }\n\n if (data.init_calls) {\n attributesWidget.init_calls = data.init_calls;\n }\n\n attributesWidget.proactive_interval = data.chat_ui.proactive_interval;\n\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup' || attributesWidget.mode == 'embed') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n\n if (attributesWidget.init_calls.length > 0) {\n attributesWidget.init_calls.forEach((item) => {\n if (item.extension == 'nodeJSChat') {\n import('./util/nodeJSChat').then((module) => {\n module.nodeJSChat.setParams(item.params, attributesWidget, chatEvents);\n });\n }\n });\n }\n\n })\n\n // Widget Hide event\n attributesWidget.eventEmitter.addListener('closeWidget', function () {\n attributesWidget.widgetStatus.next(false);\n chatEvents.sendChildEvent('closedWidget', [{'sender': 'closeButton'}]);\n });\n\n // Send event to the child instantly\n attributesWidget.eventEmitter.addListener('sendChildEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n } else {\n attributesWidget.childCommands.push(params);\n }\n }\n });\n\n // Send smart event to the child\n attributesWidget.eventEmitter.addListener('sendChildExtEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n } else {\n attributesWidget.childExtCommands.push(params);\n }\n }\n });\n\n // Toggle sound user\n attributesWidget.eventEmitter.addListener('toggleSound', function () {\n var newValue = !attributesWidget.toggleSound.value;\n attributesWidget.toggleSound.next(newValue);\n });\n\n // Toggle cookies policy\n attributesWidget.eventEmitter.addListener('enableCookies', function () {\n\n // Check does cookies are supported in genreal\n if (storageHandler.checkCookiesSupport() === true) {\n // Store session\n var sessionAtrribute = attributesWidget.userSession.getSessionAttributes();\n if (typeof sessionAtrribute.hnh !== 'undefined') { delete sessionAtrribute['hnh']; }\n attributesWidget.storageHandler.storeSessionInformation(sessionAtrribute);\n\n if (typeof LHC_API.args.orig !== 'undefined') {\n\n attributesWidget.mode = LHC_API.args.mode = LHC_API.args.orig.mode;\n LHC_API.args.proactive = LHC_API.args.orig.proactive;\n LHC_API.args.check_messages = LHC_API.args.orig.check_messages;\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n // Change mode for react app\n attributesWidget.eventEmitter.emitEvent('sendChildEvent',[{'cmd' : 'attr_set', 'arg' : {'type':'attr_set','attr': ['mode'], data : attributesWidget.mode}}]);\n\n // Show need help widget if it's required\n if (attributesWidget.mode == 'widget' && attributesWidget.nh !== null) {\n showNeedHelp(attributesWidget.nh);\n }\n\n // Enable proactive if it's required\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n });\n }\n }\n });\n\n\n // Clear chat cookies if there is any\n // Then popup finishes loading it calls this to clean up chat cookies. So visitor can start new chat.\n attributesWidget.eventEmitter.addListener('endChatCookies', function (params) {\n if (attributesWidget.kcw === false || (params && params['force'] == true)) {\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n attributesWidget.proactive = {};\n }\n });\n\n attributesWidget.eventEmitter.addListener('endChat', function (params) {\n\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.proactive = {};\n\n if (attributesWidget.mode != 'popup' && (!params || !params['show_start'])) {\n attributesWidget.widgetStatus.next(false);\n }\n\n if (attributesWidget.viewHandler) {\n attributesWidget.viewHandler.removeUnreadIndicator();\n attributesWidget.eventEmitter.emitEvent('hide_msg_snippet');\n }\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n\n if (attributesWidget.mode == 'embed' || (params && params['show_start'])) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n }\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.freeup();\n }\n });\n\n // Widget show event\n attributesWidget.eventEmitter.addListener('showWidget', function (params) {\n\n // Just to restyle if needed\n attributesWidget.mainWidget.hideInvitation();\n\n attributesWidget.widgetStatus.next(true);\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.init(attributesWidget, chatEvents, params);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n attributesWidget.mainWidget.hide();\n } else if (typeof params !== 'undefined' && typeof params.event !== 'undefined') {\n params.event.preventDefault();\n }\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n });\n\n // Add tag listener\n attributesWidget.eventEmitter.addListener('addTag', function (tag) {\n attributesWidget.tag = attributesWidget.tag != '' ? attributesWidget.tag + ',' + tag : tag;\n attributesWidget.eventEmitter.emitEvent('tagAdded');\n });\n\n // Events\n attributesWidget.eventEmitter.addListener('addEvent', function (events) {\n attributesWidget.events = events;\n attributesWidget.eventEmitter.emitEvent('eventAdded');\n });\n\n // Popup open event\n attributesWidget.eventEmitter.addListener('openPopup', function () {\n\n attributesWidget.popupWidget.init(attributesWidget, chatEvents);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n\n attributesWidget.widgetStatus.next(false);\n });\n\n // Chat started event received\n // Store chat information if it's not popup mode.\n attributesWidget.eventEmitter.addListener('chatStarted', function (data, mode) {\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n if (mode !== 'popup' || attributesWidget.kcw === true) {\n attributesWidget.userSession.setChatInformation(data, attributesWidget.nh && attributesWidget.nh.ap);\n }\n\n if (mode == 'popup') {\n attributesWidget.mainWidget.hide();\n }\n\n // Store information permanently\n if (attributesWidget.fresh === false && (mode !== 'popup' || attributesWidget.kcw === true)) {\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n }\n });\n\n // Subscribe event\n attributesWidget.eventEmitter.addListener('subscribeEvent', function (data) {\n attributesWidget.chatNotifications.setPublicKey(data.pk, attributesWidget.eventEmitter);\n attributesWidget.chatNotifications.sendNotification();\n });\n\n // User has subscribed to notifications\n // Send back child subscription information\n attributesWidget.eventEmitter.addListener('subcribedEvent', function (data) {\n chatEvents.sendChildEvent('subcribedEvent', [data]);\n });\n\n // Track widget status changes\n attributesWidget.widgetStatus.subscribe((data) => {\n if (attributesWidget.mode !== 'popup') {\n if (attributesWidget.mode !== 'embed') {\n // Do not store open status in local storage because embed is always open\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_ws', data);\n }\n chatEvents.sendChildEvent('widgetStatus', [data]);\n }\n });\n\n // Store sound settings\n attributesWidget.toggleSound.subscribe((data) => {\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_sound', data);\n });\n\n attributesWidget.onlineStatus.subscribe((data) => {\n chatEvents.sendChildEvent('onlineStatus', [data]);\n });\n\n attributesWidget.eventEmitter.addListener('screenshot', (data) => {\n helperFunctions.makeScreenshot(attributesWidget.staticJS['screenshot'], data);\n });\n\n attributesWidget.eventEmitter.addListener('screenshare', (data) => {\n import('./util/screenShare').then((module) => {\n module.screenShare.setParams((data || {}), attributesWidget, chatEvents);\n });\n });\n\n attributesWidget.eventEmitter.addListener('location', (data) => {\n document.location = data;\n });\n\n attributesWidget.eventEmitter.addListener('terminated', (data) => {\n attributesWidget.terminated = true;\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n });\n\n attributesWidget.eventEmitter.addListener('showInvitation', (data) => {\n attributesWidget.widgetDimesions.nextProperty('bottom_override', 75);\n attributesWidget.widgetDimesions.nextProperty('right_override', 75);\n attributesWidget.mainWidget.showInvitation();\n });\n\n attributesWidget.eventEmitter.addListener('hideInvitation', (data) => {\n attributesWidget.mainWidget.hideInvitation();\n if (data.full) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n attributesWidget.eventEmitter.emitEvent('fullInvitation', [data]);\n } else {\n attributesWidget.eventEmitter.emitEvent('cancelInvitation', []);\n }\n });\n\n attributesWidget.eventEmitter.addListener('msgSnippet', (data) => {\n if (attributesWidget.mode == 'widget' && attributesWidget.widgetStatus.value === false) {\n\n if (data.full_widget) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n return;\n }\n\n attributesWidget.position == 'api' && attributesWidget.viewHandler && attributesWidget.viewHandler.show();\n\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n } else {\n attributesWidget.msgSnippet.showSnippet(data, true);\n }\n attributesWidget.eventEmitter.emitEvent('unread_message',[{otm: 1}]);\n });\n }\n });\n\n attributesWidget.eventEmitter.addListener('unread_message', (data) => {\n if (data && data.msg_body && !attributesWidget.msgSnippet) {\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n }\n });\n }\n });\n\n attributesWidget.originalTitle = document.title;\n attributesWidget.blinkInterval = null;\n\n attributesWidget.eventEmitter.addListener('unread_message_title', (data) => {\n clearInterval(attributesWidget.blinkInterval);\n if (data.status == false) {\n attributesWidget.blinkInterval = setInterval(() => {\n document.title = (Math.round(new Date().getTime() / 1000) % 2) ? '💬 ' + attributesWidget.originalTitle : attributesWidget.originalTitle;\n }, 1000);\n } else {\n attributesWidget.focused = true;\n document.title = attributesWidget.originalTitle;\n }\n });\n\n attributesWidget.eventEmitter.addListener('widgetHeight', (data) => {\n\n if (data.reset_height) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n attributesWidget.widgetDimesions.nextProperty('bottom_override', null);\n attributesWidget.widgetDimesions.nextProperty('right_override', null);\n attributesWidget.widgetDimesions.nextProperty('width_override', null);\n return;\n }\n\n if (data.force_height || data.force_width || data.force_bottom || data.force_right) {\n data.force_height && attributesWidget.widgetDimesions.nextProperty('height_override', data.force_height);\n data.force_width && attributesWidget.widgetDimesions.nextProperty('width_override', data.force_width);\n data.force_right && attributesWidget.widgetDimesions.nextProperty('right_override', data.force_right);\n data.force_bottom && attributesWidget.widgetDimesions.nextProperty('bottom_override', data.force_bottom);\n return;\n }\n\n if (attributesWidget.mode == 'widget' && attributesWidget.isMobile == false) {\n var d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n y = global.innerHeight || e.clientHeight || g.clientHeight;\n if (parseInt(data.height) > attributesWidget.widgetDimesions.value['height'] && y > parseInt(data.height)) {\n attributesWidget.widgetDimesions.nextProperty('height_override', parseInt(data.height));\n } else if (attributesWidget.widgetDimesions.value['height_override'] && attributesWidget.widgetDimesions.value['height_override'] > y) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n }\n }\n });\n\n var serviceWorkerAvailable = false;\n try {\n serviceWorkerAvailable = ('serviceWorker' in navigator);\n } catch (e) {\n // Worker not available\n }\n\n if (serviceWorkerAvailable === true) {\n try {\n navigator.serviceWorker.addEventListener('message', function (event) {\n try {\n if (typeof event.data.lhc_ch !== 'undefined' && typeof event.data.lhc_cid !== 'undefined') {\n attributesWidget.widgetStatus.next(true);\n if (attributesWidget.mode == 'popup') {\n attributesWidget.userSession.setChatInformation({\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n });\n attributesWidget.eventEmitter.emitEvent('unread_message');\n } else {\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n chatEvents.sendChildEvent('reopenNotification', [{\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n }]);\n }\n }\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n });\n } catch (e) {\n // Ignore sandbox error\n }\n }\n\n // Listed for post messages\n const handleMessages = (e) => {\n\n if (attributesWidget.terminated === true || typeof e.data !== 'string' || e.data.indexOf(attributesWidget.prefixLowercase + '::')) {\n return;\n }\n\n const parts = e.data.split('::');\n\n if (typeof e.origin !== 'undefined') {\n var originDomain = e.origin.replace(\"http://\", \"\").replace(\"https://\", \"\").replace(/:(\\d+)$/, '');\n\n // We allow to send events only from chat installation or page where script is embeded.\n if (originDomain !== document.domain && attributesWidget.domain_lhc !== originDomain && parts[1] !== 'started' && parts[1] !== 'isstarted') {\n return;\n }\n }\n\n if (parts[1] == 'ready') {\n chatEvents.sendReadyEvent(parts[2] == 'true');\n\n if (attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_screenshare')) {\n attributesWidget.eventEmitter.emitEvent('screenshare', [{'auto_start': true}]);\n }\n\n const focusChangeCb = (e) => {\n const focused = e.type === \"focus\";\n attributesWidget.focused = focused;\n chatEvents.sendChildEvent('focus_changed', [{'status': focused}]);\n };\n\n window.addEventListener('focus', focusChangeCb);\n window.addEventListener('blur', focusChangeCb);\n window.addEventListener('pageshow', focusChangeCb);\n window.addEventListener('pagehide', focusChangeCb);\n\n // App is fully loaded\n lhc.loaded = true;\n\n chatEvents.sendChildEvent('ext_modules', [attributesWidget.staticJS['ex_cb_js']]);\n\n // send child commands if there is any\n attributesWidget.childExtCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n });\n\n // send child commands if there is any\n attributesWidget.childCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n });\n\n if (attributesWidget.react_attr !== null) {\n attributesWidget.react_attr.forEach(item => {\n chatEvents.sendChildEvent('attr_set',[{\n 'type':'attr_set','attr': item['k'],\n data : item['v']\n }]);\n })\n }\n\n } else if (parts[1] == 'ready_popup') {\n attributesWidget.popupWidget.sendParameters(chatEvents);\n } else if (parts[1] == 'isstarted') {\n // Parent window has LHC, terminate present instance\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else if (parts[1] == 'started') {\n if (attributesWidget.hide_parent) {\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else {\n e.source.postMessage('lhc::isstarted','*');\n }\n } else {\n attributesWidget.eventEmitter.emitEvent(parts[1], JSON.parse(parts[2]));\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", handleMessages, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", handleMessages);\n } else if (document.attachEvent) {\n document.attachEvent(\"onmessage\", handleMessages);\n }\n };\n\n var preInit = () => {\n\n // Avoid multiple times execution\n if (lhc.ready === true) {\n return;\n }\n\n // we have found document body so we can continue\n if (document.body) {\n lhc.ready = true;\n }\n\n lhc.init = init;\n\n if (LHC_API.args.before_init) {\n LHC_API.args.before_init(lhc);\n }\n\n LHC_API.args.manual_init || init();\n };\n\n const eventsHandler = require('./util/domEventsHandler').domEventsHandler;\n\n (preInit(), !lhc.ready) || (eventsHandler.listen(document, \"DOMContentLoaded\", function () {\n preInit();\n }, \"domloaded\"),\n eventsHandler.listen(document, \"readystatechange\", function () {\n (\"complete\" === document.readyState || \"interactive\" === document.readyState && document.body) && preInit();\n }, \"domstatechange\"),\n eventsHandler.listen(global, \"load\", function () {\n preInit();\n }, \"windowload\"));\n\n }).call(this, global['$_' + scopeScript], global[scopeScript + '_API']);\n\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n\n})(window);"],"names":["rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","length","shift","asap","task","rawTask","pop","RawTask","this","module","exports","prototype","call","error","onerror","push","queue","requestFlush","index","flush","currentIndex","scan","newLength","toggle","observer","node","scope","g","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","document","createTextNode","observe","characterData","data","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_typeof","obj","Symbol","iterator","constructor","_possibleConstructorReturn","TypeError","ReferenceError","_getPrototypeOf","getPrototypeOf","UIConstructorIframe","subClass","superClass","create","value","writable","configurable","elementId","style","attributes","tagname","documentRef","bodyId","dir","cl","header","elmDomDoc","helperFunctions","elmDom","open","writeln","close","insertCssFile","insertContent","body","innerHTML","tmpl","UIConsturctor","f","tagName","classNames","id","keys","forEach","attr","a","className","join","cssText","c","d","k","e","getElementById","split","domEventsHandler","restyle","reset","getElementsByTagName","createDocumentFragment","type","settings","appendChild","styleSheet","nodeValue","elm","href","createElement","b","rel","crossOrigin","src","async","loadcb","onload","key","setAttribute","hasOwnProperty","chatNotifications","_chatNotifications","isNotificationsSubscribed","applicationServerPublicKey","eventEmitter","publicKey","that","swRegistration","navigator","window","Notification","permission","requestPermission","alert","serviceWorker","register","then","swReg","pushManager","getSubscription","subscription","applicationServerKey","base64String","base64","repeat","replace","rawData","atob","outputArray","Uint8Array","i","charCodeAt","urlB64ToUint8Array","subscribe","getKey","token","contentEncoding","PushManager","supportedContentEncodings","payload","JSON","stringify","endpoint","btoa","String","fromCharCode","apply","authToken","emitEvent","updateSubscriptionOnServer","_helperFunctions","s","contentWindow","contentDocument","EId","EObj","parentNode","removeChild","Intl","DateTimeFormat","resolvedOptions","timeZone","Date","stdTimezoneOffset","jan","getFullYear","jul","Math","max","getTimezoneOffset","dst","today","params","outline","visibility","resize","boxshadow","overflow","background","opacity","top","right","bottom","left","position","border","minheight","minwidth","maxheight","maxwidth","padding","margin","transition","transform","width","height","display","zindex","backgroundcolor","cursor","borderRadius","element","classList","contains","match","RegExp","add","hasClass","remove","screenshot","url","html2canvas","th","onreadystatechange","makeScreenshot","onrendered","canvas","xhr","XMLHttpRequest","setRequestHeader","send","encodeURIComponent","toDataURL","err","item","pairs","request","urlRequest","makeQuery","readyState","status","parse","responseText","message","req","containerChat","prefix","pnode","cont","constructUI","mainWidget","units","originalCSS","bottom_override","isLoaded","loadStatus","main","css","restyleStyle","position_placement","mode","fscreen","massRestyle","wloaded","next","isMobile","constructUIIframe","staticJS","hhtml","cont_ss","lazyLoad","makeContent","getSessionAttributes","bootstrap","toggleVisibilityWrap","toggleVisibility","widgetStatus","monitorDimensionsWrap","monitorDimensions","widgetDimesions","addListener","valueInternal","insertCssRemoteFile","theme","LHC_API","args","lhc_base_url","theme_v","checkLoadStatus","insertJSFile","prefixLowercase","hide","show","width_override","height_override","wbottom","clinst","right_override","wright_inv","wright","mainWidgetPopup","freeup","argumentsQuery","Array","paramsReturn","LHCChatOptions","name","encrypted","size","attr_prefill","attr_prefill_admin","chatEvents","paramsPopup","elementReferrerPopup","closed","event","preventDefault","focus","urlArgumetns","storageHandler","cookieEnabled","toggleSound","setSessionStorage","fontSize","getLocalStorage","parseInt","getSessionReferrer","parseOptions","dualScreenLeft","undefined","screenLeft","screenX","dualScreenTop","screenTop","screenY","innerWidth","documentElement","clientWidth","screen","innerHeight","clientHeight","systemZoom","availWidth","paramsWindow","newWin","needWindow","windowCreated","location","viewHandler","kcw","sendChildEvent","sendParameters","js_vars","js_args","currentVar","eval","var","statusWidget","controlMode","font","widget","shidden","lload","unread_counter","onlineStatus","icon","leaveMessage","sload","placement","sbottom","sright","_inst","attachUserEventListener","offline_redirect","toggleOfflineIcon","chatParams","unreadMessagesNumber","getSessionStorage","unreadTotal","otm","showUnreadIndicator","init","isNaN","now","removeUnreadIndicator","number","iconText","iconValue","innerText","removeSessionStorage","hideOffline","chatEventsHandler","getJSVarsValues","jsVars","prefillOptions","fieldsCustom","prefilOptionsList","command","postMessage","popupWidget","popup","getInitAttributes","sendChildCommand","_domEventsHandler","events","object","dispatch","getEvent","attachEvent","eventName","presentEvent","removeEventHandler","eventListener","addEventListener","listener","removeEventListener","detachEvent","eventInstance","_this","caller","arguments","Event","monitoredVariable","listeners","val","callListeners","indexOf","splice","global","domain","cookiesSupportChecked","checkCookiesSupport","secureCookie","cookiePerPage","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","cookie","coookieName","cookieValue","expireTime","string","setTime","getTime","toGMTString","cookieName","baseCookie","charAt","substring","host","hostname","setItem","removeItem","getItem","ref","sessionInformation","getHTTPCookie","parseSessionInformation","setHTTPCookie","getStoreValue","getCookieDomain","content","contentReturn","parts","unescape","userSession","vid","hnh","hash","updateVarsTimeout","decode","evalJSON","str","$","parseJSON","toJSON","encode","cb","lhc_var","validator","set","prop","updateJSVars","Proxy","console","log","getVars","append","vars","varsJSON","getAppendVariables","alwaysPersistentNeedHelp","round","appleIphone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","regex","userAgent","test","tmp","result","apple","phone","ipod","tablet","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","any","noop","LAST_ERROR","IS_ERROR","Promise","fn","_h","_i","_j","_k","doResolve","handle","deferred","_l","onFulfilled","onRejected","ret","ex","tryCallOne","reject","promise","resolve","handleResolved","newValue","getThen","finale","bind","_m","Handler","done","res","reason","tryCallTwo","_n","safeThen","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","arr","slice","remaining","race","values","finally","denodeify","argumentCount","Infinity","concat","callbackFn","Function","denodeifyWithCount","fnLength","map","_","denodeifyWithoutCount","nodeify","ctx","enableSynchronous","isPending","getState","isFulfilled","isRejected","getValue","Error","getReason","disableSynchronous","EventEmitter","proto","originalGlobalValue","indexOfListener","alias","isValidListener","getListeners","evt","response","_getEvents","flattenListeners","flatListeners","getListenersAsObject","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","defineProperty","_createClass","protoProps","staticProps","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","__esModule","definition","get","chunkId","reduce","promises","u","globalThis","l","script","needAttach","scripts","getAttribute","charset","timeout","nc","origin","onScriptComplete","prev","doneFns","head","r","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","currentScript","scopeScript","lhcError","filename","lineNumber","stack","column","file","line","lineno","colno","lhc","loaded","connected","ready","version","require","BehaviorSubject","default","mobile_view","toLowerCase","prefixStorage","scope_storage","cookieEnabledUser","cookie_enabled","userMode","orig","proactive","check_messages","cookie_per_page","setCookiePerPage","referrer","substr","protocol","setSessionReferer","lang","attributesWidget","terminated","prefixScope","msgSnippet","react_attr","hide_parent","hide_iframe","hide_status","msgsnippet_status","isIE","toUpperCase","assign","fresh","popupDimesnions","pheight","pwidth","leaveamessage","department","dep_default","product","domain_lhc","instance_id","profile_pic","base_url","tag","captcha","focused","identifier","proactive_interval","bot_id","trigger_id","priority","survey","operator","phash","pvhash","nh","init_calls","childCommands","childExtCommands","wwidth","wheight","setAttributes","setSessionInformation","getSessionInformation","setSessionReferrer","containerChatObj","embedWrapper","getArguments","UUID","getVID","getTzOffset","title","showNeedHelp","needhelpWidget","showProactive","proactiveChat","setParams","makeRequest","wv","terminate","chat_ui","isOnline","parent","__webpack_public_path__","chunks_location","secure_cookie","setSecureCookie","setCookieDomain","siteaccess","static","pdim","survey_id","cont_css","wposition","ts","hash_ts","setVID","storeSessionInformation","nextProperty","mobile_popup","sound_enabled","check_status","activityMonitoring","track_mouse","track_activity","ga","analyticEvents","ap","setupVarsMonitoring","ll","extension","nodeJSChat","removeById","po","getHours","getMinutes","insertBefore","sessionAtrribute","setChatInformation","hideInvitation","setPublicKey","pk","sendNotification","screenShare","showInvitation","full","full_widget","showSnippet","msgSnippetWidget","msg_body","originalTitle","blinkInterval","reset_height","force_height","force_width","force_bottom","force_right","y","serviceWorkerAvailable","lhc_ch","lhc_cid","handleMessages","originDomain","sendReadyEvent","focusChangeCb","source","preInit","before_init","manual_init","eventsHandler","listen"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://LiveHelperChat/./node_modules/asap/browser-asap.js","webpack://LiveHelperChat/./node_modules/asap/browser-raw.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://LiveHelperChat/./src/lib/UIConstructorIframe.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://LiveHelperChat/./src/lib/UIConsturctor.js","webpack://LiveHelperChat/./src/lib/chatNotifications.js","webpack://LiveHelperChat/./src/lib/helperFunctions.js","webpack://LiveHelperChat/./src/lib/settings.js","webpack://LiveHelperChat/./src/lib/widgets/containerChat.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidget.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidgetPopup.js","webpack://LiveHelperChat/./src/lib/widgets/statusWidget.js","webpack://LiveHelperChat/./src/util/chatEventsHandler.js","webpack://LiveHelperChat/./src/util/domEventsHandler.js","webpack://LiveHelperChat/./src/util/monitoredVariable.js","webpack://LiveHelperChat/./src/util/storageHandler.js","webpack://LiveHelperChat/./src/util/userSession.js","webpack://LiveHelperChat/./node_modules/ismobilejs/esm/isMobile.js","webpack://LiveHelperChat/./node_modules/promise/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/core.js","webpack://LiveHelperChat/./node_modules/promise/lib/done.js","webpack://LiveHelperChat/./node_modules/promise/lib/es6-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/finally.js","webpack://LiveHelperChat/./node_modules/promise/lib/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/node-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/synchronous.js","webpack://LiveHelperChat/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://LiveHelperChat/webpack/bootstrap","webpack://LiveHelperChat/webpack/runtime/load script","webpack://LiveHelperChat/webpack/runtime/compat get default export","webpack://LiveHelperChat/webpack/runtime/define property getters","webpack://LiveHelperChat/webpack/runtime/ensure chunk","webpack://LiveHelperChat/webpack/runtime/get javascript chunk filename","webpack://LiveHelperChat/webpack/runtime/global","webpack://LiveHelperChat/webpack/runtime/hasOwnProperty shorthand","webpack://LiveHelperChat/webpack/runtime/make namespace object","webpack://LiveHelperChat/webpack/runtime/publicPath","webpack://LiveHelperChat/webpack/runtime/jsonp chunk loading","webpack://LiveHelperChat/./src/index.js"],"sourcesContent":["\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import {UIConsturctor} from './UIConsturctor';\nimport {helperFunctions} from './helperFunctions';\n\nexport class UIConstructorIframe extends UIConsturctor {\n\n constructor(elementId, style, attributes, tagname, documentRef) {\n super(elementId, style, attributes, tagname, documentRef);\n this.bodyId = '';\n }\n\n constructUIIframe(style, dir, cl, header) {\n\n if (typeof dir === 'undefined'){\n dir = 'ltr';\n }\n\n if (typeof cl === 'undefined'){\n cl = 'en';\n }\n\n if (typeof header === 'undefined'){\n header = '';\n }\n\n this.elmDomDoc = helperFunctions.getDocument(this.elmDom);\n if (this.elmDomDoc === null) return null;\n this.elmDomDoc.open();\n this.elmDomDoc.writeln(''+header+'');\n this.elmDomDoc.close();\n this.insertCssFile(style);\n this.insertContent();\n };\n\n insertContent () {\n this.elmDomDoc.body.innerHTML = this.tmpl\n };\n};\n\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {helperFunctions} from './helperFunctions';\nimport {settings} from './settings.js';\nimport {domEventsHandler} from '../util/domEventsHandler';\n\nexport class UIConsturctor {\n constructor(elementId, style, attributes, tagname, documentRef) {\n var f = this;\n this.elementId = elementId || \"\";\n this.style = style || \"\";\n this.tagName = tagname || \"div\";\n this.tmpl = \"\";\n this.elmDom = null;\n this.elmDomDoc = documentRef || document;\n this.attributes = {};\n this.classNames = [];\n\n this.elementId && (this.attributes.id = this.elementId);\n\n attributes && Object.keys(attributes).forEach(function (attr) {\n f.attributes[attr] = attributes[attr]\n })\n }\n\n constructUI(a) {\n this.elmDomDoc =\n a || this.elmDomDoc;\n this.elmDom = helperFunctions.initElement(this.elmDomDoc, this.tagName, this.attributes, this.style, this.tmpl);\n this.elmDom.className += this.classNames.join(\" \");\n return this.elmDom\n };\n\n restyle(attr, style) {\n style && (this.elmDom ? this.elmDom.style.cssText += \";\" + attr + \":\" + style : this.style += \";\" + attr + \":\" + style)\n };\n\n attachUserEventListener(a, c, d, k) {\n var e;\n if (e = d ? this.getElementById(d) : this.elmDom) d = a.split(\" \"), 1 < d.length ? d.forEach(function (a) {\n domEventsHandler.listen(e, a, c, a + k)\n }) : domEventsHandler.listen(e, a, c, k)\n };\n\n getElementById(a) {\n return this.elmDom ? this.elmDomDoc.getElementById(a) : null\n };\n\n hide() {\n this.restyle(\"display\", \"none !important\");\n }\n\n show() {\n this.restyle(\"display\", \"block !important\");\n }\n\n insertCssFile(style, reset) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = helperFunctions.initElement(this.elmDomDoc, \"style\", {type: \"text/css\"}),\n f = this.elmDomDoc.createTextNode(reset ? style : settings.ResetStyle + \"\" + style);\n k.appendChild(e);\n d.appendChild(k);\n e.styleSheet ? e.styleSheet.cssText = f.nodeValue : e.appendChild(f)\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = this.elmDomDoc.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n insertJSFile(src, async, loadcb, attr) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('script');\n\n e.type = 'text/javascript';\n if (typeof async === 'undefined' || async === true) {\n e.async = true;\n }\n\n e.crossOrigin = \"*\";\n e.src = src;\n\n if (loadcb) {\n e.onload = loadcb;\n }\n\n if (attr) {\n Object.keys(attr).forEach(key => {\n e.setAttribute(key,attr[key]);\n })\n }\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n massRestyle(a) {\n for (var b in a) a.hasOwnProperty(b) && this.restyle(b, a[b])\n }\n};\n\n","\nclass _chatNotifications {\n constructor() {\n this.isNotificationsSubscribed = false;\n this.applicationServerPublicKey = null;\n this.eventEmitter = null;\n }\n\n setPublicKey(publicKey, eventEmitter) {\n this.applicationServerPublicKey = publicKey\n this.eventEmitter = eventEmitter\n }\n\n sendNotification() {\n\n var that = this;\n var applicationServerPublicKey = this.applicationServerPublicKey;\n\n var swRegistration = null;\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n\n // Let's check if the browser supports notifications\n if (!(\"Notification\" in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n // Let's check whether notification permissions have already been granted\n else if (Notification.permission === \"granted\") {\n // If it's okay let's create a notification\n //\n }\n // Otherwise, we need to ask the user for permission\n else if (Notification.permission !== \"denied\") {\n Notification.requestPermission(function (permission) {\n // If the user accepts, let's create a notification\n if (permission !== \"granted\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n });\n } else if (Notification.permission === \"denied\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n\n function urlB64ToUint8Array(base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n }\n\n function updateSubscriptionOnServer(subscription, subscribe) {\n if (subscription === null) {\n return;\n }\n\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n var contentEncoding = (PushManager.supportedContentEncodings || ['aesgcm'])[0];\n\n var payload = JSON.stringify({\n endpoint: subscription.endpoint,\n publicKey: key ? btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n authToken: token ? btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null,\n contentEncoding : contentEncoding\n });\n\n that.eventEmitter.emitEvent('subcribedEvent', [{'payload' : payload}]);\n }\n\n var that = this;\n\n function subscribeUser() {\n var applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);\n swRegistration.pushManager.subscribe({\n 'userVisibleOnly': true,\n 'applicationServerKey': applicationServerKey\n }).then(function(subscription) {\n updateSubscriptionOnServer(subscription, true);\n that.isNotificationsSubscribed = true;\n });\n }\n\n function unsubscribeUser() {\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n if (subscription) {\n updateSubscriptionOnServer(subscription,false);\n return subscription.unsubscribe();\n }\n }).then(function() {\n alert('You have unsubscribed!');\n that.isNotificationsSubscribed = false;\n });\n }\n\n function initializeUI() {\n // Set the initial subscription value\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n that.isNotificationsSubscribed = !(subscription === null);\n if (that.isNotificationsSubscribed) {\n subscribeUser();\n } else {\n subscribeUser();\n }\n });\n }\n\n // At last, if the user has denied notifications, and you\n // want to be respectful there is no need to bother them any more.\n navigator.serviceWorker.register('/sw.lhc.js?v=2').then(function(swReg) {\n swRegistration = swReg;\n initializeUI();\n });\n\n }\n\n};\n\nconst chatNotifications = new _chatNotifications();\nexport { chatNotifications };","\nclass _helperFunctions {\n constructor() {\n }\n\n initElement(a, c, b, k, s) {\n var e;\n a = a.createElement(c);\n b = b || {};\n for (e in b) a[e] = b[e];\n s && \"iframe\" !== c && (a.innerHTML = s);\n k && (a.style.cssText = k);\n return a\n };\n \n getDocument(a) {\n return a.contentWindow ? a.contentWindow.document : a.contentDocument ? a.contentDocument : a.document ? a.document : null\n };\n\n removeById(EId)\n {\n var EObj = null;\n return(EObj = document.getElementById(EId)) ? EObj.parentNode.removeChild(EObj) : false;\n }\n\n // Returns time zone offset\n getTzOffset() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n Date.prototype.stdTimezoneOffset = function() {\n var jan = new Date(this.getFullYear(), 0, 1);\n var jul = new Date(this.getFullYear(), 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n };\n\n Date.prototype.dst = function() {\n return this.getTimezoneOffset() < this.stdTimezoneOffset();\n };\n\n var today = new Date();\n var timeZoneOffset = 0;\n\n if (today.dst()) {\n timeZoneOffset = today.getTimezoneOffset();\n } else {\n timeZoneOffset = today.getTimezoneOffset()-60;\n };\n\n return (timeZoneOffset/60)*-1;\n }\n };\n\n getAbstractStyle(params) {\n return [\n \"outline: \" + (params.outline ? params.outline : \"none\") + \" !important; \",\n \"visibility: \" + (params.visibility ? params.visibility : \"visible\") + \" !important; \",\n \"resize: \" + (params.resize ? params.resize : \"none\") + \" !important; \",\n \"box-shadow: \" + (params.boxshadow ? params.boxshadow : \"none\") + \" ; \",\n \"overflow: \" + (params.overflow ? params.overflow : \"visible\") + \" ; \",\n \"background : \" + (params.background ? params.background : \"none\") + \" !important; \",\n \"opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"filter : alpha(opacity=\" + (params.opacity ? 100 * params.opacity : \"100\") + \") !important; \",\n \"-ms-filter : progid:DXImageTransform.Microsoft.Alpha(Opacity\" + (params.opacity ? params.opacity : \"1\") + \") !important; \",\n \"-moz-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"-khtml-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"top : \" + (params.top ? params.top : \"auto\") + \"; \",\n \"right : \" + (params.right ? params.right : \"auto\") + \"; \",\n \"bottom : \" + (params.bottom ? params.bottom : \"auto\") + \"; \",\n \"left : \" + (params.left ? params.left : \"auto\") + \"; \",\n \"position : \" + (params.position ? params.position : \"absolute\") + \" !important; \",\n \"border : \" + (params.border ? params.border : \"0\") + \" !important; \",\n \"min-height : \" + (params.minheight ? params.minheight : \"auto\") + \"; \",\n \"min-width : \" + (params.minwidth ? params.minwidth : \"auto\") + \"; \",\n \"max-height : \" + (params.maxheight ? params.maxheight : \"none\") + \"; \",\n \"max-width : \" + (params.maxwidth ? params.maxwidth : \"none\") + \"; \",\n \"padding : \" + (params.padding ? params.padding : \"0\") + \" !important; \",\n \"margin : \" + (params.margin ? params.margin : \"0\") + \" !important; \",\n \"-moz-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-webkit-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-o-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-webkit-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-ms-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"width : \" + (params.width ? params.width : \"auto\") + \" ; \",\n \"height : \" + (params.height ? params.height : \"auto\") + \" ; \",\n \"display : \" + (params.display ? params.display : \"block\") + \" !important; \",\n \"z-index : \" + (params.zindex ? params.zindex : \"none\") + \" ; \",\n \"background-color : \" + (params.backgroundcolor ? params.backgroundcolor : \"transparent\") + \" !important; \",\n \"cursor : \" + (params.cursor ? params.cursor : \"auto\") + \" !important; \",\n \"float : \" + (params[\"float\"] ? params[\"float\"] : \"none\") + \" !important; \",\n \"border-radius : \" + (params.borderRadius ? params.borderRadius : \"unset\") + \"; \"].join(\"\").replace(/\\s/gm, \"\")\n };\n\n hasClass(element, className) {\n if (element === null) return;\n return element.classList ? element.classList.contains(className) : !!element.className.match(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"))\n }\n\n addClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.add(className) : this.hasClass(element, className) || (element.className += \" \" + className)\n }\n\n removeClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.remove(className) : this.hasClass(element, className) && (element.className = element.className.replace(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"), \" \"))\n }\n\n makeScreenshot(screenshot,url) {\n var inst = this;\n if (typeof html2canvas == \"undefined\") {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src',screenshot);\n th.appendChild(s);\n\n s.onreadystatechange = s.onload = () => {\n this.makeScreenshot(screenshot, url);\n };\n } else {\n try {\n html2canvas(document.body, {\n onrendered: function(canvas) {\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", url, true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( canvas.toDataURL() ) );\n }\n });\n } catch(err) {\n\n }\n }\n }\n\n makeQuery(params)\n {\n var item, pairs = [];\n for (item in params) {\n if (params[item] != '' && params[item] != null) {\n params.hasOwnProperty(item) && pairs.push(encodeURIComponent(item) + \"=\" + encodeURIComponent(params[item]));\n }\n }\n return pairs.join(\"&\")\n }\n \n makeRequest(url, params, callback) {\n var request = new XMLHttpRequest;\n var urlRequest = url + '?' + this.makeQuery(params.params);\n request.open(\"GET\",urlRequest, true);\n request.onreadystatechange = function () {\n if (4 == request.readyState && request.status != 0) {\n try {\n callback(JSON.parse(request.responseText));\n } catch (e) {\n e.message += \"\\n\" + urlRequest + \"\\n\" + \"[\"+request.status+\"]\\n\" + request.responseText;\n throw e;\n }\n }\n };\n request.send();\n return {type: \"xhr\", req: request}\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = document.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = document.getElementsByTagName(\"head\")[0],\n k = document.createDocumentFragment(),\n e = document.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n};\n\nconst helperFunctions = new _helperFunctions();\nexport { helperFunctions };","var settings = {};\n\nsettings.ResetStyle = \"html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}html,body{height: 100% !important;\\n\" +\n \" min-height: 100% !important;\\n\" +\n \" max-height: 100% !important;\\n\" +\n \" width: 100% !important;\\n\" +\n \" min-width: 100% !important;\\n\" +\n \" max-width: 100% !important;}body{display: flex;flex-direction: column;background:transparent;font:13px Helvetica,Arial,sans-serif;position:relative}.clear{clear:both}.clearfix:after{content:'';display:block;height:0;clear:both;visibility:hidden}\";\n\nexport {settings};","import {UIConsturctor} from '../UIConsturctor';\n\nexport class containerChat{\n constructor(prefix, pnode) {\n this.cont = new UIConsturctor((prefix || 'lhc')+'_container_v2', \"border: 0 none !important; padding: 0 !important; margin: 0 !important; z-index: 999999999 !important; overflow : visible !important; min-width: 0 !important; min-height: 0 !important; max-width: none !important; max-height: none !important; width : auto !important; height : auto !important;\");\n this.cont.constructUI();\n (!!pnode && document.getElementById(pnode).appendChild(this.cont.elmDom)) || document.body.appendChild(this.cont.elmDom);\n }\n}","import {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class mainWidget{\n constructor(prefix) {\n\n this.attributes = {};\n\n this.width = '350';\n this.height = '520';\n this.bottom = '30';\n this.right = '30';\n this.units = 'px';\n this.originalCSS = '';\n this.bottom_override = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.isLoaded = false;\n\n this.loadStatus = {main: false, css: false};\n }\n\n resize() {\n\n let restyleStyle = {\n height: this.height + this.units,\n \"min-height\": this.height + this.units,\n \"max-height\": this.height + this.units,\n width: this.width + this.units,\n \"min-width\": this.width + this.units,\n \"max-width\": this.width + this.units,\n bottom: (this.units == 'px' ? this.bottom + \"px\" : '0px')\n };\n\n if ((this.attributes.position_placement == 'middle_right' || this.attributes.position_placement == 'middle_left') && this.bottom_override == true) {\n restyleStyle['bottom'] = \"calc(50% + 20px)\";\n }\n\n if (this.attributes.position_placement == 'middle_left' || this.attributes.position_placement == 'bottom_left' || this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n } else {\n restyleStyle['right'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n }\n\n if ((this.attributes.position_placement == 'full_height_right' || this.attributes.position_placement == 'full_height_left') && !this.bottom_override) {\n restyleStyle['min-height'] = '100%';\n restyleStyle['max-height'] = '100%';\n restyleStyle['height'] = '100%';\n restyleStyle['bottom'] = '0px';\n\n if (this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = '0px';\n } else {\n restyleStyle['right'] = '0px';\n }\n }\n\n if (this.attributes.mode == 'embed') {\n restyleStyle[\"max-width\"] = '100%';\n restyleStyle[\"min-width\"] = '100%';\n restyleStyle[\"width\"] = '100%';\n restyleStyle[\"position\"] = (this.attributes.fscreen ? 'fixed' : 'relative') + '!important';\n restyleStyle[\"bottom\"] = 'auto';\n restyleStyle[\"right\"] = 'auto';\n }\n\n this.cont.massRestyle(restyleStyle);\n }\n\n checkLoadStatus() {\n if (this.loadStatus['main'] == true && this.loadStatus['css'] == true ) {\n this.attributes.wloaded.next(true);\n }\n }\n\n makeContent() {\n this.cont.bodyId = 'chat-widget';\n\n this.cont.tmpl = '
';\n\n if (this.cont.constructUIIframe('', this.attributes.staticJS['dir'], this.attributes.staticJS['cl'], this.attributes.hhtml) === null) {\n this.isLoaded = true;\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile lhc-mode-'+this.attributes.mode : 'lhc-desktop lhc-mode-'+this.attributes.mode;\n\n if (this.attributes.cont_ss) {\n this.originalCSS = this.cont.elmDom.style.cssText;\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n init(attributes, lazyLoad) {\n\n this.attributes = attributes;\n\n if (this.makeContent() === null) {\n return null;\n };\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (chatParams['id'] || !lazyLoad) {\n this.bootstrap();\n }\n \n this.toggleVisibilityWrap = (data) => {\n this.toggleVisibility(data);\n };\n\n attributes.widgetStatus.subscribe(this.toggleVisibilityWrap);\n\n this.monitorDimensionsWrap = (data) => {\n this.monitorDimensions(data);\n };\n\n attributes.widgetDimesions.subscribe(this.monitorDimensionsWrap);\n\n attributes.eventEmitter.addListener('reloadWidget',() => {\n this.isLoaded = false;\n this.makeContent();\n attributes.eventEmitter.emitEvent('widgetHeight',[{'reset_height' : true}]);\n this.toggleVisibility(attributes.widgetStatus.valueInternal);\n });\n\n }\n\n bootstrap() {\n\n if (this.isLoaded === true) {\n return ;\n }\n\n this.isLoaded = true;\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({rel:\"stylesheet\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.theme) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/theme/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n }\n\n this.cont.insertCssRemoteFile({onload: () => {\n this.loadStatus['css'] = true;\n this.checkLoadStatus();\n },crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_css']}, true);\n\n if (this.attributes.isMobile == true && this.attributes.mode == 'widget') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_mobile_css']});\n }\n\n if (this.attributes.mode == 'embed') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['embed_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n }\n\n this.cont.insertJSFile(this.attributes.staticJS['vendor'], false, () => {\n this.cont.insertJSFile(this.attributes.staticJS['app'], false, () => {\n this.loadStatus['main'] = true;\n this.checkLoadStatus();\n }, {'scope': this.attributes.prefixLowercase});\n }, {'scope': this.attributes.prefixLowercase});\n\n if (this.attributes.staticJS['ex_js'] && this.attributes.staticJS['ex_js'].length > 0) {\n this.attributes.staticJS['ex_js'].forEach((item) => {\n this.cont.insertJSFile(item, false);\n });\n }\n }\n\n toggleVisibility(data) {\n data == false ? this.hide() : this.show();\n }\n\n monitorDimensions(data) {\n this.width = data.width_override || data.width;\n this.height = data.height_override || data.height;\n this.bottom = data.bottom_override ? (data.bottom_override + (data.wbottom ? data.wbottom : 0)) : (30 + (this.attributes.clinst === true ? 70 : 0) + (data.wbottom ? data.wbottom : 0));\n this.right = data.right_override ? (data.right_override + (data.wright_inv ? data.wright_inv : 0)) : (30 + (data.wright ? data.wright : 0));\n this.units = (data.width_override || data.height_override || data.bottom_override || data.right_override) ? 'px' : data.units;\n this.resize();\n\n this.bottom_override = !!data.bottom_override;\n }\n\n hide () {\n this.cont.hide();\n }\n\n hideInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n showInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText = this.originalCSS;\n }\n this.show();\n }\n\n show () {\n if (this.isLoaded === false) {\n this.bootstrap();\n }\n this.cont.show();\n }\n}","export class mainWidgetPopup {\n constructor() {\n\n this.attributes = {};\n\n this.width = null;\n this.height = null;\n this.units = 'px';\n this.freeup();\n }\n\n freeup() {\n this.cont = {};\n }\n\n parseOptions() {\n var argumentsQuery = new Array();\n var paramsReturn = '';\n if (typeof this.attributes != 'undefined') {\n if (typeof this.attributes.LHCChatOptions.attr != 'undefined') {\n if (this.attributes.LHCChatOptions.attr.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr) {\n if (typeof this.attributes.LHCChatOptions.attr[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr[index].type != 'undefined') {\n argumentsQuery.push('name[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].name) + '&encattr[]=' + (typeof this.attributes.LHCChatOptions.attr[index].encrypted != 'undefined' && this.attributes.LHCChatOptions.attr[index].encrypted == true ? 't' : 'f') + '&value[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].value) + '&type[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].type) + '&size[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].size) + '&req[]=' + (typeof this.attributes.LHCChatOptions.attr[index].req != 'undefined' && this.attributes.LHCChatOptions.attr[index].req == true ? 't' : 'f') + '&sh[]=' + ((typeof this.attributes.LHCChatOptions.attr[index].show != 'undefined' && (this.attributes.LHCChatOptions.attr[index].show == 'on' || this.attributes.LHCChatOptions.attr[index].show == 'off')) ? this.attributes.LHCChatOptions.attr[index].show : 'b'));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr_prefill[index].name != 'undefined') {\n argumentsQuery.push('prefill[' + this.attributes.LHCChatOptions.attr_prefill[index].name + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[index].value));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill_admin.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill_admin) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin[index] != 'undefined') {\n argumentsQuery.push('value_items_admin[' + this.attributes.LHCChatOptions.attr_prefill_admin[index].index + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[index].value));\n }\n }\n }\n }\n\n if (argumentsQuery.length > 0) {\n paramsReturn = '&' + argumentsQuery.join('&');\n }\n }\n\n return paramsReturn;\n }\n\n init(attributes, chatEvents, paramsPopup) {\n\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n this.cont.elementReferrerPopup.focus();\n } else {\n\n this.attributes = attributes;\n\n let attr = {\n 'static_chat': this.attributes['userSession'].getSessionAttributes()\n };\n\n let urlArgumetns = '';\n\n if (attr['static_chat']['id'] && attr['static_chat']['hash']) {\n urlArgumetns = urlArgumetns + \"/(id)/\" + attr['static_chat']['id'] + \"/(hash)/\" + attr['static_chat']['hash'];\n }\n\n if (this.attributes['theme'] !== null) {\n urlArgumetns = urlArgumetns + \"/(theme)/\" + this.attributes['theme'];\n }\n\n if (attr['static_chat']['vid'] !== null && this.attributes.storageHandler.cookieEnabled === true) {\n urlArgumetns = urlArgumetns + \"/(vid)/\" + attr['static_chat']['vid'];\n }\n\n if (this.attributes['isMobile']) {\n urlArgumetns = urlArgumetns + \"/(mobile)/true\";\n }\n\n if (this.attributes['department'].length > 0) {\n urlArgumetns = urlArgumetns + \"/(department)/\" + this.attributes['department'].join('/');\n }\n\n if (this.attributes['identifier'] != '') {\n urlArgumetns = urlArgumetns + \"/(identifier)/\" + this.attributes['identifier'];\n }\n\n if (this.attributes['operator']) {\n urlArgumetns = urlArgumetns + \"/(operator)/\" + this.attributes['operator'];\n }\n\n if (this.attributes['survey']) {\n urlArgumetns = urlArgumetns + \"/(survey)/\" + this.attributes['survey'];\n }\n\n if (this.attributes['bot_id']) {\n urlArgumetns = urlArgumetns + \"/(bot)/\" + this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id']) {\n urlArgumetns = urlArgumetns + \"/(trigger)/\" + this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority']) {\n urlArgumetns = urlArgumetns + \"/(priority)/\" + this.attributes['priority'];\n }\n\n if (this.attributes['prefixLowercase'] != 'lhc') {\n urlArgumetns = urlArgumetns + \"/(scope)/\" + this.attributes['prefixLowercase'];\n }\n\n urlArgumetns = urlArgumetns + \"/(sound)/\" + (this.attributes.toggleSound.value == true ? 1 : 0);\n\n if (this.attributes['proactive']['invitation']) {\n urlArgumetns = urlArgumetns + \"/(inv)/\" + this.attributes['proactive']['invitation'];\n if (this.attributes['mode'] == 'popup') {\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_invt', 1);\n }\n }\n\n var fontSize = this.attributes.storageHandler.getLocalStorage(this.attributes['prefixStorage']+'_dfs');\n\n if (fontSize) {\n urlArgumetns = urlArgumetns + \"/(fs)/\" + parseInt(fontSize);\n }\n\n if (this.attributes['leaveMessage'] === true) {\n urlArgumetns = urlArgumetns + \"/(leaveamessage)/true\";\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null && this.attributes['userSession'].getSessionReferrer() != '') {\n urlArgumetns = urlArgumetns + '?ses_ref=' + this.attributes['userSession'].getSessionReferrer() + this.parseOptions();\n } else {\n urlArgumetns = urlArgumetns + '?' + this.parseOptions();\n }\n\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - parseInt(this.attributes['popupDimesnions']['pwidth'])) / 2 / systemZoom + dualScreenLeft;\n const top = (height - parseInt(this.attributes['popupDimesnions']['pheight'])) / 2 / systemZoom + dualScreenTop;\n\n var paramsWindow = \"scrollbars=yes,menubar=1,resizable=1,width=\" + this.attributes['popupDimesnions']['pwidth'] + \",height=\" + this.attributes['popupDimesnions']['pheight'] + \",top=\" + top + \",left=\" + left;\n var newWin = window.open(\"\", this.attributes['prefixStorage'] + '_popup_v2', paramsWindow);\n var needWindow = false;\n var windowCreated = false;\n\n // First try to find any existing window\n try {\n // It has to be new window or popup was blocked\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined' || newWin.location.href === \"about:blank\") {\n newWin = this.cont.elementReferrerPopup = window.open(this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns, this.attributes['prefixStorage']+'_popup_v2', paramsWindow);\n windowCreated = true;\n } else {\n needWindow = true;\n }\n } catch (e) { // We get cross-origin error only if window exist and it's location is other one than about:blank\n needWindow = true;\n }\n\n // Now if visitor has blocked popup change chat status link and just allow browser handle the rest.\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined') {\n try {\n this.attributes.viewHandler.cont.getElementById(\"status-icon\").href = this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns;\n } catch (e) {\n alert('You have disabled popups!');\n }\n } else if (windowCreated == true) {\n typeof chatEvents !== 'undefined' && this.attributes.kcw === false && chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n } else if (needWindow === true) {\n this.cont.elementReferrerPopup = newWin;\n newWin.focus();\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n }\n }\n }\n\n sendParameters(chatEvents) {\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n var js_vars = this.attributes['jsVars'].value;\n var js_args = {};\n var currentVar = null;\n for (var index in js_vars) {\n try {\n currentVar = eval(js_vars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[js_vars[index].id] = currentVar;\n }\n } catch (err) {\n\n }\n }\n chatEvents.sendChildEvent('jsVars', [js_args]);\n }\n }\n}","import {settings} from '../settings.js';\nimport {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class statusWidget{\n constructor(prefix) {\n\n this.attributes = {};\n this.controlMode = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_status_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.loadStatus = {main : false, theme: false, font: true, widget : false, shidden: false};\n this.lload = false;\n this.unread_counter = 0;\n }\n\n toggleOfflineIcon(onlineStatus) {\n var icon = this.cont.getElementById(\"status-icon\");\n\n if (onlineStatus) {\n if (!this.attributes.leaveMessage) {\n this.show();\n }\n helperFunctions.removeClass(icon, \"offline-status\");\n } else {\n if (!this.attributes.leaveMessage) {\n this.hide();\n } else {\n helperFunctions.addClass(icon, \"offline-status\");\n }\n }\n }\n\n checkLoadStatus() {\n if (this.loadStatus['theme'] == true && this.loadStatus['main'] == true && this.loadStatus['font'] == true && this.loadStatus['widget'] == true && this.loadStatus['shidden'] == false) {\n this.cont.getElementById('lhc_status_container').style.display = \"\";\n this.attributes.sload.next(true);\n }\n }\n\n init(attributes, lload) {\n\n this.attributes = attributes;\n\n var placement = {bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n\n if (attributes.position_placement == 'bottom_left' || attributes.position_placement == 'full_height_left') {\n placement = { bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_right') {\n placement = {bottom: \"calc(50% - 45px)\",right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_left') {\n placement = {bottom: \"calc(50% - 45px)\",left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n }\n\n this.cont.massRestyle(placement);\n\n this.cont.tmpl = '
!
';\n\n if (this.cont.constructUIIframe('') === null) {\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile' : 'lhc-desktop';\n\n var _inst = this;\n\n this.lload = !(!lload);\n\n // If it's lazy load we have always to consider widget as loaded\n if (this.lload === true) {\n this.loadStatus['widget'] = true;\n } else {\n // We wait untill widget content loads\n attributes.wloaded.subscribe((data) => { if (data){this.loadStatus['widget'] = true; this.checkLoadStatus()}});\n }\n\n attributes.shidden.subscribe((data) => {\n if (data) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (!chatParams['id'] && this.attributes.widgetStatus.value != true) {\n this.loadStatus['shidden'] = true;\n this.hide();\n }\n } else {\n this.loadStatus['shidden'] = false;\n this.checkLoadStatus();\n this.show();\n }\n });\n\n this.cont.attachUserEventListener(\"click\", function (e) {\n\n attributes.onlineStatus.value === false && attributes.eventEmitter.emitEvent('offlineClickAction');\n\n if (attributes.onlineStatus.value === false && attributes.offline_redirect !== null){\n document.location = attributes.offline_redirect;\n e.preventDefault();\n } else {\n if (_inst.controlMode == true) {\n attributes.eventEmitter.emitEvent('closeWidget', [{'sender' : 'closeButton'}]);\n e.preventDefault();\n } else {\n attributes.eventEmitter.emitEvent('showWidget', [{'event':e}]);\n attributes.eventEmitter.emitEvent('clickAction');\n }\n }\n\n }, \"lhc_status_container\", \"minifiedclick\");\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.staticJS['font_status']) {\n this.cont.insertCssRemoteFile({onload: () => {this.loadStatus['font'] = true; this.checkLoadStatus()},\"as\":\"font\", rel:\"preload\", type: \"font/woff\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['font_status']});\n }\n\n if (this.attributes.theme) {\n this.loadStatus['theme'] = false;\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['theme'] = true; this.checkLoadStatus()}, id: \"lhc-theme-status\", crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n } else {\n this.loadStatus['theme'] = true;\n }\n\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['main'] = true; this.checkLoadStatus()}, crossOrigin : \"anonymous\", href : this.attributes.staticJS['status_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n\n attributes.onlineStatus.subscribe((data) => this.toggleOfflineIcon(data));\n\n attributes.widgetStatus.subscribe((data) => {\n if (this.attributes.mode !== 'popup') {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n (data == true || (!this.attributes.leaveMessage && this.attributes.onlineStatus.value == false && !chatParams['id'])) ? this.hide() : this.show();\n }\n });\n\n this.attributes.mode === 'popup' && this.show();\n let unreadMessagesNumber = attributes.storageHandler.getSessionStorage(this.attributes['prefixStorage']+'_unr');\n\n attributes.eventEmitter.addListener('unread_message', (data) => {\n var unreadTotal = (data && data.otm);\n if (unreadTotal) {\n unreadTotal = parseInt(unreadTotal);\n unreadTotal += this.unread_counter;\n }\n this.attributes.unread_counter.next(unreadTotal);\n this.showUnreadIndicator(unreadTotal);\n });\n\n if (unreadMessagesNumber !== null) {\n attributes.eventEmitter.emitEvent('unread_message',[{otm:unreadMessagesNumber, init: true}]);\n if (unreadMessagesNumber !== null && !isNaN(unreadMessagesNumber)) {\n this.unread_counter = parseInt(unreadMessagesNumber);\n }\n }\n\n // Widget reload was called\n // We avoid cache by using timestamp because we do not call init call.\n // We also always insert themepage even if there is no css in it.\n attributes.eventEmitter.addListener('reloadWidget',() => {\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-status\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + Date.now()}, true);\n }\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + Date.now()});\n });\n }\n\n hide () {\n\n this.removeUnreadIndicator();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (this.attributes.leaveMessage == true || this.attributes.onlineStatus.value == true || chatParams['id']) {\n\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && ((chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true))) {\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n }\n }\n\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true) {\n if (this.attributes.widgetStatus.value == true){\n this.controlMode = true;\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.addClass(icon, \"close-status\");\n }\n return ;\n }\n\n }\n }\n\n this.cont.hide();\n }\n\n showUnreadIndicator(number){\n var iconText = number || '!';\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.addClass(icon, \"has-uread-message\");\n\n var iconValue = this.cont.getElementById(\"unread-msg-number\");\n if (iconValue) {\n iconValue.innerText = iconText;\n }\n\n if (this.attributes.storageHandler)\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_unr',iconText);\n }\n\n removeUnreadIndicator() {\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.removeClass(icon, \"has-uread-message\");\n if (this.attributes.storageHandler) {\n this.attributes.storageHandler.removeSessionStorage(this.attributes['prefixStorage']+'_unr');\n }\n this.attributes.eventEmitter.emitEvent('remove_unread_indicator', []);\n this.attributes.unread_counter.next(0);\n this.unread_counter = 0;\n }\n\n show () {\n\n if (this.attributes.hideOffline === false) {\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n if (this.attributes.widgetStatus.value != true) {\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.removeClass(icon, \"close-status\");\n this.controlMode = false;\n }\n }\n\n // show status icon only if we are not in api mode or chat is going now\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n } else if (this.attributes.clinst === true) {\n if (this.attributes.widgetStatus.value != true) {\n this.cont.hide();\n }\n }\n\n } else {\n this.cont.hide();\n }\n }\n}","\nclass chatEventsHandler {\n\n constructor(attr) {\n this.attributes = attr\n }\n\n getJSVarsValues(jsVars) {\n var js_args = {};\n\n if (jsVars.length > 0) {\n\n var currentVar = null;\n\n for (var index in jsVars) {\n try {\n currentVar = eval('window.'+jsVars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[jsVars[index].id] = currentVar;\n }\n } catch(err) {\n }\n }\n return js_args;\n }\n\n return js_args;\n }\n\n getInitAttributes() {\n let attr = {\n 'onlineStatus' : this.attributes['onlineStatus'].value,\n 'toggleSound' : this.attributes['toggleSound'].value,\n 'widgetStatus' : this.attributes['widgetStatus'].value,\n 'jsVars' : this.getJSVarsValues(this.attributes['jsVars'].value),\n 'isMobile' : this.attributes['isMobile'],\n 'department' : this.attributes['department'],\n 'product' : this.attributes['product'],\n 'theme' : this.attributes['theme'],\n 'base_url' : this.attributes['base_url'],\n 'mode' : this.attributes['mode'],\n 'captcha' : this.attributes['captcha'],\n 'staticJS' : this.attributes['staticJS'],\n 'static_chat' : this.attributes['userSession'].getSessionAttributes(),\n 'domain_lhc': this.attributes['domain_lhc'],\n 'leave_message': this.attributes['leaveMessage'],\n 'scope_prefix': this.attributes['prefixLowercase']\n };\n\n if (this.attributes['fresh'] == true) {\n if (attr['static_chat']['id']) {\n delete attr['static_chat']['id'];\n }\n\n if (attr['static_chat']['hash']) {\n delete attr['static_chat']['hash'];\n }\n }\n\n if (this.attributes['bot_id'] != '') {\n attr['bot_id'] = this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id'] != '') {\n attr['trigger_id'] = this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority'] != '') {\n attr['priority'] = this.attributes['priority'];\n }\n \n if (this.attributes['phash'] !== null) {\n attr['phash'] = this.attributes['phash'];\n }\n\n if (this.attributes['survey'] !== null) {\n attr['survey'] = this.attributes['survey'];\n }\n\n if (this.attributes['pvhash'] !== null) {\n attr['pvhash'] = this.attributes['pvhash'];\n }\n\n if (this.attributes['operator'] !== null) {\n attr['operator'] = this.attributes['operator'];\n }\n\n if (this.attributes['profile_pic'] !== null) {\n attr['profile_pic'] = this.attributes['profile_pic'];\n }\n\n if (this.attributes['lang'] != '') {\n attr['lang'] = this.attributes['lang'];\n }\n\n if (this.attributes['proactive']['invitation']) {\n attr['proactive'] = this.attributes['proactive'];\n }\n\n if (this.attributes['dep_default'] !== null) {\n attr['dep_default'] = this.attributes['dep_default'];\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr) {\n var prefillOptions = this.attributes.LHCChatOptions.attr;\n let fieldsCustom = [];\n prefillOptions.forEach((item, index) => {\n fieldsCustom.push({show : (((typeof item.show != 'undefined' && (item.show == 'on' || item.show == 'off')) ? item.show : 'b')), value : item.value, index : index, name : item.name, \"class\": \"form-control form-control-sm\", 'type' : item.type, 'identifier': ('additional_' + index), 'placeholder' : '', 'width' : (item.size || 6), 'encrypted': (item.encrypted || false), 'required' : (item.req || false), 'label' : item.name});\n });\n\n attr['CUSTOM_FIELDS'] = fieldsCustom;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n if (item.name == 'email') {\n prefilOptionsList.push({'Email' : item.value});\n } else if (item.name == 'username') {\n prefilOptionsList.push({'Username' : item.value});\n } else if (item.name == 'phone') {\n prefilOptionsList.push({'Phone' : item.value});\n } else if (item.name == 'question') {\n prefilOptionsList.push({'Question' : item.value});\n }\n })\n attr['attr_prefill'] = prefilOptionsList;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill_admin) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill_admin;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n prefilOptionsList.push({'value' : item.value, 'index' : item.index});\n })\n attr['attr_prefill_admin'] = prefilOptionsList;\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null) {\n attr['ses_ref'] = this.attributes['userSession'].getSessionReferrer()\n }\n\n return attr;\n }\n\n sendChildCommand(command) {\n if (this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(command, '/');\n }\n\n if (this.attributes.popupWidget.cont.elementReferrerPopup && this.attributes.popupWidget.cont.elementReferrerPopup.closed === false)\n {\n this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(command, '*');\n }\n }\n\n sendReadyEvent (popup) {\n\n let args = this.getInitAttributes();\n\n if (!(popup === true) && this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage('lhc_init:' + JSON.stringify(args), '/');\n }\n }\n\n sendChildEvent(event, args, type) {\n if (typeof type === 'undefined') {\n type = 'lhc_event';\n }\n this.sendChildCommand(type+':'+event + '::' + JSON.stringify(args));\n }\n}\n\nexport { chatEventsHandler };","\nclass _domEventsHandler {\n constructor() {\n this.events = {}\n }\n\n attachEvent (object, event, callback) {\n var k = this, dispatch = function (b) {\n callback.call(object, k.getEvent(b))\n };\n object.attachEvent(\"on\" + event, dispatch);\n return dispatch\n };\n\n unlisten(eventName) {\n var presentEvent;\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n }\n\n listen(object, event, callback, eventName) {\n var presentEvent;\n if (eventName) {\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n\n if (object.addEventListener) {\n object.addEventListener(event, callback, !1);\n } else if (document.attachEvent) {\n callback = this.attachEvent(object, event, callback);\n } else {\n return null;\n }\n\n this.events[eventName] = {element: object, eventName: event, eventListener: callback};\n\n return callback\n }\n };\n\n removeEventHandler(object, event, listener) {\n document.removeEventListener ? object.removeEventListener(event, listener, !1) : object.detachEvent(\"on\" + event, listener)\n };\n\n getEvent(event) {\n var eventInstance = event || _this.event;\n if (!eventInstance) {\n for (event = this.getEvent.caller; event && (!(eventInstance = event.arguments[0]) || Event != eventInstance.constructor);) {\n event = event.caller\n };\n }\n return eventInstance\n };\n}\n\nconst domEventsHandler = new _domEventsHandler();\nexport { domEventsHandler };","\nexport class monitoredVariable {\n constructor(value, params) {\n this.valueInternal = value;\n this.listeners = [];\n this.params = params || {};\n }\n\n get value() {\n return this.valueInternal;\n }\n\n set value(val) {\n this.next(val);\n }\n\n next(val) {\n this.valueInternal = val;\n this.callListeners();\n }\n\n nextProperty(key, val) {\n this.valueInternal[key] = val;\n this.callListeners();\n }\n\n callListeners() {\n this.listeners.forEach((item) => {\n if (item && typeof item === \"function\") {\n item(this.valueInternal);\n }\n });\n }\n\n unsubscribe(callback) {\n if (this.listeners.indexOf(callback) !== -1) {\n this.listeners.splice(this.listeners.indexOf(callback), 1);\n }\n }\n\n subscribe(callback) {\n this.listeners.push(callback);\n \n if (!this.params['ignore_sub']) {\n callback(this.valueInternal);\n }\n }\n}\n\n","\nexport class storageHandler {\n constructor(global, domain, prefix, cookieEnabled) {\n this.window = global;\n this.cookieEnabled = false;\n\n // Have we checked cookies support\n this.cookiesSupportChecked = false;\n\n // We should try to enable cookie\n if (cookieEnabled == true) {\n this.checkCookiesSupport();\n }\n\n this.domain = domain;\n this.secureCookie = false;\n this.cookiePerPage = false;\n this.prefix = prefix || 'lhc';\n }\n\n checkCookiesSupport() {\n\n if (this.cookiesSupportChecked === true) {\n return this.cookieEnabled;\n }\n\n this.cookiesSupportChecked = true;\n\n try {\n this.hasSessionStorage = !!this.window.sessionStorage;\n } catch (e){\n this.hasSessionStorage = false;\n }\n\n try {\n this.hasLocalStorage = !!this.window.localStorage;\n } catch (e){\n this.hasLocalStorage = false;\n }\n\n try {\n // Create cookie\n document.cookie = 'cookietest=1';\n this.cookieEnabled = document.cookie.indexOf('cookietest=') !== -1;\n // Delete cookie\n document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';\n } catch (e) {\n\n }\n\n return this.cookieEnabled;\n }\n\n setCookieDomain(domain) {\n this.domain = domain;\n }\n\n setCookiePerPage(cookiePerPage) {\n this.cookiePerPage = cookiePerPage;\n }\n\n getCookieDomain() {\n if (this.domain) {\n return '.' + this.domain;\n } else {\n return null;\n }\n }\n\n setSecureCookie(status) {\n this.secureCookie = status;\n }\n\n setHTTPCookie(coookieName, cookieValue, expireTime, domain) {\n if (this.cookieEnabled === false) return ;\n var string = \"\";\n expireTime || (expireTime = new Date, expireTime.setTime(expireTime.getTime() + 15552E6), string = \"; expires=\" + expireTime.toGMTString());\n document.cookie = coookieName + \"=\" + cookieValue + string + (this.cookiePerPage === false ? \"; path=/\" : (this.cookiePerPage === true ? \"\" : '; path=' + this.cookiePerPage)) + (this.secureCookie ? \";secure\" : \"\") + (domain ? \";domain=\" + domain : \"\") + \";SameSite=Lax\";\n };\n\n getHTTPCookie(cookieName) {\n if (this.cookieEnabled === false) return [];\n var b, d, k = [], baseCookie = cookieName + \"=\", e = document.cookie.split(\";\");\n cookieName = 0;\n for (b = e.length; cookieName < b; cookieName++) {\n for (d = e[cookieName]; \" \" === d.charAt(0);) d = d.substring(1, d.length);\n 0 === d.indexOf(baseCookie) && k.push(d.substring(baseCookie.length, d.length))\n }\n\n // Reset duplicate cookies\n if (k.length == 2) {\n let host = (window.location.hostname || document.location.host),\n reset = baseCookie + \"0;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\";\n if (host) {\n document.cookie = reset;\n document.cookie = reset + \"; domain=.\" + host;\n }\n }\n\n return k;\n };\n\n setSessionStorage(key, value) {\n if (this.hasSessionStorage && sessionStorage.setItem) try {\n sessionStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n removeSessionStorage(key) {\n if (this.hasSessionStorage && sessionStorage.removeItem) try {\n sessionStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n getSessionStorage(a) {\n return this.hasSessionStorage && sessionStorage.getItem ?\n sessionStorage.getItem(a) : null\n }\n\n setLocalStorage(key, value) {\n if (this.hasLocalStorage && localStorage.setItem) try {\n localStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n getLocalStorage(a) {\n return this.hasLocalStorage && localStorage.getItem ?\n localStorage.getItem(a) : null\n }\n\n removeLocalStorage(key) {\n if (this.hasLocalStorage && localStorage.removeItem) try {\n localStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n setSessionReferer(ref) {\n if (!this.getSessionStorage(this.prefix+'_ref')) {\n this.setSessionStorage(this.prefix+'_ref',ref);\n }\n }\n\n getSessionReferrer() {\n return this.getSessionStorage(this.prefix+'_ref');\n }\n\n getSessionInformation() {\n var a;\n this.sessionInformation && (a = this.sessionInformation);\n a || (a = this.getHTTPCookie(this.prefix + \"_per\")[0]);\n return this.parseSessionInformation(a)\n };\n\n getStoreValue(sessionInformation)\n {\n let pairs = [];\n Object.keys(sessionInformation).forEach(key => {\n let value = sessionInformation[key];\n pairs.push(key + '|' + value);\n });\n return pairs.join('|');\n }\n\n storeSessionInformation(sessionInformation) {\n this.setHTTPCookie(this.prefix+\"_per\", this.getStoreValue(sessionInformation), false, this.getCookieDomain());\n this.sessionInformation = sessionInformation;\n };\n\n parseSessionInformation(content) {\n // Check was it stored as our format or JSON.\n if (content && content.indexOf('|') !== -1) {\n let contentReturn = {};\n let parts = content.split('|');\n\n for (var i = 0; i < parts.length / 2; i++) {\n contentReturn[parts[i * 2]] = parts[(i * 2) + 1];\n }\n\n return contentReturn;\n } else {\n if (content) {\n return JSON.parse(unescape(content))\n } else {\n return {};\n }\n }\n\n };\n}\n\n","\nexport class userSession {\n\n constructor() {\n this.vid = null;\n this.hnh = null;\n\n this.attributes = {};\n this.ref = null;\n this.id = null;\n this.hash = null;\n this.jsVars = [];\n this.updateVarsTimeout = null;\n this.JSON = {\n parse: window.JSON && (window.JSON.parse || window.JSON.decode) || String.prototype.evalJSON && function(str){return String(str).evalJSON();} || $.parseJSON || $.evalJSON,\n stringify: Object.toJSON || window.JSON && (window.JSON.stringify || window.JSON.encode) || $.toJSON\n };\n }\n\n setAttributes(attributes) {\n this.attributes = attributes;\n }\n\n setSessionReferrer(ref) {\n this.ref = ref;\n }\n\n getSessionReferrer() {\n return this.ref;\n }\n\n getVID() {\n return this.vid;\n }\n\n setVID(vid) {\n this.vid = vid;\n }\n\n setSessionInformation(params) {\n this.vid = params['vid'] || null;\n this.hnh = params['hnh'] || null;\n this.hash = params['hash'] || null;\n this.id = params['id'] || null;\n }\n\n getSessionAttributes() {\n var attr = {};\n\n if (this.vid !== null) {\n attr['vid'] = this.vid;\n }\n\n if (this.hnh !== null) {\n attr['hnh'] = this.hnh;\n }\n\n if (this.id !== null) {\n attr['id'] = this.id;\n }\n\n if (this.hash !== null) {\n attr['hash'] = this.hash;\n }\n\n return attr\n }\n\n setupVarsMonitoring(jsVars, cb) {\n this.jsVars = jsVars;\n\n // Try to monitor variable if it's lhc_var\n try {\n if (this.attributes.lhc_var !== null)\n {\n\n var validator = {\n set: (obj, prop, value) => {\n // The default behavior to store the value\n obj[prop] = value;\n\n clearTimeout(this.updateVarsTimeout);\n this.updateVarsTimeout = setTimeout( () =>{ this.updateJSVars(obj, cb); },1000);\n\n // Indicate success\n return true;\n }\n };\n\n this.attributes.lhc_var = new Proxy(this.attributes.lhc_var,validator);\n\n // Convert argument or global lhc_var to a reference\n if (this.attributes.LHC_API.args.lhc_var) {\n this.attributes.LHC_API.args.lhc_var = this.attributes.lhc_var;\n } else if (lhc_var) {\n lhc_var = this.attributes.lhc_var;\n }\n\n // Update vars initially\n this.updateJSVars(this.attributes.lhc_var);\n }\n } catch(err) {\n console.log(err);\n };\n\n }\n\n getVars() {\n if (this.jsVars.length > 0) {\n var js_args = {};\n var currentVar = null;\n\n for (var index in this.jsVars) {\n try {\n\n if (this.jsVars[index].var.indexOf('lhc_var.') !== -1) {\n currentVar = this.attributes.lhc_var[this.jsVars[index].var.replace('lhc_var.','')] || null;\n } else {\n currentVar = eval(this.jsVars[index].var);\n }\n\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[this.jsVars[index].id] = currentVar;\n }\n } catch(err) {\n\n }\n }\n\n return js_args;\n }\n return null;\n }\n\n getAppendVariables(){\n var append = '';\n\n if (this.vid !== null) {\n append = append + '/(vid)/' + this.vid ;\n }\n\n if (this.hash !== null && this.id !== null) {\n append = append + '/(hash)/' + this.id + '_' + this.hash;\n }\n\n return append;\n }\n\n updateJSVars(vars, cb) {\n\n let varsJSON = this.getVars(vars);\n\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", this.attributes.LHC_API.args.lhc_base_url + '/chat/updatejsvars' + this.getAppendVariables(), true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( this.JSON.stringify(varsJSON) ) );\n\n if (typeof cb !== 'undefined' && this.hash === null && this.id === null) {\n cb(varsJSON);\n }\n }\n\n setChatInformation(data, alwaysPersistentNeedHelp) {\n this.id = data.id;\n this.hash = data.hash;\n // Hide only chat starts otherwise don't touch it.\n if (this.id !== null && !alwaysPersistentNeedHelp) {\n this.hnh = Math.round(Date.now() / 1000);\n }\n }\n\n}","const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\nexport default function isMobile(userAgent) {\n userAgent =\n userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : '');\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n const result = {\n apple: {\n phone: match(appleIphone, userAgent) && !match(windowsPhone, userAgent),\n ipod: match(appleIpod, userAgent),\n tablet: !match(appleIphone, userAgent) &&\n match(appleTablet, userAgent) &&\n !match(windowsPhone, userAgent),\n device: (match(appleIphone, userAgent) ||\n match(appleIpod, userAgent) ||\n match(appleTablet, userAgent)) &&\n !match(windowsPhone, userAgent),\n },\n amazon: {\n phone: match(amazonPhone, userAgent),\n tablet: !match(amazonPhone, userAgent) && match(amazonTablet, userAgent),\n device: match(amazonPhone, userAgent) || match(amazonTablet, userAgent),\n },\n android: {\n phone: (!match(windowsPhone, userAgent) && match(amazonPhone, userAgent)) ||\n (!match(windowsPhone, userAgent) && match(androidPhone, userAgent)),\n tablet: !match(windowsPhone, userAgent) &&\n !match(amazonPhone, userAgent) &&\n !match(androidPhone, userAgent) &&\n (match(amazonTablet, userAgent) || match(androidTablet, userAgent)),\n device: (!match(windowsPhone, userAgent) &&\n (match(amazonPhone, userAgent) ||\n match(amazonTablet, userAgent) ||\n match(androidPhone, userAgent) ||\n match(androidTablet, userAgent))) ||\n match(/\\bokhttp\\b/i, userAgent),\n },\n windows: {\n phone: match(windowsPhone, userAgent),\n tablet: match(windowsTablet, userAgent),\n device: match(windowsPhone, userAgent) || match(windowsTablet, userAgent),\n },\n other: {\n blackberry: match(otherBlackBerry, userAgent),\n blackberry10: match(otherBlackBerry10, userAgent),\n opera: match(otherOpera, userAgent),\n firefox: match(otherFirefox, userAgent),\n chrome: match(otherChrome, userAgent),\n device: match(otherBlackBerry, userAgent) ||\n match(otherBlackBerry10, userAgent) ||\n match(otherOpera, userAgent) ||\n match(otherFirefox, userAgent) ||\n match(otherChrome, userAgent),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","'use strict';\n\nmodule.exports = require('./lib')\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._h = 0;\n this._i = 0;\n this._j = null;\n this._k = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._l = null;\nPromise._m = null;\nPromise._n = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._i === 3) {\n self = self._j;\n }\n if (Promise._l) {\n Promise._l(self);\n }\n if (self._i === 0) {\n if (self._h === 0) {\n self._h = 1;\n self._k = deferred;\n return;\n }\n if (self._h === 1) {\n self._h = 2;\n self._k = [self._k, deferred];\n return;\n }\n self._k.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._i === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._i === 1) {\n resolve(deferred.promise, self._j);\n } else {\n reject(deferred.promise, self._j);\n }\n return;\n }\n var ret = tryCallOne(cb, self._j);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._i = 3;\n self._j = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._i = 1;\n self._j = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._i = 2;\n self._j = newValue;\n if (Promise._m) {\n Promise._m(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._h === 1) {\n handle(self, self._k);\n self._k = null;\n }\n if (self._h === 2) {\n for (var i = 0; i < self._k.length; i++) {\n handle(self, self._k[i]);\n }\n self._k = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._n);\n p._i = 1;\n p._j = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._i === 3) {\n val = val._j;\n }\n if (val._i === 1) return res(i, val._j);\n if (val._i === 2) reject(val._j);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n return this.then(function (value) {\n return Promise.resolve(f()).then(function () {\n return value;\n });\n }, function (err) {\n return Promise.resolve(f()).then(function () {\n throw err;\n });\n });\n};\n","'use strict';\n\nmodule.exports = require('./core.js');\nrequire('./done.js');\nrequire('./finally.js');\nrequire('./es6-extensions.js');\nrequire('./node-extensions.js');\nrequire('./synchronous.js');\n","'use strict';\n\n// This file contains then/promise specific extensions that are only useful\n// for node.js interop\n\nvar Promise = require('./core.js');\nvar asap = require('asap');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n if (\n typeof argumentCount === 'number' && argumentCount !== Infinity\n ) {\n return denodeifyWithCount(fn, argumentCount);\n } else {\n return denodeifyWithoutCount(fn);\n }\n};\n\nvar callbackFn = (\n 'function (err, res) {' +\n 'if (err) { rj(err); } else { rs(res); }' +\n '}'\n);\nfunction denodeifyWithCount(fn, argumentCount) {\n var args = [];\n for (var i = 0; i < argumentCount; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'return new Promise(function (rs, rj) {',\n 'var res = fn.call(',\n ['self'].concat(args).concat([callbackFn]).join(','),\n ');',\n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n return Function(['Promise', 'fn'], body)(Promise, fn);\n}\nfunction denodeifyWithoutCount(fn) {\n var fnLength = Math.max(fn.length - 1, 3);\n var args = [];\n for (var i = 0; i < fnLength; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'var args;',\n 'var argLength = arguments.length;',\n 'if (arguments.length > ' + fnLength + ') {',\n 'args = new Array(arguments.length + 1);',\n 'for (var i = 0; i < arguments.length; i++) {',\n 'args[i] = arguments[i];',\n '}',\n '}',\n 'return new Promise(function (rs, rj) {',\n 'var cb = ' + callbackFn + ';',\n 'var res;',\n 'switch (argLength) {',\n args.concat(['extra']).map(function (_, index) {\n return (\n 'case ' + (index) + ':' +\n 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' +\n 'break;'\n );\n }).join(''),\n 'default:',\n 'args[argLength] = cb;',\n 'res = fn.apply(self, args);',\n '}',\n \n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n\n return Function(\n ['Promise', 'fn'],\n body\n )(Promise, fn);\n}\n\nPromise.nodeify = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var callback =\n typeof args[args.length - 1] === 'function' ? args.pop() : null;\n var ctx = this;\n try {\n return fn.apply(this, arguments).nodeify(callback, ctx);\n } catch (ex) {\n if (callback === null || typeof callback == 'undefined') {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n } else {\n asap(function () {\n callback.call(ctx, ex);\n })\n }\n }\n }\n};\n\nPromise.prototype.nodeify = function (callback, ctx) {\n if (typeof callback != 'function') return this;\n\n this.then(function (value) {\n asap(function () {\n callback.call(ctx, null, value);\n });\n }, function (err) {\n asap(function () {\n callback.call(ctx, err);\n });\n });\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.enableSynchronous = function () {\n Promise.prototype.isPending = function() {\n return this.getState() == 0;\n };\n\n Promise.prototype.isFulfilled = function() {\n return this.getState() == 1;\n };\n\n Promise.prototype.isRejected = function() {\n return this.getState() == 2;\n };\n\n Promise.prototype.getValue = function () {\n if (this._i === 3) {\n return this._j.getValue();\n }\n\n if (!this.isFulfilled()) {\n throw new Error('Cannot get a value of an unfulfilled promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getReason = function () {\n if (this._i === 3) {\n return this._j.getReason();\n }\n\n if (!this.isRejected()) {\n throw new Error('Cannot get a rejection reason of a non-rejected promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getState = function () {\n if (this._i === 3) {\n return this._j.getState();\n }\n if (this._i === -1 || this._i === -2) {\n return 0;\n }\n\n return this._i;\n };\n};\n\nPromise.disableSynchronous = function() {\n Promise.prototype.isPending = undefined;\n Promise.prototype.isFulfilled = undefined;\n Promise.prototype.isRejected = undefined;\n Promise.prototype.getValue = undefined;\n Promise.prototype.getReason = undefined;\n Promise.prototype.getState = undefined;\n};\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"LiveHelperChat:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"81\":\"75d1d932aa8416f0bf23\",\"213\":\"9704c8f8044bd52f066c\",\"398\":\"16da6b6586a6fd6028ae\",\"417\":\"2de2c9d370bb7f28def0\",\"530\":\"6607a807df452c8883cf\",\"572\":\"77adaf2dba091c4d50d1\",\"783\":\"a68fc3eccb8af7392e9f\",\"821\":\"47fccc99a929b98c866b\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLiveHelperChat\"] = self[\"webpackChunkLiveHelperChat\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","(function (global) {\n\n var currentScript = document.currentScript || (function() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n var scopeScript = currentScript.getAttribute('scope') || 'LHC';\n\n if (/google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent)) {\n return;\n }\n\n if (!global[scopeScript+'_API']) {\n if (global['LHC_API']) {\n global[scopeScript+'_API'] = global['LHC_API'];\n } else {\n return;\n }\n }\n\n var lhcError = {\n log : function(message, filename, lineNumber, stack, column) {\n var e;\n e = {};\n e.message = message || \"\";\n e.message += \"\\n\" + global.navigator.userAgent;\n e.location = location && location.href ? location.href : \"\";\n e.file = filename || \"\";\n e.line = lineNumber || \"\";\n e.column = column || \"\";\n e.stack = stack ? JSON.stringify(stack) : \"\";\n e.stack = e.stack.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", global[scopeScript+'_API']['args']['lhc_base_url'] + 'audit/logjserror', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( JSON.stringify(e) ) );\n }\n }\n\n try {\n\n window.addEventListener('error', function (e) {\n if (lhcError && e.filename.indexOf(global[scopeScript+'_API']['args']['lhc_base_url'].replace('index.php/')) !== -1) {\n lhcError.log(e.message, e.filename, e.lineNumber || e.lineno, e.error.stack, e.colno);\n }\n })\n\n global['$_' + scopeScript + '_Instance'] = null;\n global['$_' + scopeScript + '_Debug'] = false;\n global['$_' + scopeScript] = global['$_' + scopeScript] || {};\n\n (function (lhc, LHC_API) {\n\n lhc.loaded = false;\n lhc.connected = false;\n lhc.ready = false;\n lhc.version = 186;\n\n var init = () => {\n\n if (!global.Promise) {\n global.Promise = require('promise');\n }\n\n var BehaviorSubject = require('./util/monitoredVariable').monitoredVariable;\n var EventEmitter = require('wolfy87-eventemitter');\n\n var statusWidget = require('./lib/widgets/statusWidget').statusWidget;\n var mainWidget = require('./lib/widgets/mainWidget').mainWidget;\n var mainWidgetPopup = require('./lib/widgets/mainWidgetPopup').mainWidgetPopup;\n var containerChat = require('./lib/widgets/containerChat').containerChat;\n var helperFunctions = require('./lib/helperFunctions').helperFunctions;\n var userSession = require('./util/userSession').userSession;\n var storageHandler = require('./util/storageHandler').storageHandler;\n var chatNotifications = require('./lib/chatNotifications').chatNotifications;\n var chatEventsHandler = require('./util/chatEventsHandler').chatEventsHandler;\n\n const isMobileItem = require('ismobilejs');\n\n var isMobile = isMobileItem.default(global.navigator.userAgent).phone;\n\n LHC_API.args = LHC_API.args || {};\n\n if (typeof LHC_API.args.mobile_view !== 'undefined') {\n isMobile = LHC_API.args.mobile_view;\n }\n\n const prefixLowercase = scopeScript.toLowerCase();\n const prefixStorage = (prefixLowercase && LHC_API.args.scope_storage ? prefixLowercase : 'lhc');\n const cookieEnabledUser = typeof LHC_API.args.cookie_enabled !== 'undefined' ? LHC_API.args.cookie_enabled : true;\n const userMode = LHC_API.args.mode || 'widget';\n\n var storageHandler = new storageHandler(global, LHC_API.args.domain || null, prefixStorage, cookieEnabledUser);\n\n // Cookies are disabled and it's required for us to work. So switch to mode where cookies are not required\n if (storageHandler.cookieEnabled === false && userMode == 'widget') {\n LHC_API.args.orig = {}\n LHC_API.args.orig.mode = LHC_API.args.mode;\n LHC_API.args.orig.proactive = LHC_API.args.proactive;\n LHC_API.args.orig.check_messages = LHC_API.args.check_messages;\n\n LHC_API.args.mode = 'popup';\n LHC_API.args.proactive = false;\n LHC_API.args.check_messages = false;\n }\n\n if (LHC_API.args.cookie_per_page) {\n storageHandler.setCookiePerPage(LHC_API.args.cookie_per_page);\n }\n\n var referrer = (document.referrer) ? document.referrer.substr(document.referrer.indexOf('://') + 1) : '';\n var location = (document.location) ? encodeURIComponent(window.location.href.substring(window.location.protocol.length)) : '';\n\n storageHandler.setSessionReferer(referrer);\n\n referrer = referrer ? encodeURIComponent(referrer) : '';\n\n if (LHC_API.args.lang) {\n LHC_API.args.lang = LHC_API.args.lang.replace('/', '') + '/';\n }\n\n // Main attributes\n var attributesWidget = {\n terminated: false,\n prefixLowercase: prefixLowercase,\n prefixStorage: prefixStorage,\n prefixScope: scopeScript,\n cookie_enabled: cookieEnabledUser,\n LHC_API: LHC_API,\n viewHandler: null,\n msgSnippet: null,\n react_attr: LHC_API.args.react_attr || null,\n hide_parent: LHC_API.args.hide_parent || false,\n hide_iframe: LHC_API.args.hide_iframe || false,\n hide_status: LHC_API.args.hide_status || null,\n mainWidget: new mainWidget(prefixLowercase),\n popupWidget: new mainWidgetPopup(),\n chatNotifications: chatNotifications,\n jsVars: new BehaviorSubject(true),\n onlineStatus: new BehaviorSubject(true),\n wloaded: new BehaviorSubject(false),\n sload: new BehaviorSubject(false),\n shidden: new BehaviorSubject(LHC_API.args.hide_status || false),\n msgsnippet_status: new BehaviorSubject(false),\n unread_counter: new BehaviorSubject(0),\n widgetStatus: new BehaviorSubject((storageHandler.getSessionStorage(prefixStorage + '_ws') === 'true' || (LHC_API.args.mode && LHC_API.args.mode == 'embed'))),\n eventEmitter: new EventEmitter(),\n toggleSound: new BehaviorSubject(storageHandler.getSessionStorage(prefixStorage + '_sound') === 'true', {'ignore_sub': true}),\n hideOffline: false,\n fscreen: LHC_API.args.fscreen || false,\n isMobile: isMobile,\n isIE: (navigator.userAgent.toUpperCase().indexOf(\"TRIDENT/\") != -1 || navigator.userAgent.toUpperCase().indexOf(\"MSIE\") != -1 || typeof Object.assign !== 'function'),\n fresh: LHC_API.args.fresh || false,\n popupDimesnions: {pheight: (LHC_API.args.pheight || 520), pwidth: (LHC_API.args.pwidth || 500)},\n leaveMessage: LHC_API.args.leaveamessage || null,\n department: LHC_API.args.department || [],\n dep_default: LHC_API.args.dep_default || null,\n product: LHC_API.args.product || [],\n theme: LHC_API.args.theme || null,\n theme_v: null,\n domain: LHC_API.args.domain || null,\n domain_lhc: null,\n instance_id: 0,\n profile_pic: LHC_API.args.profile_pic || null,\n position: LHC_API.args.position || 'bottom_right',\n position_placement: LHC_API.args.position_placement || 'bottom_right',\n base_url: LHC_API.args.lhc_base_url,\n mode: LHC_API.args.mode || 'widget',\n tag: LHC_API.args.tag || '',\n proactive: {},\n captcha: null,\n focused: true,\n clinst: false,\n kcw: LHC_API.args.kcw || false,\n offline_redirect: LHC_API.args.offline_redirect || null,\n identifier: LHC_API.args.identifier || '',\n proactive_interval: null,\n lang: LHC_API.args.lang || '',\n bot_id: LHC_API.args.bot_id || '',\n trigger_id: LHC_API.args.trigger_id || '',\n priority: LHC_API.args.priority || null,\n events: LHC_API.args.events || [],\n hhtml: LHC_API.args.hhtml || '',\n survey: LHC_API.args.survey || null,\n operator: LHC_API.args.operator || null,\n phash: LHC_API.args.phash || null,\n pvhash: LHC_API.args.pvhash || null,\n // Login Objects\n userSession: new userSession(),\n storageHandler: storageHandler,\n staticJS: {},\n nh : null, // Need help data\n init_calls: [],\n childCommands: [],\n childExtCommands: [],\n lhc_var: (LHC_API.args.lhc_var || (typeof lhc_var !== 'undefined' ? lhc_var : null)),\n loadcb: LHC_API.args.loadcb || null,\n LHCChatOptions: global[scopeScript + 'ChatOptions'] || {}\n };\n\n attributesWidget.widgetDimesions = new BehaviorSubject({\n sright: (LHC_API.args.sright || 0),\n sbottom: (LHC_API.args.sbottom || 0),\n wright_inv: 0,\n wbottom: 0,\n wright: 0,\n width: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wwidth || 350)),\n height: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wheight || 520)),\n units: ((isMobile || attributesWidget.fscreen) ? '%' : 'px')\n });\n\n var chatEvents = new chatEventsHandler(attributesWidget);\n\n lhc.eventListener = attributesWidget.eventEmitter;\n lhc.attributes = attributesWidget;\n\n attributesWidget.userSession.setAttributes(attributesWidget);\n attributesWidget.userSession.setSessionInformation(attributesWidget.storageHandler.getSessionInformation());\n attributesWidget.userSession.setSessionReferrer(storageHandler.getSessionReferrer());\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n\n var containerChatObj = new containerChat(attributesWidget.prefixLowercase, LHC_API.args.pnode || null);\n\n attributesWidget.viewHandler = new statusWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.viewHandler.cont.constructUI(), !0);\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.elmDom.appendChild(attributesWidget.mainWidget.cont.constructUI(), !0);\n }\n\n } else {\n var embedWrapper = document.getElementById(attributesWidget.prefixLowercase + '_status_container_page');\n if (embedWrapper !== null) {\n embedWrapper.appendChild(attributesWidget.mainWidget.cont.constructUI());\n embedWrapper.style.height = (LHC_API.args.wheight || 520) + 'px';\n } else {\n attributesWidget.position = 'api';\n }\n }\n\n function getArguments(){\n return {\n 'cd': (storageHandler.cookieEnabled === false ? 1 : null),\n 'vid': (LHC_API.args.UUID || attributesWidget.userSession.getVID()),\n 'hnh': attributesWidget.userSession.hnh,\n 'tz': helperFunctions.getTzOffset(),\n 'r': referrer,\n 'l': location,\n 'dt': encodeURIComponent(document.title),\n 'ie': attributesWidget.isIE,\n 'dep': attributesWidget.department.join(','),\n 'idnt': attributesWidget.identifier,\n 'tag': attributesWidget.tag,\n 'theme': attributesWidget.theme\n };\n }\n\n function showNeedHelp(nh) {\n import('./lib/widgets/needhelpWidget').then((module) => {\n var needhelpWidget = new module.needhelpWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(needhelpWidget.cont.constructUI(), !0);\n needhelpWidget.init(attributesWidget, nh);\n });\n }\n\n function showProactive(){\n import('./util/proactiveChat').then((module) => {\n module.proactiveChat.setParams({\n 'interval': attributesWidget.proactive_interval\n }, attributesWidget, chatEvents);\n });\n }\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n\n if (lhc.version !== data.wv && document.getElementById(attributesWidget.prefixLowercase+'-js-reload') === null) {\n\n if (data.terminate) {\n return;\n }\n\n attributesWidget.userSession.setVID(data.vid);\n\n // Mark script as terminated\n attributesWidget.terminated = true;\n\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n\n // Create new embed script\n var po = document.createElement(\"script\");\n po.type = currentScript.type;\n po.id = attributesWidget.prefixLowercase+'-js-reload';\n po.async = true;\n if (currentScript.getAttribute('scope')) { po.setAttribute('scope',currentScript.getAttribute('scope')); }\n\n // Expires cache\n po.src = currentScript.getAttribute('src') + '&r='+ (new Date()).getHours() + (new Date()).getMinutes();\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n return;\n }\n\n if (data.terminate || ((!attributesWidget.leaveMessage && data.chat_ui.leaveamessage === false) && data.isOnline === false)) {\n\n if (LHC_API.args.offline_redirect && attributesWidget.mode == 'embed') {\n document.location = LHC_API.args.offline_redirect;\n }\n\n if (data.terminate) {\n return;\n }\n }\n\n // Send event that lhc has started\n // So parent page informs back that it has lhc\n if ((attributesWidget.hide_parent || attributesWidget.hide_iframe || (data.chat_ui && (data.chat_ui.hide_iframe || data.chat_ui.hide_parent))) && window.location != window.parent.location && window.parent.closed === false) {\n window.parent.postMessage('lhc::started','*');\n }\n\n attributesWidget.leaveMessage = attributesWidget.leaveMessage || data.chat_ui.leaveamessage;\n\n if (data.department) {\n attributesWidget.department = data.department;\n }\n\n __webpack_public_path__ = data.chunks_location + \"/\";\n\n if (data.secure_cookie) {\n attributesWidget.storageHandler.setSecureCookie(true);\n }\n\n if (data.domain) {\n attributesWidget.storageHandler.setCookieDomain(data.domain);\n }\n\n if (data.siteaccess) {\n attributesWidget.lang = data.siteaccess;\n }\n\n if (data.static) {\n attributesWidget.staticJS = data.static;\n }\n\n if (data.pdim) {\n attributesWidget.popupDimesnions = data.pdim;\n }\n\n if (data.survey_id) {\n attributesWidget.survey = data.survey_id;\n }\n\n if (data.domain_lhc) {\n attributesWidget.domain_lhc = data.domain_lhc;\n }\n\n if (data.cont_css) {\n attributesWidget.cont_ss = data.cont_css;\n }\n\n if (data.wposition) {\n attributesWidget.position_placement = data.wposition;\n }\n\n attributesWidget.captcha = {hash: data.hash, ts: data.hash_ts};\n attributesWidget.userSession.setVID(data.vid);\n\n // Store session\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.hideOffline = data.hideOffline;\n attributesWidget.onlineStatus.next(data.isOnline);\n\n if (data.theme) {\n attributesWidget.theme = data.theme;\n attributesWidget.theme_v = data.theme_v;\n }\n\n if (data.chat_ui) {\n\n if (data.chat_ui.hide_parent) {\n attributesWidget.hide_parent = true;\n }\n\n if ((data.chat_ui.fscreen && attributesWidget.mode == 'embed') || attributesWidget.fscreen) {\n attributesWidget.widgetDimesions.nextProperty('width', 100);\n attributesWidget.widgetDimesions.nextProperty('height', 100);\n attributesWidget.widgetDimesions.nextProperty('units', '%');\n attributesWidget.fscreen = isMobile = attributesWidget.isMobile = true;\n }\n\n if (data.chat_ui.wheight && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('height', data.chat_ui.wheight);\n }\n\n if (data.chat_ui.wwidth && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('width', data.chat_ui.wwidth);\n }\n\n if (data.chat_ui.hhtml) {\n attributesWidget.hhtml = data.chat_ui.hhtml;\n }\n\n if (data.chat_ui.kcw) {\n attributesWidget.kcw = true;\n }\n\n if (data.chat_ui.clinst) {\n attributesWidget.clinst = true;\n }\n\n if (data.chat_ui.wbottom) {\n attributesWidget.widgetDimesions.nextProperty('wbottom', data.chat_ui.wbottom);\n }\n\n if (data.chat_ui.sbottom) {\n attributesWidget.widgetDimesions.nextProperty('sbottom', data.chat_ui.sbottom);\n }\n\n if (data.chat_ui.sright) {\n attributesWidget.widgetDimesions.nextProperty('sright', data.chat_ui.sright);\n }\n\n if (data.chat_ui.wright) {\n attributesWidget.widgetDimesions.nextProperty('wright', data.chat_ui.wright);\n }\n\n if (data.chat_ui.wright_inv) {\n attributesWidget.widgetDimesions.nextProperty('wright_inv', data.chat_ui.wright_inv);\n }\n\n if (data.chat_ui.mobile_popup && isMobile) {\n attributesWidget.mode = 'popup';\n }\n\n if (data.chat_ui.sound_enabled && storageHandler.getSessionStorage(prefixStorage + '_sound') === null) {\n attributesWidget.toggleSound.next(true);\n }\n\n if (data.instance_id) {\n attributesWidget.instance_id = data.instance_id;\n }\n\n if (data.chat_ui.check_status) {\n import('./util/activityMonitoring').then((module) => {\n module.activityMonitoring.setParams({\n 'timeout': data.chat_ui.check_status,\n 'track_mouse': data.chat_ui.track_mouse,\n 'track_activity': data.chat_ui.track_activity\n }, attributesWidget);\n });\n }\n\n if (data.ga) {\n import('./util/analyticEvents').then((module) => {\n module.analyticEvents.setParams({\n 'ga': data.ga\n }, attributesWidget);\n });\n }\n }\n\n if (data.nh && attributesWidget.fresh === false && attributesWidget['position'] != 'api') {\n attributesWidget.nh = data.nh;\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n if (data.nh.ap || attributesWidget.userSession.id === null) {\n showNeedHelp(data.nh);\n }\n }\n }\n\n if (data.js_vars) {\n // Javascript custom variables init\n // Extensions can listen for these\n attributesWidget.jsVars.next(data.js_vars);\n\n // Monitor js vars if required\n if (data.js_vars.length > 0) {\n attributesWidget.userSession.setupVarsMonitoring(data.js_vars, (vars) => {\n chatEvents.sendChildEvent('jsVars', [vars]);\n });\n }\n }\n\n // Init main widgets\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n attributesWidget.viewHandler.init(attributesWidget, data.ll);\n }\n\n if (!(attributesWidget.position == 'api' && attributesWidget.mode == 'embed')) {\n attributesWidget.mainWidget.init(attributesWidget, data.ll);\n }\n\n // Show status widget\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.show();\n }\n\n if (attributesWidget.loadcb) {\n attributesWidget.loadcb(attributesWidget);\n }\n\n if (data.init_calls) {\n attributesWidget.init_calls = data.init_calls;\n }\n\n attributesWidget.proactive_interval = data.chat_ui.proactive_interval;\n\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup' || attributesWidget.mode == 'embed') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n\n if (attributesWidget.init_calls.length > 0) {\n attributesWidget.init_calls.forEach((item) => {\n if (item.extension == 'nodeJSChat') {\n import('./util/nodeJSChat').then((module) => {\n module.nodeJSChat.setParams(item.params, attributesWidget, chatEvents);\n });\n }\n });\n }\n\n })\n\n // Widget Hide event\n attributesWidget.eventEmitter.addListener('closeWidget', function () {\n attributesWidget.widgetStatus.next(false);\n chatEvents.sendChildEvent('closedWidget', [{'sender': 'closeButton'}]);\n });\n\n // Send event to the child instantly\n attributesWidget.eventEmitter.addListener('sendChildEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n } else {\n attributesWidget.childCommands.push(params);\n }\n }\n });\n\n // Send smart event to the child\n attributesWidget.eventEmitter.addListener('sendChildExtEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n } else {\n attributesWidget.childExtCommands.push(params);\n }\n }\n });\n\n // Toggle sound user\n attributesWidget.eventEmitter.addListener('toggleSound', function () {\n var newValue = !attributesWidget.toggleSound.value;\n attributesWidget.toggleSound.next(newValue);\n });\n\n // Toggle cookies policy\n attributesWidget.eventEmitter.addListener('enableCookies', function () {\n\n // Check does cookies are supported in genreal\n if (storageHandler.checkCookiesSupport() === true) {\n // Store session\n var sessionAtrribute = attributesWidget.userSession.getSessionAttributes();\n if (typeof sessionAtrribute.hnh !== 'undefined') { delete sessionAtrribute['hnh']; }\n attributesWidget.storageHandler.storeSessionInformation(sessionAtrribute);\n\n if (typeof LHC_API.args.orig !== 'undefined') {\n\n attributesWidget.mode = LHC_API.args.mode = LHC_API.args.orig.mode;\n LHC_API.args.proactive = LHC_API.args.orig.proactive;\n LHC_API.args.check_messages = LHC_API.args.orig.check_messages;\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n // Change mode for react app\n attributesWidget.eventEmitter.emitEvent('sendChildEvent',[{'cmd' : 'attr_set', 'arg' : {'type':'attr_set','attr': ['mode'], data : attributesWidget.mode}}]);\n\n // Show need help widget if it's required\n if (attributesWidget.mode == 'widget' && attributesWidget.nh !== null) {\n showNeedHelp(attributesWidget.nh);\n }\n\n // Enable proactive if it's required\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n });\n }\n }\n });\n\n\n // Clear chat cookies if there is any\n // Then popup finishes loading it calls this to clean up chat cookies. So visitor can start new chat.\n attributesWidget.eventEmitter.addListener('endChatCookies', function (params) {\n if (attributesWidget.kcw === false || (params && params['force'] == true)) {\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n attributesWidget.proactive = {};\n }\n });\n\n attributesWidget.eventEmitter.addListener('endChat', function (params) {\n\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.proactive = {};\n\n if (attributesWidget.mode != 'popup' && (!params || !params['show_start'])) {\n attributesWidget.widgetStatus.next(false);\n }\n\n if (attributesWidget.viewHandler) {\n attributesWidget.viewHandler.removeUnreadIndicator();\n attributesWidget.eventEmitter.emitEvent('hide_msg_snippet');\n }\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n\n if (attributesWidget.mode == 'embed' || (params && params['show_start'])) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n }\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.freeup();\n }\n });\n\n // Widget show event\n attributesWidget.eventEmitter.addListener('showWidget', function (params) {\n\n // Just to restyle if needed\n attributesWidget.mainWidget.hideInvitation();\n\n attributesWidget.widgetStatus.next(true);\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.init(attributesWidget, chatEvents, params);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n attributesWidget.mainWidget.hide();\n } else if (typeof params !== 'undefined' && typeof params.event !== 'undefined') {\n params.event.preventDefault();\n }\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n });\n\n // Add tag listener\n attributesWidget.eventEmitter.addListener('addTag', function (tag) {\n attributesWidget.tag = attributesWidget.tag != '' ? attributesWidget.tag + ',' + tag : tag;\n attributesWidget.eventEmitter.emitEvent('tagAdded');\n });\n\n // Events\n attributesWidget.eventEmitter.addListener('addEvent', function (events) {\n attributesWidget.events = events;\n attributesWidget.eventEmitter.emitEvent('eventAdded');\n });\n\n // Popup open event\n attributesWidget.eventEmitter.addListener('openPopup', function () {\n\n attributesWidget.popupWidget.init(attributesWidget, chatEvents);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n\n attributesWidget.widgetStatus.next(false);\n });\n\n // Chat started event received\n // Store chat information if it's not popup mode.\n attributesWidget.eventEmitter.addListener('chatStarted', function (data, mode) {\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n if (mode !== 'popup' || attributesWidget.kcw === true) {\n attributesWidget.userSession.setChatInformation(data, attributesWidget.nh && attributesWidget.nh.ap);\n }\n\n if (mode == 'popup') {\n attributesWidget.mainWidget.hide();\n }\n\n // Store information permanently\n if (attributesWidget.fresh === false && (mode !== 'popup' || attributesWidget.kcw === true)) {\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n }\n });\n\n // Subscribe event\n attributesWidget.eventEmitter.addListener('subscribeEvent', function (data) {\n attributesWidget.chatNotifications.setPublicKey(data.pk, attributesWidget.eventEmitter);\n attributesWidget.chatNotifications.sendNotification();\n });\n\n // User has subscribed to notifications\n // Send back child subscription information\n attributesWidget.eventEmitter.addListener('subcribedEvent', function (data) {\n chatEvents.sendChildEvent('subcribedEvent', [data]);\n });\n\n // Track widget status changes\n attributesWidget.widgetStatus.subscribe((data) => {\n if (attributesWidget.mode !== 'popup') {\n if (attributesWidget.mode !== 'embed') {\n // Do not store open status in local storage because embed is always open\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_ws', data);\n }\n chatEvents.sendChildEvent('widgetStatus', [data]);\n }\n });\n\n // Store sound settings\n attributesWidget.toggleSound.subscribe((data) => {\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_sound', data);\n });\n\n attributesWidget.onlineStatus.subscribe((data) => {\n chatEvents.sendChildEvent('onlineStatus', [data]);\n });\n\n attributesWidget.eventEmitter.addListener('screenshot', (data) => {\n helperFunctions.makeScreenshot(attributesWidget.staticJS['screenshot'], data);\n });\n\n attributesWidget.eventEmitter.addListener('screenshare', (data) => {\n import('./util/screenShare').then((module) => {\n module.screenShare.setParams((data || {}), attributesWidget, chatEvents);\n });\n });\n\n attributesWidget.eventEmitter.addListener('location', (data) => {\n document.location = data;\n });\n\n attributesWidget.eventEmitter.addListener('terminated', (data) => {\n attributesWidget.terminated = true;\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n });\n\n attributesWidget.eventEmitter.addListener('showInvitation', (data) => {\n attributesWidget.widgetDimesions.nextProperty('bottom_override', 75);\n attributesWidget.widgetDimesions.nextProperty('right_override', 75);\n attributesWidget.mainWidget.showInvitation();\n });\n\n attributesWidget.eventEmitter.addListener('hideInvitation', (data) => {\n attributesWidget.mainWidget.hideInvitation();\n if (data.full) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n attributesWidget.eventEmitter.emitEvent('fullInvitation', [data]);\n } else {\n attributesWidget.eventEmitter.emitEvent('cancelInvitation', []);\n }\n });\n\n attributesWidget.eventEmitter.addListener('msgSnippet', (data) => {\n if (attributesWidget.mode == 'widget' && attributesWidget.widgetStatus.value === false) {\n\n if (data.full_widget) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n return;\n }\n\n attributesWidget.position == 'api' && attributesWidget.viewHandler && attributesWidget.viewHandler.show();\n\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n } else {\n attributesWidget.msgSnippet.showSnippet(data, true);\n }\n attributesWidget.eventEmitter.emitEvent('unread_message',[{otm: 1}]);\n });\n }\n });\n\n attributesWidget.eventEmitter.addListener('unread_message', (data) => {\n if (data && data.msg_body && !attributesWidget.msgSnippet) {\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n }\n });\n }\n });\n\n attributesWidget.originalTitle = document.title;\n attributesWidget.blinkInterval = null;\n\n attributesWidget.eventEmitter.addListener('unread_message_title', (data) => {\n clearInterval(attributesWidget.blinkInterval);\n if (data.status == false) {\n attributesWidget.blinkInterval = setInterval(() => {\n document.title = (Math.round(new Date().getTime() / 1000) % 2) ? '💬 ' + attributesWidget.originalTitle : attributesWidget.originalTitle;\n }, 1000);\n } else {\n attributesWidget.focused = true;\n document.title = attributesWidget.originalTitle;\n }\n });\n\n attributesWidget.eventEmitter.addListener('widgetHeight', (data) => {\n\n if (data.reset_height) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n attributesWidget.widgetDimesions.nextProperty('bottom_override', null);\n attributesWidget.widgetDimesions.nextProperty('right_override', null);\n attributesWidget.widgetDimesions.nextProperty('width_override', null);\n return;\n }\n\n if (data.force_height || data.force_width || data.force_bottom || data.force_right) {\n data.force_height && attributesWidget.widgetDimesions.nextProperty('height_override', data.force_height);\n data.force_width && attributesWidget.widgetDimesions.nextProperty('width_override', data.force_width);\n data.force_right && attributesWidget.widgetDimesions.nextProperty('right_override', data.force_right);\n data.force_bottom && attributesWidget.widgetDimesions.nextProperty('bottom_override', data.force_bottom);\n return;\n }\n\n if (attributesWidget.mode == 'widget' && attributesWidget.isMobile == false) {\n var d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n y = global.innerHeight || e.clientHeight || g.clientHeight;\n if (parseInt(data.height) > attributesWidget.widgetDimesions.value['height'] && y > parseInt(data.height)) {\n attributesWidget.widgetDimesions.nextProperty('height_override', parseInt(data.height));\n } else if (attributesWidget.widgetDimesions.value['height_override'] && attributesWidget.widgetDimesions.value['height_override'] > y) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n }\n }\n });\n\n var serviceWorkerAvailable = false;\n try {\n serviceWorkerAvailable = ('serviceWorker' in navigator);\n } catch (e) {\n // Worker not available\n }\n\n if (serviceWorkerAvailable === true) {\n try {\n navigator.serviceWorker.addEventListener('message', function (event) {\n try {\n if (typeof event.data.lhc_ch !== 'undefined' && typeof event.data.lhc_cid !== 'undefined') {\n attributesWidget.widgetStatus.next(true);\n if (attributesWidget.mode == 'popup') {\n attributesWidget.userSession.setChatInformation({\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n });\n attributesWidget.eventEmitter.emitEvent('unread_message');\n } else {\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n chatEvents.sendChildEvent('reopenNotification', [{\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n }]);\n }\n }\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n });\n } catch (e) {\n // Ignore sandbox error\n }\n }\n\n // Listed for post messages\n const handleMessages = (e) => {\n\n if (attributesWidget.terminated === true || typeof e.data !== 'string' || e.data.indexOf(attributesWidget.prefixLowercase + '::')) {\n return;\n }\n\n const parts = e.data.split('::');\n\n if (typeof e.origin !== 'undefined') {\n var originDomain = e.origin.replace(\"http://\", \"\").replace(\"https://\", \"\").replace(/:(\\d+)$/, '');\n\n // We allow to send events only from chat installation or page where script is embeded.\n if (originDomain !== document.domain && attributesWidget.domain_lhc !== originDomain && parts[1] !== 'started' && parts[1] !== 'isstarted') {\n return;\n }\n }\n\n if (parts[1] == 'ready') {\n chatEvents.sendReadyEvent(parts[2] == 'true');\n\n if (attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_screenshare')) {\n attributesWidget.eventEmitter.emitEvent('screenshare', [{'auto_start': true}]);\n }\n\n const focusChangeCb = (e) => {\n const focused = e.type === \"focus\";\n attributesWidget.focused = focused;\n chatEvents.sendChildEvent('focus_changed', [{'status': focused}]);\n };\n\n window.addEventListener('focus', focusChangeCb);\n window.addEventListener('blur', focusChangeCb);\n window.addEventListener('pageshow', focusChangeCb);\n window.addEventListener('pagehide', focusChangeCb);\n\n // App is fully loaded\n lhc.loaded = true;\n\n chatEvents.sendChildEvent('ext_modules', [attributesWidget.staticJS['ex_cb_js']]);\n\n // send child commands if there is any\n attributesWidget.childExtCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n });\n\n // send child commands if there is any\n attributesWidget.childCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n });\n\n if (attributesWidget.react_attr !== null) {\n attributesWidget.react_attr.forEach(item => {\n chatEvents.sendChildEvent('attr_set',[{\n 'type':'attr_set','attr': item['k'],\n data : item['v']\n }]);\n })\n }\n\n } else if (parts[1] == 'ready_popup') {\n attributesWidget.popupWidget.sendParameters(chatEvents);\n } else if (parts[1] == 'isstarted') {\n // Parent window has LHC, terminate present instance\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else if (parts[1] == 'started') {\n if (attributesWidget.hide_parent) {\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else {\n e.source.postMessage('lhc::isstarted','*');\n }\n } else {\n attributesWidget.eventEmitter.emitEvent(parts[1], JSON.parse(parts[2]));\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", handleMessages, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", handleMessages);\n } else if (document.attachEvent) {\n document.attachEvent(\"onmessage\", handleMessages);\n }\n };\n\n var preInit = () => {\n\n // Avoid multiple times execution\n if (lhc.ready === true) {\n return;\n }\n\n // we have found document body so we can continue\n if (document.body) {\n lhc.ready = true;\n }\n\n lhc.init = init;\n\n if (LHC_API.args.before_init) {\n LHC_API.args.before_init(lhc);\n }\n\n LHC_API.args.manual_init || init();\n };\n\n const eventsHandler = require('./util/domEventsHandler').domEventsHandler;\n\n (preInit(), !lhc.ready) || (eventsHandler.listen(document, \"DOMContentLoaded\", function () {\n preInit();\n }, \"domloaded\"),\n eventsHandler.listen(document, \"readystatechange\", function () {\n (\"complete\" === document.readyState || \"interactive\" === document.readyState && document.body) && preInit();\n }, \"domstatechange\"),\n eventsHandler.listen(global, \"load\", function () {\n preInit();\n }, \"windowload\"));\n\n }).call(this, global['$_' + scopeScript], global[scopeScript + '_API']);\n\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n\n})(window);"],"names":["rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","length","shift","asap","task","rawTask","pop","RawTask","this","module","exports","prototype","call","error","onerror","push","queue","requestFlush","index","flush","currentIndex","scan","newLength","toggle","observer","node","scope","g","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","document","createTextNode","observe","characterData","data","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_typeof","obj","Symbol","iterator","constructor","_possibleConstructorReturn","TypeError","ReferenceError","_getPrototypeOf","getPrototypeOf","UIConstructorIframe","subClass","superClass","create","value","writable","configurable","elementId","style","attributes","tagname","documentRef","bodyId","dir","cl","header","elmDomDoc","helperFunctions","elmDom","open","writeln","close","insertCssFile","insertContent","body","innerHTML","tmpl","UIConsturctor","f","tagName","classNames","id","keys","forEach","attr","a","className","join","cssText","c","d","k","e","getElementById","split","domEventsHandler","restyle","reset","getElementsByTagName","createDocumentFragment","type","settings","appendChild","styleSheet","nodeValue","elm","href","createElement","b","rel","crossOrigin","src","async","loadcb","onload","key","setAttribute","hasOwnProperty","chatNotifications","_chatNotifications","isNotificationsSubscribed","applicationServerPublicKey","eventEmitter","publicKey","that","swRegistration","navigator","window","Notification","permission","requestPermission","alert","serviceWorker","register","then","swReg","pushManager","getSubscription","subscription","applicationServerKey","base64String","base64","repeat","replace","rawData","atob","outputArray","Uint8Array","i","charCodeAt","urlB64ToUint8Array","subscribe","getKey","token","contentEncoding","PushManager","supportedContentEncodings","payload","JSON","stringify","endpoint","btoa","String","fromCharCode","apply","authToken","emitEvent","updateSubscriptionOnServer","_helperFunctions","s","contentWindow","contentDocument","EId","EObj","parentNode","removeChild","Intl","DateTimeFormat","resolvedOptions","timeZone","Date","stdTimezoneOffset","jan","getFullYear","jul","Math","max","getTimezoneOffset","dst","today","params","outline","visibility","resize","boxshadow","overflow","background","opacity","top","right","bottom","left","position","border","minheight","minwidth","maxheight","maxwidth","padding","margin","transition","transform","width","height","display","zindex","backgroundcolor","cursor","borderRadius","element","classList","contains","match","RegExp","add","hasClass","remove","screenshot","url","html2canvas","th","onreadystatechange","makeScreenshot","onrendered","canvas","xhr","XMLHttpRequest","setRequestHeader","send","encodeURIComponent","toDataURL","err","item","pairs","request","urlRequest","makeQuery","readyState","status","parse","responseText","message","req","containerChat","prefix","pnode","cont","constructUI","mainWidget","units","originalCSS","bottom_override","isLoaded","loadStatus","main","css","restyleStyle","position_placement","mode","fscreen","massRestyle","wloaded","next","isMobile","constructUIIframe","staticJS","hhtml","cont_ss","lazyLoad","makeContent","getSessionAttributes","bootstrap","toggleVisibilityWrap","toggleVisibility","widgetStatus","monitorDimensionsWrap","monitorDimensions","widgetDimesions","addListener","valueInternal","insertCssRemoteFile","theme","LHC_API","args","lhc_base_url","theme_v","checkLoadStatus","insertJSFile","prefixLowercase","hide","show","width_override","height_override","wbottom","clinst","right_override","wright_inv","wright","mainWidgetPopup","freeup","argumentsQuery","Array","paramsReturn","LHCChatOptions","name","encrypted","size","attr_prefill","attr_prefill_admin","chatEvents","paramsPopup","elementReferrerPopup","closed","event","preventDefault","focus","urlArgumetns","storageHandler","cookieEnabled","toggleSound","setSessionStorage","fontSize","getLocalStorage","parseInt","getSessionReferrer","parseOptions","dualScreenLeft","undefined","screenLeft","screenX","dualScreenTop","screenTop","screenY","innerWidth","documentElement","clientWidth","screen","innerHeight","clientHeight","systemZoom","availWidth","paramsWindow","newWin","needWindow","windowCreated","location","viewHandler","kcw","sendChildEvent","sendParameters","js_vars","js_args","currentVar","eval","var","statusWidget","controlMode","font","widget","shidden","lload","unread_counter","onlineStatus","icon","leaveMessage","sload","placement","sbottom","sright","_inst","attachUserEventListener","offline_redirect","toggleOfflineIcon","chatParams","unreadMessagesNumber","getSessionStorage","unreadTotal","otm","showUnreadIndicator","init","isNaN","now","removeUnreadIndicator","number","iconText","iconValue","innerText","removeSessionStorage","hideOffline","chatEventsHandler","getJSVarsValues","jsVars","prefillOptions","fieldsCustom","prefilOptionsList","command","postMessage","popupWidget","popup","getInitAttributes","sendChildCommand","_domEventsHandler","events","object","dispatch","getEvent","attachEvent","eventName","presentEvent","removeEventHandler","eventListener","addEventListener","listener","removeEventListener","detachEvent","eventInstance","_this","caller","arguments","Event","monitoredVariable","listeners","val","callListeners","indexOf","splice","global","domain","cookiesSupportChecked","checkCookiesSupport","secureCookie","cookiePerPage","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","cookie","coookieName","cookieValue","expireTime","string","setTime","getTime","toGMTString","cookieName","baseCookie","charAt","substring","host","hostname","setItem","removeItem","getItem","ref","sessionInformation","getHTTPCookie","parseSessionInformation","setHTTPCookie","getStoreValue","getCookieDomain","content","contentReturn","parts","unescape","userSession","vid","hnh","hash","updateVarsTimeout","decode","evalJSON","str","$","parseJSON","toJSON","encode","cb","lhc_var","validator","set","prop","updateJSVars","Proxy","console","log","getVars","append","vars","varsJSON","getAppendVariables","alwaysPersistentNeedHelp","round","appleIphone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","regex","userAgent","test","tmp","result","apple","phone","ipod","tablet","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","any","noop","LAST_ERROR","IS_ERROR","Promise","fn","_h","_i","_j","_k","doResolve","handle","deferred","_l","onFulfilled","onRejected","ret","ex","tryCallOne","reject","promise","resolve","handleResolved","newValue","getThen","finale","bind","_m","Handler","done","res","reason","tryCallTwo","_n","safeThen","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","arr","slice","remaining","race","values","finally","denodeify","argumentCount","Infinity","concat","callbackFn","Function","denodeifyWithCount","fnLength","map","_","denodeifyWithoutCount","nodeify","ctx","enableSynchronous","isPending","getState","isFulfilled","isRejected","getValue","Error","getReason","disableSynchronous","EventEmitter","proto","originalGlobalValue","indexOfListener","alias","isValidListener","getListeners","evt","response","_getEvents","flattenListeners","flatListeners","getListenersAsObject","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","defineProperty","_createClass","protoProps","staticProps","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","__esModule","definition","get","chunkId","reduce","promises","u","globalThis","l","script","needAttach","scripts","getAttribute","charset","timeout","nc","origin","onScriptComplete","prev","doneFns","head","r","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","currentScript","scopeScript","lhcError","filename","lineNumber","stack","column","file","line","lineno","colno","lhc","loaded","connected","ready","version","require","BehaviorSubject","default","mobile_view","toLowerCase","prefixStorage","scope_storage","cookieEnabledUser","cookie_enabled","userMode","orig","proactive","check_messages","cookie_per_page","setCookiePerPage","referrer","substr","protocol","setSessionReferer","lang","attributesWidget","terminated","prefixScope","msgSnippet","react_attr","hide_parent","hide_iframe","hide_status","msgsnippet_status","isIE","toUpperCase","assign","fresh","popupDimesnions","pheight","pwidth","leaveamessage","department","dep_default","product","domain_lhc","instance_id","profile_pic","base_url","tag","captcha","focused","identifier","proactive_interval","bot_id","trigger_id","priority","survey","operator","phash","pvhash","nh","init_calls","childCommands","childExtCommands","wwidth","wheight","setAttributes","setSessionInformation","getSessionInformation","setSessionReferrer","containerChatObj","embedWrapper","getArguments","UUID","getVID","getTzOffset","title","showNeedHelp","needhelpWidget","showProactive","proactiveChat","setParams","makeRequest","wv","terminate","chat_ui","isOnline","parent","__webpack_public_path__","chunks_location","secure_cookie","setSecureCookie","setCookieDomain","siteaccess","static","pdim","survey_id","cont_css","wposition","ts","hash_ts","setVID","storeSessionInformation","nextProperty","mobile_popup","sound_enabled","check_status","activityMonitoring","track_mouse","track_activity","ga","analyticEvents","ap","setupVarsMonitoring","ll","extension","nodeJSChat","removeById","po","getHours","getMinutes","insertBefore","sessionAtrribute","setChatInformation","hideInvitation","setPublicKey","pk","sendNotification","screenShare","showInvitation","full","full_widget","showSnippet","msgSnippetWidget","msg_body","originalTitle","blinkInterval","reset_height","force_height","force_width","force_bottom","force_right","y","serviceWorkerAvailable","lhc_ch","lhc_cid","handleMessages","originDomain","sendReadyEvent","focusChangeCb","source","preInit","before_init","manual_init","eventsHandler","listen"],"sourceRoot":""} \ No newline at end of file diff --git a/lhc_web/design/defaulttheme/tpl/lhabstract/custom/widget_theme.tpl.php b/lhc_web/design/defaulttheme/tpl/lhabstract/custom/widget_theme.tpl.php index 760fffcbbb..05b820d867 100644 --- a/lhc_web/design/defaulttheme/tpl/lhabstract/custom/widget_theme.tpl.php +++ b/lhc_web/design/defaulttheme/tpl/lhabstract/custom/widget_theme.tpl.php @@ -31,10 +31,21 @@
-
- - -
+ +
+
+
+ + +
+
+
+
+ + +
+
+
diff --git a/lhc_web/design/defaulttheme/tpl/lhchat/start.tpl.php b/lhc_web/design/defaulttheme/tpl/lhchat/start.tpl.php index 4693e8d86c..31875452c3 100644 --- a/lhc_web/design/defaulttheme/tpl/lhchat/start.tpl.php +++ b/lhc_web/design/defaulttheme/tpl/lhchat/start.tpl.php @@ -19,7 +19,7 @@ 'isMobile' => $isMobile, 'department' => $department, 'captcha' => $captcha, - 'theme' => $theme, + 'theme' => (is_numeric($theme) && $theme > 0 && ($themeObj = erLhAbstractModelWidgetTheme::fetch($theme)) instanceof erLhAbstractModelWidgetTheme ? ($themeObj->alias != '' ? $themeObj->alias : $themeObj->id) : null), 'domain_lhc' => $domain_lhc, 'base_url' => erLhcoreClassDesign::baseurldirect(), 'lang' => erLhcoreClassSystem::instance()->SiteAccess, diff --git a/lhc_web/design/defaulttheme/tpl/lhdepartment/form.tpl.php b/lhc_web/design/defaulttheme/tpl/lhdepartment/form.tpl.php index 291f851176..e9a114931f 100644 --- a/lhc_web/design/defaulttheme/tpl/lhdepartment/form.tpl.php +++ b/lhc_web/design/defaulttheme/tpl/lhdepartment/form.tpl.php @@ -1,6 +1,16 @@ -
- - +
+
+
+ + +
+
+
+
+ + +
+
diff --git a/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js b/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js index 3042f1936f..6ffde551b4 100644 --- a/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js +++ b/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -(function(){var __webpack_modules__={9272:function(t,e,i){"use strict";var n=i(723),s=[],r=[],o=n.makeRequestCallFromTimer((function(){if(r.length)throw r.shift()}));function a(t){var e;(e=s.length?s.pop():new u).task=t,n(e)}function u(){this.task=null}t.exports=a,u.prototype.call=function(){try{this.task.call()}catch(t){a.onerror?a.onerror(t):(r.push(t),o())}finally{this.task=null,s[s.length]=this}}},723:function(t,e,i){"use strict";function n(t){r.length||s(),r[r.length]=t}t.exports=n;var s,r=[],o=0;function a(){for(;o1024){for(var e=0,i=r.length-o;e'+n+""),this.elmDomDoc.close(),this.insertCssFile(t),this.insertContent()}},{key:"insertContent",value:function(){this.elmDomDoc.body.innerHTML=this.tmpl}}]),c}(c.Y)},574:function(t,e,i){"use strict";i.d(e,{Y:function(){return u}});var n=i(5671),s=i(3144),r=i(2137),o=i(7761),a=i(593),u=function(){function t(e,i,s,r,o){(0,n.Z)(this,t);var a=this;this.elementId=e||"",this.style=i||"",this.tagName=r||"div",this.tmpl="",this.elmDom=null,this.elmDomDoc=o||document,this.attributes={},this.classNames=[],this.elementId&&(this.attributes.id=this.elementId),s&&Object.keys(s).forEach((function(t){a.attributes[t]=s[t]}))}return(0,s.Z)(t,[{key:"constructUI",value:function(t){return this.elmDomDoc=t||this.elmDomDoc,this.elmDom=r.a.initElement(this.elmDomDoc,this.tagName,this.attributes,this.style,this.tmpl),this.elmDom.className+=this.classNames.join(" "),this.elmDom}},{key:"restyle",value:function(t,e){e&&(this.elmDom?this.elmDom.style.cssText+=";"+t+":"+e:this.style+=";"+t+":"+e)}},{key:"attachUserEventListener",value:function(t,e,i,n){var s;(s=i?this.getElementById(i):this.elmDom)&&(1<(i=t.split(" ")).length?i.forEach((function(t){a.U.listen(s,t,e,t+n)})):a.U.listen(s,t,e,n))}},{key:"getElementById",value:function(t){return this.elmDom?this.elmDomDoc.getElementById(t):null}},{key:"hide",value:function(){this.restyle("display","none !important")}},{key:"show",value:function(){this.restyle("display","block !important")}},{key:"insertCssFile",value:function(t,e){var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=r.a.initElement(this.elmDomDoc,"style",{type:"text/css"}),a=this.elmDomDoc.createTextNode(e?t:o.X.ResetStyle+""+t);n.appendChild(s),i.appendChild(n),s.styleSheet?s.styleSheet.cssText=a.nodeValue:s.appendChild(a)}},{key:"insertCssRemoteFile",value:function(t){var e=null;if(t.id&&t.href&&null!==(e=this.elmDomDoc.getElementById(t.id)))e.href=t.href;else{var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=this.elmDomDoc.createElement("link");for(var r in s.rel="stylesheet",s.crossOrigin="*",t)s[r]=t[r];n.appendChild(s),i.appendChild(n)}}},{key:"insertJSFile",value:function(t,e,i,n){var s=this.elmDomDoc.getElementsByTagName("head")[0],r=this.elmDomDoc.createDocumentFragment(),o=this.elmDomDoc.createElement("script");o.type="text/javascript",void 0!==e&&!0!==e||(o.async=!0),o.crossOrigin="*",o.src=t,i&&(o.onload=i),n&&Object.keys(n).forEach((function(t){o.setAttribute(t,n[t])})),r.appendChild(o),s.appendChild(r)}},{key:"massRestyle",value:function(t){for(var e in t)t.hasOwnProperty(e)&&this.restyle(e,t[e])}}]),t}()},1660:function(t,e,i){"use strict";i.d(e,{T:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.isNotificationsSubscribed=!1,this.applicationServerPublicKey=null,this.eventEmitter=null}return(0,s.Z)(t,[{key:"setPublicKey",value:function(t,e){this.applicationServerPublicKey=t,this.eventEmitter=e}},{key:"sendNotification",value:function(){var t=this,e=this.applicationServerPublicKey,i=null;if("serviceWorker"in navigator&&"PushManager"in window)if("Notification"in window){if("granted"===Notification.permission);else if("denied"!==Notification.permission)Notification.requestPermission((function(t){"granted"===t||alert("Sorry but you have denied notification!")}));else if("denied"===Notification.permission)return void alert("Sorry but you have denied notification!");t=this,navigator.serviceWorker.register("/sw.lhc.js?v=2").then((function(n){(i=n).pushManager.getSubscription().then((function(n){var s;t.isNotificationsSubscribed=!(null===n),t.isNotificationsSubscribed,s=function(t){for(var e=(t+"=".repeat((4-t.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(e),n=new Uint8Array(i.length),s=0;s
',null===this.cont.constructUIIframe("",this.attributes.staticJS.dir,this.attributes.staticJS.cl,this.attributes.hhtml))return this.isLoaded=!0,null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile lhc-mode-"+this.attributes.mode:"lhc-desktop lhc-mode-"+this.attributes.mode,this.attributes.cont_ss&&(this.originalCSS=this.cont.elmDom.style.cssText,this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"init",value:function(t,e){var i=this;if(this.attributes=t,null===this.makeContent())return null;!this.attributes.userSession.getSessionAttributes().id&&e||this.bootstrap(),this.toggleVisibilityWrap=function(t){i.toggleVisibility(t)},t.widgetStatus.subscribe(this.toggleVisibilityWrap),this.monitorDimensionsWrap=function(t){i.monitorDimensions(t)},t.widgetDimesions.subscribe(this.monitorDimensionsWrap),t.eventEmitter.addListener("reloadWidget",(function(){i.isLoaded=!1,i.makeContent(),t.eventEmitter.emitEvent("widgetHeight",[{reset_height:!0}]),i.toggleVisibility(t.widgetStatus.valueInternal)}))}},{key:"bootstrap",value:function(){var t=this;!0!==this.isLoaded&&(this.isLoaded=!0,this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({rel:"stylesheet",crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.theme>0&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/theme/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0),this.cont.insertCssRemoteFile({onload:function(){t.loadStatus.css=!0,t.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.widget_css},!0),1==this.attributes.isMobile&&"widget"==this.attributes.mode&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.widget_mobile_css}),"embed"==this.attributes.mode&&(this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.embed_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v})),this.cont.insertJSFile(this.attributes.staticJS.vendor,!1,(function(){t.cont.insertJSFile(t.attributes.staticJS.app,!1,(function(){t.loadStatus.main=!0,t.checkLoadStatus()}),{scope:t.attributes.prefixLowercase})}),{scope:this.attributes.prefixLowercase}),this.attributes.staticJS.ex_js&&this.attributes.staticJS.ex_js.length>0&&this.attributes.staticJS.ex_js.forEach((function(e){t.cont.insertJSFile(e,!1)})))}},{key:"toggleVisibility",value:function(t){0==t?this.hide():this.show()}},{key:"monitorDimensions",value:function(t){this.width=t.width_override||t.width,this.height=t.height_override||t.height,this.bottom=t.bottom_override?t.bottom_override+(t.wbottom?t.wbottom:0):30+(!0===this.attributes.clinst?70:0)+(t.wbottom?t.wbottom:0),this.right=t.right_override?t.right_override+(t.wright_inv?t.wright_inv:0):30+(t.wright?t.wright:0),this.units=t.width_override||t.height_override||t.bottom_override||t.right_override?"px":t.units,this.resize(),this.bottom_override=!!t.bottom_override}},{key:"hide",value:function(){this.cont.hide()}},{key:"hideInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"showInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText=this.originalCSS),this.show()}},{key:"show",value:function(){!1===this.isLoaded&&this.bootstrap(),this.cont.show()}}]),t}()},5962:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{f:function(){return mainWidgetPopup}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),mainWidgetPopup=function(){function mainWidgetPopup(){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,mainWidgetPopup),this.attributes={},this.width=null,this.height=null,this.units="px",this.freeup()}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(mainWidgetPopup,[{key:"freeup",value:function(){this.cont={}}},{key:"parseOptions",value:function(){var t=new Array,e="";if(void 0!==this.attributes){if(void 0!==this.attributes.LHCChatOptions.attr&&this.attributes.LHCChatOptions.attr.length>0)for(var i in this.attributes.LHCChatOptions.attr)void 0!==this.attributes.LHCChatOptions.attr[i]&&void 0!==this.attributes.LHCChatOptions.attr[i].type&&t.push("name[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].name)+"&encattr[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].encrypted&&1==this.attributes.LHCChatOptions.attr[i].encrypted?"t":"f")+"&value[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].value)+"&type[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].type)+"&size[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].size)+"&req[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].req&&1==this.attributes.LHCChatOptions.attr[i].req?"t":"f")+"&sh[]="+(void 0===this.attributes.LHCChatOptions.attr[i].show||"on"!=this.attributes.LHCChatOptions.attr[i].show&&"off"!=this.attributes.LHCChatOptions.attr[i].show?"b":this.attributes.LHCChatOptions.attr[i].show));if(void 0!==this.attributes.LHCChatOptions.attr_prefill&&this.attributes.LHCChatOptions.attr_prefill.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill)void 0!==this.attributes.LHCChatOptions.attr_prefill[i]&&void 0!==this.attributes.LHCChatOptions.attr_prefill[i].name&&t.push("prefill["+this.attributes.LHCChatOptions.attr_prefill[i].name+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[i].value));if(void 0!==this.attributes.LHCChatOptions.attr_prefill_admin&&this.attributes.LHCChatOptions.attr_prefill_admin.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill_admin)void 0!==this.attributes.LHCChatOptions.attr_prefill_admin[i]&&t.push("value_items_admin["+this.attributes.LHCChatOptions.attr_prefill_admin[i].index+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[i].value));t.length>0&&(e="&"+t.join("&"))}return e}},{key:"init",value:function(t,e,i){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed)void 0!==i&&"undefined"!==i.event&&i.event.preventDefault(),this.cont.elementReferrerPopup.focus();else{this.attributes=t;var n={static_chat:this.attributes.userSession.getSessionAttributes()},s="";n.static_chat.id&&n.static_chat.hash&&(s=s+"/(id)/"+n.static_chat.id+"/(hash)/"+n.static_chat.hash),null!==this.attributes.theme&&(s=s+"/(theme)/"+this.attributes.theme),null!==n.static_chat.vid&&!0===this.attributes.storageHandler.cookieEnabled&&(s=s+"/(vid)/"+n.static_chat.vid),this.attributes.isMobile&&(s+="/(mobile)/true"),this.attributes.department.length>0&&(s=s+"/(department)/"+this.attributes.department.join("/")),""!=this.attributes.identifier&&(s=s+"/(identifier)/"+this.attributes.identifier),this.attributes.operator&&(s=s+"/(operator)/"+this.attributes.operator),this.attributes.survey&&(s=s+"/(survey)/"+this.attributes.survey),this.attributes.bot_id&&(s=s+"/(bot)/"+this.attributes.bot_id),this.attributes.trigger_id&&(s=s+"/(trigger)/"+this.attributes.trigger_id),this.attributes.priority&&(s=s+"/(priority)/"+this.attributes.priority),"lhc"!=this.attributes.prefixLowercase&&(s=s+"/(scope)/"+this.attributes.prefixLowercase),s=s+"/(sound)/"+(1==this.attributes.toggleSound.value?1:0),this.attributes.proactive.invitation&&(s=s+"/(inv)/"+this.attributes.proactive.invitation,"popup"==this.attributes.mode&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_invt",1));var r=this.attributes.storageHandler.getLocalStorage(this.attributes.prefixStorage+"_dfs");r&&(s=s+"/(fs)/"+parseInt(r)),!0===this.attributes.leaveMessage&&(s+="/(leaveamessage)/true"),s=null!==this.attributes.userSession.getSessionReferrer()&&""!=this.attributes.userSession.getSessionReferrer()?s+"?ses_ref="+this.attributes.userSession.getSessionReferrer()+this.parseOptions():s+"?"+this.parseOptions();var o=void 0!==window.screenLeft?window.screenLeft:window.screenX,a=void 0!==window.screenTop?window.screenTop:window.screenY,u=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,c=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,h=u/window.screen.availWidth,l=(u-parseInt(this.attributes.popupDimesnions.pwidth))/2/h+o,d=(c-parseInt(this.attributes.popupDimesnions.pheight))/2/h+a,p="scrollbars=yes,menubar=1,resizable=1,width="+this.attributes.popupDimesnions.pwidth+",height="+this.attributes.popupDimesnions.pheight+",top="+d+",left="+l,m=window.open("",this.attributes.prefixStorage+"_popup_v2",p),_=!1,f=!1;try{!m||m.closed||void 0===m.closed||"about:blank"===m.location.href?(m=this.cont.elementReferrerPopup=window.open(this.attributes.base_url+this.attributes.lang+"chat/start"+s,this.attributes.prefixStorage+"_popup_v2",p),f=!0):_=!0}catch(t){_=!0}if(!m||m.closed||void 0===m.closed)try{this.attributes.viewHandler.cont.getElementById("status-icon").href=this.attributes.base_url+this.attributes.lang+"chat/start"+s}catch(t){alert("You have disabled popups!")}else 1==f?(void 0!==e&&!1===this.attributes.kcw&&e.sendChildEvent("endedChat",[{sender:"endButton"}]),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault()):!0===_&&(this.cont.elementReferrerPopup=m,m.focus(),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault())}}},{key:"sendParameters",value:function sendParameters(chatEvents){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed){var js_vars=this.attributes.jsVars.value,js_args={},currentVar=null;for(var index in js_vars)try{currentVar=eval(js_vars[index].var),null!=currentVar&&""!==currentVar&&(js_args[js_vars[index].id]=currentVar)}catch(t){}chatEvents.sendChildEvent("jsVars",[js_args])}}}]),mainWidgetPopup}()},3678:function(t,e,i){"use strict";i.d(e,{T:function(){return a}});var n=i(5671),s=i(3144),r=(i(7761),i(3908)),o=i(2137),a=function(){function t(e){(0,n.Z)(this,t),this.attributes={},this.controlMode=!1,this.cont=new r.a((e||"lhc")+"_status_widget_v2",o.a.getAbstractStyle({zindex:"2147483640",width:"95px",height:"95px",position:"fixed",display:"none",maxheight:"95px",maxwidth:"95px",minheight:"95px",minwidth:"95px"}),null,"iframe"),this.loadStatus={main:!1,theme:!1,font:!0,widget:!1,shidden:!1},this.lload=!1,this.unread_counter=0}return(0,s.Z)(t,[{key:"toggleOfflineIcon",value:function(t){var e=this.cont.getElementById("status-icon");t?(this.attributes.leaveMessage||this.show(),o.a.removeClass(e,"offline-status")):this.attributes.leaveMessage?o.a.addClass(e,"offline-status"):this.hide()}},{key:"checkLoadStatus",value:function(){1==this.loadStatus.theme&&1==this.loadStatus.main&&1==this.loadStatus.font&&1==this.loadStatus.widget&&0==this.loadStatus.shidden&&(this.cont.getElementById("lhc_status_container").style.display="",this.attributes.sload.next(!0))}},{key:"init",value:function(t,e){var i=this;this.attributes=t;var n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",right:10+this.attributes.widgetDimesions.value.sright+"px"};if("bottom_left"==t.position_placement||"full_height_left"==t.position_placement?n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",left:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_right"==t.position_placement?n={bottom:"calc(50% - 45px)",right:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_left"==t.position_placement&&(n={bottom:"calc(50% - 45px)",left:10+this.attributes.widgetDimesions.value.sright+"px"}),this.cont.massRestyle(n),this.cont.tmpl='',null===this.cont.constructUIIframe(""))return null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile":"lhc-desktop";var s=this;this.lload=!!e,!0===this.lload?this.loadStatus.widget=!0:t.wloaded.subscribe((function(t){t&&(i.loadStatus.widget=!0,i.checkLoadStatus())})),t.shidden.subscribe((function(t){t?i.attributes.userSession.getSessionAttributes().id||1==i.attributes.widgetStatus.value||(i.loadStatus.shidden=!0,i.hide()):(i.loadStatus.shidden=!1,i.checkLoadStatus(),i.show())})),this.cont.attachUserEventListener("click",(function(e){!1===t.onlineStatus.value&&t.eventEmitter.emitEvent("offlineClickAction"),!1===t.onlineStatus.value&&null!==t.offline_redirect?(document.location=t.offline_redirect,e.preventDefault()):1==s.controlMode?(t.eventEmitter.emitEvent("closeWidget",[{sender:"closeButton"}]),e.preventDefault()):(t.eventEmitter.emitEvent("showWidget",[{event:e}]),t.eventEmitter.emitEvent("clickAction"))}),"lhc_status_container","minifiedclick"),this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.staticJS.font_status&&this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.font=!0,i.checkLoadStatus()},as:"font",rel:"preload",type:"font/woff",crossOrigin:"anonymous",href:this.attributes.staticJS.font_status}),this.attributes.theme>0?(this.loadStatus.theme=!1,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.theme=!0,i.checkLoadStatus()},id:"lhc-theme-status",crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0)):this.loadStatus.theme=!0,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.main=!0,i.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.status_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v}),t.onlineStatus.subscribe((function(t){return i.toggleOfflineIcon(t)})),t.widgetStatus.subscribe((function(t){if("popup"!==i.attributes.mode){var e=i.attributes.userSession.getSessionAttributes();1==t||!i.attributes.leaveMessage&&0==i.attributes.onlineStatus.value&&!e.id?i.hide():i.show()}})),"popup"===this.attributes.mode&&this.show();var r=t.storageHandler.getSessionStorage(this.attributes.prefixStorage+"_unr");t.eventEmitter.addListener("unread_message",(function(t){var e=t&&t.otm;e&&(e=parseInt(e),e+=i.unread_counter),i.attributes.unread_counter.next(e),i.showUnreadIndicator(e)})),null!==r&&(t.eventEmitter.emitEvent("unread_message",[{otm:r,init:!0}]),null===r||isNaN(r)||(this.unread_counter=parseInt(r))),t.eventEmitter.addListener("reloadWidget",(function(){i.attributes.theme>0&&i.cont.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-status",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+i.attributes.theme+"?v="+Date.now()},!0),o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+i.attributes.theme+"?v="+Date.now()})}))}},{key:"hide",value:function(){if(this.removeUnreadIndicator(),!0===this.attributes.clinst&&0==this.attributes.isMobile){var t=this.attributes.userSession.getSessionAttributes();if((1==this.attributes.leaveMessage||1==this.attributes.onlineStatus.value||t.id)&&(("api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&(t.id&&t.hash||1==this.attributes.widgetStatus.value))&&(!0!==this.attributes.hide_status||t.id&&t.hash)&&this.cont.show(),!0!==this.attributes.hide_status||t.id&&t.hash||1==this.attributes.widgetStatus.value)){if(1==this.attributes.widgetStatus.value){this.controlMode=!0;var e=this.cont.getElementById("status-icon");o.a.addClass(e,"close-status")}return}}this.cont.hide()}},{key:"showUnreadIndicator",value:function(t){var e=t||"!",i=this.cont.getElementById("lhc_status_container");o.a.addClass(i,"has-uread-message");var n=this.cont.getElementById("unread-msg-number");n&&(n.innerText=e),this.attributes.storageHandler&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_unr",e)}},{key:"removeUnreadIndicator",value:function(){var t=this.cont.getElementById("lhc_status_container");o.a.removeClass(t,"has-uread-message"),this.attributes.storageHandler&&this.attributes.storageHandler.removeSessionStorage(this.attributes.prefixStorage+"_unr"),this.attributes.eventEmitter.emitEvent("remove_unread_indicator",[]),this.attributes.unread_counter.next(0),this.unread_counter=0}},{key:"show",value:function(){if(!1===this.attributes.hideOffline){var t=this.attributes.userSession.getSessionAttributes();if(!0===this.attributes.clinst&&0==this.attributes.isMobile&&1!=this.attributes.widgetStatus.value){var e=this.cont.getElementById("status-icon");o.a.removeClass(e,"close-status"),this.controlMode=!1}"api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&t.id&&t.hash?this.cont.show():!0===this.attributes.clinst&&1!=this.attributes.widgetStatus.value&&this.cont.hide()}else this.cont.hide()}}]),t}()},6349:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Z:function(){return chatEventsHandler}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),chatEventsHandler=function(){function chatEventsHandler(t){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,chatEventsHandler),this.attributes=t}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(chatEventsHandler,[{key:"getJSVarsValues",value:function getJSVarsValues(jsVars){var js_args={};if(jsVars.length>0){var currentVar=null;for(var index in jsVars)try{currentVar=eval("window."+jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[jsVars[index].id]=currentVar)}catch(t){}return js_args}return js_args}},{key:"getInitAttributes",value:function(){var t={onlineStatus:this.attributes.onlineStatus.value,toggleSound:this.attributes.toggleSound.value,widgetStatus:this.attributes.widgetStatus.value,jsVars:this.getJSVarsValues(this.attributes.jsVars.value),isMobile:this.attributes.isMobile,department:this.attributes.department,product:this.attributes.product,theme:this.attributes.theme,base_url:this.attributes.base_url,mode:this.attributes.mode,captcha:this.attributes.captcha,staticJS:this.attributes.staticJS,static_chat:this.attributes.userSession.getSessionAttributes(),domain_lhc:this.attributes.domain_lhc,leave_message:this.attributes.leaveMessage,scope_prefix:this.attributes.prefixLowercase};if(1==this.attributes.fresh&&(t.static_chat.id&&delete t.static_chat.id,t.static_chat.hash&&delete t.static_chat.hash),""!=this.attributes.bot_id&&(t.bot_id=this.attributes.bot_id),""!=this.attributes.trigger_id&&(t.trigger_id=this.attributes.trigger_id),""!=this.attributes.priority&&(t.priority=this.attributes.priority),null!==this.attributes.phash&&(t.phash=this.attributes.phash),null!==this.attributes.survey&&(t.survey=this.attributes.survey),null!==this.attributes.pvhash&&(t.pvhash=this.attributes.pvhash),null!==this.attributes.operator&&(t.operator=this.attributes.operator),null!==this.attributes.profile_pic&&(t.profile_pic=this.attributes.profile_pic),""!=this.attributes.lang&&(t.lang=this.attributes.lang),this.attributes.proactive.invitation&&(t.proactive=this.attributes.proactive),null!==this.attributes.dep_default&&(t.dep_default=this.attributes.dep_default),this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr){var e=this.attributes.LHCChatOptions.attr,i=[];e.forEach((function(t,e){i.push({show:void 0===t.show||"on"!=t.show&&"off"!=t.show?"b":t.show,value:t.value,index:e,name:t.name,class:"form-control form-control-sm",type:t.type,identifier:"additional_"+e,placeholder:"",width:t.size||6,encrypted:t.encrypted||!1,required:t.req||!1,label:t.name})})),t.CUSTOM_FIELDS=i}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill){e=this.attributes.LHCChatOptions.attr_prefill;var n=[];e.forEach((function(t){"email"==t.name?n.push({Email:t.value}):"username"==t.name?n.push({Username:t.value}):"phone"==t.name?n.push({Phone:t.value}):"question"==t.name&&n.push({Question:t.value})})),t.attr_prefill=n}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill_admin){e=this.attributes.LHCChatOptions.attr_prefill_admin;var s=[];e.forEach((function(t){s.push({value:t.value,index:t.index})})),t.attr_prefill_admin=s}return null!==this.attributes.userSession.getSessionReferrer()&&(t.ses_ref=this.attributes.userSession.getSessionReferrer()),t}},{key:"sendChildCommand",value:function(t){this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(t,"/"),this.attributes.popupWidget.cont.elementReferrerPopup&&!1===this.attributes.popupWidget.cont.elementReferrerPopup.closed&&this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(t,"*")}},{key:"sendReadyEvent",value:function(t){var e=this.getInitAttributes();!0!==t&&this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage("lhc_init:"+JSON.stringify(e),"/")}},{key:"sendChildEvent",value:function(t,e,i){void 0===i&&(i="lhc_event"),this.sendChildCommand(i+":"+t+"::"+JSON.stringify(e))}}]),chatEventsHandler}()},593:function(t,e,i){"use strict";i.d(e,{U:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.events={}}return(0,s.Z)(t,[{key:"attachEvent",value:function(t,e,i){var n=this,s=function(e){i.call(t,n.getEvent(e))};return t.attachEvent("on"+e,s),s}},{key:"unlisten",value:function(t){var e;this.events[t]&&(e=this.events[t],this.events[t]=null,this.removeEventHandler(e.element,e.eventName,e.eventListener))}},{key:"listen",value:function(t,e,i,n){var s;if(n){if(this.events[n]&&(s=this.events[n],this.events[n]=null,this.removeEventHandler(s.element,s.eventName,s.eventListener)),t.addEventListener)t.addEventListener(e,i,!1);else{if(!document.attachEvent)return null;i=this.attachEvent(t,e,i)}return this.events[n]={element:t,eventName:e,eventListener:i},i}}},{key:"removeEventHandler",value:function(t,e,i){document.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent("on"+e,i)}},{key:"getEvent",value:function(t){var e=t||_this.event;if(!e)for(t=this.getEvent.caller;t&&(!(e=t.arguments[0])||Event!=e.constructor);)t=t.caller;return e}}]),t}())},6419:function(t,e,i){"use strict";i.d(e,{h:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i){(0,n.Z)(this,t),this.valueInternal=e,this.listeners=[],this.params=i||{}}return(0,s.Z)(t,[{key:"value",get:function(){return this.valueInternal},set:function(t){this.next(t)}},{key:"next",value:function(t){this.valueInternal=t,this.callListeners()}},{key:"nextProperty",value:function(t,e){this.valueInternal[t]=e,this.callListeners()}},{key:"callListeners",value:function(){var t=this;this.listeners.forEach((function(e){e&&"function"==typeof e&&e(t.valueInternal)}))}},{key:"unsubscribe",value:function(t){-1!==this.listeners.indexOf(t)&&this.listeners.splice(this.listeners.indexOf(t),1)}},{key:"subscribe",value:function(t){this.listeners.push(t),this.params.ignore_sub||t(this.valueInternal)}}]),t}()},5545:function(t,e,i){"use strict";i.d(e,{Q:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i,s,r){(0,n.Z)(this,t),this.window=e,this.cookieEnabled=!1,this.cookiesSupportChecked=!1,1==r&&this.checkCookiesSupport(),this.domain=i,this.secureCookie=!1,this.cookiePerPage=!1,this.prefix=s||"lhc"}return(0,s.Z)(t,[{key:"checkCookiesSupport",value:function(){if(!0===this.cookiesSupportChecked)return this.cookieEnabled;this.cookiesSupportChecked=!0;try{this.hasSessionStorage=!!this.window.sessionStorage}catch(t){this.hasSessionStorage=!1}try{this.hasLocalStorage=!!this.window.localStorage}catch(t){this.hasLocalStorage=!1}try{document.cookie="cookietest=1",this.cookieEnabled=-1!==document.cookie.indexOf("cookietest="),document.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"}catch(t){}return this.cookieEnabled}},{key:"setCookieDomain",value:function(t){this.domain=t}},{key:"setCookiePerPage",value:function(t){this.cookiePerPage=t}},{key:"getCookieDomain",value:function(){return this.domain?"."+this.domain:null}},{key:"setSecureCookie",value:function(t){this.secureCookie=t}},{key:"setHTTPCookie",value:function(t,e,i,n){if(!1!==this.cookieEnabled){var s="";i||((i=new Date).setTime(i.getTime()+15552e6),s="; expires="+i.toGMTString()),document.cookie=t+"="+e+s+(!1===this.cookiePerPage?"; path=/":!0===this.cookiePerPage?"":"; path="+this.cookiePerPage)+(this.secureCookie?";secure":"")+(n?";domain="+n:"")+";SameSite=Lax"}}},{key:"getHTTPCookie",value:function(t){if(!1===this.cookieEnabled)return[];var e,i,n=[],s=t+"=",r=document.cookie.split(";");for(t=0,e=r.length;t0){var js_args={},currentVar=null;for(var index in this.jsVars)try{currentVar=-1!==this.jsVars[index].var.indexOf("lhc_var.")?this.attributes.lhc_var[this.jsVars[index].var.replace("lhc_var.","")]||null:eval(this.jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[this.jsVars[index].id]=currentVar)}catch(t){}return js_args}return null}},{key:"getAppendVariables",value:function(){var t="";return null!==this.vid&&(t=t+"/(vid)/"+this.vid),null!==this.hash&&null!==this.id&&(t=t+"/(hash)/"+this.id+"_"+this.hash),t}},{key:"updateJSVars",value:function(t,e){var i=this.getVars(t),n=new XMLHttpRequest;n.open("POST",this.attributes.LHC_API.args.lhc_base_url+"/chat/updatejsvars"+this.getAppendVariables(),!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.send("data="+encodeURIComponent(this.JSON.stringify(i))),void 0!==e&&null===this.hash&&null===this.id&&e(i)}},{key:"setChatInformation",value:function(t,e){this.id=t.id,this.hash=t.hash,null===this.id||e||(this.hnh=Math.round(Date.now()/1e3))}}]),userSession}()},891:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return v}});const n=/iPhone/i,s=/iPod/i,r=/iPad/i,o=/\bAndroid(?:.+)Mobile\b/i,a=/Android/i,u=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,c=/Silk/i,h=/Windows Phone/i,l=/\bWindows(?:.+)ARM\b/i,d=/BlackBerry/i,p=/BB10/i,m=/Opera Mini/i,_=/\b(CriOS|Chrome)(?:.+)Mobile/i,f=/Mobile(?:.+)Firefox\b/i;function g(t,e){return t.test(e)}function v(t){let e=(t=t||("undefined"!=typeof navigator?navigator.userAgent:"")).split("[FBAN");void 0!==e[1]&&(t=e[0]),e=t.split("Twitter"),void 0!==e[1]&&(t=e[0]);const i={apple:{phone:g(n,t)&&!g(h,t),ipod:g(s,t),tablet:!g(n,t)&&g(r,t)&&!g(h,t),device:(g(n,t)||g(s,t)||g(r,t))&&!g(h,t)},amazon:{phone:g(u,t),tablet:!g(u,t)&&g(c,t),device:g(u,t)||g(c,t)},android:{phone:!g(h,t)&&g(u,t)||!g(h,t)&&g(o,t),tablet:!g(h,t)&&!g(u,t)&&!g(o,t)&&(g(c,t)||g(a,t)),device:!g(h,t)&&(g(u,t)||g(c,t)||g(o,t)||g(a,t))||g(/\bokhttp\b/i,t)},windows:{phone:g(h,t),tablet:g(l,t),device:g(h,t)||g(l,t)},other:{blackberry:g(d,t),blackberry10:g(p,t),opera:g(m,t),firefox:g(f,t),chrome:g(_,t),device:g(d,t)||g(p,t)||g(m,t)||g(f,t)||g(_,t)},any:!1,phone:!1,tablet:!1};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}},8259:function(t,e,i){"use strict";t.exports=i(2159)},3434:function(t,e,i){"use strict";var n=i(723);function s(){}var r=null,o={};function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("Promise constructor's argument is not a function");this._h=0,this._i=0,this._j=null,this._k=null,t!==s&&p(t,this)}function u(t,e){for(;3===t._i;)t=t._j;if(a._l&&a._l(t),0===t._i)return 0===t._h?(t._h=1,void(t._k=e)):1===t._h?(t._h=2,void(t._k=[t._k,e])):void t._k.push(e);!function(t,e){n((function(){var i=1===t._i?e.onFulfilled:e.onRejected;if(null!==i){var n=function(t,e){try{return t(e)}catch(t){return r=t,o}}(i,t._j);n===o?h(e.promise,r):c(e.promise,n)}else 1===t._i?c(e.promise,t._j):h(e.promise,t._j)}))}(t,e)}function c(t,e){if(e===t)return h(t,new TypeError("A promise cannot be resolved with itself."));if(e&&("object"==typeof e||"function"==typeof e)){var i=function(t){try{return t.then}catch(t){return r=t,o}}(e);if(i===o)return h(t,r);if(i===t.then&&e instanceof a)return t._i=3,t._j=e,void l(t);if("function"==typeof i)return void p(i.bind(e),t)}t._i=1,t._j=e,l(t)}function h(t,e){t._i=2,t._j=e,a._m&&a._m(t,e),l(t)}function l(t){if(1===t._h&&(u(t,t._k),t._k=null),2===t._h){for(var e=0;e "+e+") {","args = new Array(arguments.length + 1);","for (var i = 0; i < arguments.length; i++) {","args[i] = arguments[i];","}","}","return new Promise(function (rs, rj) {","var cb = "+r+";","var res;","switch (argLength) {",i.concat(["extra"]).map((function(t,e){return"case "+e+":res = fn.call("+["self"].concat(i.slice(0,e)).concat("cb").join(",")+");break;"})).join(""),"default:","args[argLength] = cb;","res = fn.apply(self, args);","}","if (res &&",'(typeof res === "object" || typeof res === "function") &&','typeof res.then === "function"',") {rs(res);}","});","};"].join("");return Function(["Promise","fn"],o)(n,t)}(t)};var r="function (err, res) {if (err) { rj(err); } else { rs(res); }}";n.nodeify=function(t){return function(){var e=Array.prototype.slice.call(arguments),i="function"==typeof e[e.length-1]?e.pop():null,r=this;try{return t.apply(this,arguments).nodeify(i,r)}catch(t){if(null==i)return new n((function(e,i){i(t)}));s((function(){i.call(r,t)}))}}},n.prototype.nodeify=function(t,e){if("function"!=typeof t)return this;this.then((function(i){s((function(){t.call(e,null,i)}))}),(function(i){s((function(){t.call(e,i)}))}))}},3690:function(t,e,i){"use strict";var n=i(3434);t.exports=n,n.enableSynchronous=function(){n.prototype.isPending=function(){return 0==this.getState()},n.prototype.isFulfilled=function(){return 1==this.getState()},n.prototype.isRejected=function(){return 2==this.getState()},n.prototype.getValue=function(){if(3===this._i)return this._j.getValue();if(!this.isFulfilled())throw new Error("Cannot get a value of an unfulfilled promise.");return this._j},n.prototype.getReason=function(){if(3===this._i)return this._j.getReason();if(!this.isRejected())throw new Error("Cannot get a rejection reason of a non-rejected promise.");return this._j},n.prototype.getState=function(){return 3===this._i?this._j.getState():-1===this._i||-2===this._i?0:this._i}},n.disableSynchronous=function(){n.prototype.isPending=void 0,n.prototype.isFulfilled=void 0,n.prototype.isRejected=void 0,n.prototype.getValue=void 0,n.prototype.getReason=void 0,n.prototype.getState=void 0}},4795:function(t,e,i){var n;!function(e){"use strict";function s(){}var r=s.prototype,o=e.EventEmitter;function a(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function u(t){return function(){return this[t].apply(this,arguments)}}function c(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&c(t.listener)}r.getListeners=function(t){var e,i,n=this._getEvents();if(t instanceof RegExp)for(i in e={},n)n.hasOwnProperty(i)&&t.test(i)&&(e[i]=n[i]);else e=n[t]||(n[t]=[]);return e},r.flattenListeners=function(t){var e,i=[];for(e=0;e0&&C.userSession.setupVarsMonitoring(t.js_vars,(function(t){E.sendChildEvent("jsVars",[t])}))),"widget"!=C.mode&&"popup"!=C.mode||C.viewHandler.init(C,t.ll),"api"==C.position&&"embed"==C.mode||C.mainWidget.init(C,t.ll),"widget"!=C.mode&&"popup"!=C.mode||x.cont.show(),C.loadcb&&C.loadcb(C),t.init_calls&&(C.init_calls=t.init_calls),C.proactive_interval=t.chat_ui.proactive_interval,"widget"!=C.mode&&"popup"!=C.mode&&"embed"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I(),C.init_calls.length>0&&C.init_calls.forEach((function(t){"nodeJSChat"==t.extension&&Promise.all([__webpack_require__.e(572),__webpack_require__.e(417)]).then(__webpack_require__.bind(__webpack_require__,9417)).then((function(e){e.nodeJSChat.setParams(t.params,C,E)}))})));else{if(t.terminate)return;C.userSession.setVID(t.vid),C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2");var n=document.createElement("script");n.type=i.type,n.id=C.prefixLowercase+"-js-reload",n.async=!0,i.getAttribute("scope")&&n.setAttribute("scope",i.getAttribute("scope")),n.src=i.getAttribute("src")+"&r="+(new Date).getHours()+(new Date).getMinutes();var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(n,s)}})),C.eventEmitter.addListener("closeWidget",(function(){C.widgetStatus.next(!1),E.sendChildEvent("closedWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("sendChildEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg]):C.childCommands.push(t)})),C.eventEmitter.addListener("sendChildExtEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext"):C.childExtCommands.push(t)})),C.eventEmitter.addListener("toggleSound",(function(){var t=!C.toggleSound.value;C.toggleSound.next(t)})),C.eventEmitter.addListener("enableCookies",(function(){if(!0===m.checkCookiesSupport()){var t=C.userSession.getSessionAttributes();void 0!==t.hnh&&delete t.hnh,C.storageHandler.storeSessionInformation(t),void 0!==r.args.orig&&(C.mode=r.args.mode=r.args.orig.mode,r.args.proactive=r.args.orig.proactive,r.args.check_messages=r.args.orig.check_messages,d.makeRequest(r.args.lhc_base_url+C.lang+"widgetrestapi/settings",{params:D()},(function(t){C.eventEmitter.emitEvent("sendChildEvent",[{cmd:"attr_set",arg:{type:"attr_set",attr:["mode"],data:C.mode}}]),"widget"==C.mode&&null!==C.nh&&O(C.nh),"widget"!=C.mode&&"popup"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I()})))}})),C.eventEmitter.addListener("endChatCookies",(function(t){(!1===C.kcw||t&&1==t.force)&&(C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={})})),C.eventEmitter.addListener("endChat",(function(t){C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={},"popup"==C.mode||t&&t.show_start||C.widgetStatus.next(!1),C.viewHandler&&(C.viewHandler.removeUnreadIndicator(),C.eventEmitter.emitEvent("hide_msg_snippet")),C.widgetDimesions.nextProperty("height_override",null),E.sendChildEvent("endedChat",[{sender:"endButton"}]),("embed"==C.mode||t&&t.show_start)&&C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),"popup"==C.mode&&C.popupWidget.freeup()})),C.eventEmitter.addListener("showWidget",(function(t){C.mainWidget.hideInvitation(),C.widgetStatus.next(!0),"popup"==C.mode?(C.popupWidget.init(C,E,t),C.viewHandler.removeUnreadIndicator(),C.mainWidget.hide()):void 0!==t&&void 0!==t.event&&t.event.preventDefault(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("addTag",(function(t){C.tag=""!=C.tag?C.tag+","+t:t,C.eventEmitter.emitEvent("tagAdded")})),C.eventEmitter.addListener("addEvent",(function(t){C.events=t,C.eventEmitter.emitEvent("eventAdded")})),C.eventEmitter.addListener("openPopup",(function(){C.popupWidget.init(C,E),C.viewHandler.removeUnreadIndicator(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),C.widgetStatus.next(!1)})),C.eventEmitter.addListener("chatStarted",(function(t,e){C.widgetDimesions.nextProperty("height_override",null),"popup"===e&&!0!==C.kcw||C.userSession.setChatInformation(t,C.nh&&C.nh.ap),"popup"==e&&C.mainWidget.hide(),!1!==C.fresh||"popup"===e&&!0!==C.kcw||C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes())})),C.eventEmitter.addListener("subscribeEvent",(function(t){C.chatNotifications.setPublicKey(t.pk,C.eventEmitter),C.chatNotifications.sendNotification()})),C.eventEmitter.addListener("subcribedEvent",(function(t){E.sendChildEvent("subcribedEvent",[t])})),C.widgetStatus.subscribe((function(t){"popup"!==C.mode&&("embed"!==C.mode&&C.storageHandler.setSessionStorage(b+"_ws",t),E.sendChildEvent("widgetStatus",[t]))})),C.toggleSound.subscribe((function(t){C.storageHandler.setSessionStorage(b+"_sound",t)})),C.onlineStatus.subscribe((function(t){E.sendChildEvent("onlineStatus",[t])})),C.eventEmitter.addListener("screenshot",(function(t){d.makeScreenshot(C.staticJS.screenshot,t)})),C.eventEmitter.addListener("screenshare",(function(t){__webpack_require__.e(398).then(__webpack_require__.bind(__webpack_require__,7398)).then((function(e){e.screenShare.setParams(t||{},C,E)}))})),C.eventEmitter.addListener("location",(function(t){document.location=t})),C.eventEmitter.addListener("terminated",(function(t){C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2")})),C.eventEmitter.addListener("showInvitation",(function(t){C.widgetDimesions.nextProperty("bottom_override",75),C.widgetDimesions.nextProperty("right_override",75),C.mainWidget.showInvitation()})),C.eventEmitter.addListener("hideInvitation",(function(t){C.mainWidget.hideInvitation(),t.full?(C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),C.eventEmitter.emitEvent("fullInvitation",[t])):C.eventEmitter.emitEvent("cancelInvitation",[])})),C.eventEmitter.addListener("msgSnippet",(function(t){if("widget"==C.mode&&!1===C.widgetStatus.value){if(t.full_widget)return void C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]);"api"==C.position&&C.viewHandler&&C.viewHandler.show(),__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet?C.msgSnippet.showSnippet(t,!0):(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t)),C.eventEmitter.emitEvent("unread_message",[{otm:1}])}))}})),C.eventEmitter.addListener("unread_message",(function(t){t&&t.msg_body&&!C.msgSnippet&&__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet||(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t))}))})),C.originalTitle=document.title,C.blinkInterval=null,C.eventEmitter.addListener("unread_message_title",(function(t){clearInterval(C.blinkInterval),0==t.status?C.blinkInterval=setInterval((function(){document.title=Math.round((new Date).getTime()/1e3)%2?"💬 "+C.originalTitle:C.originalTitle}),1e3):(C.focused=!0,document.title=C.originalTitle)})),C.eventEmitter.addListener("widgetHeight",(function(e){if(e.reset_height)return C.widgetDimesions.nextProperty("height_override",null),C.widgetDimesions.nextProperty("bottom_override",null),C.widgetDimesions.nextProperty("right_override",null),void C.widgetDimesions.nextProperty("width_override",null);if(e.force_height||e.force_width||e.force_bottom||e.force_right)return e.force_height&&C.widgetDimesions.nextProperty("height_override",e.force_height),e.force_width&&C.widgetDimesions.nextProperty("width_override",e.force_width),e.force_right&&C.widgetDimesions.nextProperty("right_override",e.force_right),void(e.force_bottom&&C.widgetDimesions.nextProperty("bottom_override",e.force_bottom));if("widget"==C.mode&&0==C.isMobile){var i=document,n=i.documentElement,s=i.getElementsByTagName("body")[0],r=t.innerHeight||n.clientHeight||s.clientHeight;parseInt(e.height)>C.widgetDimesions.value.height&&r>parseInt(e.height)?C.widgetDimesions.nextProperty("height_override",parseInt(e.height)):C.widgetDimesions.value.height_override&&C.widgetDimesions.value.height_override>r&&C.widgetDimesions.nextProperty("height_override",null)}}));var P=!1;try{P="serviceWorker"in navigator}catch(t){}if(!0===P)try{navigator.serviceWorker.addEventListener("message",(function(t){try{void 0!==t.data.lhc_ch&&void 0!==t.data.lhc_cid&&(C.widgetStatus.next(!0),"popup"==C.mode?(C.userSession.setChatInformation({id:t.data.lhc_cid,hash:t.data.lhc_ch}),C.eventEmitter.emitEvent("unread_message")):(E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),E.sendChildEvent("reopenNotification",[{id:t.data.lhc_cid,hash:t.data.lhc_ch}])))}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}))}catch(t){}var j=function(t){if(!0!==C.terminated&&"string"==typeof t.data&&!t.data.indexOf(C.prefixLowercase+"::")){var i=t.data.split("::");if(void 0!==t.origin){var n=t.origin.replace("http://","").replace("https://","").replace(/:(\d+)$/,"");if(n!==document.domain&&C.domain_lhc!==n&&"started"!==i[1]&&"isstarted"!==i[1])return}if("ready"==i[1]){E.sendReadyEvent("true"==i[2]),C.storageHandler.getSessionStorage(b+"_screenshare")&&C.eventEmitter.emitEvent("screenshare",[{auto_start:!0}]);var s=function(t){var e="focus"===t.type;C.focused=e,E.sendChildEvent("focus_changed",[{status:e}])};window.addEventListener("focus",s),window.addEventListener("blur",s),window.addEventListener("pageshow",s),window.addEventListener("pagehide",s),e.loaded=!0,E.sendChildEvent("ext_modules",[C.staticJS.ex_cb_js]),C.childExtCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext")})),C.childCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg])})),null!==C.react_attr&&C.react_attr.forEach((function(t){E.sendChildEvent("attr_set",[{type:"attr_set",attr:t.k,data:t.v}])}))}else"ready_popup"==i[1]?C.popupWidget.sendParameters(E):"isstarted"==i[1]?C.eventEmitter.emitEvent("terminated",[]):"started"==i[1]?C.hide_parent?C.eventEmitter.emitEvent("terminated",[]):t.source.postMessage("lhc::isstarted","*"):C.eventEmitter.emitEvent(i[1],JSON.parse(i[2]))}};window.addEventListener?window.addEventListener("message",j,!1):window.attachEvent?window.attachEvent("onmessage",j):document.attachEvent&&document.attachEvent("onmessage",j)},a=function(){!0!==e.ready&&(document.body&&(e.ready=!0),e.init=o,r.args.before_init&&r.args.before_init(e),r.args.manual_init||o())},u=__webpack_require__(593).U;a(),!e.ready||(u.listen(document,"DOMContentLoaded",(function(){a()}),"domloaded"),u.listen(document,"readystatechange",(function(){("complete"===document.readyState||"interactive"===document.readyState&&document.body)&&a()}),"domstatechange"),u.listen(t,"load",(function(){a()}),"windowload"))}.call(this,t["$_"+n],t[n+"_API"])}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}}(window),this.LiveHelperChat=__webpack_exports__.LiveHelperChatDefault})(); +(function(){var __webpack_modules__={9272:function(t,e,i){"use strict";var n=i(723),s=[],r=[],o=n.makeRequestCallFromTimer((function(){if(r.length)throw r.shift()}));function a(t){var e;(e=s.length?s.pop():new u).task=t,n(e)}function u(){this.task=null}t.exports=a,u.prototype.call=function(){try{this.task.call()}catch(t){a.onerror?a.onerror(t):(r.push(t),o())}finally{this.task=null,s[s.length]=this}}},723:function(t,e,i){"use strict";function n(t){r.length||s(),r[r.length]=t}t.exports=n;var s,r=[],o=0;function a(){for(;o1024){for(var e=0,i=r.length-o;e'+n+""),this.elmDomDoc.close(),this.insertCssFile(t),this.insertContent()}},{key:"insertContent",value:function(){this.elmDomDoc.body.innerHTML=this.tmpl}}]),c}(c.Y)},574:function(t,e,i){"use strict";i.d(e,{Y:function(){return u}});var n=i(5671),s=i(3144),r=i(2137),o=i(7761),a=i(593),u=function(){function t(e,i,s,r,o){(0,n.Z)(this,t);var a=this;this.elementId=e||"",this.style=i||"",this.tagName=r||"div",this.tmpl="",this.elmDom=null,this.elmDomDoc=o||document,this.attributes={},this.classNames=[],this.elementId&&(this.attributes.id=this.elementId),s&&Object.keys(s).forEach((function(t){a.attributes[t]=s[t]}))}return(0,s.Z)(t,[{key:"constructUI",value:function(t){return this.elmDomDoc=t||this.elmDomDoc,this.elmDom=r.a.initElement(this.elmDomDoc,this.tagName,this.attributes,this.style,this.tmpl),this.elmDom.className+=this.classNames.join(" "),this.elmDom}},{key:"restyle",value:function(t,e){e&&(this.elmDom?this.elmDom.style.cssText+=";"+t+":"+e:this.style+=";"+t+":"+e)}},{key:"attachUserEventListener",value:function(t,e,i,n){var s;(s=i?this.getElementById(i):this.elmDom)&&(1<(i=t.split(" ")).length?i.forEach((function(t){a.U.listen(s,t,e,t+n)})):a.U.listen(s,t,e,n))}},{key:"getElementById",value:function(t){return this.elmDom?this.elmDomDoc.getElementById(t):null}},{key:"hide",value:function(){this.restyle("display","none !important")}},{key:"show",value:function(){this.restyle("display","block !important")}},{key:"insertCssFile",value:function(t,e){var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=r.a.initElement(this.elmDomDoc,"style",{type:"text/css"}),a=this.elmDomDoc.createTextNode(e?t:o.X.ResetStyle+""+t);n.appendChild(s),i.appendChild(n),s.styleSheet?s.styleSheet.cssText=a.nodeValue:s.appendChild(a)}},{key:"insertCssRemoteFile",value:function(t){var e=null;if(t.id&&t.href&&null!==(e=this.elmDomDoc.getElementById(t.id)))e.href=t.href;else{var i=this.elmDomDoc.getElementsByTagName("head")[0],n=this.elmDomDoc.createDocumentFragment(),s=this.elmDomDoc.createElement("link");for(var r in s.rel="stylesheet",s.crossOrigin="*",t)s[r]=t[r];n.appendChild(s),i.appendChild(n)}}},{key:"insertJSFile",value:function(t,e,i,n){var s=this.elmDomDoc.getElementsByTagName("head")[0],r=this.elmDomDoc.createDocumentFragment(),o=this.elmDomDoc.createElement("script");o.type="text/javascript",void 0!==e&&!0!==e||(o.async=!0),o.crossOrigin="*",o.src=t,i&&(o.onload=i),n&&Object.keys(n).forEach((function(t){o.setAttribute(t,n[t])})),r.appendChild(o),s.appendChild(r)}},{key:"massRestyle",value:function(t){for(var e in t)t.hasOwnProperty(e)&&this.restyle(e,t[e])}}]),t}()},1660:function(t,e,i){"use strict";i.d(e,{T:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.isNotificationsSubscribed=!1,this.applicationServerPublicKey=null,this.eventEmitter=null}return(0,s.Z)(t,[{key:"setPublicKey",value:function(t,e){this.applicationServerPublicKey=t,this.eventEmitter=e}},{key:"sendNotification",value:function(){var t=this,e=this.applicationServerPublicKey,i=null;if("serviceWorker"in navigator&&"PushManager"in window)if("Notification"in window){if("granted"===Notification.permission);else if("denied"!==Notification.permission)Notification.requestPermission((function(t){"granted"===t||alert("Sorry but you have denied notification!")}));else if("denied"===Notification.permission)return void alert("Sorry but you have denied notification!");t=this,navigator.serviceWorker.register("/sw.lhc.js?v=2").then((function(n){(i=n).pushManager.getSubscription().then((function(n){var s;t.isNotificationsSubscribed=!(null===n),t.isNotificationsSubscribed,s=function(t){for(var e=(t+"=".repeat((4-t.length%4)%4)).replace(/\-/g,"+").replace(/_/g,"/"),i=window.atob(e),n=new Uint8Array(i.length),s=0;s
',null===this.cont.constructUIIframe("",this.attributes.staticJS.dir,this.attributes.staticJS.cl,this.attributes.hhtml))return this.isLoaded=!0,null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile lhc-mode-"+this.attributes.mode:"lhc-desktop lhc-mode-"+this.attributes.mode,this.attributes.cont_ss&&(this.originalCSS=this.cont.elmDom.style.cssText,this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"init",value:function(t,e){var i=this;if(this.attributes=t,null===this.makeContent())return null;!this.attributes.userSession.getSessionAttributes().id&&e||this.bootstrap(),this.toggleVisibilityWrap=function(t){i.toggleVisibility(t)},t.widgetStatus.subscribe(this.toggleVisibilityWrap),this.monitorDimensionsWrap=function(t){i.monitorDimensions(t)},t.widgetDimesions.subscribe(this.monitorDimensionsWrap),t.eventEmitter.addListener("reloadWidget",(function(){i.isLoaded=!1,i.makeContent(),t.eventEmitter.emitEvent("widgetHeight",[{reset_height:!0}]),i.toggleVisibility(t.widgetStatus.valueInternal)}))}},{key:"bootstrap",value:function(){var t=this;!0!==this.isLoaded&&(this.isLoaded=!0,this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({rel:"stylesheet",crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.theme&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/theme/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0),this.cont.insertCssRemoteFile({onload:function(){t.loadStatus.css=!0,t.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.widget_css},!0),1==this.attributes.isMobile&&"widget"==this.attributes.mode&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.widget_mobile_css}),"embed"==this.attributes.mode&&(this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.embed_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v})),this.cont.insertJSFile(this.attributes.staticJS.vendor,!1,(function(){t.cont.insertJSFile(t.attributes.staticJS.app,!1,(function(){t.loadStatus.main=!0,t.checkLoadStatus()}),{scope:t.attributes.prefixLowercase})}),{scope:this.attributes.prefixLowercase}),this.attributes.staticJS.ex_js&&this.attributes.staticJS.ex_js.length>0&&this.attributes.staticJS.ex_js.forEach((function(e){t.cont.insertJSFile(e,!1)})))}},{key:"toggleVisibility",value:function(t){0==t?this.hide():this.show()}},{key:"monitorDimensions",value:function(t){this.width=t.width_override||t.width,this.height=t.height_override||t.height,this.bottom=t.bottom_override?t.bottom_override+(t.wbottom?t.wbottom:0):30+(!0===this.attributes.clinst?70:0)+(t.wbottom?t.wbottom:0),this.right=t.right_override?t.right_override+(t.wright_inv?t.wright_inv:0):30+(t.wright?t.wright:0),this.units=t.width_override||t.height_override||t.bottom_override||t.right_override?"px":t.units,this.resize(),this.bottom_override=!!t.bottom_override}},{key:"hide",value:function(){this.cont.hide()}},{key:"hideInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText+=this.attributes.cont_ss)}},{key:"showInvitation",value:function(){this.attributes.cont_ss&&(this.cont.elmDom.style.cssText=this.originalCSS),this.show()}},{key:"show",value:function(){!1===this.isLoaded&&this.bootstrap(),this.cont.show()}}]),t}()},5962:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{f:function(){return mainWidgetPopup}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),mainWidgetPopup=function(){function mainWidgetPopup(){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,mainWidgetPopup),this.attributes={},this.width=null,this.height=null,this.units="px",this.freeup()}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(mainWidgetPopup,[{key:"freeup",value:function(){this.cont={}}},{key:"parseOptions",value:function(){var t=new Array,e="";if(void 0!==this.attributes){if(void 0!==this.attributes.LHCChatOptions.attr&&this.attributes.LHCChatOptions.attr.length>0)for(var i in this.attributes.LHCChatOptions.attr)void 0!==this.attributes.LHCChatOptions.attr[i]&&void 0!==this.attributes.LHCChatOptions.attr[i].type&&t.push("name[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].name)+"&encattr[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].encrypted&&1==this.attributes.LHCChatOptions.attr[i].encrypted?"t":"f")+"&value[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].value)+"&type[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].type)+"&size[]="+encodeURIComponent(this.attributes.LHCChatOptions.attr[i].size)+"&req[]="+(void 0!==this.attributes.LHCChatOptions.attr[i].req&&1==this.attributes.LHCChatOptions.attr[i].req?"t":"f")+"&sh[]="+(void 0===this.attributes.LHCChatOptions.attr[i].show||"on"!=this.attributes.LHCChatOptions.attr[i].show&&"off"!=this.attributes.LHCChatOptions.attr[i].show?"b":this.attributes.LHCChatOptions.attr[i].show));if(void 0!==this.attributes.LHCChatOptions.attr_prefill&&this.attributes.LHCChatOptions.attr_prefill.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill)void 0!==this.attributes.LHCChatOptions.attr_prefill[i]&&void 0!==this.attributes.LHCChatOptions.attr_prefill[i].name&&t.push("prefill["+this.attributes.LHCChatOptions.attr_prefill[i].name+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[i].value));if(void 0!==this.attributes.LHCChatOptions.attr_prefill_admin&&this.attributes.LHCChatOptions.attr_prefill_admin.length>0)for(var i in this.attributes.LHCChatOptions.attr_prefill_admin)void 0!==this.attributes.LHCChatOptions.attr_prefill_admin[i]&&t.push("value_items_admin["+this.attributes.LHCChatOptions.attr_prefill_admin[i].index+"]="+encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[i].value));t.length>0&&(e="&"+t.join("&"))}return e}},{key:"init",value:function(t,e,i){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed)void 0!==i&&"undefined"!==i.event&&i.event.preventDefault(),this.cont.elementReferrerPopup.focus();else{this.attributes=t;var n={static_chat:this.attributes.userSession.getSessionAttributes()},s="";n.static_chat.id&&n.static_chat.hash&&(s=s+"/(id)/"+n.static_chat.id+"/(hash)/"+n.static_chat.hash),null!==this.attributes.theme&&(s=s+"/(theme)/"+this.attributes.theme),null!==n.static_chat.vid&&!0===this.attributes.storageHandler.cookieEnabled&&(s=s+"/(vid)/"+n.static_chat.vid),this.attributes.isMobile&&(s+="/(mobile)/true"),this.attributes.department.length>0&&(s=s+"/(department)/"+this.attributes.department.join("/")),""!=this.attributes.identifier&&(s=s+"/(identifier)/"+this.attributes.identifier),this.attributes.operator&&(s=s+"/(operator)/"+this.attributes.operator),this.attributes.survey&&(s=s+"/(survey)/"+this.attributes.survey),this.attributes.bot_id&&(s=s+"/(bot)/"+this.attributes.bot_id),this.attributes.trigger_id&&(s=s+"/(trigger)/"+this.attributes.trigger_id),this.attributes.priority&&(s=s+"/(priority)/"+this.attributes.priority),"lhc"!=this.attributes.prefixLowercase&&(s=s+"/(scope)/"+this.attributes.prefixLowercase),s=s+"/(sound)/"+(1==this.attributes.toggleSound.value?1:0),this.attributes.proactive.invitation&&(s=s+"/(inv)/"+this.attributes.proactive.invitation,"popup"==this.attributes.mode&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_invt",1));var r=this.attributes.storageHandler.getLocalStorage(this.attributes.prefixStorage+"_dfs");r&&(s=s+"/(fs)/"+parseInt(r)),!0===this.attributes.leaveMessage&&(s+="/(leaveamessage)/true"),s=null!==this.attributes.userSession.getSessionReferrer()&&""!=this.attributes.userSession.getSessionReferrer()?s+"?ses_ref="+this.attributes.userSession.getSessionReferrer()+this.parseOptions():s+"?"+this.parseOptions();var o=void 0!==window.screenLeft?window.screenLeft:window.screenX,a=void 0!==window.screenTop?window.screenTop:window.screenY,u=window.innerWidth?window.innerWidth:document.documentElement.clientWidth?document.documentElement.clientWidth:screen.width,c=window.innerHeight?window.innerHeight:document.documentElement.clientHeight?document.documentElement.clientHeight:screen.height,h=u/window.screen.availWidth,l=(u-parseInt(this.attributes.popupDimesnions.pwidth))/2/h+o,d=(c-parseInt(this.attributes.popupDimesnions.pheight))/2/h+a,p="scrollbars=yes,menubar=1,resizable=1,width="+this.attributes.popupDimesnions.pwidth+",height="+this.attributes.popupDimesnions.pheight+",top="+d+",left="+l,m=window.open("",this.attributes.prefixStorage+"_popup_v2",p),_=!1,f=!1;try{!m||m.closed||void 0===m.closed||"about:blank"===m.location.href?(m=this.cont.elementReferrerPopup=window.open(this.attributes.base_url+this.attributes.lang+"chat/start"+s,this.attributes.prefixStorage+"_popup_v2",p),f=!0):_=!0}catch(t){_=!0}if(!m||m.closed||void 0===m.closed)try{this.attributes.viewHandler.cont.getElementById("status-icon").href=this.attributes.base_url+this.attributes.lang+"chat/start"+s}catch(t){alert("You have disabled popups!")}else 1==f?(void 0!==e&&!1===this.attributes.kcw&&e.sendChildEvent("endedChat",[{sender:"endButton"}]),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault()):!0===_&&(this.cont.elementReferrerPopup=m,m.focus(),void 0!==i&&"undefined"!==i.event&&i.event.preventDefault())}}},{key:"sendParameters",value:function sendParameters(chatEvents){if(this.cont.elementReferrerPopup&&!1===this.cont.elementReferrerPopup.closed){var js_vars=this.attributes.jsVars.value,js_args={},currentVar=null;for(var index in js_vars)try{currentVar=eval(js_vars[index].var),null!=currentVar&&""!==currentVar&&(js_args[js_vars[index].id]=currentVar)}catch(t){}chatEvents.sendChildEvent("jsVars",[js_args])}}}]),mainWidgetPopup}()},3678:function(t,e,i){"use strict";i.d(e,{T:function(){return a}});var n=i(5671),s=i(3144),r=(i(7761),i(3908)),o=i(2137),a=function(){function t(e){(0,n.Z)(this,t),this.attributes={},this.controlMode=!1,this.cont=new r.a((e||"lhc")+"_status_widget_v2",o.a.getAbstractStyle({zindex:"2147483640",width:"95px",height:"95px",position:"fixed",display:"none",maxheight:"95px",maxwidth:"95px",minheight:"95px",minwidth:"95px"}),null,"iframe"),this.loadStatus={main:!1,theme:!1,font:!0,widget:!1,shidden:!1},this.lload=!1,this.unread_counter=0}return(0,s.Z)(t,[{key:"toggleOfflineIcon",value:function(t){var e=this.cont.getElementById("status-icon");t?(this.attributes.leaveMessage||this.show(),o.a.removeClass(e,"offline-status")):this.attributes.leaveMessage?o.a.addClass(e,"offline-status"):this.hide()}},{key:"checkLoadStatus",value:function(){1==this.loadStatus.theme&&1==this.loadStatus.main&&1==this.loadStatus.font&&1==this.loadStatus.widget&&0==this.loadStatus.shidden&&(this.cont.getElementById("lhc_status_container").style.display="",this.attributes.sload.next(!0))}},{key:"init",value:function(t,e){var i=this;this.attributes=t;var n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",right:10+this.attributes.widgetDimesions.value.sright+"px"};if("bottom_left"==t.position_placement||"full_height_left"==t.position_placement?n={bottom:10+this.attributes.widgetDimesions.value.sbottom+"px",left:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_right"==t.position_placement?n={bottom:"calc(50% - 45px)",right:10+this.attributes.widgetDimesions.value.sright+"px"}:"middle_left"==t.position_placement&&(n={bottom:"calc(50% - 45px)",left:10+this.attributes.widgetDimesions.value.sright+"px"}),this.cont.massRestyle(n),this.cont.tmpl='',null===this.cont.constructUIIframe(""))return null;this.cont.elmDom.className=!0===this.attributes.isMobile?"lhc-mobile":"lhc-desktop";var s=this;this.lload=!!e,!0===this.lload?this.loadStatus.widget=!0:t.wloaded.subscribe((function(t){t&&(i.loadStatus.widget=!0,i.checkLoadStatus())})),t.shidden.subscribe((function(t){t?i.attributes.userSession.getSessionAttributes().id||1==i.attributes.widgetStatus.value||(i.loadStatus.shidden=!0,i.hide()):(i.loadStatus.shidden=!1,i.checkLoadStatus(),i.show())})),this.cont.attachUserEventListener("click",(function(e){!1===t.onlineStatus.value&&t.eventEmitter.emitEvent("offlineClickAction"),!1===t.onlineStatus.value&&null!==t.offline_redirect?(document.location=t.offline_redirect,e.preventDefault()):1==s.controlMode?(t.eventEmitter.emitEvent("closeWidget",[{sender:"closeButton"}]),e.preventDefault()):(t.eventEmitter.emitEvent("showWidget",[{event:e}]),t.eventEmitter.emitEvent("clickAction"))}),"lhc_status_container","minifiedclick"),this.attributes.staticJS.fontCSS&&this.cont.insertCssRemoteFile({crossOrigin:"anonymous",href:this.attributes.staticJS.fontCSS}),this.attributes.staticJS.font_status&&this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.font=!0,i.checkLoadStatus()},as:"font",rel:"preload",type:"font/woff",crossOrigin:"anonymous",href:this.attributes.staticJS.font_status}),this.attributes.theme?(this.loadStatus.theme=!1,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.theme=!0,i.checkLoadStatus()},id:"lhc-theme-status",crossOrigin:"anonymous",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+this.attributes.theme+"?v="+this.attributes.theme_v},!0)):this.loadStatus.theme=!0,this.cont.insertCssRemoteFile({onload:function(){i.loadStatus.main=!0,i.checkLoadStatus()},crossOrigin:"anonymous",href:this.attributes.staticJS.status_css}),this.attributes.staticJS.page_css&&o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:this.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+this.attributes.theme+"?v="+this.attributes.theme_v}),t.onlineStatus.subscribe((function(t){return i.toggleOfflineIcon(t)})),t.widgetStatus.subscribe((function(t){if("popup"!==i.attributes.mode){var e=i.attributes.userSession.getSessionAttributes();1==t||!i.attributes.leaveMessage&&0==i.attributes.onlineStatus.value&&!e.id?i.hide():i.show()}})),"popup"===this.attributes.mode&&this.show();var r=t.storageHandler.getSessionStorage(this.attributes.prefixStorage+"_unr");t.eventEmitter.addListener("unread_message",(function(t){var e=t&&t.otm;e&&(e=parseInt(e),e+=i.unread_counter),i.attributes.unread_counter.next(e),i.showUnreadIndicator(e)})),null!==r&&(t.eventEmitter.emitEvent("unread_message",[{otm:r,init:!0}]),null===r||isNaN(r)||(this.unread_counter=parseInt(r))),t.eventEmitter.addListener("reloadWidget",(function(){i.attributes.theme>0&&i.cont.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-status",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themestatus/"+i.attributes.theme+"?v="+Date.now()},!0),o.a.insertCssRemoteFile({crossOrigin:"anonymous",id:"lhc-theme-page",href:i.attributes.LHC_API.args.lhc_base_url+"/widgetrestapi/themepage/"+i.attributes.theme+"?v="+Date.now()})}))}},{key:"hide",value:function(){if(this.removeUnreadIndicator(),!0===this.attributes.clinst&&0==this.attributes.isMobile){var t=this.attributes.userSession.getSessionAttributes();if((1==this.attributes.leaveMessage||1==this.attributes.onlineStatus.value||t.id)&&(("api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&(t.id&&t.hash||1==this.attributes.widgetStatus.value))&&(!0!==this.attributes.hide_status||t.id&&t.hash)&&this.cont.show(),!0!==this.attributes.hide_status||t.id&&t.hash||1==this.attributes.widgetStatus.value)){if(1==this.attributes.widgetStatus.value){this.controlMode=!0;var e=this.cont.getElementById("status-icon");o.a.addClass(e,"close-status")}return}}this.cont.hide()}},{key:"showUnreadIndicator",value:function(t){var e=t||"!",i=this.cont.getElementById("lhc_status_container");o.a.addClass(i,"has-uread-message");var n=this.cont.getElementById("unread-msg-number");n&&(n.innerText=e),this.attributes.storageHandler&&this.attributes.storageHandler.setSessionStorage(this.attributes.prefixStorage+"_unr",e)}},{key:"removeUnreadIndicator",value:function(){var t=this.cont.getElementById("lhc_status_container");o.a.removeClass(t,"has-uread-message"),this.attributes.storageHandler&&this.attributes.storageHandler.removeSessionStorage(this.attributes.prefixStorage+"_unr"),this.attributes.eventEmitter.emitEvent("remove_unread_indicator",[]),this.attributes.unread_counter.next(0),this.unread_counter=0}},{key:"show",value:function(){if(!1===this.attributes.hideOffline){var t=this.attributes.userSession.getSessionAttributes();if(!0===this.attributes.clinst&&0==this.attributes.isMobile&&1!=this.attributes.widgetStatus.value){var e=this.cont.getElementById("status-icon");o.a.removeClass(e,"close-status"),this.controlMode=!1}"api"!=this.attributes.position||"api"==this.attributes.position&&!0!==this.attributes.hide_status&&t.id&&t.hash?this.cont.show():!0===this.attributes.clinst&&1!=this.attributes.widgetStatus.value&&this.cont.hide()}else this.cont.hide()}}]),t}()},6349:function(__unused_webpack_module,__webpack_exports__,__webpack_require__){"use strict";__webpack_require__.d(__webpack_exports__,{Z:function(){return chatEventsHandler}});var _babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(5671),_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(3144),chatEventsHandler=function(){function chatEventsHandler(t){(0,_babel_runtime_helpers_classCallCheck__WEBPACK_IMPORTED_MODULE_0__.Z)(this,chatEventsHandler),this.attributes=t}return(0,_babel_runtime_helpers_createClass__WEBPACK_IMPORTED_MODULE_1__.Z)(chatEventsHandler,[{key:"getJSVarsValues",value:function getJSVarsValues(jsVars){var js_args={};if(jsVars.length>0){var currentVar=null;for(var index in jsVars)try{currentVar=eval("window."+jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[jsVars[index].id]=currentVar)}catch(t){}return js_args}return js_args}},{key:"getInitAttributes",value:function(){var t={onlineStatus:this.attributes.onlineStatus.value,toggleSound:this.attributes.toggleSound.value,widgetStatus:this.attributes.widgetStatus.value,jsVars:this.getJSVarsValues(this.attributes.jsVars.value),isMobile:this.attributes.isMobile,department:this.attributes.department,product:this.attributes.product,theme:this.attributes.theme,base_url:this.attributes.base_url,mode:this.attributes.mode,captcha:this.attributes.captcha,staticJS:this.attributes.staticJS,static_chat:this.attributes.userSession.getSessionAttributes(),domain_lhc:this.attributes.domain_lhc,leave_message:this.attributes.leaveMessage,scope_prefix:this.attributes.prefixLowercase};if(1==this.attributes.fresh&&(t.static_chat.id&&delete t.static_chat.id,t.static_chat.hash&&delete t.static_chat.hash),""!=this.attributes.bot_id&&(t.bot_id=this.attributes.bot_id),""!=this.attributes.trigger_id&&(t.trigger_id=this.attributes.trigger_id),""!=this.attributes.priority&&(t.priority=this.attributes.priority),null!==this.attributes.phash&&(t.phash=this.attributes.phash),null!==this.attributes.survey&&(t.survey=this.attributes.survey),null!==this.attributes.pvhash&&(t.pvhash=this.attributes.pvhash),null!==this.attributes.operator&&(t.operator=this.attributes.operator),null!==this.attributes.profile_pic&&(t.profile_pic=this.attributes.profile_pic),""!=this.attributes.lang&&(t.lang=this.attributes.lang),this.attributes.proactive.invitation&&(t.proactive=this.attributes.proactive),null!==this.attributes.dep_default&&(t.dep_default=this.attributes.dep_default),this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr){var e=this.attributes.LHCChatOptions.attr,i=[];e.forEach((function(t,e){i.push({show:void 0===t.show||"on"!=t.show&&"off"!=t.show?"b":t.show,value:t.value,index:e,name:t.name,class:"form-control form-control-sm",type:t.type,identifier:"additional_"+e,placeholder:"",width:t.size||6,encrypted:t.encrypted||!1,required:t.req||!1,label:t.name})})),t.CUSTOM_FIELDS=i}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill){e=this.attributes.LHCChatOptions.attr_prefill;var n=[];e.forEach((function(t){"email"==t.name?n.push({Email:t.value}):"username"==t.name?n.push({Username:t.value}):"phone"==t.name?n.push({Phone:t.value}):"question"==t.name&&n.push({Question:t.value})})),t.attr_prefill=n}if(this.attributes.LHCChatOptions&&this.attributes.LHCChatOptions.attr_prefill_admin){e=this.attributes.LHCChatOptions.attr_prefill_admin;var s=[];e.forEach((function(t){s.push({value:t.value,index:t.index})})),t.attr_prefill_admin=s}return null!==this.attributes.userSession.getSessionReferrer()&&(t.ses_ref=this.attributes.userSession.getSessionReferrer()),t}},{key:"sendChildCommand",value:function(t){this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(t,"/"),this.attributes.popupWidget.cont.elementReferrerPopup&&!1===this.attributes.popupWidget.cont.elementReferrerPopup.closed&&this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(t,"*")}},{key:"sendReadyEvent",value:function(t){var e=this.getInitAttributes();!0!==t&&this.attributes.mainWidget.cont.elmDom&&this.attributes.mainWidget.cont.elmDom.contentWindow&&this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage("lhc_init:"+JSON.stringify(e),"/")}},{key:"sendChildEvent",value:function(t,e,i){void 0===i&&(i="lhc_event"),this.sendChildCommand(i+":"+t+"::"+JSON.stringify(e))}}]),chatEventsHandler}()},593:function(t,e,i){"use strict";i.d(e,{U:function(){return r}});var n=i(5671),s=i(3144),r=new(function(){function t(){(0,n.Z)(this,t),this.events={}}return(0,s.Z)(t,[{key:"attachEvent",value:function(t,e,i){var n=this,s=function(e){i.call(t,n.getEvent(e))};return t.attachEvent("on"+e,s),s}},{key:"unlisten",value:function(t){var e;this.events[t]&&(e=this.events[t],this.events[t]=null,this.removeEventHandler(e.element,e.eventName,e.eventListener))}},{key:"listen",value:function(t,e,i,n){var s;if(n){if(this.events[n]&&(s=this.events[n],this.events[n]=null,this.removeEventHandler(s.element,s.eventName,s.eventListener)),t.addEventListener)t.addEventListener(e,i,!1);else{if(!document.attachEvent)return null;i=this.attachEvent(t,e,i)}return this.events[n]={element:t,eventName:e,eventListener:i},i}}},{key:"removeEventHandler",value:function(t,e,i){document.removeEventListener?t.removeEventListener(e,i,!1):t.detachEvent("on"+e,i)}},{key:"getEvent",value:function(t){var e=t||_this.event;if(!e)for(t=this.getEvent.caller;t&&(!(e=t.arguments[0])||Event!=e.constructor);)t=t.caller;return e}}]),t}())},6419:function(t,e,i){"use strict";i.d(e,{h:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i){(0,n.Z)(this,t),this.valueInternal=e,this.listeners=[],this.params=i||{}}return(0,s.Z)(t,[{key:"value",get:function(){return this.valueInternal},set:function(t){this.next(t)}},{key:"next",value:function(t){this.valueInternal=t,this.callListeners()}},{key:"nextProperty",value:function(t,e){this.valueInternal[t]=e,this.callListeners()}},{key:"callListeners",value:function(){var t=this;this.listeners.forEach((function(e){e&&"function"==typeof e&&e(t.valueInternal)}))}},{key:"unsubscribe",value:function(t){-1!==this.listeners.indexOf(t)&&this.listeners.splice(this.listeners.indexOf(t),1)}},{key:"subscribe",value:function(t){this.listeners.push(t),this.params.ignore_sub||t(this.valueInternal)}}]),t}()},5545:function(t,e,i){"use strict";i.d(e,{Q:function(){return r}});var n=i(5671),s=i(3144),r=function(){function t(e,i,s,r){(0,n.Z)(this,t),this.window=e,this.cookieEnabled=!1,this.cookiesSupportChecked=!1,1==r&&this.checkCookiesSupport(),this.domain=i,this.secureCookie=!1,this.cookiePerPage=!1,this.prefix=s||"lhc"}return(0,s.Z)(t,[{key:"checkCookiesSupport",value:function(){if(!0===this.cookiesSupportChecked)return this.cookieEnabled;this.cookiesSupportChecked=!0;try{this.hasSessionStorage=!!this.window.sessionStorage}catch(t){this.hasSessionStorage=!1}try{this.hasLocalStorage=!!this.window.localStorage}catch(t){this.hasLocalStorage=!1}try{document.cookie="cookietest=1",this.cookieEnabled=-1!==document.cookie.indexOf("cookietest="),document.cookie="cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT"}catch(t){}return this.cookieEnabled}},{key:"setCookieDomain",value:function(t){this.domain=t}},{key:"setCookiePerPage",value:function(t){this.cookiePerPage=t}},{key:"getCookieDomain",value:function(){return this.domain?"."+this.domain:null}},{key:"setSecureCookie",value:function(t){this.secureCookie=t}},{key:"setHTTPCookie",value:function(t,e,i,n){if(!1!==this.cookieEnabled){var s="";i||((i=new Date).setTime(i.getTime()+15552e6),s="; expires="+i.toGMTString()),document.cookie=t+"="+e+s+(!1===this.cookiePerPage?"; path=/":!0===this.cookiePerPage?"":"; path="+this.cookiePerPage)+(this.secureCookie?";secure":"")+(n?";domain="+n:"")+";SameSite=Lax"}}},{key:"getHTTPCookie",value:function(t){if(!1===this.cookieEnabled)return[];var e,i,n=[],s=t+"=",r=document.cookie.split(";");for(t=0,e=r.length;t0){var js_args={},currentVar=null;for(var index in this.jsVars)try{currentVar=-1!==this.jsVars[index].var.indexOf("lhc_var.")?this.attributes.lhc_var[this.jsVars[index].var.replace("lhc_var.","")]||null:eval(this.jsVars[index].var),null!=currentVar&&""!==currentVar&&(js_args[this.jsVars[index].id]=currentVar)}catch(t){}return js_args}return null}},{key:"getAppendVariables",value:function(){var t="";return null!==this.vid&&(t=t+"/(vid)/"+this.vid),null!==this.hash&&null!==this.id&&(t=t+"/(hash)/"+this.id+"_"+this.hash),t}},{key:"updateJSVars",value:function(t,e){var i=this.getVars(t),n=new XMLHttpRequest;n.open("POST",this.attributes.LHC_API.args.lhc_base_url+"/chat/updatejsvars"+this.getAppendVariables(),!0),n.setRequestHeader("Content-type","application/x-www-form-urlencoded"),n.send("data="+encodeURIComponent(this.JSON.stringify(i))),void 0!==e&&null===this.hash&&null===this.id&&e(i)}},{key:"setChatInformation",value:function(t,e){this.id=t.id,this.hash=t.hash,null===this.id||e||(this.hnh=Math.round(Date.now()/1e3))}}]),userSession}()},891:function(t,e,i){"use strict";i.r(e),i.d(e,{default:function(){return v}});const n=/iPhone/i,s=/iPod/i,r=/iPad/i,o=/\bAndroid(?:.+)Mobile\b/i,a=/Android/i,u=/(?:SD4930UR|\bSilk(?:.+)Mobile\b)/i,c=/Silk/i,h=/Windows Phone/i,l=/\bWindows(?:.+)ARM\b/i,d=/BlackBerry/i,p=/BB10/i,m=/Opera Mini/i,_=/\b(CriOS|Chrome)(?:.+)Mobile/i,f=/Mobile(?:.+)Firefox\b/i;function g(t,e){return t.test(e)}function v(t){let e=(t=t||("undefined"!=typeof navigator?navigator.userAgent:"")).split("[FBAN");void 0!==e[1]&&(t=e[0]),e=t.split("Twitter"),void 0!==e[1]&&(t=e[0]);const i={apple:{phone:g(n,t)&&!g(h,t),ipod:g(s,t),tablet:!g(n,t)&&g(r,t)&&!g(h,t),device:(g(n,t)||g(s,t)||g(r,t))&&!g(h,t)},amazon:{phone:g(u,t),tablet:!g(u,t)&&g(c,t),device:g(u,t)||g(c,t)},android:{phone:!g(h,t)&&g(u,t)||!g(h,t)&&g(o,t),tablet:!g(h,t)&&!g(u,t)&&!g(o,t)&&(g(c,t)||g(a,t)),device:!g(h,t)&&(g(u,t)||g(c,t)||g(o,t)||g(a,t))||g(/\bokhttp\b/i,t)},windows:{phone:g(h,t),tablet:g(l,t),device:g(h,t)||g(l,t)},other:{blackberry:g(d,t),blackberry10:g(p,t),opera:g(m,t),firefox:g(f,t),chrome:g(_,t),device:g(d,t)||g(p,t)||g(m,t)||g(f,t)||g(_,t)},any:!1,phone:!1,tablet:!1};return i.any=i.apple.device||i.android.device||i.windows.device||i.other.device,i.phone=i.apple.phone||i.android.phone||i.windows.phone,i.tablet=i.apple.tablet||i.android.tablet||i.windows.tablet,i}},8259:function(t,e,i){"use strict";t.exports=i(2159)},3434:function(t,e,i){"use strict";var n=i(723);function s(){}var r=null,o={};function a(t){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof t)throw new TypeError("Promise constructor's argument is not a function");this._h=0,this._i=0,this._j=null,this._k=null,t!==s&&p(t,this)}function u(t,e){for(;3===t._i;)t=t._j;if(a._l&&a._l(t),0===t._i)return 0===t._h?(t._h=1,void(t._k=e)):1===t._h?(t._h=2,void(t._k=[t._k,e])):void t._k.push(e);!function(t,e){n((function(){var i=1===t._i?e.onFulfilled:e.onRejected;if(null!==i){var n=function(t,e){try{return t(e)}catch(t){return r=t,o}}(i,t._j);n===o?h(e.promise,r):c(e.promise,n)}else 1===t._i?c(e.promise,t._j):h(e.promise,t._j)}))}(t,e)}function c(t,e){if(e===t)return h(t,new TypeError("A promise cannot be resolved with itself."));if(e&&("object"==typeof e||"function"==typeof e)){var i=function(t){try{return t.then}catch(t){return r=t,o}}(e);if(i===o)return h(t,r);if(i===t.then&&e instanceof a)return t._i=3,t._j=e,void l(t);if("function"==typeof i)return void p(i.bind(e),t)}t._i=1,t._j=e,l(t)}function h(t,e){t._i=2,t._j=e,a._m&&a._m(t,e),l(t)}function l(t){if(1===t._h&&(u(t,t._k),t._k=null),2===t._h){for(var e=0;e "+e+") {","args = new Array(arguments.length + 1);","for (var i = 0; i < arguments.length; i++) {","args[i] = arguments[i];","}","}","return new Promise(function (rs, rj) {","var cb = "+r+";","var res;","switch (argLength) {",i.concat(["extra"]).map((function(t,e){return"case "+e+":res = fn.call("+["self"].concat(i.slice(0,e)).concat("cb").join(",")+");break;"})).join(""),"default:","args[argLength] = cb;","res = fn.apply(self, args);","}","if (res &&",'(typeof res === "object" || typeof res === "function") &&','typeof res.then === "function"',") {rs(res);}","});","};"].join("");return Function(["Promise","fn"],o)(n,t)}(t)};var r="function (err, res) {if (err) { rj(err); } else { rs(res); }}";n.nodeify=function(t){return function(){var e=Array.prototype.slice.call(arguments),i="function"==typeof e[e.length-1]?e.pop():null,r=this;try{return t.apply(this,arguments).nodeify(i,r)}catch(t){if(null==i)return new n((function(e,i){i(t)}));s((function(){i.call(r,t)}))}}},n.prototype.nodeify=function(t,e){if("function"!=typeof t)return this;this.then((function(i){s((function(){t.call(e,null,i)}))}),(function(i){s((function(){t.call(e,i)}))}))}},3690:function(t,e,i){"use strict";var n=i(3434);t.exports=n,n.enableSynchronous=function(){n.prototype.isPending=function(){return 0==this.getState()},n.prototype.isFulfilled=function(){return 1==this.getState()},n.prototype.isRejected=function(){return 2==this.getState()},n.prototype.getValue=function(){if(3===this._i)return this._j.getValue();if(!this.isFulfilled())throw new Error("Cannot get a value of an unfulfilled promise.");return this._j},n.prototype.getReason=function(){if(3===this._i)return this._j.getReason();if(!this.isRejected())throw new Error("Cannot get a rejection reason of a non-rejected promise.");return this._j},n.prototype.getState=function(){return 3===this._i?this._j.getState():-1===this._i||-2===this._i?0:this._i}},n.disableSynchronous=function(){n.prototype.isPending=void 0,n.prototype.isFulfilled=void 0,n.prototype.isRejected=void 0,n.prototype.getValue=void 0,n.prototype.getReason=void 0,n.prototype.getState=void 0}},4795:function(t,e,i){var n;!function(e){"use strict";function s(){}var r=s.prototype,o=e.EventEmitter;function a(t,e){for(var i=t.length;i--;)if(t[i].listener===e)return i;return-1}function u(t){return function(){return this[t].apply(this,arguments)}}function c(t){return"function"==typeof t||t instanceof RegExp||!(!t||"object"!=typeof t)&&c(t.listener)}r.getListeners=function(t){var e,i,n=this._getEvents();if(t instanceof RegExp)for(i in e={},n)n.hasOwnProperty(i)&&t.test(i)&&(e[i]=n[i]);else e=n[t]||(n[t]=[]);return e},r.flattenListeners=function(t){var e,i=[];for(e=0;e0&&C.userSession.setupVarsMonitoring(t.js_vars,(function(t){E.sendChildEvent("jsVars",[t])}))),"widget"!=C.mode&&"popup"!=C.mode||C.viewHandler.init(C,t.ll),"api"==C.position&&"embed"==C.mode||C.mainWidget.init(C,t.ll),"widget"!=C.mode&&"popup"!=C.mode||x.cont.show(),C.loadcb&&C.loadcb(C),t.init_calls&&(C.init_calls=t.init_calls),C.proactive_interval=t.chat_ui.proactive_interval,"widget"!=C.mode&&"popup"!=C.mode&&"embed"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I(),C.init_calls.length>0&&C.init_calls.forEach((function(t){"nodeJSChat"==t.extension&&Promise.all([__webpack_require__.e(572),__webpack_require__.e(417)]).then(__webpack_require__.bind(__webpack_require__,9417)).then((function(e){e.nodeJSChat.setParams(t.params,C,E)}))})));else{if(t.terminate)return;C.userSession.setVID(t.vid),C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2");var n=document.createElement("script");n.type=i.type,n.id=C.prefixLowercase+"-js-reload",n.async=!0,i.getAttribute("scope")&&n.setAttribute("scope",i.getAttribute("scope")),n.src=i.getAttribute("src")+"&r="+(new Date).getHours()+(new Date).getMinutes();var s=document.getElementsByTagName("script")[0];s.parentNode.insertBefore(n,s)}})),C.eventEmitter.addListener("closeWidget",(function(){C.widgetStatus.next(!1),E.sendChildEvent("closedWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("sendChildEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg]):C.childCommands.push(t)})),C.eventEmitter.addListener("sendChildExtEvent",(function(t){void 0!==t.boot?C.mainWidget.bootstrap():1==C.mainWidget.isLoaded&&1==e.loaded?E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext"):C.childExtCommands.push(t)})),C.eventEmitter.addListener("toggleSound",(function(){var t=!C.toggleSound.value;C.toggleSound.next(t)})),C.eventEmitter.addListener("enableCookies",(function(){if(!0===m.checkCookiesSupport()){var t=C.userSession.getSessionAttributes();void 0!==t.hnh&&delete t.hnh,C.storageHandler.storeSessionInformation(t),void 0!==r.args.orig&&(C.mode=r.args.mode=r.args.orig.mode,r.args.proactive=r.args.orig.proactive,r.args.check_messages=r.args.orig.check_messages,d.makeRequest(r.args.lhc_base_url+C.lang+"widgetrestapi/settings",{params:D()},(function(t){C.eventEmitter.emitEvent("sendChildEvent",[{cmd:"attr_set",arg:{type:"attr_set",attr:["mode"],data:C.mode}}]),"widget"==C.mode&&null!==C.nh&&O(C.nh),"widget"!=C.mode&&"popup"!=C.mode||void 0!==r.args.proactive&&!0!==r.args.proactive||null!==C.storageHandler.getSessionStorage(b+"_invt")||I()})))}})),C.eventEmitter.addListener("endChatCookies",(function(t){(!1===C.kcw||t&&1==t.force)&&(C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={})})),C.eventEmitter.addListener("endChat",(function(t){C.userSession.setChatInformation({id:null,hash:null}),C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes()),C.proactive={},"popup"==C.mode||t&&t.show_start||C.widgetStatus.next(!1),C.viewHandler&&(C.viewHandler.removeUnreadIndicator(),C.eventEmitter.emitEvent("hide_msg_snippet")),C.widgetDimesions.nextProperty("height_override",null),E.sendChildEvent("endedChat",[{sender:"endButton"}]),("embed"==C.mode||t&&t.show_start)&&C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),"popup"==C.mode&&C.popupWidget.freeup()})),C.eventEmitter.addListener("showWidget",(function(t){C.mainWidget.hideInvitation(),C.widgetStatus.next(!0),"popup"==C.mode?(C.popupWidget.init(C,E,t),C.viewHandler.removeUnreadIndicator(),C.mainWidget.hide()):void 0!==t&&void 0!==t.event&&t.event.preventDefault(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}])})),C.eventEmitter.addListener("addTag",(function(t){C.tag=""!=C.tag?C.tag+","+t:t,C.eventEmitter.emitEvent("tagAdded")})),C.eventEmitter.addListener("addEvent",(function(t){C.events=t,C.eventEmitter.emitEvent("eventAdded")})),C.eventEmitter.addListener("openPopup",(function(){C.popupWidget.init(C,E),C.viewHandler.removeUnreadIndicator(),E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),C.widgetStatus.next(!1)})),C.eventEmitter.addListener("chatStarted",(function(t,e){C.widgetDimesions.nextProperty("height_override",null),"popup"===e&&!0!==C.kcw||C.userSession.setChatInformation(t,C.nh&&C.nh.ap),"popup"==e&&C.mainWidget.hide(),!1!==C.fresh||"popup"===e&&!0!==C.kcw||C.storageHandler.storeSessionInformation(C.userSession.getSessionAttributes())})),C.eventEmitter.addListener("subscribeEvent",(function(t){C.chatNotifications.setPublicKey(t.pk,C.eventEmitter),C.chatNotifications.sendNotification()})),C.eventEmitter.addListener("subcribedEvent",(function(t){E.sendChildEvent("subcribedEvent",[t])})),C.widgetStatus.subscribe((function(t){"popup"!==C.mode&&("embed"!==C.mode&&C.storageHandler.setSessionStorage(b+"_ws",t),E.sendChildEvent("widgetStatus",[t]))})),C.toggleSound.subscribe((function(t){C.storageHandler.setSessionStorage(b+"_sound",t)})),C.onlineStatus.subscribe((function(t){E.sendChildEvent("onlineStatus",[t])})),C.eventEmitter.addListener("screenshot",(function(t){d.makeScreenshot(C.staticJS.screenshot,t)})),C.eventEmitter.addListener("screenshare",(function(t){__webpack_require__.e(398).then(__webpack_require__.bind(__webpack_require__,7398)).then((function(e){e.screenShare.setParams(t||{},C,E)}))})),C.eventEmitter.addListener("location",(function(t){document.location=t})),C.eventEmitter.addListener("terminated",(function(t){C.terminated=!0,d.removeById(C.prefixLowercase+"_container_v2"),d.removeById(C.prefixLowercase+"_status_widget_v2")})),C.eventEmitter.addListener("showInvitation",(function(t){C.widgetDimesions.nextProperty("bottom_override",75),C.widgetDimesions.nextProperty("right_override",75),C.mainWidget.showInvitation()})),C.eventEmitter.addListener("hideInvitation",(function(t){C.mainWidget.hideInvitation(),t.full?(C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]),C.eventEmitter.emitEvent("fullInvitation",[t])):C.eventEmitter.emitEvent("cancelInvitation",[])})),C.eventEmitter.addListener("msgSnippet",(function(t){if("widget"==C.mode&&!1===C.widgetStatus.value){if(t.full_widget)return void C.eventEmitter.emitEvent("showWidget",[{sender:"closeButton"}]);"api"==C.position&&C.viewHandler&&C.viewHandler.show(),__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet?C.msgSnippet.showSnippet(t,!0):(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t)),C.eventEmitter.emitEvent("unread_message",[{otm:1}])}))}})),C.eventEmitter.addListener("unread_message",(function(t){t&&t.msg_body&&!C.msgSnippet&&__webpack_require__.e(213).then(__webpack_require__.bind(__webpack_require__,7213)).then((function(e){C.msgSnippet||(C.msgSnippet=new e.msgSnippetWidget(C.prefixLowercase),x.cont.elmDom.appendChild(C.msgSnippet.cont.constructUI(),!0),C.msgSnippet.init(C,t))}))})),C.originalTitle=document.title,C.blinkInterval=null,C.eventEmitter.addListener("unread_message_title",(function(t){clearInterval(C.blinkInterval),0==t.status?C.blinkInterval=setInterval((function(){document.title=Math.round((new Date).getTime()/1e3)%2?"💬 "+C.originalTitle:C.originalTitle}),1e3):(C.focused=!0,document.title=C.originalTitle)})),C.eventEmitter.addListener("widgetHeight",(function(e){if(e.reset_height)return C.widgetDimesions.nextProperty("height_override",null),C.widgetDimesions.nextProperty("bottom_override",null),C.widgetDimesions.nextProperty("right_override",null),void C.widgetDimesions.nextProperty("width_override",null);if(e.force_height||e.force_width||e.force_bottom||e.force_right)return e.force_height&&C.widgetDimesions.nextProperty("height_override",e.force_height),e.force_width&&C.widgetDimesions.nextProperty("width_override",e.force_width),e.force_right&&C.widgetDimesions.nextProperty("right_override",e.force_right),void(e.force_bottom&&C.widgetDimesions.nextProperty("bottom_override",e.force_bottom));if("widget"==C.mode&&0==C.isMobile){var i=document,n=i.documentElement,s=i.getElementsByTagName("body")[0],r=t.innerHeight||n.clientHeight||s.clientHeight;parseInt(e.height)>C.widgetDimesions.value.height&&r>parseInt(e.height)?C.widgetDimesions.nextProperty("height_override",parseInt(e.height)):C.widgetDimesions.value.height_override&&C.widgetDimesions.value.height_override>r&&C.widgetDimesions.nextProperty("height_override",null)}}));var P=!1;try{P="serviceWorker"in navigator}catch(t){}if(!0===P)try{navigator.serviceWorker.addEventListener("message",(function(t){try{void 0!==t.data.lhc_ch&&void 0!==t.data.lhc_cid&&(C.widgetStatus.next(!0),"popup"==C.mode?(C.userSession.setChatInformation({id:t.data.lhc_cid,hash:t.data.lhc_ch}),C.eventEmitter.emitEvent("unread_message")):(E.sendChildEvent("shownWidget",[{sender:"closeButton"}]),E.sendChildEvent("reopenNotification",[{id:t.data.lhc_cid,hash:t.data.lhc_ch}])))}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}))}catch(t){}var j=function(t){if(!0!==C.terminated&&"string"==typeof t.data&&!t.data.indexOf(C.prefixLowercase+"::")){var i=t.data.split("::");if(void 0!==t.origin){var n=t.origin.replace("http://","").replace("https://","").replace(/:(\d+)$/,"");if(n!==document.domain&&C.domain_lhc!==n&&"started"!==i[1]&&"isstarted"!==i[1])return}if("ready"==i[1]){E.sendReadyEvent("true"==i[2]),C.storageHandler.getSessionStorage(b+"_screenshare")&&C.eventEmitter.emitEvent("screenshare",[{auto_start:!0}]);var s=function(t){var e="focus"===t.type;C.focused=e,E.sendChildEvent("focus_changed",[{status:e}])};window.addEventListener("focus",s),window.addEventListener("blur",s),window.addEventListener("pageshow",s),window.addEventListener("pagehide",s),e.loaded=!0,E.sendChildEvent("ext_modules",[C.staticJS.ex_cb_js]),C.childExtCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg],"lhc_load_ext")})),C.childCommands.forEach((function(t){E.sendChildEvent(t.cmd,[t.arg])})),null!==C.react_attr&&C.react_attr.forEach((function(t){E.sendChildEvent("attr_set",[{type:"attr_set",attr:t.k,data:t.v}])}))}else"ready_popup"==i[1]?C.popupWidget.sendParameters(E):"isstarted"==i[1]?C.eventEmitter.emitEvent("terminated",[]):"started"==i[1]?C.hide_parent?C.eventEmitter.emitEvent("terminated",[]):t.source.postMessage("lhc::isstarted","*"):C.eventEmitter.emitEvent(i[1],JSON.parse(i[2]))}};window.addEventListener?window.addEventListener("message",j,!1):window.attachEvent?window.attachEvent("onmessage",j):document.attachEvent&&document.attachEvent("onmessage",j)},a=function(){!0!==e.ready&&(document.body&&(e.ready=!0),e.init=o,r.args.before_init&&r.args.before_init(e),r.args.manual_init||o())},u=__webpack_require__(593).U;a(),!e.ready||(u.listen(document,"DOMContentLoaded",(function(){a()}),"domloaded"),u.listen(document,"readystatechange",(function(){("complete"===document.readyState||"interactive"===document.readyState&&document.body)&&a()}),"domstatechange"),u.listen(t,"load",(function(){a()}),"windowload"))}.call(this,t["$_"+n],t[n+"_API"])}catch(t){if(!s)throw Error("lhc : "+t.message);s.log(t.message,"index.js",t.lineNumber||t.line,t.stack)}}}(window),this.LiveHelperChat=__webpack_exports__.LiveHelperChatDefault})(); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js.map b/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js.map index 0ee351453a..1f34f473d0 100644 --- a/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js.map +++ b/lhc_web/design/defaulttheme/widget/wrapper/dist/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","mappings":"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","sources":["webpack://LiveHelperChat/./node_modules/asap/browser-asap.js","webpack://LiveHelperChat/./node_modules/asap/browser-raw.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://LiveHelperChat/./src/lib/UIConstructorIframe.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://LiveHelperChat/./src/lib/UIConsturctor.js","webpack://LiveHelperChat/./src/lib/chatNotifications.js","webpack://LiveHelperChat/./src/lib/helperFunctions.js","webpack://LiveHelperChat/./src/lib/settings.js","webpack://LiveHelperChat/./src/lib/widgets/containerChat.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidget.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidgetPopup.js","webpack://LiveHelperChat/./src/lib/widgets/statusWidget.js","webpack://LiveHelperChat/./src/util/chatEventsHandler.js","webpack://LiveHelperChat/./src/util/domEventsHandler.js","webpack://LiveHelperChat/./src/util/monitoredVariable.js","webpack://LiveHelperChat/./src/util/storageHandler.js","webpack://LiveHelperChat/./src/util/userSession.js","webpack://LiveHelperChat/./node_modules/ismobilejs/esm/isMobile.js","webpack://LiveHelperChat/./node_modules/promise/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/core.js","webpack://LiveHelperChat/./node_modules/promise/lib/done.js","webpack://LiveHelperChat/./node_modules/promise/lib/es6-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/finally.js","webpack://LiveHelperChat/./node_modules/promise/lib/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/node-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/synchronous.js","webpack://LiveHelperChat/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://LiveHelperChat/webpack/bootstrap","webpack://LiveHelperChat/webpack/runtime/load script","webpack://LiveHelperChat/webpack/runtime/compat get default export","webpack://LiveHelperChat/webpack/runtime/define property getters","webpack://LiveHelperChat/webpack/runtime/ensure chunk","webpack://LiveHelperChat/webpack/runtime/get javascript chunk filename","webpack://LiveHelperChat/webpack/runtime/global","webpack://LiveHelperChat/webpack/runtime/hasOwnProperty shorthand","webpack://LiveHelperChat/webpack/runtime/make namespace object","webpack://LiveHelperChat/webpack/runtime/publicPath","webpack://LiveHelperChat/webpack/runtime/jsonp chunk loading","webpack://LiveHelperChat/./src/index.js"],"sourcesContent":["\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import {UIConsturctor} from './UIConsturctor';\nimport {helperFunctions} from './helperFunctions';\n\nexport class UIConstructorIframe extends UIConsturctor {\n\n constructor(elementId, style, attributes, tagname, documentRef) {\n super(elementId, style, attributes, tagname, documentRef);\n this.bodyId = '';\n }\n\n constructUIIframe(style, dir, cl, header) {\n\n if (typeof dir === 'undefined'){\n dir = 'ltr';\n }\n\n if (typeof cl === 'undefined'){\n cl = 'en';\n }\n\n if (typeof header === 'undefined'){\n header = '';\n }\n\n this.elmDomDoc = helperFunctions.getDocument(this.elmDom);\n if (this.elmDomDoc === null) return null;\n this.elmDomDoc.open();\n this.elmDomDoc.writeln(''+header+'');\n this.elmDomDoc.close();\n this.insertCssFile(style);\n this.insertContent();\n };\n\n insertContent () {\n this.elmDomDoc.body.innerHTML = this.tmpl\n };\n};\n\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {helperFunctions} from './helperFunctions';\nimport {settings} from './settings.js';\nimport {domEventsHandler} from '../util/domEventsHandler';\n\nexport class UIConsturctor {\n constructor(elementId, style, attributes, tagname, documentRef) {\n var f = this;\n this.elementId = elementId || \"\";\n this.style = style || \"\";\n this.tagName = tagname || \"div\";\n this.tmpl = \"\";\n this.elmDom = null;\n this.elmDomDoc = documentRef || document;\n this.attributes = {};\n this.classNames = [];\n\n this.elementId && (this.attributes.id = this.elementId);\n\n attributes && Object.keys(attributes).forEach(function (attr) {\n f.attributes[attr] = attributes[attr]\n })\n }\n\n constructUI(a) {\n this.elmDomDoc =\n a || this.elmDomDoc;\n this.elmDom = helperFunctions.initElement(this.elmDomDoc, this.tagName, this.attributes, this.style, this.tmpl);\n this.elmDom.className += this.classNames.join(\" \");\n return this.elmDom\n };\n\n restyle(attr, style) {\n style && (this.elmDom ? this.elmDom.style.cssText += \";\" + attr + \":\" + style : this.style += \";\" + attr + \":\" + style)\n };\n\n attachUserEventListener(a, c, d, k) {\n var e;\n if (e = d ? this.getElementById(d) : this.elmDom) d = a.split(\" \"), 1 < d.length ? d.forEach(function (a) {\n domEventsHandler.listen(e, a, c, a + k)\n }) : domEventsHandler.listen(e, a, c, k)\n };\n\n getElementById(a) {\n return this.elmDom ? this.elmDomDoc.getElementById(a) : null\n };\n\n hide() {\n this.restyle(\"display\", \"none !important\");\n }\n\n show() {\n this.restyle(\"display\", \"block !important\");\n }\n\n insertCssFile(style, reset) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = helperFunctions.initElement(this.elmDomDoc, \"style\", {type: \"text/css\"}),\n f = this.elmDomDoc.createTextNode(reset ? style : settings.ResetStyle + \"\" + style);\n k.appendChild(e);\n d.appendChild(k);\n e.styleSheet ? e.styleSheet.cssText = f.nodeValue : e.appendChild(f)\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = this.elmDomDoc.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n insertJSFile(src, async, loadcb, attr) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('script');\n\n e.type = 'text/javascript';\n if (typeof async === 'undefined' || async === true) {\n e.async = true;\n }\n\n e.crossOrigin = \"*\";\n e.src = src;\n\n if (loadcb) {\n e.onload = loadcb;\n }\n\n if (attr) {\n Object.keys(attr).forEach(key => {\n e.setAttribute(key,attr[key]);\n })\n }\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n massRestyle(a) {\n for (var b in a) a.hasOwnProperty(b) && this.restyle(b, a[b])\n }\n};\n\n","\nclass _chatNotifications {\n constructor() {\n this.isNotificationsSubscribed = false;\n this.applicationServerPublicKey = null;\n this.eventEmitter = null;\n }\n\n setPublicKey(publicKey, eventEmitter) {\n this.applicationServerPublicKey = publicKey\n this.eventEmitter = eventEmitter\n }\n\n sendNotification() {\n\n var that = this;\n var applicationServerPublicKey = this.applicationServerPublicKey;\n\n var swRegistration = null;\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n\n // Let's check if the browser supports notifications\n if (!(\"Notification\" in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n // Let's check whether notification permissions have already been granted\n else if (Notification.permission === \"granted\") {\n // If it's okay let's create a notification\n //\n }\n // Otherwise, we need to ask the user for permission\n else if (Notification.permission !== \"denied\") {\n Notification.requestPermission(function (permission) {\n // If the user accepts, let's create a notification\n if (permission !== \"granted\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n });\n } else if (Notification.permission === \"denied\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n\n function urlB64ToUint8Array(base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n }\n\n function updateSubscriptionOnServer(subscription, subscribe) {\n if (subscription === null) {\n return;\n }\n\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n var contentEncoding = (PushManager.supportedContentEncodings || ['aesgcm'])[0];\n\n var payload = JSON.stringify({\n endpoint: subscription.endpoint,\n publicKey: key ? btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n authToken: token ? btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null,\n contentEncoding : contentEncoding\n });\n\n that.eventEmitter.emitEvent('subcribedEvent', [{'payload' : payload}]);\n }\n\n var that = this;\n\n function subscribeUser() {\n var applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);\n swRegistration.pushManager.subscribe({\n 'userVisibleOnly': true,\n 'applicationServerKey': applicationServerKey\n }).then(function(subscription) {\n updateSubscriptionOnServer(subscription, true);\n that.isNotificationsSubscribed = true;\n });\n }\n\n function unsubscribeUser() {\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n if (subscription) {\n updateSubscriptionOnServer(subscription,false);\n return subscription.unsubscribe();\n }\n }).then(function() {\n alert('You have unsubscribed!');\n that.isNotificationsSubscribed = false;\n });\n }\n\n function initializeUI() {\n // Set the initial subscription value\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n that.isNotificationsSubscribed = !(subscription === null);\n if (that.isNotificationsSubscribed) {\n subscribeUser();\n } else {\n subscribeUser();\n }\n });\n }\n\n // At last, if the user has denied notifications, and you\n // want to be respectful there is no need to bother them any more.\n navigator.serviceWorker.register('/sw.lhc.js?v=2').then(function(swReg) {\n swRegistration = swReg;\n initializeUI();\n });\n\n }\n\n};\n\nconst chatNotifications = new _chatNotifications();\nexport { chatNotifications };","\nclass _helperFunctions {\n constructor() {\n }\n\n initElement(a, c, b, k, s) {\n var e;\n a = a.createElement(c);\n b = b || {};\n for (e in b) a[e] = b[e];\n s && \"iframe\" !== c && (a.innerHTML = s);\n k && (a.style.cssText = k);\n return a\n };\n \n getDocument(a) {\n return a.contentWindow ? a.contentWindow.document : a.contentDocument ? a.contentDocument : a.document ? a.document : null\n };\n\n removeById(EId)\n {\n var EObj = null;\n return(EObj = document.getElementById(EId)) ? EObj.parentNode.removeChild(EObj) : false;\n }\n\n // Returns time zone offset\n getTzOffset() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n Date.prototype.stdTimezoneOffset = function() {\n var jan = new Date(this.getFullYear(), 0, 1);\n var jul = new Date(this.getFullYear(), 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n };\n\n Date.prototype.dst = function() {\n return this.getTimezoneOffset() < this.stdTimezoneOffset();\n };\n\n var today = new Date();\n var timeZoneOffset = 0;\n\n if (today.dst()) {\n timeZoneOffset = today.getTimezoneOffset();\n } else {\n timeZoneOffset = today.getTimezoneOffset()-60;\n };\n\n return (timeZoneOffset/60)*-1;\n }\n };\n\n getAbstractStyle(params) {\n return [\n \"outline: \" + (params.outline ? params.outline : \"none\") + \" !important; \",\n \"visibility: \" + (params.visibility ? params.visibility : \"visible\") + \" !important; \",\n \"resize: \" + (params.resize ? params.resize : \"none\") + \" !important; \",\n \"box-shadow: \" + (params.boxshadow ? params.boxshadow : \"none\") + \" ; \",\n \"overflow: \" + (params.overflow ? params.overflow : \"visible\") + \" ; \",\n \"background : \" + (params.background ? params.background : \"none\") + \" !important; \",\n \"opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"filter : alpha(opacity=\" + (params.opacity ? 100 * params.opacity : \"100\") + \") !important; \",\n \"-ms-filter : progid:DXImageTransform.Microsoft.Alpha(Opacity\" + (params.opacity ? params.opacity : \"1\") + \") !important; \",\n \"-moz-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"-khtml-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"top : \" + (params.top ? params.top : \"auto\") + \"; \",\n \"right : \" + (params.right ? params.right : \"auto\") + \"; \",\n \"bottom : \" + (params.bottom ? params.bottom : \"auto\") + \"; \",\n \"left : \" + (params.left ? params.left : \"auto\") + \"; \",\n \"position : \" + (params.position ? params.position : \"absolute\") + \" !important; \",\n \"border : \" + (params.border ? params.border : \"0\") + \" !important; \",\n \"min-height : \" + (params.minheight ? params.minheight : \"auto\") + \"; \",\n \"min-width : \" + (params.minwidth ? params.minwidth : \"auto\") + \"; \",\n \"max-height : \" + (params.maxheight ? params.maxheight : \"none\") + \"; \",\n \"max-width : \" + (params.maxwidth ? params.maxwidth : \"none\") + \"; \",\n \"padding : \" + (params.padding ? params.padding : \"0\") + \" !important; \",\n \"margin : \" + (params.margin ? params.margin : \"0\") + \" !important; \",\n \"-moz-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-webkit-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-o-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-webkit-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-ms-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"width : \" + (params.width ? params.width : \"auto\") + \" ; \",\n \"height : \" + (params.height ? params.height : \"auto\") + \" ; \",\n \"display : \" + (params.display ? params.display : \"block\") + \" !important; \",\n \"z-index : \" + (params.zindex ? params.zindex : \"none\") + \" ; \",\n \"background-color : \" + (params.backgroundcolor ? params.backgroundcolor : \"transparent\") + \" !important; \",\n \"cursor : \" + (params.cursor ? params.cursor : \"auto\") + \" !important; \",\n \"float : \" + (params[\"float\"] ? params[\"float\"] : \"none\") + \" !important; \",\n \"border-radius : \" + (params.borderRadius ? params.borderRadius : \"unset\") + \"; \"].join(\"\").replace(/\\s/gm, \"\")\n };\n\n hasClass(element, className) {\n if (element === null) return;\n return element.classList ? element.classList.contains(className) : !!element.className.match(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"))\n }\n\n addClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.add(className) : this.hasClass(element, className) || (element.className += \" \" + className)\n }\n\n removeClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.remove(className) : this.hasClass(element, className) && (element.className = element.className.replace(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"), \" \"))\n }\n\n makeScreenshot(screenshot,url) {\n var inst = this;\n if (typeof html2canvas == \"undefined\") {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src',screenshot);\n th.appendChild(s);\n\n s.onreadystatechange = s.onload = () => {\n this.makeScreenshot(screenshot, url);\n };\n } else {\n try {\n html2canvas(document.body, {\n onrendered: function(canvas) {\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", url, true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( canvas.toDataURL() ) );\n }\n });\n } catch(err) {\n\n }\n }\n }\n\n makeQuery(params)\n {\n var item, pairs = [];\n for (item in params) {\n if (params[item] != '' && params[item] != null) {\n params.hasOwnProperty(item) && pairs.push(encodeURIComponent(item) + \"=\" + encodeURIComponent(params[item]));\n }\n }\n return pairs.join(\"&\")\n }\n \n makeRequest(url, params, callback) {\n var request = new XMLHttpRequest;\n var urlRequest = url + '?' + this.makeQuery(params.params);\n request.open(\"GET\",urlRequest, true);\n request.onreadystatechange = function () {\n if (4 == request.readyState && request.status != 0) {\n try {\n callback(JSON.parse(request.responseText));\n } catch (e) {\n e.message += \"\\n\" + urlRequest + \"\\n\" + \"[\"+request.status+\"]\\n\" + request.responseText;\n throw e;\n }\n }\n };\n request.send();\n return {type: \"xhr\", req: request}\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = document.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = document.getElementsByTagName(\"head\")[0],\n k = document.createDocumentFragment(),\n e = document.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n};\n\nconst helperFunctions = new _helperFunctions();\nexport { helperFunctions };","var settings = {};\n\nsettings.ResetStyle = \"html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}html,body{height: 100% !important;\\n\" +\n \" min-height: 100% !important;\\n\" +\n \" max-height: 100% !important;\\n\" +\n \" width: 100% !important;\\n\" +\n \" min-width: 100% !important;\\n\" +\n \" max-width: 100% !important;}body{display: flex;flex-direction: column;background:transparent;font:13px Helvetica,Arial,sans-serif;position:relative}.clear{clear:both}.clearfix:after{content:'';display:block;height:0;clear:both;visibility:hidden}\";\n\nexport {settings};","import {UIConsturctor} from '../UIConsturctor';\n\nexport class containerChat{\n constructor(prefix, pnode) {\n this.cont = new UIConsturctor((prefix || 'lhc')+'_container_v2', \"border: 0 none !important; padding: 0 !important; margin: 0 !important; z-index: 999999999 !important; overflow : visible !important; min-width: 0 !important; min-height: 0 !important; max-width: none !important; max-height: none !important; width : auto !important; height : auto !important;\");\n this.cont.constructUI();\n (!!pnode && document.getElementById(pnode).appendChild(this.cont.elmDom)) || document.body.appendChild(this.cont.elmDom);\n }\n}","import {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class mainWidget{\n constructor(prefix) {\n\n this.attributes = {};\n\n this.width = '350';\n this.height = '520';\n this.bottom = '30';\n this.right = '30';\n this.units = 'px';\n this.originalCSS = '';\n this.bottom_override = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.isLoaded = false;\n\n this.loadStatus = {main: false, css: false};\n }\n\n resize() {\n\n let restyleStyle = {\n height: this.height + this.units,\n \"min-height\": this.height + this.units,\n \"max-height\": this.height + this.units,\n width: this.width + this.units,\n \"min-width\": this.width + this.units,\n \"max-width\": this.width + this.units,\n bottom: (this.units == 'px' ? this.bottom + \"px\" : '0px')\n };\n\n if ((this.attributes.position_placement == 'middle_right' || this.attributes.position_placement == 'middle_left') && this.bottom_override == true) {\n restyleStyle['bottom'] = \"calc(50% + 20px)\";\n }\n\n if (this.attributes.position_placement == 'middle_left' || this.attributes.position_placement == 'bottom_left' || this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n } else {\n restyleStyle['right'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n }\n\n if ((this.attributes.position_placement == 'full_height_right' || this.attributes.position_placement == 'full_height_left') && !this.bottom_override) {\n restyleStyle['min-height'] = '100%';\n restyleStyle['max-height'] = '100%';\n restyleStyle['height'] = '100%';\n restyleStyle['bottom'] = '0px';\n\n if (this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = '0px';\n } else {\n restyleStyle['right'] = '0px';\n }\n }\n\n if (this.attributes.mode == 'embed') {\n restyleStyle[\"max-width\"] = '100%';\n restyleStyle[\"min-width\"] = '100%';\n restyleStyle[\"width\"] = '100%';\n restyleStyle[\"position\"] = (this.attributes.fscreen ? 'fixed' : 'relative') + '!important';\n restyleStyle[\"bottom\"] = 'auto';\n restyleStyle[\"right\"] = 'auto';\n }\n\n this.cont.massRestyle(restyleStyle);\n }\n\n checkLoadStatus() {\n if (this.loadStatus['main'] == true && this.loadStatus['css'] == true ) {\n this.attributes.wloaded.next(true);\n }\n }\n\n makeContent() {\n this.cont.bodyId = 'chat-widget';\n\n this.cont.tmpl = '
';\n\n if (this.cont.constructUIIframe('', this.attributes.staticJS['dir'], this.attributes.staticJS['cl'], this.attributes.hhtml) === null) {\n this.isLoaded = true;\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile lhc-mode-'+this.attributes.mode : 'lhc-desktop lhc-mode-'+this.attributes.mode;\n\n if (this.attributes.cont_ss) {\n this.originalCSS = this.cont.elmDom.style.cssText;\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n init(attributes, lazyLoad) {\n\n this.attributes = attributes;\n\n if (this.makeContent() === null) {\n return null;\n };\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (chatParams['id'] || !lazyLoad) {\n this.bootstrap();\n }\n \n this.toggleVisibilityWrap = (data) => {\n this.toggleVisibility(data);\n };\n\n attributes.widgetStatus.subscribe(this.toggleVisibilityWrap);\n\n this.monitorDimensionsWrap = (data) => {\n this.monitorDimensions(data);\n };\n\n attributes.widgetDimesions.subscribe(this.monitorDimensionsWrap);\n\n attributes.eventEmitter.addListener('reloadWidget',() => {\n this.isLoaded = false;\n this.makeContent();\n attributes.eventEmitter.emitEvent('widgetHeight',[{'reset_height' : true}]);\n this.toggleVisibility(attributes.widgetStatus.valueInternal);\n });\n\n }\n\n bootstrap() {\n\n if (this.isLoaded === true) {\n return ;\n }\n\n this.isLoaded = true;\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({rel:\"stylesheet\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/theme/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n }\n\n this.cont.insertCssRemoteFile({onload: () => {\n this.loadStatus['css'] = true;\n this.checkLoadStatus();\n },crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_css']}, true);\n\n if (this.attributes.isMobile == true && this.attributes.mode == 'widget') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_mobile_css']});\n }\n\n if (this.attributes.mode == 'embed') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['embed_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n }\n\n this.cont.insertJSFile(this.attributes.staticJS['vendor'], false, () => {\n this.cont.insertJSFile(this.attributes.staticJS['app'], false, () => {\n this.loadStatus['main'] = true;\n this.checkLoadStatus();\n }, {'scope': this.attributes.prefixLowercase});\n }, {'scope': this.attributes.prefixLowercase});\n\n if (this.attributes.staticJS['ex_js'] && this.attributes.staticJS['ex_js'].length > 0) {\n this.attributes.staticJS['ex_js'].forEach((item) => {\n this.cont.insertJSFile(item, false);\n });\n }\n }\n\n toggleVisibility(data) {\n data == false ? this.hide() : this.show();\n }\n\n monitorDimensions(data) {\n this.width = data.width_override || data.width;\n this.height = data.height_override || data.height;\n this.bottom = data.bottom_override ? (data.bottom_override + (data.wbottom ? data.wbottom : 0)) : (30 + (this.attributes.clinst === true ? 70 : 0) + (data.wbottom ? data.wbottom : 0));\n this.right = data.right_override ? (data.right_override + (data.wright_inv ? data.wright_inv : 0)) : (30 + (data.wright ? data.wright : 0));\n this.units = (data.width_override || data.height_override || data.bottom_override || data.right_override) ? 'px' : data.units;\n this.resize();\n\n this.bottom_override = !!data.bottom_override;\n }\n\n hide () {\n this.cont.hide();\n }\n\n hideInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n showInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText = this.originalCSS;\n }\n this.show();\n }\n\n show () {\n if (this.isLoaded === false) {\n this.bootstrap();\n }\n this.cont.show();\n }\n}","export class mainWidgetPopup {\n constructor() {\n\n this.attributes = {};\n\n this.width = null;\n this.height = null;\n this.units = 'px';\n this.freeup();\n }\n\n freeup() {\n this.cont = {};\n }\n\n parseOptions() {\n var argumentsQuery = new Array();\n var paramsReturn = '';\n if (typeof this.attributes != 'undefined') {\n if (typeof this.attributes.LHCChatOptions.attr != 'undefined') {\n if (this.attributes.LHCChatOptions.attr.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr) {\n if (typeof this.attributes.LHCChatOptions.attr[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr[index].type != 'undefined') {\n argumentsQuery.push('name[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].name) + '&encattr[]=' + (typeof this.attributes.LHCChatOptions.attr[index].encrypted != 'undefined' && this.attributes.LHCChatOptions.attr[index].encrypted == true ? 't' : 'f') + '&value[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].value) + '&type[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].type) + '&size[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].size) + '&req[]=' + (typeof this.attributes.LHCChatOptions.attr[index].req != 'undefined' && this.attributes.LHCChatOptions.attr[index].req == true ? 't' : 'f') + '&sh[]=' + ((typeof this.attributes.LHCChatOptions.attr[index].show != 'undefined' && (this.attributes.LHCChatOptions.attr[index].show == 'on' || this.attributes.LHCChatOptions.attr[index].show == 'off')) ? this.attributes.LHCChatOptions.attr[index].show : 'b'));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr_prefill[index].name != 'undefined') {\n argumentsQuery.push('prefill[' + this.attributes.LHCChatOptions.attr_prefill[index].name + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[index].value));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill_admin.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill_admin) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin[index] != 'undefined') {\n argumentsQuery.push('value_items_admin[' + this.attributes.LHCChatOptions.attr_prefill_admin[index].index + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[index].value));\n }\n }\n }\n }\n\n if (argumentsQuery.length > 0) {\n paramsReturn = '&' + argumentsQuery.join('&');\n }\n }\n\n return paramsReturn;\n }\n\n init(attributes, chatEvents, paramsPopup) {\n\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n this.cont.elementReferrerPopup.focus();\n } else {\n\n this.attributes = attributes;\n\n let attr = {\n 'static_chat': this.attributes['userSession'].getSessionAttributes()\n };\n\n let urlArgumetns = '';\n\n if (attr['static_chat']['id'] && attr['static_chat']['hash']) {\n urlArgumetns = urlArgumetns + \"/(id)/\" + attr['static_chat']['id'] + \"/(hash)/\" + attr['static_chat']['hash'];\n }\n\n if (this.attributes['theme'] !== null) {\n urlArgumetns = urlArgumetns + \"/(theme)/\" + this.attributes['theme'];\n }\n\n if (attr['static_chat']['vid'] !== null && this.attributes.storageHandler.cookieEnabled === true) {\n urlArgumetns = urlArgumetns + \"/(vid)/\" + attr['static_chat']['vid'];\n }\n\n if (this.attributes['isMobile']) {\n urlArgumetns = urlArgumetns + \"/(mobile)/true\";\n }\n\n if (this.attributes['department'].length > 0) {\n urlArgumetns = urlArgumetns + \"/(department)/\" + this.attributes['department'].join('/');\n }\n\n if (this.attributes['identifier'] != '') {\n urlArgumetns = urlArgumetns + \"/(identifier)/\" + this.attributes['identifier'];\n }\n\n if (this.attributes['operator']) {\n urlArgumetns = urlArgumetns + \"/(operator)/\" + this.attributes['operator'];\n }\n\n if (this.attributes['survey']) {\n urlArgumetns = urlArgumetns + \"/(survey)/\" + this.attributes['survey'];\n }\n\n if (this.attributes['bot_id']) {\n urlArgumetns = urlArgumetns + \"/(bot)/\" + this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id']) {\n urlArgumetns = urlArgumetns + \"/(trigger)/\" + this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority']) {\n urlArgumetns = urlArgumetns + \"/(priority)/\" + this.attributes['priority'];\n }\n\n if (this.attributes['prefixLowercase'] != 'lhc') {\n urlArgumetns = urlArgumetns + \"/(scope)/\" + this.attributes['prefixLowercase'];\n }\n\n urlArgumetns = urlArgumetns + \"/(sound)/\" + (this.attributes.toggleSound.value == true ? 1 : 0);\n\n if (this.attributes['proactive']['invitation']) {\n urlArgumetns = urlArgumetns + \"/(inv)/\" + this.attributes['proactive']['invitation'];\n if (this.attributes['mode'] == 'popup') {\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_invt', 1);\n }\n }\n\n var fontSize = this.attributes.storageHandler.getLocalStorage(this.attributes['prefixStorage']+'_dfs');\n\n if (fontSize) {\n urlArgumetns = urlArgumetns + \"/(fs)/\" + parseInt(fontSize);\n }\n\n if (this.attributes['leaveMessage'] === true) {\n urlArgumetns = urlArgumetns + \"/(leaveamessage)/true\";\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null && this.attributes['userSession'].getSessionReferrer() != '') {\n urlArgumetns = urlArgumetns + '?ses_ref=' + this.attributes['userSession'].getSessionReferrer() + this.parseOptions();\n } else {\n urlArgumetns = urlArgumetns + '?' + this.parseOptions();\n }\n\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - parseInt(this.attributes['popupDimesnions']['pwidth'])) / 2 / systemZoom + dualScreenLeft;\n const top = (height - parseInt(this.attributes['popupDimesnions']['pheight'])) / 2 / systemZoom + dualScreenTop;\n\n var paramsWindow = \"scrollbars=yes,menubar=1,resizable=1,width=\" + this.attributes['popupDimesnions']['pwidth'] + \",height=\" + this.attributes['popupDimesnions']['pheight'] + \",top=\" + top + \",left=\" + left;\n var newWin = window.open(\"\", this.attributes['prefixStorage'] + '_popup_v2', paramsWindow);\n var needWindow = false;\n var windowCreated = false;\n\n // First try to find any existing window\n try {\n // It has to be new window or popup was blocked\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined' || newWin.location.href === \"about:blank\") {\n newWin = this.cont.elementReferrerPopup = window.open(this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns, this.attributes['prefixStorage']+'_popup_v2', paramsWindow);\n windowCreated = true;\n } else {\n needWindow = true;\n }\n } catch (e) { // We get cross-origin error only if window exist and it's location is other one than about:blank\n needWindow = true;\n }\n\n // Now if visitor has blocked popup change chat status link and just allow browser handle the rest.\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined') {\n try {\n this.attributes.viewHandler.cont.getElementById(\"status-icon\").href = this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns;\n } catch (e) {\n alert('You have disabled popups!');\n }\n } else if (windowCreated == true) {\n typeof chatEvents !== 'undefined' && this.attributes.kcw === false && chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n } else if (needWindow === true) {\n this.cont.elementReferrerPopup = newWin;\n newWin.focus();\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n }\n }\n }\n\n sendParameters(chatEvents) {\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n var js_vars = this.attributes['jsVars'].value;\n var js_args = {};\n var currentVar = null;\n for (var index in js_vars) {\n try {\n currentVar = eval(js_vars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[js_vars[index].id] = currentVar;\n }\n } catch (err) {\n\n }\n }\n chatEvents.sendChildEvent('jsVars', [js_args]);\n }\n }\n}","import {settings} from '../settings.js';\nimport {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class statusWidget{\n constructor(prefix) {\n\n this.attributes = {};\n this.controlMode = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_status_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.loadStatus = {main : false, theme: false, font: true, widget : false, shidden: false};\n this.lload = false;\n this.unread_counter = 0;\n }\n\n toggleOfflineIcon(onlineStatus) {\n var icon = this.cont.getElementById(\"status-icon\");\n\n if (onlineStatus) {\n if (!this.attributes.leaveMessage) {\n this.show();\n }\n helperFunctions.removeClass(icon, \"offline-status\");\n } else {\n if (!this.attributes.leaveMessage) {\n this.hide();\n } else {\n helperFunctions.addClass(icon, \"offline-status\");\n }\n }\n }\n\n checkLoadStatus() {\n if (this.loadStatus['theme'] == true && this.loadStatus['main'] == true && this.loadStatus['font'] == true && this.loadStatus['widget'] == true && this.loadStatus['shidden'] == false) {\n this.cont.getElementById('lhc_status_container').style.display = \"\";\n this.attributes.sload.next(true);\n }\n }\n\n init(attributes, lload) {\n\n this.attributes = attributes;\n\n var placement = {bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n\n if (attributes.position_placement == 'bottom_left' || attributes.position_placement == 'full_height_left') {\n placement = { bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_right') {\n placement = {bottom: \"calc(50% - 45px)\",right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_left') {\n placement = {bottom: \"calc(50% - 45px)\",left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n }\n\n this.cont.massRestyle(placement);\n\n this.cont.tmpl = '
!
';\n\n if (this.cont.constructUIIframe('') === null) {\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile' : 'lhc-desktop';\n\n var _inst = this;\n\n this.lload = !(!lload);\n\n // If it's lazy load we have always to consider widget as loaded\n if (this.lload === true) {\n this.loadStatus['widget'] = true;\n } else {\n // We wait untill widget content loads\n attributes.wloaded.subscribe((data) => { if (data){this.loadStatus['widget'] = true; this.checkLoadStatus()}});\n }\n\n attributes.shidden.subscribe((data) => {\n if (data) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (!chatParams['id'] && this.attributes.widgetStatus.value != true) {\n this.loadStatus['shidden'] = true;\n this.hide();\n }\n } else {\n this.loadStatus['shidden'] = false;\n this.checkLoadStatus();\n this.show();\n }\n });\n\n this.cont.attachUserEventListener(\"click\", function (e) {\n\n attributes.onlineStatus.value === false && attributes.eventEmitter.emitEvent('offlineClickAction');\n\n if (attributes.onlineStatus.value === false && attributes.offline_redirect !== null){\n document.location = attributes.offline_redirect;\n e.preventDefault();\n } else {\n if (_inst.controlMode == true) {\n attributes.eventEmitter.emitEvent('closeWidget', [{'sender' : 'closeButton'}]);\n e.preventDefault();\n } else {\n attributes.eventEmitter.emitEvent('showWidget', [{'event':e}]);\n attributes.eventEmitter.emitEvent('clickAction');\n }\n }\n\n }, \"lhc_status_container\", \"minifiedclick\");\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.staticJS['font_status']) {\n this.cont.insertCssRemoteFile({onload: () => {this.loadStatus['font'] = true; this.checkLoadStatus()},\"as\":\"font\", rel:\"preload\", type: \"font/woff\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['font_status']});\n }\n\n if (this.attributes.theme > 0) {\n this.loadStatus['theme'] = false;\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['theme'] = true; this.checkLoadStatus()}, id: \"lhc-theme-status\", crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n } else {\n this.loadStatus['theme'] = true;\n }\n\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['main'] = true; this.checkLoadStatus()}, crossOrigin : \"anonymous\", href : this.attributes.staticJS['status_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n\n attributes.onlineStatus.subscribe((data) => this.toggleOfflineIcon(data));\n\n attributes.widgetStatus.subscribe((data) => {\n if (this.attributes.mode !== 'popup') {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n (data == true || (!this.attributes.leaveMessage && this.attributes.onlineStatus.value == false && !chatParams['id'])) ? this.hide() : this.show();\n }\n });\n\n this.attributes.mode === 'popup' && this.show();\n let unreadMessagesNumber = attributes.storageHandler.getSessionStorage(this.attributes['prefixStorage']+'_unr');\n\n attributes.eventEmitter.addListener('unread_message', (data) => {\n var unreadTotal = (data && data.otm);\n if (unreadTotal) {\n unreadTotal = parseInt(unreadTotal);\n unreadTotal += this.unread_counter;\n }\n this.attributes.unread_counter.next(unreadTotal);\n this.showUnreadIndicator(unreadTotal);\n });\n\n if (unreadMessagesNumber !== null) {\n attributes.eventEmitter.emitEvent('unread_message',[{otm:unreadMessagesNumber, init: true}]);\n if (unreadMessagesNumber !== null && !isNaN(unreadMessagesNumber)) {\n this.unread_counter = parseInt(unreadMessagesNumber);\n }\n }\n\n // Widget reload was called\n // We avoid cache by using timestamp because we do not call init call.\n // We also always insert themepage even if there is no css in it.\n attributes.eventEmitter.addListener('reloadWidget',() => {\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-status\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + Date.now()}, true);\n }\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + Date.now()});\n });\n }\n\n hide () {\n\n this.removeUnreadIndicator();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (this.attributes.leaveMessage == true || this.attributes.onlineStatus.value == true || chatParams['id']) {\n\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && ((chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true))) {\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n }\n }\n\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true) {\n if (this.attributes.widgetStatus.value == true){\n this.controlMode = true;\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.addClass(icon, \"close-status\");\n }\n return ;\n }\n\n }\n }\n\n this.cont.hide();\n }\n\n showUnreadIndicator(number){\n var iconText = number || '!';\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.addClass(icon, \"has-uread-message\");\n\n var iconValue = this.cont.getElementById(\"unread-msg-number\");\n if (iconValue) {\n iconValue.innerText = iconText;\n }\n\n if (this.attributes.storageHandler)\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_unr',iconText);\n }\n\n removeUnreadIndicator() {\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.removeClass(icon, \"has-uread-message\");\n if (this.attributes.storageHandler) {\n this.attributes.storageHandler.removeSessionStorage(this.attributes['prefixStorage']+'_unr');\n }\n this.attributes.eventEmitter.emitEvent('remove_unread_indicator', []);\n this.attributes.unread_counter.next(0);\n this.unread_counter = 0;\n }\n\n show () {\n\n if (this.attributes.hideOffline === false) {\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n if (this.attributes.widgetStatus.value != true) {\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.removeClass(icon, \"close-status\");\n this.controlMode = false;\n }\n }\n\n // show status icon only if we are not in api mode or chat is going now\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n } else if (this.attributes.clinst === true) {\n if (this.attributes.widgetStatus.value != true) {\n this.cont.hide();\n }\n }\n\n } else {\n this.cont.hide();\n }\n }\n}","\nclass chatEventsHandler {\n\n constructor(attr) {\n this.attributes = attr\n }\n\n getJSVarsValues(jsVars) {\n var js_args = {};\n\n if (jsVars.length > 0) {\n\n var currentVar = null;\n\n for (var index in jsVars) {\n try {\n currentVar = eval('window.'+jsVars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[jsVars[index].id] = currentVar;\n }\n } catch(err) {\n }\n }\n return js_args;\n }\n\n return js_args;\n }\n\n getInitAttributes() {\n let attr = {\n 'onlineStatus' : this.attributes['onlineStatus'].value,\n 'toggleSound' : this.attributes['toggleSound'].value,\n 'widgetStatus' : this.attributes['widgetStatus'].value,\n 'jsVars' : this.getJSVarsValues(this.attributes['jsVars'].value),\n 'isMobile' : this.attributes['isMobile'],\n 'department' : this.attributes['department'],\n 'product' : this.attributes['product'],\n 'theme' : this.attributes['theme'],\n 'base_url' : this.attributes['base_url'],\n 'mode' : this.attributes['mode'],\n 'captcha' : this.attributes['captcha'],\n 'staticJS' : this.attributes['staticJS'],\n 'static_chat' : this.attributes['userSession'].getSessionAttributes(),\n 'domain_lhc': this.attributes['domain_lhc'],\n 'leave_message': this.attributes['leaveMessage'],\n 'scope_prefix': this.attributes['prefixLowercase']\n };\n\n if (this.attributes['fresh'] == true) {\n if (attr['static_chat']['id']) {\n delete attr['static_chat']['id'];\n }\n\n if (attr['static_chat']['hash']) {\n delete attr['static_chat']['hash'];\n }\n }\n\n if (this.attributes['bot_id'] != '') {\n attr['bot_id'] = this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id'] != '') {\n attr['trigger_id'] = this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority'] != '') {\n attr['priority'] = this.attributes['priority'];\n }\n \n if (this.attributes['phash'] !== null) {\n attr['phash'] = this.attributes['phash'];\n }\n\n if (this.attributes['survey'] !== null) {\n attr['survey'] = this.attributes['survey'];\n }\n\n if (this.attributes['pvhash'] !== null) {\n attr['pvhash'] = this.attributes['pvhash'];\n }\n\n if (this.attributes['operator'] !== null) {\n attr['operator'] = this.attributes['operator'];\n }\n\n if (this.attributes['profile_pic'] !== null) {\n attr['profile_pic'] = this.attributes['profile_pic'];\n }\n\n if (this.attributes['lang'] != '') {\n attr['lang'] = this.attributes['lang'];\n }\n\n if (this.attributes['proactive']['invitation']) {\n attr['proactive'] = this.attributes['proactive'];\n }\n\n if (this.attributes['dep_default'] !== null) {\n attr['dep_default'] = this.attributes['dep_default'];\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr) {\n var prefillOptions = this.attributes.LHCChatOptions.attr;\n let fieldsCustom = [];\n prefillOptions.forEach((item, index) => {\n fieldsCustom.push({show : (((typeof item.show != 'undefined' && (item.show == 'on' || item.show == 'off')) ? item.show : 'b')), value : item.value, index : index, name : item.name, \"class\": \"form-control form-control-sm\", 'type' : item.type, 'identifier': ('additional_' + index), 'placeholder' : '', 'width' : (item.size || 6), 'encrypted': (item.encrypted || false), 'required' : (item.req || false), 'label' : item.name});\n });\n\n attr['CUSTOM_FIELDS'] = fieldsCustom;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n if (item.name == 'email') {\n prefilOptionsList.push({'Email' : item.value});\n } else if (item.name == 'username') {\n prefilOptionsList.push({'Username' : item.value});\n } else if (item.name == 'phone') {\n prefilOptionsList.push({'Phone' : item.value});\n } else if (item.name == 'question') {\n prefilOptionsList.push({'Question' : item.value});\n }\n })\n attr['attr_prefill'] = prefilOptionsList;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill_admin) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill_admin;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n prefilOptionsList.push({'value' : item.value, 'index' : item.index});\n })\n attr['attr_prefill_admin'] = prefilOptionsList;\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null) {\n attr['ses_ref'] = this.attributes['userSession'].getSessionReferrer()\n }\n\n return attr;\n }\n\n sendChildCommand(command) {\n if (this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(command, '/');\n }\n\n if (this.attributes.popupWidget.cont.elementReferrerPopup && this.attributes.popupWidget.cont.elementReferrerPopup.closed === false)\n {\n this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(command, '*');\n }\n }\n\n sendReadyEvent (popup) {\n\n let args = this.getInitAttributes();\n\n if (!(popup === true) && this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage('lhc_init:' + JSON.stringify(args), '/');\n }\n }\n\n sendChildEvent(event, args, type) {\n if (typeof type === 'undefined') {\n type = 'lhc_event';\n }\n this.sendChildCommand(type+':'+event + '::' + JSON.stringify(args));\n }\n}\n\nexport { chatEventsHandler };","\nclass _domEventsHandler {\n constructor() {\n this.events = {}\n }\n\n attachEvent (object, event, callback) {\n var k = this, dispatch = function (b) {\n callback.call(object, k.getEvent(b))\n };\n object.attachEvent(\"on\" + event, dispatch);\n return dispatch\n };\n\n unlisten(eventName) {\n var presentEvent;\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n }\n\n listen(object, event, callback, eventName) {\n var presentEvent;\n if (eventName) {\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n\n if (object.addEventListener) {\n object.addEventListener(event, callback, !1);\n } else if (document.attachEvent) {\n callback = this.attachEvent(object, event, callback);\n } else {\n return null;\n }\n\n this.events[eventName] = {element: object, eventName: event, eventListener: callback};\n\n return callback\n }\n };\n\n removeEventHandler(object, event, listener) {\n document.removeEventListener ? object.removeEventListener(event, listener, !1) : object.detachEvent(\"on\" + event, listener)\n };\n\n getEvent(event) {\n var eventInstance = event || _this.event;\n if (!eventInstance) {\n for (event = this.getEvent.caller; event && (!(eventInstance = event.arguments[0]) || Event != eventInstance.constructor);) {\n event = event.caller\n };\n }\n return eventInstance\n };\n}\n\nconst domEventsHandler = new _domEventsHandler();\nexport { domEventsHandler };","\nexport class monitoredVariable {\n constructor(value, params) {\n this.valueInternal = value;\n this.listeners = [];\n this.params = params || {};\n }\n\n get value() {\n return this.valueInternal;\n }\n\n set value(val) {\n this.next(val);\n }\n\n next(val) {\n this.valueInternal = val;\n this.callListeners();\n }\n\n nextProperty(key, val) {\n this.valueInternal[key] = val;\n this.callListeners();\n }\n\n callListeners() {\n this.listeners.forEach((item) => {\n if (item && typeof item === \"function\") {\n item(this.valueInternal);\n }\n });\n }\n\n unsubscribe(callback) {\n if (this.listeners.indexOf(callback) !== -1) {\n this.listeners.splice(this.listeners.indexOf(callback), 1);\n }\n }\n\n subscribe(callback) {\n this.listeners.push(callback);\n \n if (!this.params['ignore_sub']) {\n callback(this.valueInternal);\n }\n }\n}\n\n","\nexport class storageHandler {\n constructor(global, domain, prefix, cookieEnabled) {\n this.window = global;\n this.cookieEnabled = false;\n\n // Have we checked cookies support\n this.cookiesSupportChecked = false;\n\n // We should try to enable cookie\n if (cookieEnabled == true) {\n this.checkCookiesSupport();\n }\n\n this.domain = domain;\n this.secureCookie = false;\n this.cookiePerPage = false;\n this.prefix = prefix || 'lhc';\n }\n\n checkCookiesSupport() {\n\n if (this.cookiesSupportChecked === true) {\n return this.cookieEnabled;\n }\n\n this.cookiesSupportChecked = true;\n\n try {\n this.hasSessionStorage = !!this.window.sessionStorage;\n } catch (e){\n this.hasSessionStorage = false;\n }\n\n try {\n this.hasLocalStorage = !!this.window.localStorage;\n } catch (e){\n this.hasLocalStorage = false;\n }\n\n try {\n // Create cookie\n document.cookie = 'cookietest=1';\n this.cookieEnabled = document.cookie.indexOf('cookietest=') !== -1;\n // Delete cookie\n document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';\n } catch (e) {\n\n }\n\n return this.cookieEnabled;\n }\n\n setCookieDomain(domain) {\n this.domain = domain;\n }\n\n setCookiePerPage(cookiePerPage) {\n this.cookiePerPage = cookiePerPage;\n }\n\n getCookieDomain() {\n if (this.domain) {\n return '.' + this.domain;\n } else {\n return null;\n }\n }\n\n setSecureCookie(status) {\n this.secureCookie = status;\n }\n\n setHTTPCookie(coookieName, cookieValue, expireTime, domain) {\n if (this.cookieEnabled === false) return ;\n var string = \"\";\n expireTime || (expireTime = new Date, expireTime.setTime(expireTime.getTime() + 15552E6), string = \"; expires=\" + expireTime.toGMTString());\n document.cookie = coookieName + \"=\" + cookieValue + string + (this.cookiePerPage === false ? \"; path=/\" : (this.cookiePerPage === true ? \"\" : '; path=' + this.cookiePerPage)) + (this.secureCookie ? \";secure\" : \"\") + (domain ? \";domain=\" + domain : \"\") + \";SameSite=Lax\";\n };\n\n getHTTPCookie(cookieName) {\n if (this.cookieEnabled === false) return [];\n var b, d, k = [], baseCookie = cookieName + \"=\", e = document.cookie.split(\";\");\n cookieName = 0;\n for (b = e.length; cookieName < b; cookieName++) {\n for (d = e[cookieName]; \" \" === d.charAt(0);) d = d.substring(1, d.length);\n 0 === d.indexOf(baseCookie) && k.push(d.substring(baseCookie.length, d.length))\n }\n\n // Reset duplicate cookies\n if (k.length == 2) {\n let host = (window.location.hostname || document.location.host),\n reset = baseCookie + \"0;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\";\n if (host) {\n document.cookie = reset;\n document.cookie = reset + \"; domain=.\" + host;\n }\n }\n\n return k;\n };\n\n setSessionStorage(key, value) {\n if (this.hasSessionStorage && sessionStorage.setItem) try {\n sessionStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n removeSessionStorage(key) {\n if (this.hasSessionStorage && sessionStorage.removeItem) try {\n sessionStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n getSessionStorage(a) {\n return this.hasSessionStorage && sessionStorage.getItem ?\n sessionStorage.getItem(a) : null\n }\n\n setLocalStorage(key, value) {\n if (this.hasLocalStorage && localStorage.setItem) try {\n localStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n getLocalStorage(a) {\n return this.hasLocalStorage && localStorage.getItem ?\n localStorage.getItem(a) : null\n }\n\n removeLocalStorage(key) {\n if (this.hasLocalStorage && localStorage.removeItem) try {\n localStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n setSessionReferer(ref) {\n if (!this.getSessionStorage(this.prefix+'_ref')) {\n this.setSessionStorage(this.prefix+'_ref',ref);\n }\n }\n\n getSessionReferrer() {\n return this.getSessionStorage(this.prefix+'_ref');\n }\n\n getSessionInformation() {\n var a;\n this.sessionInformation && (a = this.sessionInformation);\n a || (a = this.getHTTPCookie(this.prefix + \"_per\")[0]);\n return this.parseSessionInformation(a)\n };\n\n getStoreValue(sessionInformation)\n {\n let pairs = [];\n Object.keys(sessionInformation).forEach(key => {\n let value = sessionInformation[key];\n pairs.push(key + '|' + value);\n });\n return pairs.join('|');\n }\n\n storeSessionInformation(sessionInformation) {\n this.setHTTPCookie(this.prefix+\"_per\", this.getStoreValue(sessionInformation), false, this.getCookieDomain());\n this.sessionInformation = sessionInformation;\n };\n\n parseSessionInformation(content) {\n // Check was it stored as our format or JSON.\n if (content && content.indexOf('|') !== -1) {\n let contentReturn = {};\n let parts = content.split('|');\n\n for (var i = 0; i < parts.length / 2; i++) {\n contentReturn[parts[i * 2]] = parts[(i * 2) + 1];\n }\n\n return contentReturn;\n } else {\n if (content) {\n return JSON.parse(unescape(content))\n } else {\n return {};\n }\n }\n\n };\n}\n\n","\nexport class userSession {\n\n constructor() {\n this.vid = null;\n this.hnh = null;\n\n this.attributes = {};\n this.ref = null;\n this.id = null;\n this.hash = null;\n this.jsVars = [];\n this.updateVarsTimeout = null;\n this.JSON = {\n parse: window.JSON && (window.JSON.parse || window.JSON.decode) || String.prototype.evalJSON && function(str){return String(str).evalJSON();} || $.parseJSON || $.evalJSON,\n stringify: Object.toJSON || window.JSON && (window.JSON.stringify || window.JSON.encode) || $.toJSON\n };\n }\n\n setAttributes(attributes) {\n this.attributes = attributes;\n }\n\n setSessionReferrer(ref) {\n this.ref = ref;\n }\n\n getSessionReferrer() {\n return this.ref;\n }\n\n getVID() {\n return this.vid;\n }\n\n setVID(vid) {\n this.vid = vid;\n }\n\n setSessionInformation(params) {\n this.vid = params['vid'] || null;\n this.hnh = params['hnh'] || null;\n this.hash = params['hash'] || null;\n this.id = params['id'] || null;\n }\n\n getSessionAttributes() {\n var attr = {};\n\n if (this.vid !== null) {\n attr['vid'] = this.vid;\n }\n\n if (this.hnh !== null) {\n attr['hnh'] = this.hnh;\n }\n\n if (this.id !== null) {\n attr['id'] = this.id;\n }\n\n if (this.hash !== null) {\n attr['hash'] = this.hash;\n }\n\n return attr\n }\n\n setupVarsMonitoring(jsVars, cb) {\n this.jsVars = jsVars;\n\n // Try to monitor variable if it's lhc_var\n try {\n if (this.attributes.lhc_var !== null)\n {\n\n var validator = {\n set: (obj, prop, value) => {\n // The default behavior to store the value\n obj[prop] = value;\n\n clearTimeout(this.updateVarsTimeout);\n this.updateVarsTimeout = setTimeout( () =>{ this.updateJSVars(obj, cb); },1000);\n\n // Indicate success\n return true;\n }\n };\n\n this.attributes.lhc_var = new Proxy(this.attributes.lhc_var,validator);\n\n // Convert argument or global lhc_var to a reference\n if (this.attributes.LHC_API.args.lhc_var) {\n this.attributes.LHC_API.args.lhc_var = this.attributes.lhc_var;\n } else if (lhc_var) {\n lhc_var = this.attributes.lhc_var;\n }\n\n // Update vars initially\n this.updateJSVars(this.attributes.lhc_var);\n }\n } catch(err) {\n console.log(err);\n };\n\n }\n\n getVars() {\n if (this.jsVars.length > 0) {\n var js_args = {};\n var currentVar = null;\n\n for (var index in this.jsVars) {\n try {\n\n if (this.jsVars[index].var.indexOf('lhc_var.') !== -1) {\n currentVar = this.attributes.lhc_var[this.jsVars[index].var.replace('lhc_var.','')] || null;\n } else {\n currentVar = eval(this.jsVars[index].var);\n }\n\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[this.jsVars[index].id] = currentVar;\n }\n } catch(err) {\n\n }\n }\n\n return js_args;\n }\n return null;\n }\n\n getAppendVariables(){\n var append = '';\n\n if (this.vid !== null) {\n append = append + '/(vid)/' + this.vid ;\n }\n\n if (this.hash !== null && this.id !== null) {\n append = append + '/(hash)/' + this.id + '_' + this.hash;\n }\n\n return append;\n }\n\n updateJSVars(vars, cb) {\n\n let varsJSON = this.getVars(vars);\n\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", this.attributes.LHC_API.args.lhc_base_url + '/chat/updatejsvars' + this.getAppendVariables(), true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( this.JSON.stringify(varsJSON) ) );\n\n if (typeof cb !== 'undefined' && this.hash === null && this.id === null) {\n cb(varsJSON);\n }\n }\n\n setChatInformation(data, alwaysPersistentNeedHelp) {\n this.id = data.id;\n this.hash = data.hash;\n // Hide only chat starts otherwise don't touch it.\n if (this.id !== null && !alwaysPersistentNeedHelp) {\n this.hnh = Math.round(Date.now() / 1000);\n }\n }\n\n}","const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\nexport default function isMobile(userAgent) {\n userAgent =\n userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : '');\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n const result = {\n apple: {\n phone: match(appleIphone, userAgent) && !match(windowsPhone, userAgent),\n ipod: match(appleIpod, userAgent),\n tablet: !match(appleIphone, userAgent) &&\n match(appleTablet, userAgent) &&\n !match(windowsPhone, userAgent),\n device: (match(appleIphone, userAgent) ||\n match(appleIpod, userAgent) ||\n match(appleTablet, userAgent)) &&\n !match(windowsPhone, userAgent),\n },\n amazon: {\n phone: match(amazonPhone, userAgent),\n tablet: !match(amazonPhone, userAgent) && match(amazonTablet, userAgent),\n device: match(amazonPhone, userAgent) || match(amazonTablet, userAgent),\n },\n android: {\n phone: (!match(windowsPhone, userAgent) && match(amazonPhone, userAgent)) ||\n (!match(windowsPhone, userAgent) && match(androidPhone, userAgent)),\n tablet: !match(windowsPhone, userAgent) &&\n !match(amazonPhone, userAgent) &&\n !match(androidPhone, userAgent) &&\n (match(amazonTablet, userAgent) || match(androidTablet, userAgent)),\n device: (!match(windowsPhone, userAgent) &&\n (match(amazonPhone, userAgent) ||\n match(amazonTablet, userAgent) ||\n match(androidPhone, userAgent) ||\n match(androidTablet, userAgent))) ||\n match(/\\bokhttp\\b/i, userAgent),\n },\n windows: {\n phone: match(windowsPhone, userAgent),\n tablet: match(windowsTablet, userAgent),\n device: match(windowsPhone, userAgent) || match(windowsTablet, userAgent),\n },\n other: {\n blackberry: match(otherBlackBerry, userAgent),\n blackberry10: match(otherBlackBerry10, userAgent),\n opera: match(otherOpera, userAgent),\n firefox: match(otherFirefox, userAgent),\n chrome: match(otherChrome, userAgent),\n device: match(otherBlackBerry, userAgent) ||\n match(otherBlackBerry10, userAgent) ||\n match(otherOpera, userAgent) ||\n match(otherFirefox, userAgent) ||\n match(otherChrome, userAgent),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","'use strict';\n\nmodule.exports = require('./lib')\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._h = 0;\n this._i = 0;\n this._j = null;\n this._k = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._l = null;\nPromise._m = null;\nPromise._n = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._i === 3) {\n self = self._j;\n }\n if (Promise._l) {\n Promise._l(self);\n }\n if (self._i === 0) {\n if (self._h === 0) {\n self._h = 1;\n self._k = deferred;\n return;\n }\n if (self._h === 1) {\n self._h = 2;\n self._k = [self._k, deferred];\n return;\n }\n self._k.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._i === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._i === 1) {\n resolve(deferred.promise, self._j);\n } else {\n reject(deferred.promise, self._j);\n }\n return;\n }\n var ret = tryCallOne(cb, self._j);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._i = 3;\n self._j = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._i = 1;\n self._j = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._i = 2;\n self._j = newValue;\n if (Promise._m) {\n Promise._m(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._h === 1) {\n handle(self, self._k);\n self._k = null;\n }\n if (self._h === 2) {\n for (var i = 0; i < self._k.length; i++) {\n handle(self, self._k[i]);\n }\n self._k = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._n);\n p._i = 1;\n p._j = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._i === 3) {\n val = val._j;\n }\n if (val._i === 1) return res(i, val._j);\n if (val._i === 2) reject(val._j);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n return this.then(function (value) {\n return Promise.resolve(f()).then(function () {\n return value;\n });\n }, function (err) {\n return Promise.resolve(f()).then(function () {\n throw err;\n });\n });\n};\n","'use strict';\n\nmodule.exports = require('./core.js');\nrequire('./done.js');\nrequire('./finally.js');\nrequire('./es6-extensions.js');\nrequire('./node-extensions.js');\nrequire('./synchronous.js');\n","'use strict';\n\n// This file contains then/promise specific extensions that are only useful\n// for node.js interop\n\nvar Promise = require('./core.js');\nvar asap = require('asap');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n if (\n typeof argumentCount === 'number' && argumentCount !== Infinity\n ) {\n return denodeifyWithCount(fn, argumentCount);\n } else {\n return denodeifyWithoutCount(fn);\n }\n};\n\nvar callbackFn = (\n 'function (err, res) {' +\n 'if (err) { rj(err); } else { rs(res); }' +\n '}'\n);\nfunction denodeifyWithCount(fn, argumentCount) {\n var args = [];\n for (var i = 0; i < argumentCount; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'return new Promise(function (rs, rj) {',\n 'var res = fn.call(',\n ['self'].concat(args).concat([callbackFn]).join(','),\n ');',\n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n return Function(['Promise', 'fn'], body)(Promise, fn);\n}\nfunction denodeifyWithoutCount(fn) {\n var fnLength = Math.max(fn.length - 1, 3);\n var args = [];\n for (var i = 0; i < fnLength; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'var args;',\n 'var argLength = arguments.length;',\n 'if (arguments.length > ' + fnLength + ') {',\n 'args = new Array(arguments.length + 1);',\n 'for (var i = 0; i < arguments.length; i++) {',\n 'args[i] = arguments[i];',\n '}',\n '}',\n 'return new Promise(function (rs, rj) {',\n 'var cb = ' + callbackFn + ';',\n 'var res;',\n 'switch (argLength) {',\n args.concat(['extra']).map(function (_, index) {\n return (\n 'case ' + (index) + ':' +\n 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' +\n 'break;'\n );\n }).join(''),\n 'default:',\n 'args[argLength] = cb;',\n 'res = fn.apply(self, args);',\n '}',\n \n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n\n return Function(\n ['Promise', 'fn'],\n body\n )(Promise, fn);\n}\n\nPromise.nodeify = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var callback =\n typeof args[args.length - 1] === 'function' ? args.pop() : null;\n var ctx = this;\n try {\n return fn.apply(this, arguments).nodeify(callback, ctx);\n } catch (ex) {\n if (callback === null || typeof callback == 'undefined') {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n } else {\n asap(function () {\n callback.call(ctx, ex);\n })\n }\n }\n }\n};\n\nPromise.prototype.nodeify = function (callback, ctx) {\n if (typeof callback != 'function') return this;\n\n this.then(function (value) {\n asap(function () {\n callback.call(ctx, null, value);\n });\n }, function (err) {\n asap(function () {\n callback.call(ctx, err);\n });\n });\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.enableSynchronous = function () {\n Promise.prototype.isPending = function() {\n return this.getState() == 0;\n };\n\n Promise.prototype.isFulfilled = function() {\n return this.getState() == 1;\n };\n\n Promise.prototype.isRejected = function() {\n return this.getState() == 2;\n };\n\n Promise.prototype.getValue = function () {\n if (this._i === 3) {\n return this._j.getValue();\n }\n\n if (!this.isFulfilled()) {\n throw new Error('Cannot get a value of an unfulfilled promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getReason = function () {\n if (this._i === 3) {\n return this._j.getReason();\n }\n\n if (!this.isRejected()) {\n throw new Error('Cannot get a rejection reason of a non-rejected promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getState = function () {\n if (this._i === 3) {\n return this._j.getState();\n }\n if (this._i === -1 || this._i === -2) {\n return 0;\n }\n\n return this._i;\n };\n};\n\nPromise.disableSynchronous = function() {\n Promise.prototype.isPending = undefined;\n Promise.prototype.isFulfilled = undefined;\n Promise.prototype.isRejected = undefined;\n Promise.prototype.getValue = undefined;\n Promise.prototype.getReason = undefined;\n Promise.prototype.getState = undefined;\n};\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"LiveHelperChat:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"81\":\"75d1d932aa8416f0bf23\",\"213\":\"9704c8f8044bd52f066c\",\"398\":\"16da6b6586a6fd6028ae\",\"417\":\"2de2c9d370bb7f28def0\",\"530\":\"6607a807df452c8883cf\",\"572\":\"77adaf2dba091c4d50d1\",\"783\":\"a68fc3eccb8af7392e9f\",\"821\":\"47fccc99a929b98c866b\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLiveHelperChat\"] = self[\"webpackChunkLiveHelperChat\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","(function (global) {\n\n var currentScript = document.currentScript || (function() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n var scopeScript = currentScript.getAttribute('scope') || 'LHC';\n\n if (/google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent)) {\n return;\n }\n\n if (!global[scopeScript+'_API']) {\n if (global['LHC_API']) {\n global[scopeScript+'_API'] = global['LHC_API'];\n } else {\n return;\n }\n }\n\n var lhcError = {\n log : function(message, filename, lineNumber, stack, column) {\n var e;\n e = {};\n e.message = message || \"\";\n e.message += \"\\n\" + global.navigator.userAgent;\n e.location = location && location.href ? location.href : \"\";\n e.file = filename || \"\";\n e.line = lineNumber || \"\";\n e.column = column || \"\";\n e.stack = stack ? JSON.stringify(stack) : \"\";\n e.stack = e.stack.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", global[scopeScript+'_API']['args']['lhc_base_url'] + 'audit/logjserror', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( JSON.stringify(e) ) );\n }\n }\n\n try {\n\n window.addEventListener('error', function (e) {\n if (lhcError && e.filename.indexOf(global[scopeScript+'_API']['args']['lhc_base_url'].replace('index.php/')) !== -1) {\n lhcError.log(e.message, e.filename, e.lineNumber || e.lineno, e.error.stack, e.colno);\n }\n })\n\n global['$_' + scopeScript + '_Instance'] = null;\n global['$_' + scopeScript + '_Debug'] = false;\n global['$_' + scopeScript] = global['$_' + scopeScript] || {};\n\n (function (lhc, LHC_API) {\n\n lhc.loaded = false;\n lhc.connected = false;\n lhc.ready = false;\n lhc.version = 186;\n\n var init = () => {\n\n if (!global.Promise) {\n global.Promise = require('promise');\n }\n\n var BehaviorSubject = require('./util/monitoredVariable').monitoredVariable;\n var EventEmitter = require('wolfy87-eventemitter');\n\n var statusWidget = require('./lib/widgets/statusWidget').statusWidget;\n var mainWidget = require('./lib/widgets/mainWidget').mainWidget;\n var mainWidgetPopup = require('./lib/widgets/mainWidgetPopup').mainWidgetPopup;\n var containerChat = require('./lib/widgets/containerChat').containerChat;\n var helperFunctions = require('./lib/helperFunctions').helperFunctions;\n var userSession = require('./util/userSession').userSession;\n var storageHandler = require('./util/storageHandler').storageHandler;\n var chatNotifications = require('./lib/chatNotifications').chatNotifications;\n var chatEventsHandler = require('./util/chatEventsHandler').chatEventsHandler;\n\n const isMobileItem = require('ismobilejs');\n\n var isMobile = isMobileItem.default(global.navigator.userAgent).phone;\n\n LHC_API.args = LHC_API.args || {};\n\n if (typeof LHC_API.args.mobile_view !== 'undefined') {\n isMobile = LHC_API.args.mobile_view;\n }\n\n const prefixLowercase = scopeScript.toLowerCase();\n const prefixStorage = (prefixLowercase && LHC_API.args.scope_storage ? prefixLowercase : 'lhc');\n const cookieEnabledUser = typeof LHC_API.args.cookie_enabled !== 'undefined' ? LHC_API.args.cookie_enabled : true;\n const userMode = LHC_API.args.mode || 'widget';\n\n var storageHandler = new storageHandler(global, LHC_API.args.domain || null, prefixStorage, cookieEnabledUser);\n\n // Cookies are disabled and it's required for us to work. So switch to mode where cookies are not required\n if (storageHandler.cookieEnabled === false && userMode == 'widget') {\n LHC_API.args.orig = {}\n LHC_API.args.orig.mode = LHC_API.args.mode;\n LHC_API.args.orig.proactive = LHC_API.args.proactive;\n LHC_API.args.orig.check_messages = LHC_API.args.check_messages;\n\n LHC_API.args.mode = 'popup';\n LHC_API.args.proactive = false;\n LHC_API.args.check_messages = false;\n }\n\n if (LHC_API.args.cookie_per_page) {\n storageHandler.setCookiePerPage(LHC_API.args.cookie_per_page);\n }\n\n var referrer = (document.referrer) ? document.referrer.substr(document.referrer.indexOf('://') + 1) : '';\n var location = (document.location) ? encodeURIComponent(window.location.href.substring(window.location.protocol.length)) : '';\n\n storageHandler.setSessionReferer(referrer);\n\n referrer = referrer ? encodeURIComponent(referrer) : '';\n\n if (LHC_API.args.lang) {\n LHC_API.args.lang = LHC_API.args.lang.replace('/', '') + '/';\n }\n\n // Main attributes\n var attributesWidget = {\n terminated: false,\n prefixLowercase: prefixLowercase,\n prefixStorage: prefixStorage,\n prefixScope: scopeScript,\n cookie_enabled: cookieEnabledUser,\n LHC_API: LHC_API,\n viewHandler: null,\n msgSnippet: null,\n react_attr: LHC_API.args.react_attr || null,\n hide_parent: LHC_API.args.hide_parent || false,\n hide_iframe: LHC_API.args.hide_iframe || false,\n hide_status: LHC_API.args.hide_status || null,\n mainWidget: new mainWidget(prefixLowercase),\n popupWidget: new mainWidgetPopup(),\n chatNotifications: chatNotifications,\n jsVars: new BehaviorSubject(true),\n onlineStatus: new BehaviorSubject(true),\n wloaded: new BehaviorSubject(false),\n sload: new BehaviorSubject(false),\n shidden: new BehaviorSubject(LHC_API.args.hide_status || false),\n msgsnippet_status: new BehaviorSubject(false),\n unread_counter: new BehaviorSubject(0),\n widgetStatus: new BehaviorSubject((storageHandler.getSessionStorage(prefixStorage + '_ws') === 'true' || (LHC_API.args.mode && LHC_API.args.mode == 'embed'))),\n eventEmitter: new EventEmitter(),\n toggleSound: new BehaviorSubject(storageHandler.getSessionStorage(prefixStorage + '_sound') === 'true', {'ignore_sub': true}),\n hideOffline: false,\n fscreen: LHC_API.args.fscreen || false,\n isMobile: isMobile,\n isIE: (navigator.userAgent.toUpperCase().indexOf(\"TRIDENT/\") != -1 || navigator.userAgent.toUpperCase().indexOf(\"MSIE\") != -1 || typeof Object.assign !== 'function'),\n fresh: LHC_API.args.fresh || false,\n popupDimesnions: {pheight: (LHC_API.args.pheight || 520), pwidth: (LHC_API.args.pwidth || 500)},\n leaveMessage: LHC_API.args.leaveamessage || null,\n department: LHC_API.args.department || [],\n dep_default: LHC_API.args.dep_default || null,\n product: LHC_API.args.product || [],\n theme: LHC_API.args.theme || null,\n theme_v: null,\n domain: LHC_API.args.domain || null,\n domain_lhc: null,\n instance_id: 0,\n profile_pic: LHC_API.args.profile_pic || null,\n position: LHC_API.args.position || 'bottom_right',\n position_placement: LHC_API.args.position_placement || 'bottom_right',\n base_url: LHC_API.args.lhc_base_url,\n mode: LHC_API.args.mode || 'widget',\n tag: LHC_API.args.tag || '',\n proactive: {},\n captcha: null,\n focused: true,\n clinst: false,\n kcw: LHC_API.args.kcw || false,\n offline_redirect: LHC_API.args.offline_redirect || null,\n identifier: LHC_API.args.identifier || '',\n proactive_interval: null,\n lang: LHC_API.args.lang || '',\n bot_id: LHC_API.args.bot_id || '',\n trigger_id: LHC_API.args.trigger_id || '',\n priority: LHC_API.args.priority || null,\n events: LHC_API.args.events || [],\n hhtml: LHC_API.args.hhtml || '',\n survey: LHC_API.args.survey || null,\n operator: LHC_API.args.operator || null,\n phash: LHC_API.args.phash || null,\n pvhash: LHC_API.args.pvhash || null,\n // Login Objects\n userSession: new userSession(),\n storageHandler: storageHandler,\n staticJS: {},\n nh : null, // Need help data\n init_calls: [],\n childCommands: [],\n childExtCommands: [],\n lhc_var: (LHC_API.args.lhc_var || (typeof lhc_var !== 'undefined' ? lhc_var : null)),\n loadcb: LHC_API.args.loadcb || null,\n LHCChatOptions: global[scopeScript + 'ChatOptions'] || {}\n };\n\n attributesWidget.widgetDimesions = new BehaviorSubject({\n sright: (LHC_API.args.sright || 0),\n sbottom: (LHC_API.args.sbottom || 0),\n wright_inv: 0,\n wbottom: 0,\n wright: 0,\n width: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wwidth || 350)),\n height: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wheight || 520)),\n units: ((isMobile || attributesWidget.fscreen) ? '%' : 'px')\n });\n\n var chatEvents = new chatEventsHandler(attributesWidget);\n\n lhc.eventListener = attributesWidget.eventEmitter;\n lhc.attributes = attributesWidget;\n\n attributesWidget.userSession.setAttributes(attributesWidget);\n attributesWidget.userSession.setSessionInformation(attributesWidget.storageHandler.getSessionInformation());\n attributesWidget.userSession.setSessionReferrer(storageHandler.getSessionReferrer());\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n\n var containerChatObj = new containerChat(attributesWidget.prefixLowercase, LHC_API.args.pnode || null);\n\n attributesWidget.viewHandler = new statusWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.viewHandler.cont.constructUI(), !0);\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.elmDom.appendChild(attributesWidget.mainWidget.cont.constructUI(), !0);\n }\n\n } else {\n var embedWrapper = document.getElementById(attributesWidget.prefixLowercase + '_status_container_page');\n if (embedWrapper !== null) {\n embedWrapper.appendChild(attributesWidget.mainWidget.cont.constructUI());\n embedWrapper.style.height = (LHC_API.args.wheight || 520) + 'px';\n } else {\n attributesWidget.position = 'api';\n }\n }\n\n function getArguments(){\n return {\n 'cd': (storageHandler.cookieEnabled === false ? 1 : null),\n 'vid': (LHC_API.args.UUID || attributesWidget.userSession.getVID()),\n 'hnh': attributesWidget.userSession.hnh,\n 'tz': helperFunctions.getTzOffset(),\n 'r': referrer,\n 'l': location,\n 'dt': encodeURIComponent(document.title),\n 'ie': attributesWidget.isIE,\n 'dep': attributesWidget.department.join(','),\n 'idnt': attributesWidget.identifier,\n 'tag': attributesWidget.tag,\n 'theme': attributesWidget.theme\n };\n }\n\n function showNeedHelp(nh) {\n import('./lib/widgets/needhelpWidget').then((module) => {\n var needhelpWidget = new module.needhelpWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(needhelpWidget.cont.constructUI(), !0);\n needhelpWidget.init(attributesWidget, nh);\n });\n }\n\n function showProactive(){\n import('./util/proactiveChat').then((module) => {\n module.proactiveChat.setParams({\n 'interval': attributesWidget.proactive_interval\n }, attributesWidget, chatEvents);\n });\n }\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n\n if (lhc.version !== data.wv && document.getElementById(attributesWidget.prefixLowercase+'-js-reload') === null) {\n\n if (data.terminate) {\n return;\n }\n\n attributesWidget.userSession.setVID(data.vid);\n\n // Mark script as terminated\n attributesWidget.terminated = true;\n\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n\n // Create new embed script\n var po = document.createElement(\"script\");\n po.type = currentScript.type;\n po.id = attributesWidget.prefixLowercase+'-js-reload';\n po.async = true;\n if (currentScript.getAttribute('scope')) { po.setAttribute('scope',currentScript.getAttribute('scope')); }\n\n // Expires cache\n po.src = currentScript.getAttribute('src') + '&r='+ (new Date()).getHours() + (new Date()).getMinutes();\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n return;\n }\n\n if (data.terminate || ((!attributesWidget.leaveMessage && data.chat_ui.leaveamessage === false) && data.isOnline === false)) {\n\n if (LHC_API.args.offline_redirect && attributesWidget.mode == 'embed') {\n document.location = LHC_API.args.offline_redirect;\n }\n\n if (data.terminate) {\n return;\n }\n }\n\n // Send event that lhc has started\n // So parent page informs back that it has lhc\n if ((attributesWidget.hide_parent || attributesWidget.hide_iframe || (data.chat_ui && (data.chat_ui.hide_iframe || data.chat_ui.hide_parent))) && window.location != window.parent.location && window.parent.closed === false) {\n window.parent.postMessage('lhc::started','*');\n }\n\n attributesWidget.leaveMessage = attributesWidget.leaveMessage || data.chat_ui.leaveamessage;\n\n if (data.department) {\n attributesWidget.department = data.department;\n }\n\n __webpack_public_path__ = data.chunks_location + \"/\";\n\n if (data.secure_cookie) {\n attributesWidget.storageHandler.setSecureCookie(true);\n }\n\n if (data.domain) {\n attributesWidget.storageHandler.setCookieDomain(data.domain);\n }\n\n if (data.siteaccess) {\n attributesWidget.lang = data.siteaccess;\n }\n\n if (data.static) {\n attributesWidget.staticJS = data.static;\n }\n\n if (data.pdim) {\n attributesWidget.popupDimesnions = data.pdim;\n }\n\n if (data.survey_id) {\n attributesWidget.survey = data.survey_id;\n }\n\n if (data.domain_lhc) {\n attributesWidget.domain_lhc = data.domain_lhc;\n }\n\n if (data.cont_css) {\n attributesWidget.cont_ss = data.cont_css;\n }\n\n if (data.wposition) {\n attributesWidget.position_placement = data.wposition;\n }\n\n attributesWidget.captcha = {hash: data.hash, ts: data.hash_ts};\n attributesWidget.userSession.setVID(data.vid);\n\n // Store session\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.hideOffline = data.hideOffline;\n attributesWidget.onlineStatus.next(data.isOnline);\n\n if (data.theme) {\n attributesWidget.theme = data.theme;\n attributesWidget.theme_v = data.theme_v;\n }\n\n if (data.chat_ui) {\n\n if (data.chat_ui.hide_parent) {\n attributesWidget.hide_parent = true;\n }\n\n if ((data.chat_ui.fscreen && attributesWidget.mode == 'embed') || attributesWidget.fscreen) {\n attributesWidget.widgetDimesions.nextProperty('width', 100);\n attributesWidget.widgetDimesions.nextProperty('height', 100);\n attributesWidget.widgetDimesions.nextProperty('units', '%');\n attributesWidget.fscreen = isMobile = attributesWidget.isMobile = true;\n }\n\n if (data.chat_ui.wheight && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('height', data.chat_ui.wheight);\n }\n\n if (data.chat_ui.wwidth && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('width', data.chat_ui.wwidth);\n }\n\n if (data.chat_ui.hhtml) {\n attributesWidget.hhtml = data.chat_ui.hhtml;\n }\n\n if (data.chat_ui.kcw) {\n attributesWidget.kcw = true;\n }\n\n if (data.chat_ui.clinst) {\n attributesWidget.clinst = true;\n }\n\n if (data.chat_ui.wbottom) {\n attributesWidget.widgetDimesions.nextProperty('wbottom', data.chat_ui.wbottom);\n }\n\n if (data.chat_ui.sbottom) {\n attributesWidget.widgetDimesions.nextProperty('sbottom', data.chat_ui.sbottom);\n }\n\n if (data.chat_ui.sright) {\n attributesWidget.widgetDimesions.nextProperty('sright', data.chat_ui.sright);\n }\n\n if (data.chat_ui.wright) {\n attributesWidget.widgetDimesions.nextProperty('wright', data.chat_ui.wright);\n }\n\n if (data.chat_ui.wright_inv) {\n attributesWidget.widgetDimesions.nextProperty('wright_inv', data.chat_ui.wright_inv);\n }\n\n if (data.chat_ui.mobile_popup && isMobile) {\n attributesWidget.mode = 'popup';\n }\n\n if (data.chat_ui.sound_enabled && storageHandler.getSessionStorage(prefixStorage + '_sound') === null) {\n attributesWidget.toggleSound.next(true);\n }\n\n if (data.instance_id) {\n attributesWidget.instance_id = data.instance_id;\n }\n\n if (data.chat_ui.check_status) {\n import('./util/activityMonitoring').then((module) => {\n module.activityMonitoring.setParams({\n 'timeout': data.chat_ui.check_status,\n 'track_mouse': data.chat_ui.track_mouse,\n 'track_activity': data.chat_ui.track_activity\n }, attributesWidget);\n });\n }\n\n if (data.ga) {\n import('./util/analyticEvents').then((module) => {\n module.analyticEvents.setParams({\n 'ga': data.ga\n }, attributesWidget);\n });\n }\n }\n\n if (data.nh && attributesWidget.fresh === false && attributesWidget['position'] != 'api') {\n attributesWidget.nh = data.nh;\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n if (data.nh.ap || attributesWidget.userSession.id === null) {\n showNeedHelp(data.nh);\n }\n }\n }\n\n if (data.js_vars) {\n // Javascript custom variables init\n // Extensions can listen for these\n attributesWidget.jsVars.next(data.js_vars);\n\n // Monitor js vars if required\n if (data.js_vars.length > 0) {\n attributesWidget.userSession.setupVarsMonitoring(data.js_vars, (vars) => {\n chatEvents.sendChildEvent('jsVars', [vars]);\n });\n }\n }\n\n // Init main widgets\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n attributesWidget.viewHandler.init(attributesWidget, data.ll);\n }\n\n if (!(attributesWidget.position == 'api' && attributesWidget.mode == 'embed')) {\n attributesWidget.mainWidget.init(attributesWidget, data.ll);\n }\n\n // Show status widget\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.show();\n }\n\n if (attributesWidget.loadcb) {\n attributesWidget.loadcb(attributesWidget);\n }\n\n if (data.init_calls) {\n attributesWidget.init_calls = data.init_calls;\n }\n\n attributesWidget.proactive_interval = data.chat_ui.proactive_interval;\n\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup' || attributesWidget.mode == 'embed') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n\n if (attributesWidget.init_calls.length > 0) {\n attributesWidget.init_calls.forEach((item) => {\n if (item.extension == 'nodeJSChat') {\n import('./util/nodeJSChat').then((module) => {\n module.nodeJSChat.setParams(item.params, attributesWidget, chatEvents);\n });\n }\n });\n }\n\n })\n\n // Widget Hide event\n attributesWidget.eventEmitter.addListener('closeWidget', function () {\n attributesWidget.widgetStatus.next(false);\n chatEvents.sendChildEvent('closedWidget', [{'sender': 'closeButton'}]);\n });\n\n // Send event to the child instantly\n attributesWidget.eventEmitter.addListener('sendChildEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n } else {\n attributesWidget.childCommands.push(params);\n }\n }\n });\n\n // Send smart event to the child\n attributesWidget.eventEmitter.addListener('sendChildExtEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n } else {\n attributesWidget.childExtCommands.push(params);\n }\n }\n });\n\n // Toggle sound user\n attributesWidget.eventEmitter.addListener('toggleSound', function () {\n var newValue = !attributesWidget.toggleSound.value;\n attributesWidget.toggleSound.next(newValue);\n });\n\n // Toggle cookies policy\n attributesWidget.eventEmitter.addListener('enableCookies', function () {\n\n // Check does cookies are supported in genreal\n if (storageHandler.checkCookiesSupport() === true) {\n // Store session\n var sessionAtrribute = attributesWidget.userSession.getSessionAttributes();\n if (typeof sessionAtrribute.hnh !== 'undefined') { delete sessionAtrribute['hnh']; }\n attributesWidget.storageHandler.storeSessionInformation(sessionAtrribute);\n\n if (typeof LHC_API.args.orig !== 'undefined') {\n\n attributesWidget.mode = LHC_API.args.mode = LHC_API.args.orig.mode;\n LHC_API.args.proactive = LHC_API.args.orig.proactive;\n LHC_API.args.check_messages = LHC_API.args.orig.check_messages;\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n // Change mode for react app\n attributesWidget.eventEmitter.emitEvent('sendChildEvent',[{'cmd' : 'attr_set', 'arg' : {'type':'attr_set','attr': ['mode'], data : attributesWidget.mode}}]);\n\n // Show need help widget if it's required\n if (attributesWidget.mode == 'widget' && attributesWidget.nh !== null) {\n showNeedHelp(attributesWidget.nh);\n }\n\n // Enable proactive if it's required\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n });\n }\n }\n });\n\n\n // Clear chat cookies if there is any\n // Then popup finishes loading it calls this to clean up chat cookies. So visitor can start new chat.\n attributesWidget.eventEmitter.addListener('endChatCookies', function (params) {\n if (attributesWidget.kcw === false || (params && params['force'] == true)) {\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n attributesWidget.proactive = {};\n }\n });\n\n attributesWidget.eventEmitter.addListener('endChat', function (params) {\n\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.proactive = {};\n\n if (attributesWidget.mode != 'popup' && (!params || !params['show_start'])) {\n attributesWidget.widgetStatus.next(false);\n }\n\n if (attributesWidget.viewHandler) {\n attributesWidget.viewHandler.removeUnreadIndicator();\n attributesWidget.eventEmitter.emitEvent('hide_msg_snippet');\n }\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n\n if (attributesWidget.mode == 'embed' || (params && params['show_start'])) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n }\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.freeup();\n }\n });\n\n // Widget show event\n attributesWidget.eventEmitter.addListener('showWidget', function (params) {\n\n // Just to restyle if needed\n attributesWidget.mainWidget.hideInvitation();\n\n attributesWidget.widgetStatus.next(true);\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.init(attributesWidget, chatEvents, params);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n attributesWidget.mainWidget.hide();\n } else if (typeof params !== 'undefined' && typeof params.event !== 'undefined') {\n params.event.preventDefault();\n }\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n });\n\n // Add tag listener\n attributesWidget.eventEmitter.addListener('addTag', function (tag) {\n attributesWidget.tag = attributesWidget.tag != '' ? attributesWidget.tag + ',' + tag : tag;\n attributesWidget.eventEmitter.emitEvent('tagAdded');\n });\n\n // Events\n attributesWidget.eventEmitter.addListener('addEvent', function (events) {\n attributesWidget.events = events;\n attributesWidget.eventEmitter.emitEvent('eventAdded');\n });\n\n // Popup open event\n attributesWidget.eventEmitter.addListener('openPopup', function () {\n\n attributesWidget.popupWidget.init(attributesWidget, chatEvents);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n\n attributesWidget.widgetStatus.next(false);\n });\n\n // Chat started event received\n // Store chat information if it's not popup mode.\n attributesWidget.eventEmitter.addListener('chatStarted', function (data, mode) {\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n if (mode !== 'popup' || attributesWidget.kcw === true) {\n attributesWidget.userSession.setChatInformation(data, attributesWidget.nh && attributesWidget.nh.ap);\n }\n\n if (mode == 'popup') {\n attributesWidget.mainWidget.hide();\n }\n\n // Store information permanently\n if (attributesWidget.fresh === false && (mode !== 'popup' || attributesWidget.kcw === true)) {\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n }\n });\n\n // Subscribe event\n attributesWidget.eventEmitter.addListener('subscribeEvent', function (data) {\n attributesWidget.chatNotifications.setPublicKey(data.pk, attributesWidget.eventEmitter);\n attributesWidget.chatNotifications.sendNotification();\n });\n\n // User has subscribed to notifications\n // Send back child subscription information\n attributesWidget.eventEmitter.addListener('subcribedEvent', function (data) {\n chatEvents.sendChildEvent('subcribedEvent', [data]);\n });\n\n // Track widget status changes\n attributesWidget.widgetStatus.subscribe((data) => {\n if (attributesWidget.mode !== 'popup') {\n if (attributesWidget.mode !== 'embed') {\n // Do not store open status in local storage because embed is always open\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_ws', data);\n }\n chatEvents.sendChildEvent('widgetStatus', [data]);\n }\n });\n\n // Store sound settings\n attributesWidget.toggleSound.subscribe((data) => {\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_sound', data);\n });\n\n attributesWidget.onlineStatus.subscribe((data) => {\n chatEvents.sendChildEvent('onlineStatus', [data]);\n });\n\n attributesWidget.eventEmitter.addListener('screenshot', (data) => {\n helperFunctions.makeScreenshot(attributesWidget.staticJS['screenshot'], data);\n });\n\n attributesWidget.eventEmitter.addListener('screenshare', (data) => {\n import('./util/screenShare').then((module) => {\n module.screenShare.setParams((data || {}), attributesWidget, chatEvents);\n });\n });\n\n attributesWidget.eventEmitter.addListener('location', (data) => {\n document.location = data;\n });\n\n attributesWidget.eventEmitter.addListener('terminated', (data) => {\n attributesWidget.terminated = true;\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n });\n\n attributesWidget.eventEmitter.addListener('showInvitation', (data) => {\n attributesWidget.widgetDimesions.nextProperty('bottom_override', 75);\n attributesWidget.widgetDimesions.nextProperty('right_override', 75);\n attributesWidget.mainWidget.showInvitation();\n });\n\n attributesWidget.eventEmitter.addListener('hideInvitation', (data) => {\n attributesWidget.mainWidget.hideInvitation();\n if (data.full) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n attributesWidget.eventEmitter.emitEvent('fullInvitation', [data]);\n } else {\n attributesWidget.eventEmitter.emitEvent('cancelInvitation', []);\n }\n });\n\n attributesWidget.eventEmitter.addListener('msgSnippet', (data) => {\n if (attributesWidget.mode == 'widget' && attributesWidget.widgetStatus.value === false) {\n\n if (data.full_widget) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n return;\n }\n\n attributesWidget.position == 'api' && attributesWidget.viewHandler && attributesWidget.viewHandler.show();\n\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n } else {\n attributesWidget.msgSnippet.showSnippet(data, true);\n }\n attributesWidget.eventEmitter.emitEvent('unread_message',[{otm: 1}]);\n });\n }\n });\n\n attributesWidget.eventEmitter.addListener('unread_message', (data) => {\n if (data && data.msg_body && !attributesWidget.msgSnippet) {\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n }\n });\n }\n });\n\n attributesWidget.originalTitle = document.title;\n attributesWidget.blinkInterval = null;\n\n attributesWidget.eventEmitter.addListener('unread_message_title', (data) => {\n clearInterval(attributesWidget.blinkInterval);\n if (data.status == false) {\n attributesWidget.blinkInterval = setInterval(() => {\n document.title = (Math.round(new Date().getTime() / 1000) % 2) ? '💬 ' + attributesWidget.originalTitle : attributesWidget.originalTitle;\n }, 1000);\n } else {\n attributesWidget.focused = true;\n document.title = attributesWidget.originalTitle;\n }\n });\n\n attributesWidget.eventEmitter.addListener('widgetHeight', (data) => {\n\n if (data.reset_height) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n attributesWidget.widgetDimesions.nextProperty('bottom_override', null);\n attributesWidget.widgetDimesions.nextProperty('right_override', null);\n attributesWidget.widgetDimesions.nextProperty('width_override', null);\n return;\n }\n\n if (data.force_height || data.force_width || data.force_bottom || data.force_right) {\n data.force_height && attributesWidget.widgetDimesions.nextProperty('height_override', data.force_height);\n data.force_width && attributesWidget.widgetDimesions.nextProperty('width_override', data.force_width);\n data.force_right && attributesWidget.widgetDimesions.nextProperty('right_override', data.force_right);\n data.force_bottom && attributesWidget.widgetDimesions.nextProperty('bottom_override', data.force_bottom);\n return;\n }\n\n if (attributesWidget.mode == 'widget' && attributesWidget.isMobile == false) {\n var d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n y = global.innerHeight || e.clientHeight || g.clientHeight;\n if (parseInt(data.height) > attributesWidget.widgetDimesions.value['height'] && y > parseInt(data.height)) {\n attributesWidget.widgetDimesions.nextProperty('height_override', parseInt(data.height));\n } else if (attributesWidget.widgetDimesions.value['height_override'] && attributesWidget.widgetDimesions.value['height_override'] > y) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n }\n }\n });\n\n var serviceWorkerAvailable = false;\n try {\n serviceWorkerAvailable = ('serviceWorker' in navigator);\n } catch (e) {\n // Worker not available\n }\n\n if (serviceWorkerAvailable === true) {\n try {\n navigator.serviceWorker.addEventListener('message', function (event) {\n try {\n if (typeof event.data.lhc_ch !== 'undefined' && typeof event.data.lhc_cid !== 'undefined') {\n attributesWidget.widgetStatus.next(true);\n if (attributesWidget.mode == 'popup') {\n attributesWidget.userSession.setChatInformation({\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n });\n attributesWidget.eventEmitter.emitEvent('unread_message');\n } else {\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n chatEvents.sendChildEvent('reopenNotification', [{\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n }]);\n }\n }\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n });\n } catch (e) {\n // Ignore sandbox error\n }\n }\n\n // Listed for post messages\n const handleMessages = (e) => {\n\n if (attributesWidget.terminated === true || typeof e.data !== 'string' || e.data.indexOf(attributesWidget.prefixLowercase + '::')) {\n return;\n }\n\n const parts = e.data.split('::');\n\n if (typeof e.origin !== 'undefined') {\n var originDomain = e.origin.replace(\"http://\", \"\").replace(\"https://\", \"\").replace(/:(\\d+)$/, '');\n\n // We allow to send events only from chat installation or page where script is embeded.\n if (originDomain !== document.domain && attributesWidget.domain_lhc !== originDomain && parts[1] !== 'started' && parts[1] !== 'isstarted') {\n return;\n }\n }\n\n if (parts[1] == 'ready') {\n chatEvents.sendReadyEvent(parts[2] == 'true');\n\n if (attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_screenshare')) {\n attributesWidget.eventEmitter.emitEvent('screenshare', [{'auto_start': true}]);\n }\n\n const focusChangeCb = (e) => {\n const focused = e.type === \"focus\";\n attributesWidget.focused = focused;\n chatEvents.sendChildEvent('focus_changed', [{'status': focused}]);\n };\n\n window.addEventListener('focus', focusChangeCb);\n window.addEventListener('blur', focusChangeCb);\n window.addEventListener('pageshow', focusChangeCb);\n window.addEventListener('pagehide', focusChangeCb);\n\n // App is fully loaded\n lhc.loaded = true;\n\n chatEvents.sendChildEvent('ext_modules', [attributesWidget.staticJS['ex_cb_js']]);\n\n // send child commands if there is any\n attributesWidget.childExtCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n });\n\n // send child commands if there is any\n attributesWidget.childCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n });\n\n if (attributesWidget.react_attr !== null) {\n attributesWidget.react_attr.forEach(item => {\n chatEvents.sendChildEvent('attr_set',[{\n 'type':'attr_set','attr': item['k'],\n data : item['v']\n }]);\n })\n }\n\n } else if (parts[1] == 'ready_popup') {\n attributesWidget.popupWidget.sendParameters(chatEvents);\n } else if (parts[1] == 'isstarted') {\n // Parent window has LHC, terminate present instance\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else if (parts[1] == 'started') {\n if (attributesWidget.hide_parent) {\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else {\n e.source.postMessage('lhc::isstarted','*');\n }\n } else {\n attributesWidget.eventEmitter.emitEvent(parts[1], JSON.parse(parts[2]));\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", handleMessages, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", handleMessages);\n } else if (document.attachEvent) {\n document.attachEvent(\"onmessage\", handleMessages);\n }\n };\n\n var preInit = () => {\n\n // Avoid multiple times execution\n if (lhc.ready === true) {\n return;\n }\n\n // we have found document body so we can continue\n if (document.body) {\n lhc.ready = true;\n }\n\n lhc.init = init;\n\n if (LHC_API.args.before_init) {\n LHC_API.args.before_init(lhc);\n }\n\n LHC_API.args.manual_init || init();\n };\n\n const eventsHandler = require('./util/domEventsHandler').domEventsHandler;\n\n (preInit(), !lhc.ready) || (eventsHandler.listen(document, \"DOMContentLoaded\", function () {\n preInit();\n }, \"domloaded\"),\n eventsHandler.listen(document, \"readystatechange\", function () {\n (\"complete\" === document.readyState || \"interactive\" === document.readyState && document.body) && preInit();\n }, \"domstatechange\"),\n eventsHandler.listen(global, \"load\", function () {\n preInit();\n }, \"windowload\"));\n\n }).call(this, global['$_' + scopeScript], global[scopeScript + '_API']);\n\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n\n})(window);"],"names":["rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","length","shift","asap","task","rawTask","pop","RawTask","this","module","exports","prototype","call","error","onerror","push","queue","requestFlush","index","flush","currentIndex","scan","newLength","toggle","observer","node","scope","g","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","document","createTextNode","observe","characterData","data","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_typeof","obj","Symbol","iterator","constructor","_possibleConstructorReturn","TypeError","ReferenceError","_getPrototypeOf","getPrototypeOf","UIConstructorIframe","subClass","superClass","create","value","writable","configurable","elementId","style","attributes","tagname","documentRef","bodyId","dir","cl","header","elmDomDoc","helperFunctions","elmDom","open","writeln","close","insertCssFile","insertContent","body","innerHTML","tmpl","UIConsturctor","f","tagName","classNames","id","keys","forEach","attr","a","className","join","cssText","c","d","k","e","getElementById","split","domEventsHandler","restyle","reset","getElementsByTagName","createDocumentFragment","type","settings","appendChild","styleSheet","nodeValue","elm","href","createElement","b","rel","crossOrigin","src","async","loadcb","onload","key","setAttribute","hasOwnProperty","chatNotifications","_chatNotifications","isNotificationsSubscribed","applicationServerPublicKey","eventEmitter","publicKey","that","swRegistration","navigator","window","Notification","permission","requestPermission","alert","serviceWorker","register","then","swReg","pushManager","getSubscription","subscription","applicationServerKey","base64String","base64","repeat","replace","rawData","atob","outputArray","Uint8Array","i","charCodeAt","urlB64ToUint8Array","subscribe","getKey","token","contentEncoding","PushManager","supportedContentEncodings","payload","JSON","stringify","endpoint","btoa","String","fromCharCode","apply","authToken","emitEvent","updateSubscriptionOnServer","_helperFunctions","s","contentWindow","contentDocument","EId","EObj","parentNode","removeChild","Intl","DateTimeFormat","resolvedOptions","timeZone","Date","stdTimezoneOffset","jan","getFullYear","jul","Math","max","getTimezoneOffset","dst","today","params","outline","visibility","resize","boxshadow","overflow","background","opacity","top","right","bottom","left","position","border","minheight","minwidth","maxheight","maxwidth","padding","margin","transition","transform","width","height","display","zindex","backgroundcolor","cursor","borderRadius","element","classList","contains","match","RegExp","add","hasClass","remove","screenshot","url","html2canvas","th","onreadystatechange","makeScreenshot","onrendered","canvas","xhr","XMLHttpRequest","setRequestHeader","send","encodeURIComponent","toDataURL","err","item","pairs","request","urlRequest","makeQuery","readyState","status","parse","responseText","message","req","containerChat","prefix","pnode","cont","constructUI","mainWidget","units","originalCSS","bottom_override","isLoaded","loadStatus","main","css","restyleStyle","position_placement","mode","fscreen","massRestyle","wloaded","next","isMobile","constructUIIframe","staticJS","hhtml","cont_ss","lazyLoad","makeContent","getSessionAttributes","bootstrap","toggleVisibilityWrap","toggleVisibility","widgetStatus","monitorDimensionsWrap","monitorDimensions","widgetDimesions","addListener","valueInternal","insertCssRemoteFile","theme","LHC_API","args","lhc_base_url","theme_v","checkLoadStatus","insertJSFile","prefixLowercase","hide","show","width_override","height_override","wbottom","clinst","right_override","wright_inv","wright","mainWidgetPopup","freeup","argumentsQuery","Array","paramsReturn","LHCChatOptions","name","encrypted","size","attr_prefill","attr_prefill_admin","chatEvents","paramsPopup","elementReferrerPopup","closed","event","preventDefault","focus","urlArgumetns","storageHandler","cookieEnabled","toggleSound","setSessionStorage","fontSize","getLocalStorage","parseInt","getSessionReferrer","parseOptions","dualScreenLeft","undefined","screenLeft","screenX","dualScreenTop","screenTop","screenY","innerWidth","documentElement","clientWidth","screen","innerHeight","clientHeight","systemZoom","availWidth","paramsWindow","newWin","needWindow","windowCreated","location","viewHandler","kcw","sendChildEvent","sendParameters","js_vars","js_args","currentVar","eval","var","statusWidget","controlMode","font","widget","shidden","lload","unread_counter","onlineStatus","icon","leaveMessage","sload","placement","sbottom","sright","_inst","attachUserEventListener","offline_redirect","toggleOfflineIcon","chatParams","unreadMessagesNumber","getSessionStorage","unreadTotal","otm","showUnreadIndicator","init","isNaN","now","removeUnreadIndicator","number","iconText","iconValue","innerText","removeSessionStorage","hideOffline","chatEventsHandler","getJSVarsValues","jsVars","prefillOptions","fieldsCustom","prefilOptionsList","command","postMessage","popupWidget","popup","getInitAttributes","sendChildCommand","_domEventsHandler","events","object","dispatch","getEvent","attachEvent","eventName","presentEvent","removeEventHandler","eventListener","addEventListener","listener","removeEventListener","detachEvent","eventInstance","_this","caller","arguments","Event","monitoredVariable","listeners","val","callListeners","indexOf","splice","global","domain","cookiesSupportChecked","checkCookiesSupport","secureCookie","cookiePerPage","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","cookie","coookieName","cookieValue","expireTime","string","setTime","getTime","toGMTString","cookieName","baseCookie","charAt","substring","host","hostname","setItem","removeItem","getItem","ref","sessionInformation","getHTTPCookie","parseSessionInformation","setHTTPCookie","getStoreValue","getCookieDomain","content","contentReturn","parts","unescape","userSession","vid","hnh","hash","updateVarsTimeout","decode","evalJSON","str","$","parseJSON","toJSON","encode","cb","lhc_var","validator","set","prop","updateJSVars","Proxy","console","log","getVars","append","vars","varsJSON","getAppendVariables","alwaysPersistentNeedHelp","round","appleIphone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","regex","userAgent","test","tmp","result","apple","phone","ipod","tablet","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","any","noop","LAST_ERROR","IS_ERROR","Promise","fn","_h","_i","_j","_k","doResolve","handle","deferred","_l","onFulfilled","onRejected","ret","ex","tryCallOne","reject","promise","resolve","handleResolved","newValue","getThen","finale","bind","_m","Handler","done","res","reason","tryCallTwo","_n","safeThen","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","arr","slice","remaining","race","values","finally","denodeify","argumentCount","Infinity","concat","callbackFn","Function","denodeifyWithCount","fnLength","map","_","denodeifyWithoutCount","nodeify","ctx","enableSynchronous","isPending","getState","isFulfilled","isRejected","getValue","Error","getReason","disableSynchronous","EventEmitter","proto","originalGlobalValue","indexOfListener","alias","isValidListener","getListeners","evt","response","_getEvents","flattenListeners","flatListeners","getListenersAsObject","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","defineProperty","_createClass","protoProps","staticProps","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","__esModule","definition","get","chunkId","reduce","promises","u","globalThis","l","script","needAttach","scripts","getAttribute","charset","timeout","nc","origin","onScriptComplete","prev","doneFns","head","r","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","currentScript","scopeScript","lhcError","filename","lineNumber","stack","column","file","line","lineno","colno","lhc","loaded","connected","ready","version","require","BehaviorSubject","default","mobile_view","toLowerCase","prefixStorage","scope_storage","cookieEnabledUser","cookie_enabled","userMode","orig","proactive","check_messages","cookie_per_page","setCookiePerPage","referrer","substr","protocol","setSessionReferer","lang","attributesWidget","terminated","prefixScope","msgSnippet","react_attr","hide_parent","hide_iframe","hide_status","msgsnippet_status","isIE","toUpperCase","assign","fresh","popupDimesnions","pheight","pwidth","leaveamessage","department","dep_default","product","domain_lhc","instance_id","profile_pic","base_url","tag","captcha","focused","identifier","proactive_interval","bot_id","trigger_id","priority","survey","operator","phash","pvhash","nh","init_calls","childCommands","childExtCommands","wwidth","wheight","setAttributes","setSessionInformation","getSessionInformation","setSessionReferrer","containerChatObj","embedWrapper","getArguments","UUID","getVID","getTzOffset","title","showNeedHelp","needhelpWidget","showProactive","proactiveChat","setParams","makeRequest","wv","terminate","chat_ui","isOnline","parent","__webpack_public_path__","chunks_location","secure_cookie","setSecureCookie","setCookieDomain","siteaccess","static","pdim","survey_id","cont_css","wposition","ts","hash_ts","setVID","storeSessionInformation","nextProperty","mobile_popup","sound_enabled","check_status","activityMonitoring","track_mouse","track_activity","ga","analyticEvents","ap","setupVarsMonitoring","ll","extension","nodeJSChat","removeById","po","getHours","getMinutes","insertBefore","sessionAtrribute","setChatInformation","hideInvitation","setPublicKey","pk","sendNotification","screenShare","showInvitation","full","full_widget","showSnippet","msgSnippetWidget","msg_body","originalTitle","blinkInterval","reset_height","force_height","force_width","force_bottom","force_right","y","serviceWorkerAvailable","lhc_ch","lhc_cid","handleMessages","originDomain","sendReadyEvent","focusChangeCb","source","preInit","before_init","manual_init","eventsHandler","listen"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"index.js","mappings":"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","sources":["webpack://LiveHelperChat/./node_modules/asap/browser-asap.js","webpack://LiveHelperChat/./node_modules/asap/browser-raw.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","webpack://LiveHelperChat/./src/lib/UIConstructorIframe.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/inherits.js","webpack://LiveHelperChat/./src/lib/UIConsturctor.js","webpack://LiveHelperChat/./src/lib/chatNotifications.js","webpack://LiveHelperChat/./src/lib/helperFunctions.js","webpack://LiveHelperChat/./src/lib/settings.js","webpack://LiveHelperChat/./src/lib/widgets/containerChat.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidget.js","webpack://LiveHelperChat/./src/lib/widgets/mainWidgetPopup.js","webpack://LiveHelperChat/./src/lib/widgets/statusWidget.js","webpack://LiveHelperChat/./src/util/chatEventsHandler.js","webpack://LiveHelperChat/./src/util/domEventsHandler.js","webpack://LiveHelperChat/./src/util/monitoredVariable.js","webpack://LiveHelperChat/./src/util/storageHandler.js","webpack://LiveHelperChat/./src/util/userSession.js","webpack://LiveHelperChat/./node_modules/ismobilejs/esm/isMobile.js","webpack://LiveHelperChat/./node_modules/promise/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/core.js","webpack://LiveHelperChat/./node_modules/promise/lib/done.js","webpack://LiveHelperChat/./node_modules/promise/lib/es6-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/finally.js","webpack://LiveHelperChat/./node_modules/promise/lib/index.js","webpack://LiveHelperChat/./node_modules/promise/lib/node-extensions.js","webpack://LiveHelperChat/./node_modules/promise/lib/synchronous.js","webpack://LiveHelperChat/./node_modules/wolfy87-eventemitter/EventEmitter.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/classCallCheck.js","webpack://LiveHelperChat/./node_modules/@babel/runtime/helpers/esm/createClass.js","webpack://LiveHelperChat/webpack/bootstrap","webpack://LiveHelperChat/webpack/runtime/load script","webpack://LiveHelperChat/webpack/runtime/compat get default export","webpack://LiveHelperChat/webpack/runtime/define property getters","webpack://LiveHelperChat/webpack/runtime/ensure chunk","webpack://LiveHelperChat/webpack/runtime/get javascript chunk filename","webpack://LiveHelperChat/webpack/runtime/global","webpack://LiveHelperChat/webpack/runtime/hasOwnProperty shorthand","webpack://LiveHelperChat/webpack/runtime/make namespace object","webpack://LiveHelperChat/webpack/runtime/publicPath","webpack://LiveHelperChat/webpack/runtime/jsonp chunk loading","webpack://LiveHelperChat/./src/index.js"],"sourcesContent":["\"use strict\";\n\n// rawAsap provides everything we need except exception management.\nvar rawAsap = require(\"./raw\");\n// RawTasks are recycled to reduce GC churn.\nvar freeTasks = [];\n// We queue errors to ensure they are thrown in right order (FIFO).\n// Array-as-queue is good enough here, since we are just dealing with exceptions.\nvar pendingErrors = [];\nvar requestErrorThrow = rawAsap.makeRequestCallFromTimer(throwFirstError);\n\nfunction throwFirstError() {\n if (pendingErrors.length) {\n throw pendingErrors.shift();\n }\n}\n\n/**\n * Calls a task as soon as possible after returning, in its own event, with priority\n * over other events like animation, reflow, and repaint. An error thrown from an\n * event will not interrupt, nor even substantially slow down the processing of\n * other events, but will be rather postponed to a lower priority event.\n * @param {{call}} task A callable object, typically a function that takes no\n * arguments.\n */\nmodule.exports = asap;\nfunction asap(task) {\n var rawTask;\n if (freeTasks.length) {\n rawTask = freeTasks.pop();\n } else {\n rawTask = new RawTask();\n }\n rawTask.task = task;\n rawAsap(rawTask);\n}\n\n// We wrap tasks with recyclable task objects. A task object implements\n// `call`, just like a function.\nfunction RawTask() {\n this.task = null;\n}\n\n// The sole purpose of wrapping the task is to catch the exception and recycle\n// the task object after its single use.\nRawTask.prototype.call = function () {\n try {\n this.task.call();\n } catch (error) {\n if (asap.onerror) {\n // This hook exists purely for testing purposes.\n // Its name will be periodically randomized to break any code that\n // depends on its existence.\n asap.onerror(error);\n } else {\n // In a web browser, exceptions are not fatal. However, to avoid\n // slowing down the queue of pending tasks, we rethrow the error in a\n // lower priority turn.\n pendingErrors.push(error);\n requestErrorThrow();\n }\n } finally {\n this.task = null;\n freeTasks[freeTasks.length] = this;\n }\n};\n","\"use strict\";\n\n// Use the fastest means possible to execute a task in its own turn, with\n// priority over other events including IO, animation, reflow, and redraw\n// events in browsers.\n//\n// An exception thrown by a task will permanently interrupt the processing of\n// subsequent tasks. The higher level `asap` function ensures that if an\n// exception is thrown by a task, that the task queue will continue flushing as\n// soon as possible, but if you use `rawAsap` directly, you are responsible to\n// either ensure that no exceptions are thrown from your task, or to manually\n// call `rawAsap.requestFlush` if an exception is thrown.\nmodule.exports = rawAsap;\nfunction rawAsap(task) {\n if (!queue.length) {\n requestFlush();\n flushing = true;\n }\n // Equivalent to push, but avoids a function call.\n queue[queue.length] = task;\n}\n\nvar queue = [];\n// Once a flush has been requested, no further calls to `requestFlush` are\n// necessary until the next `flush` completes.\nvar flushing = false;\n// `requestFlush` is an implementation-specific method that attempts to kick\n// off a `flush` event as quickly as possible. `flush` will attempt to exhaust\n// the event queue before yielding to the browser's own event loop.\nvar requestFlush;\n// The position of the next task to execute in the task queue. This is\n// preserved between calls to `flush` so that it can be resumed if\n// a task throws an exception.\nvar index = 0;\n// If a task schedules additional tasks recursively, the task queue can grow\n// unbounded. To prevent memory exhaustion, the task queue will periodically\n// truncate already-completed tasks.\nvar capacity = 1024;\n\n// The flush function processes all tasks that have been scheduled with\n// `rawAsap` unless and until one of those tasks throws an exception.\n// If a task throws an exception, `flush` ensures that its state will remain\n// consistent and will resume where it left off when called again.\n// However, `flush` does not make any arrangements to be called again if an\n// exception is thrown.\nfunction flush() {\n while (index < queue.length) {\n var currentIndex = index;\n // Advance the index before calling the task. This ensures that we will\n // begin flushing on the next task the task throws an error.\n index = index + 1;\n queue[currentIndex].call();\n // Prevent leaking memory for long chains of recursive calls to `asap`.\n // If we call `asap` within tasks scheduled by `asap`, the queue will\n // grow, but to avoid an O(n) walk for every task we execute, we don't\n // shift tasks off the queue after they have been executed.\n // Instead, we periodically shift 1024 tasks off the queue.\n if (index > capacity) {\n // Manually shift all values starting at the index back to the\n // beginning of the queue.\n for (var scan = 0, newLength = queue.length - index; scan < newLength; scan++) {\n queue[scan] = queue[scan + index];\n }\n queue.length -= index;\n index = 0;\n }\n }\n queue.length = 0;\n index = 0;\n flushing = false;\n}\n\n// `requestFlush` is implemented using a strategy based on data collected from\n// every available SauceLabs Selenium web driver worker at time of writing.\n// https://docs.google.com/spreadsheets/d/1mG-5UYGup5qxGdEMWkhP6BWCz053NUb2E1QoUTU16uA/edit#gid=783724593\n\n// Safari 6 and 6.1 for desktop, iPad, and iPhone are the only browsers that\n// have WebKitMutationObserver but not un-prefixed MutationObserver.\n// Must use `global` or `self` instead of `window` to work in both frames and web\n// workers. `global` is a provision of Browserify, Mr, Mrs, or Mop.\n\n/* globals self */\nvar scope = typeof global !== \"undefined\" ? global : self;\nvar BrowserMutationObserver = scope.MutationObserver || scope.WebKitMutationObserver;\n\n// MutationObservers are desirable because they have high priority and work\n// reliably everywhere they are implemented.\n// They are implemented in all modern browsers.\n//\n// - Android 4-4.3\n// - Chrome 26-34\n// - Firefox 14-29\n// - Internet Explorer 11\n// - iPad Safari 6-7.1\n// - iPhone Safari 7-7.1\n// - Safari 6-7\nif (typeof BrowserMutationObserver === \"function\") {\n requestFlush = makeRequestCallFromMutationObserver(flush);\n\n// MessageChannels are desirable because they give direct access to the HTML\n// task queue, are implemented in Internet Explorer 10, Safari 5.0-1, and Opera\n// 11-12, and in web workers in many engines.\n// Although message channels yield to any queued rendering and IO tasks, they\n// would be better than imposing the 4ms delay of timers.\n// However, they do not work reliably in Internet Explorer or Safari.\n\n// Internet Explorer 10 is the only browser that has setImmediate but does\n// not have MutationObservers.\n// Although setImmediate yields to the browser's renderer, it would be\n// preferrable to falling back to setTimeout since it does not have\n// the minimum 4ms penalty.\n// Unfortunately there appears to be a bug in Internet Explorer 10 Mobile (and\n// Desktop to a lesser extent) that renders both setImmediate and\n// MessageChannel useless for the purposes of ASAP.\n// https://github.com/kriskowal/q/issues/396\n\n// Timers are implemented universally.\n// We fall back to timers in workers in most engines, and in foreground\n// contexts in the following browsers.\n// However, note that even this simple case requires nuances to operate in a\n// broad spectrum of browsers.\n//\n// - Firefox 3-13\n// - Internet Explorer 6-9\n// - iPad Safari 4.3\n// - Lynx 2.8.7\n} else {\n requestFlush = makeRequestCallFromTimer(flush);\n}\n\n// `requestFlush` requests that the high priority event queue be flushed as\n// soon as possible.\n// This is useful to prevent an error thrown in a task from stalling the event\n// queue if the exception handled by Node.js’s\n// `process.on(\"uncaughtException\")` or by a domain.\nrawAsap.requestFlush = requestFlush;\n\n// To request a high priority event, we induce a mutation observer by toggling\n// the text of a text node between \"1\" and \"-1\".\nfunction makeRequestCallFromMutationObserver(callback) {\n var toggle = 1;\n var observer = new BrowserMutationObserver(callback);\n var node = document.createTextNode(\"\");\n observer.observe(node, {characterData: true});\n return function requestCall() {\n toggle = -toggle;\n node.data = toggle;\n };\n}\n\n// The message channel technique was discovered by Malte Ubl and was the\n// original foundation for this library.\n// http://www.nonblocking.io/2011/06/windownexttick.html\n\n// Safari 6.0.5 (at least) intermittently fails to create message ports on a\n// page's first load. Thankfully, this version of Safari supports\n// MutationObservers, so we don't need to fall back in that case.\n\n// function makeRequestCallFromMessageChannel(callback) {\n// var channel = new MessageChannel();\n// channel.port1.onmessage = callback;\n// return function requestCall() {\n// channel.port2.postMessage(0);\n// };\n// }\n\n// For reasons explained above, we are also unable to use `setImmediate`\n// under any circumstances.\n// Even if we were, there is another bug in Internet Explorer 10.\n// It is not sufficient to assign `setImmediate` to `requestFlush` because\n// `setImmediate` must be called *by name* and therefore must be wrapped in a\n// closure.\n// Never forget.\n\n// function makeRequestCallFromSetImmediate(callback) {\n// return function requestCall() {\n// setImmediate(callback);\n// };\n// }\n\n// Safari 6.0 has a problem where timers will get lost while the user is\n// scrolling. This problem does not impact ASAP because Safari 6.0 supports\n// mutation observers, so that implementation is used instead.\n// However, if we ever elect to use timers in Safari, the prevalent work-around\n// is to add a scroll event listener that calls for a flush.\n\n// `setTimeout` does not call the passed callback if the delay is less than\n// approximately 7 in web workers in Firefox 8 through 18, and sometimes not\n// even then.\n\nfunction makeRequestCallFromTimer(callback) {\n return function requestCall() {\n // We dispatch a timeout with a specified delay of 0 for engines that\n // can reliably accommodate that request. This will usually be snapped\n // to a 4 milisecond delay, but once we're flushing, there's no delay\n // between events.\n var timeoutHandle = setTimeout(handleTimer, 0);\n // However, since this timer gets frequently dropped in Firefox\n // workers, we enlist an interval handle that will try to fire\n // an event 20 times per second until it succeeds.\n var intervalHandle = setInterval(handleTimer, 50);\n\n function handleTimer() {\n // Whichever timer succeeds will cancel both timers and\n // execute the callback.\n clearTimeout(timeoutHandle);\n clearInterval(intervalHandle);\n callback();\n }\n };\n}\n\n// This is for `asap.js` only.\n// Its name will be periodically randomized to break any code that depends on\n// its existence.\nrawAsap.makeRequestCallFromTimer = makeRequestCallFromTimer;\n\n// ASAP was originally a nextTick shim included in Q. This was factored out\n// into this ASAP package. It was later adapted to RSVP which made further\n// amendments. These decisions, particularly to marginalize MessageChannel and\n// to capture the MutationObserver implementation in a closure, were integrated\n// back into ASAP proper.\n// https://github.com/tildeio/rsvp.js/blob/cddf7232546a9cf858524b75cde6f9edf72620a7/lib/rsvp/asap.js\n","export default function _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}","import _typeof from \"@babel/runtime/helpers/typeof\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}","export default function _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}","import {UIConsturctor} from './UIConsturctor';\nimport {helperFunctions} from './helperFunctions';\n\nexport class UIConstructorIframe extends UIConsturctor {\n\n constructor(elementId, style, attributes, tagname, documentRef) {\n super(elementId, style, attributes, tagname, documentRef);\n this.bodyId = '';\n }\n\n constructUIIframe(style, dir, cl, header) {\n\n if (typeof dir === 'undefined'){\n dir = 'ltr';\n }\n\n if (typeof cl === 'undefined'){\n cl = 'en';\n }\n\n if (typeof header === 'undefined'){\n header = '';\n }\n\n this.elmDomDoc = helperFunctions.getDocument(this.elmDom);\n if (this.elmDomDoc === null) return null;\n this.elmDomDoc.open();\n this.elmDomDoc.writeln(''+header+'');\n this.elmDomDoc.close();\n this.insertCssFile(style);\n this.insertContent();\n };\n\n insertContent () {\n this.elmDomDoc.body.innerHTML = this.tmpl\n };\n};\n\n","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}","import {helperFunctions} from './helperFunctions';\nimport {settings} from './settings.js';\nimport {domEventsHandler} from '../util/domEventsHandler';\n\nexport class UIConsturctor {\n constructor(elementId, style, attributes, tagname, documentRef) {\n var f = this;\n this.elementId = elementId || \"\";\n this.style = style || \"\";\n this.tagName = tagname || \"div\";\n this.tmpl = \"\";\n this.elmDom = null;\n this.elmDomDoc = documentRef || document;\n this.attributes = {};\n this.classNames = [];\n\n this.elementId && (this.attributes.id = this.elementId);\n\n attributes && Object.keys(attributes).forEach(function (attr) {\n f.attributes[attr] = attributes[attr]\n })\n }\n\n constructUI(a) {\n this.elmDomDoc =\n a || this.elmDomDoc;\n this.elmDom = helperFunctions.initElement(this.elmDomDoc, this.tagName, this.attributes, this.style, this.tmpl);\n this.elmDom.className += this.classNames.join(\" \");\n return this.elmDom\n };\n\n restyle(attr, style) {\n style && (this.elmDom ? this.elmDom.style.cssText += \";\" + attr + \":\" + style : this.style += \";\" + attr + \":\" + style)\n };\n\n attachUserEventListener(a, c, d, k) {\n var e;\n if (e = d ? this.getElementById(d) : this.elmDom) d = a.split(\" \"), 1 < d.length ? d.forEach(function (a) {\n domEventsHandler.listen(e, a, c, a + k)\n }) : domEventsHandler.listen(e, a, c, k)\n };\n\n getElementById(a) {\n return this.elmDom ? this.elmDomDoc.getElementById(a) : null\n };\n\n hide() {\n this.restyle(\"display\", \"none !important\");\n }\n\n show() {\n this.restyle(\"display\", \"block !important\");\n }\n\n insertCssFile(style, reset) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = helperFunctions.initElement(this.elmDomDoc, \"style\", {type: \"text/css\"}),\n f = this.elmDomDoc.createTextNode(reset ? style : settings.ResetStyle + \"\" + style);\n k.appendChild(e);\n d.appendChild(k);\n e.styleSheet ? e.styleSheet.cssText = f.nodeValue : e.appendChild(f)\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = this.elmDomDoc.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n insertJSFile(src, async, loadcb, attr) {\n var d = this.elmDomDoc.getElementsByTagName(\"head\")[0],\n k = this.elmDomDoc.createDocumentFragment(),\n e = this.elmDomDoc.createElement('script');\n\n e.type = 'text/javascript';\n if (typeof async === 'undefined' || async === true) {\n e.async = true;\n }\n\n e.crossOrigin = \"*\";\n e.src = src;\n\n if (loadcb) {\n e.onload = loadcb;\n }\n\n if (attr) {\n Object.keys(attr).forEach(key => {\n e.setAttribute(key,attr[key]);\n })\n }\n\n k.appendChild(e);\n d.appendChild(k);\n }\n\n massRestyle(a) {\n for (var b in a) a.hasOwnProperty(b) && this.restyle(b, a[b])\n }\n};\n\n","\nclass _chatNotifications {\n constructor() {\n this.isNotificationsSubscribed = false;\n this.applicationServerPublicKey = null;\n this.eventEmitter = null;\n }\n\n setPublicKey(publicKey, eventEmitter) {\n this.applicationServerPublicKey = publicKey\n this.eventEmitter = eventEmitter\n }\n\n sendNotification() {\n\n var that = this;\n var applicationServerPublicKey = this.applicationServerPublicKey;\n\n var swRegistration = null;\n\n if (!('serviceWorker' in navigator) || !('PushManager' in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n\n // Let's check if the browser supports notifications\n if (!(\"Notification\" in window)) {\n alert(\"This browser does not support desktop notification\");\n return;\n }\n // Let's check whether notification permissions have already been granted\n else if (Notification.permission === \"granted\") {\n // If it's okay let's create a notification\n //\n }\n // Otherwise, we need to ask the user for permission\n else if (Notification.permission !== \"denied\") {\n Notification.requestPermission(function (permission) {\n // If the user accepts, let's create a notification\n if (permission !== \"granted\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n });\n } else if (Notification.permission === \"denied\") {\n alert('Sorry but you have denied notification!');\n return;\n }\n\n function urlB64ToUint8Array(base64String) {\n var padding = '='.repeat((4 - base64String.length % 4) % 4);\n var base64 = (base64String + padding)\n .replace(/\\-/g, '+')\n .replace(/_/g, '/');\n\n var rawData = window.atob(base64);\n var outputArray = new Uint8Array(rawData.length);\n\n for (var i = 0; i < rawData.length; ++i) {\n outputArray[i] = rawData.charCodeAt(i);\n }\n return outputArray;\n }\n\n function updateSubscriptionOnServer(subscription, subscribe) {\n if (subscription === null) {\n return;\n }\n\n var key = subscription.getKey('p256dh');\n var token = subscription.getKey('auth');\n var contentEncoding = (PushManager.supportedContentEncodings || ['aesgcm'])[0];\n\n var payload = JSON.stringify({\n endpoint: subscription.endpoint,\n publicKey: key ? btoa(String.fromCharCode.apply(null, new Uint8Array(key))) : null,\n authToken: token ? btoa(String.fromCharCode.apply(null, new Uint8Array(token))) : null,\n contentEncoding : contentEncoding\n });\n\n that.eventEmitter.emitEvent('subcribedEvent', [{'payload' : payload}]);\n }\n\n var that = this;\n\n function subscribeUser() {\n var applicationServerKey = urlB64ToUint8Array(applicationServerPublicKey);\n swRegistration.pushManager.subscribe({\n 'userVisibleOnly': true,\n 'applicationServerKey': applicationServerKey\n }).then(function(subscription) {\n updateSubscriptionOnServer(subscription, true);\n that.isNotificationsSubscribed = true;\n });\n }\n\n function unsubscribeUser() {\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n if (subscription) {\n updateSubscriptionOnServer(subscription,false);\n return subscription.unsubscribe();\n }\n }).then(function() {\n alert('You have unsubscribed!');\n that.isNotificationsSubscribed = false;\n });\n }\n\n function initializeUI() {\n // Set the initial subscription value\n swRegistration.pushManager.getSubscription().then(function(subscription) {\n that.isNotificationsSubscribed = !(subscription === null);\n if (that.isNotificationsSubscribed) {\n subscribeUser();\n } else {\n subscribeUser();\n }\n });\n }\n\n // At last, if the user has denied notifications, and you\n // want to be respectful there is no need to bother them any more.\n navigator.serviceWorker.register('/sw.lhc.js?v=2').then(function(swReg) {\n swRegistration = swReg;\n initializeUI();\n });\n\n }\n\n};\n\nconst chatNotifications = new _chatNotifications();\nexport { chatNotifications };","\nclass _helperFunctions {\n constructor() {\n }\n\n initElement(a, c, b, k, s) {\n var e;\n a = a.createElement(c);\n b = b || {};\n for (e in b) a[e] = b[e];\n s && \"iframe\" !== c && (a.innerHTML = s);\n k && (a.style.cssText = k);\n return a\n };\n \n getDocument(a) {\n return a.contentWindow ? a.contentWindow.document : a.contentDocument ? a.contentDocument : a.document ? a.document : null\n };\n\n removeById(EId)\n {\n var EObj = null;\n return(EObj = document.getElementById(EId)) ? EObj.parentNode.removeChild(EObj) : false;\n }\n\n // Returns time zone offset\n getTzOffset() {\n try {\n return Intl.DateTimeFormat().resolvedOptions().timeZone;\n } catch (e) {\n Date.prototype.stdTimezoneOffset = function() {\n var jan = new Date(this.getFullYear(), 0, 1);\n var jul = new Date(this.getFullYear(), 6, 1);\n return Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n };\n\n Date.prototype.dst = function() {\n return this.getTimezoneOffset() < this.stdTimezoneOffset();\n };\n\n var today = new Date();\n var timeZoneOffset = 0;\n\n if (today.dst()) {\n timeZoneOffset = today.getTimezoneOffset();\n } else {\n timeZoneOffset = today.getTimezoneOffset()-60;\n };\n\n return (timeZoneOffset/60)*-1;\n }\n };\n\n getAbstractStyle(params) {\n return [\n \"outline: \" + (params.outline ? params.outline : \"none\") + \" !important; \",\n \"visibility: \" + (params.visibility ? params.visibility : \"visible\") + \" !important; \",\n \"resize: \" + (params.resize ? params.resize : \"none\") + \" !important; \",\n \"box-shadow: \" + (params.boxshadow ? params.boxshadow : \"none\") + \" ; \",\n \"overflow: \" + (params.overflow ? params.overflow : \"visible\") + \" ; \",\n \"background : \" + (params.background ? params.background : \"none\") + \" !important; \",\n \"opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"filter : alpha(opacity=\" + (params.opacity ? 100 * params.opacity : \"100\") + \") !important; \",\n \"-ms-filter : progid:DXImageTransform.Microsoft.Alpha(Opacity\" + (params.opacity ? params.opacity : \"1\") + \") !important; \",\n \"-moz-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"-khtml-opacity : \" + (params.opacity ? params.opacity : \"1\") + \" !important; \",\n \"top : \" + (params.top ? params.top : \"auto\") + \"; \",\n \"right : \" + (params.right ? params.right : \"auto\") + \"; \",\n \"bottom : \" + (params.bottom ? params.bottom : \"auto\") + \"; \",\n \"left : \" + (params.left ? params.left : \"auto\") + \"; \",\n \"position : \" + (params.position ? params.position : \"absolute\") + \" !important; \",\n \"border : \" + (params.border ? params.border : \"0\") + \" !important; \",\n \"min-height : \" + (params.minheight ? params.minheight : \"auto\") + \"; \",\n \"min-width : \" + (params.minwidth ? params.minwidth : \"auto\") + \"; \",\n \"max-height : \" + (params.maxheight ? params.maxheight : \"none\") + \"; \",\n \"max-width : \" + (params.maxwidth ? params.maxwidth : \"none\") + \"; \",\n \"padding : \" + (params.padding ? params.padding : \"0\") + \" !important; \",\n \"margin : \" + (params.margin ? params.margin : \"0\") + \" !important; \",\n \"-moz-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-webkit-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"-o-transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transition-property : \" + (params.transition ? params.transition : \"none\") + \" !important; \",\n \"transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-webkit-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"-ms-transform : \" + (params.transform ? params.transform : \"none\") + \" !important; \",\n \"width : \" + (params.width ? params.width : \"auto\") + \" ; \",\n \"height : \" + (params.height ? params.height : \"auto\") + \" ; \",\n \"display : \" + (params.display ? params.display : \"block\") + \" !important; \",\n \"z-index : \" + (params.zindex ? params.zindex : \"none\") + \" ; \",\n \"background-color : \" + (params.backgroundcolor ? params.backgroundcolor : \"transparent\") + \" !important; \",\n \"cursor : \" + (params.cursor ? params.cursor : \"auto\") + \" !important; \",\n \"float : \" + (params[\"float\"] ? params[\"float\"] : \"none\") + \" !important; \",\n \"border-radius : \" + (params.borderRadius ? params.borderRadius : \"unset\") + \"; \"].join(\"\").replace(/\\s/gm, \"\")\n };\n\n hasClass(element, className) {\n if (element === null) return;\n return element.classList ? element.classList.contains(className) : !!element.className.match(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"))\n }\n\n addClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.add(className) : this.hasClass(element, className) || (element.className += \" \" + className)\n }\n\n removeClass(element, className) {\n if (element === null) return;\n element.classList ? element.classList.remove(className) : this.hasClass(element, className) && (element.className = element.className.replace(RegExp(\"(\\\\s|^)\" + className + \"(\\\\s|$)\"), \" \"))\n }\n\n makeScreenshot(screenshot,url) {\n var inst = this;\n if (typeof html2canvas == \"undefined\") {\n var th = document.getElementsByTagName('head')[0];\n var s = document.createElement('script');\n s.setAttribute('type','text/javascript');\n s.setAttribute('src',screenshot);\n th.appendChild(s);\n\n s.onreadystatechange = s.onload = () => {\n this.makeScreenshot(screenshot, url);\n };\n } else {\n try {\n html2canvas(document.body, {\n onrendered: function(canvas) {\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", url, true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( canvas.toDataURL() ) );\n }\n });\n } catch(err) {\n\n }\n }\n }\n\n makeQuery(params)\n {\n var item, pairs = [];\n for (item in params) {\n if (params[item] != '' && params[item] != null) {\n params.hasOwnProperty(item) && pairs.push(encodeURIComponent(item) + \"=\" + encodeURIComponent(params[item]));\n }\n }\n return pairs.join(\"&\")\n }\n \n makeRequest(url, params, callback) {\n var request = new XMLHttpRequest;\n var urlRequest = url + '?' + this.makeQuery(params.params);\n request.open(\"GET\",urlRequest, true);\n request.onreadystatechange = function () {\n if (4 == request.readyState && request.status != 0) {\n try {\n callback(JSON.parse(request.responseText));\n } catch (e) {\n e.message += \"\\n\" + urlRequest + \"\\n\" + \"[\"+request.status+\"]\\n\" + request.responseText;\n throw e;\n }\n }\n };\n request.send();\n return {type: \"xhr\", req: request}\n }\n\n insertCssRemoteFile(attr) {\n\n var elm = null;\n\n if (attr.id && attr.href && (elm = document.getElementById(attr.id)) !== null) {\n elm.href = attr.href\n return;\n }\n\n var d = document.getElementsByTagName(\"head\")[0],\n k = document.createDocumentFragment(),\n e = document.createElement('link');\n\n e.rel = \"stylesheet\";\n e.crossOrigin = \"*\";\n\n for (var b in attr) e[b] = attr[b];\n\n k.appendChild(e);\n d.appendChild(k);\n }\n};\n\nconst helperFunctions = new _helperFunctions();\nexport { helperFunctions };","var settings = {};\n\nsettings.ResetStyle = \"html,body,div,span,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,abbr,address,cite,code,del,dfn,em,img,ins,kbd,q,samp,small,strong,sub,sup,var,b,i,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,figcaption,figure,footer,header,hgroup,menu,nav,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;outline:0;font-size:100%;vertical-align:baseline;background:transparent}body{line-height:1}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}nav ul{list-style:none}blockquote,q{quotes:none}blockquote:before,blockquote:after,q:before,q:after{content:'';content:none}a{margin:0;padding:0;font-size:100%;vertical-align:baseline;background:transparent}ins{background-color:#ff9;color:#000;text-decoration:none}mark{background-color:#ff9;color:#000;font-style:italic;font-weight:bold}del{text-decoration:line-through}abbr[title],dfn[title]{border-bottom:1px dotted;cursor:help}table{border-collapse:collapse;border-spacing:0}hr{display:block;height:1px;border:0;border-top:1px solid #ccc;margin:1em 0;padding:0}input,select{vertical-align:middle}html,body{height: 100% !important;\\n\" +\n \" min-height: 100% !important;\\n\" +\n \" max-height: 100% !important;\\n\" +\n \" width: 100% !important;\\n\" +\n \" min-width: 100% !important;\\n\" +\n \" max-width: 100% !important;}body{display: flex;flex-direction: column;background:transparent;font:13px Helvetica,Arial,sans-serif;position:relative}.clear{clear:both}.clearfix:after{content:'';display:block;height:0;clear:both;visibility:hidden}\";\n\nexport {settings};","import {UIConsturctor} from '../UIConsturctor';\n\nexport class containerChat{\n constructor(prefix, pnode) {\n this.cont = new UIConsturctor((prefix || 'lhc')+'_container_v2', \"border: 0 none !important; padding: 0 !important; margin: 0 !important; z-index: 999999999 !important; overflow : visible !important; min-width: 0 !important; min-height: 0 !important; max-width: none !important; max-height: none !important; width : auto !important; height : auto !important;\");\n this.cont.constructUI();\n (!!pnode && document.getElementById(pnode).appendChild(this.cont.elmDom)) || document.body.appendChild(this.cont.elmDom);\n }\n}","import {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class mainWidget{\n constructor(prefix) {\n\n this.attributes = {};\n\n this.width = '350';\n this.height = '520';\n this.bottom = '30';\n this.right = '30';\n this.units = 'px';\n this.originalCSS = '';\n this.bottom_override = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.isLoaded = false;\n\n this.loadStatus = {main: false, css: false};\n }\n\n resize() {\n\n let restyleStyle = {\n height: this.height + this.units,\n \"min-height\": this.height + this.units,\n \"max-height\": this.height + this.units,\n width: this.width + this.units,\n \"min-width\": this.width + this.units,\n \"max-width\": this.width + this.units,\n bottom: (this.units == 'px' ? this.bottom + \"px\" : '0px')\n };\n\n if ((this.attributes.position_placement == 'middle_right' || this.attributes.position_placement == 'middle_left') && this.bottom_override == true) {\n restyleStyle['bottom'] = \"calc(50% + 20px)\";\n }\n\n if (this.attributes.position_placement == 'middle_left' || this.attributes.position_placement == 'bottom_left' || this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n } else {\n restyleStyle['right'] = (this.units == 'px' ? this.right + \"px\" : '0px');\n }\n\n if ((this.attributes.position_placement == 'full_height_right' || this.attributes.position_placement == 'full_height_left') && !this.bottom_override) {\n restyleStyle['min-height'] = '100%';\n restyleStyle['max-height'] = '100%';\n restyleStyle['height'] = '100%';\n restyleStyle['bottom'] = '0px';\n\n if (this.attributes.position_placement == 'full_height_left') {\n restyleStyle['left'] = '0px';\n } else {\n restyleStyle['right'] = '0px';\n }\n }\n\n if (this.attributes.mode == 'embed') {\n restyleStyle[\"max-width\"] = '100%';\n restyleStyle[\"min-width\"] = '100%';\n restyleStyle[\"width\"] = '100%';\n restyleStyle[\"position\"] = (this.attributes.fscreen ? 'fixed' : 'relative') + '!important';\n restyleStyle[\"bottom\"] = 'auto';\n restyleStyle[\"right\"] = 'auto';\n }\n\n this.cont.massRestyle(restyleStyle);\n }\n\n checkLoadStatus() {\n if (this.loadStatus['main'] == true && this.loadStatus['css'] == true ) {\n this.attributes.wloaded.next(true);\n }\n }\n\n makeContent() {\n this.cont.bodyId = 'chat-widget';\n\n this.cont.tmpl = '
';\n\n if (this.cont.constructUIIframe('', this.attributes.staticJS['dir'], this.attributes.staticJS['cl'], this.attributes.hhtml) === null) {\n this.isLoaded = true;\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile lhc-mode-'+this.attributes.mode : 'lhc-desktop lhc-mode-'+this.attributes.mode;\n\n if (this.attributes.cont_ss) {\n this.originalCSS = this.cont.elmDom.style.cssText;\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n init(attributes, lazyLoad) {\n\n this.attributes = attributes;\n\n if (this.makeContent() === null) {\n return null;\n };\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (chatParams['id'] || !lazyLoad) {\n this.bootstrap();\n }\n \n this.toggleVisibilityWrap = (data) => {\n this.toggleVisibility(data);\n };\n\n attributes.widgetStatus.subscribe(this.toggleVisibilityWrap);\n\n this.monitorDimensionsWrap = (data) => {\n this.monitorDimensions(data);\n };\n\n attributes.widgetDimesions.subscribe(this.monitorDimensionsWrap);\n\n attributes.eventEmitter.addListener('reloadWidget',() => {\n this.isLoaded = false;\n this.makeContent();\n attributes.eventEmitter.emitEvent('widgetHeight',[{'reset_height' : true}]);\n this.toggleVisibility(attributes.widgetStatus.valueInternal);\n });\n\n }\n\n bootstrap() {\n\n if (this.isLoaded === true) {\n return ;\n }\n\n this.isLoaded = true;\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({rel:\"stylesheet\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.theme) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/theme/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n }\n\n this.cont.insertCssRemoteFile({onload: () => {\n this.loadStatus['css'] = true;\n this.checkLoadStatus();\n },crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_css']}, true);\n\n if (this.attributes.isMobile == true && this.attributes.mode == 'widget') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['widget_mobile_css']});\n }\n\n if (this.attributes.mode == 'embed') {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['embed_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n }\n\n this.cont.insertJSFile(this.attributes.staticJS['vendor'], false, () => {\n this.cont.insertJSFile(this.attributes.staticJS['app'], false, () => {\n this.loadStatus['main'] = true;\n this.checkLoadStatus();\n }, {'scope': this.attributes.prefixLowercase});\n }, {'scope': this.attributes.prefixLowercase});\n\n if (this.attributes.staticJS['ex_js'] && this.attributes.staticJS['ex_js'].length > 0) {\n this.attributes.staticJS['ex_js'].forEach((item) => {\n this.cont.insertJSFile(item, false);\n });\n }\n }\n\n toggleVisibility(data) {\n data == false ? this.hide() : this.show();\n }\n\n monitorDimensions(data) {\n this.width = data.width_override || data.width;\n this.height = data.height_override || data.height;\n this.bottom = data.bottom_override ? (data.bottom_override + (data.wbottom ? data.wbottom : 0)) : (30 + (this.attributes.clinst === true ? 70 : 0) + (data.wbottom ? data.wbottom : 0));\n this.right = data.right_override ? (data.right_override + (data.wright_inv ? data.wright_inv : 0)) : (30 + (data.wright ? data.wright : 0));\n this.units = (data.width_override || data.height_override || data.bottom_override || data.right_override) ? 'px' : data.units;\n this.resize();\n\n this.bottom_override = !!data.bottom_override;\n }\n\n hide () {\n this.cont.hide();\n }\n\n hideInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText += this.attributes.cont_ss;\n }\n }\n\n showInvitation() {\n if (this.attributes.cont_ss) {\n this.cont.elmDom.style.cssText = this.originalCSS;\n }\n this.show();\n }\n\n show () {\n if (this.isLoaded === false) {\n this.bootstrap();\n }\n this.cont.show();\n }\n}","export class mainWidgetPopup {\n constructor() {\n\n this.attributes = {};\n\n this.width = null;\n this.height = null;\n this.units = 'px';\n this.freeup();\n }\n\n freeup() {\n this.cont = {};\n }\n\n parseOptions() {\n var argumentsQuery = new Array();\n var paramsReturn = '';\n if (typeof this.attributes != 'undefined') {\n if (typeof this.attributes.LHCChatOptions.attr != 'undefined') {\n if (this.attributes.LHCChatOptions.attr.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr) {\n if (typeof this.attributes.LHCChatOptions.attr[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr[index].type != 'undefined') {\n argumentsQuery.push('name[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].name) + '&encattr[]=' + (typeof this.attributes.LHCChatOptions.attr[index].encrypted != 'undefined' && this.attributes.LHCChatOptions.attr[index].encrypted == true ? 't' : 'f') + '&value[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].value) + '&type[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].type) + '&size[]=' + encodeURIComponent(this.attributes.LHCChatOptions.attr[index].size) + '&req[]=' + (typeof this.attributes.LHCChatOptions.attr[index].req != 'undefined' && this.attributes.LHCChatOptions.attr[index].req == true ? 't' : 'f') + '&sh[]=' + ((typeof this.attributes.LHCChatOptions.attr[index].show != 'undefined' && (this.attributes.LHCChatOptions.attr[index].show == 'on' || this.attributes.LHCChatOptions.attr[index].show == 'off')) ? this.attributes.LHCChatOptions.attr[index].show : 'b'));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill[index] != 'undefined' && typeof this.attributes.LHCChatOptions.attr_prefill[index].name != 'undefined') {\n argumentsQuery.push('prefill[' + this.attributes.LHCChatOptions.attr_prefill[index].name + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill[index].value));\n }\n }\n }\n }\n\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin != 'undefined') {\n if (this.attributes.LHCChatOptions.attr_prefill_admin.length > 0) {\n for (var index in this.attributes.LHCChatOptions.attr_prefill_admin) {\n if (typeof this.attributes.LHCChatOptions.attr_prefill_admin[index] != 'undefined') {\n argumentsQuery.push('value_items_admin[' + this.attributes.LHCChatOptions.attr_prefill_admin[index].index + ']=' + encodeURIComponent(this.attributes.LHCChatOptions.attr_prefill_admin[index].value));\n }\n }\n }\n }\n\n if (argumentsQuery.length > 0) {\n paramsReturn = '&' + argumentsQuery.join('&');\n }\n }\n\n return paramsReturn;\n }\n\n init(attributes, chatEvents, paramsPopup) {\n\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n this.cont.elementReferrerPopup.focus();\n } else {\n\n this.attributes = attributes;\n\n let attr = {\n 'static_chat': this.attributes['userSession'].getSessionAttributes()\n };\n\n let urlArgumetns = '';\n\n if (attr['static_chat']['id'] && attr['static_chat']['hash']) {\n urlArgumetns = urlArgumetns + \"/(id)/\" + attr['static_chat']['id'] + \"/(hash)/\" + attr['static_chat']['hash'];\n }\n\n if (this.attributes['theme'] !== null) {\n urlArgumetns = urlArgumetns + \"/(theme)/\" + this.attributes['theme'];\n }\n\n if (attr['static_chat']['vid'] !== null && this.attributes.storageHandler.cookieEnabled === true) {\n urlArgumetns = urlArgumetns + \"/(vid)/\" + attr['static_chat']['vid'];\n }\n\n if (this.attributes['isMobile']) {\n urlArgumetns = urlArgumetns + \"/(mobile)/true\";\n }\n\n if (this.attributes['department'].length > 0) {\n urlArgumetns = urlArgumetns + \"/(department)/\" + this.attributes['department'].join('/');\n }\n\n if (this.attributes['identifier'] != '') {\n urlArgumetns = urlArgumetns + \"/(identifier)/\" + this.attributes['identifier'];\n }\n\n if (this.attributes['operator']) {\n urlArgumetns = urlArgumetns + \"/(operator)/\" + this.attributes['operator'];\n }\n\n if (this.attributes['survey']) {\n urlArgumetns = urlArgumetns + \"/(survey)/\" + this.attributes['survey'];\n }\n\n if (this.attributes['bot_id']) {\n urlArgumetns = urlArgumetns + \"/(bot)/\" + this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id']) {\n urlArgumetns = urlArgumetns + \"/(trigger)/\" + this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority']) {\n urlArgumetns = urlArgumetns + \"/(priority)/\" + this.attributes['priority'];\n }\n\n if (this.attributes['prefixLowercase'] != 'lhc') {\n urlArgumetns = urlArgumetns + \"/(scope)/\" + this.attributes['prefixLowercase'];\n }\n\n urlArgumetns = urlArgumetns + \"/(sound)/\" + (this.attributes.toggleSound.value == true ? 1 : 0);\n\n if (this.attributes['proactive']['invitation']) {\n urlArgumetns = urlArgumetns + \"/(inv)/\" + this.attributes['proactive']['invitation'];\n if (this.attributes['mode'] == 'popup') {\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_invt', 1);\n }\n }\n\n var fontSize = this.attributes.storageHandler.getLocalStorage(this.attributes['prefixStorage']+'_dfs');\n\n if (fontSize) {\n urlArgumetns = urlArgumetns + \"/(fs)/\" + parseInt(fontSize);\n }\n\n if (this.attributes['leaveMessage'] === true) {\n urlArgumetns = urlArgumetns + \"/(leaveamessage)/true\";\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null && this.attributes['userSession'].getSessionReferrer() != '') {\n urlArgumetns = urlArgumetns + '?ses_ref=' + this.attributes['userSession'].getSessionReferrer() + this.parseOptions();\n } else {\n urlArgumetns = urlArgumetns + '?' + this.parseOptions();\n }\n\n const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : window.screenX;\n const dualScreenTop = window.screenTop !== undefined ? window.screenTop : window.screenY;\n\n const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width;\n const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height;\n\n const systemZoom = width / window.screen.availWidth;\n const left = (width - parseInt(this.attributes['popupDimesnions']['pwidth'])) / 2 / systemZoom + dualScreenLeft;\n const top = (height - parseInt(this.attributes['popupDimesnions']['pheight'])) / 2 / systemZoom + dualScreenTop;\n\n var paramsWindow = \"scrollbars=yes,menubar=1,resizable=1,width=\" + this.attributes['popupDimesnions']['pwidth'] + \",height=\" + this.attributes['popupDimesnions']['pheight'] + \",top=\" + top + \",left=\" + left;\n var newWin = window.open(\"\", this.attributes['prefixStorage'] + '_popup_v2', paramsWindow);\n var needWindow = false;\n var windowCreated = false;\n\n // First try to find any existing window\n try {\n // It has to be new window or popup was blocked\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined' || newWin.location.href === \"about:blank\") {\n newWin = this.cont.elementReferrerPopup = window.open(this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns, this.attributes['prefixStorage']+'_popup_v2', paramsWindow);\n windowCreated = true;\n } else {\n needWindow = true;\n }\n } catch (e) { // We get cross-origin error only if window exist and it's location is other one than about:blank\n needWindow = true;\n }\n\n // Now if visitor has blocked popup change chat status link and just allow browser handle the rest.\n if (!newWin || newWin.closed || typeof newWin.closed=='undefined') {\n try {\n this.attributes.viewHandler.cont.getElementById(\"status-icon\").href = this.attributes['base_url'] + this.attributes['lang'] + \"chat/start\" + urlArgumetns;\n } catch (e) {\n alert('You have disabled popups!');\n }\n } else if (windowCreated == true) {\n typeof chatEvents !== 'undefined' && this.attributes.kcw === false && chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n } else if (needWindow === true) {\n this.cont.elementReferrerPopup = newWin;\n newWin.focus();\n typeof paramsPopup !== 'undefined' && paramsPopup.event !== 'undefined' && paramsPopup.event.preventDefault();\n }\n }\n }\n\n sendParameters(chatEvents) {\n if (this.cont.elementReferrerPopup && this.cont.elementReferrerPopup.closed === false) {\n var js_vars = this.attributes['jsVars'].value;\n var js_args = {};\n var currentVar = null;\n for (var index in js_vars) {\n try {\n currentVar = eval(js_vars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[js_vars[index].id] = currentVar;\n }\n } catch (err) {\n\n }\n }\n chatEvents.sendChildEvent('jsVars', [js_args]);\n }\n }\n}","import {settings} from '../settings.js';\nimport {UIConstructorIframe} from '../UIConstructorIframe';\nimport {helperFunctions} from '../helperFunctions';\n\nexport class statusWidget{\n constructor(prefix) {\n\n this.attributes = {};\n this.controlMode = false;\n\n this.cont = new UIConstructorIframe((prefix || 'lhc')+'_status_widget_v2', helperFunctions.getAbstractStyle({\n zindex: \"2147483640\",\n width: \"95px\",\n height: \"95px\",\n position: \"fixed\",\n display: \"none\",\n maxheight: \"95px\",\n maxwidth: \"95px\",\n minheight: \"95px\",\n minwidth: \"95px\"\n }), null, \"iframe\");\n\n this.loadStatus = {main : false, theme: false, font: true, widget : false, shidden: false};\n this.lload = false;\n this.unread_counter = 0;\n }\n\n toggleOfflineIcon(onlineStatus) {\n var icon = this.cont.getElementById(\"status-icon\");\n\n if (onlineStatus) {\n if (!this.attributes.leaveMessage) {\n this.show();\n }\n helperFunctions.removeClass(icon, \"offline-status\");\n } else {\n if (!this.attributes.leaveMessage) {\n this.hide();\n } else {\n helperFunctions.addClass(icon, \"offline-status\");\n }\n }\n }\n\n checkLoadStatus() {\n if (this.loadStatus['theme'] == true && this.loadStatus['main'] == true && this.loadStatus['font'] == true && this.loadStatus['widget'] == true && this.loadStatus['shidden'] == false) {\n this.cont.getElementById('lhc_status_container').style.display = \"\";\n this.attributes.sload.next(true);\n }\n }\n\n init(attributes, lload) {\n\n this.attributes = attributes;\n\n var placement = {bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n\n if (attributes.position_placement == 'bottom_left' || attributes.position_placement == 'full_height_left') {\n placement = { bottom: (10+this.attributes.widgetDimesions.value.sbottom) + \"px\", left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_right') {\n placement = {bottom: \"calc(50% - 45px)\",right: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n } else if (attributes.position_placement == 'middle_left') {\n placement = {bottom: \"calc(50% - 45px)\",left: (10+this.attributes.widgetDimesions.value.sright) + \"px\"};\n }\n\n this.cont.massRestyle(placement);\n\n this.cont.tmpl = '
!
';\n\n if (this.cont.constructUIIframe('') === null) {\n return null;\n }\n\n this.cont.elmDom.className = this.attributes.isMobile === true ? 'lhc-mobile' : 'lhc-desktop';\n\n var _inst = this;\n\n this.lload = !(!lload);\n\n // If it's lazy load we have always to consider widget as loaded\n if (this.lload === true) {\n this.loadStatus['widget'] = true;\n } else {\n // We wait untill widget content loads\n attributes.wloaded.subscribe((data) => { if (data){this.loadStatus['widget'] = true; this.checkLoadStatus()}});\n }\n\n attributes.shidden.subscribe((data) => {\n if (data) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (!chatParams['id'] && this.attributes.widgetStatus.value != true) {\n this.loadStatus['shidden'] = true;\n this.hide();\n }\n } else {\n this.loadStatus['shidden'] = false;\n this.checkLoadStatus();\n this.show();\n }\n });\n\n this.cont.attachUserEventListener(\"click\", function (e) {\n\n attributes.onlineStatus.value === false && attributes.eventEmitter.emitEvent('offlineClickAction');\n\n if (attributes.onlineStatus.value === false && attributes.offline_redirect !== null){\n document.location = attributes.offline_redirect;\n e.preventDefault();\n } else {\n if (_inst.controlMode == true) {\n attributes.eventEmitter.emitEvent('closeWidget', [{'sender' : 'closeButton'}]);\n e.preventDefault();\n } else {\n attributes.eventEmitter.emitEvent('showWidget', [{'event':e}]);\n attributes.eventEmitter.emitEvent('clickAction');\n }\n }\n\n }, \"lhc_status_container\", \"minifiedclick\");\n\n if (this.attributes.staticJS['fontCSS']) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", href : this.attributes.staticJS['fontCSS']});\n }\n\n if (this.attributes.staticJS['font_status']) {\n this.cont.insertCssRemoteFile({onload: () => {this.loadStatus['font'] = true; this.checkLoadStatus()},\"as\":\"font\", rel:\"preload\", type: \"font/woff\", crossOrigin : \"anonymous\", href : this.attributes.staticJS['font_status']});\n }\n\n if (this.attributes.theme) {\n this.loadStatus['theme'] = false;\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['theme'] = true; this.checkLoadStatus()}, id: \"lhc-theme-status\", crossOrigin : \"anonymous\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true);\n } else {\n this.loadStatus['theme'] = true;\n }\n\n this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['main'] = true; this.checkLoadStatus()}, crossOrigin : \"anonymous\", href : this.attributes.staticJS['status_css'] });\n\n if (this.attributes.staticJS['page_css']) {\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + this.attributes.theme_v});\n }\n\n attributes.onlineStatus.subscribe((data) => this.toggleOfflineIcon(data));\n\n attributes.widgetStatus.subscribe((data) => {\n if (this.attributes.mode !== 'popup') {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n (data == true || (!this.attributes.leaveMessage && this.attributes.onlineStatus.value == false && !chatParams['id'])) ? this.hide() : this.show();\n }\n });\n\n this.attributes.mode === 'popup' && this.show();\n let unreadMessagesNumber = attributes.storageHandler.getSessionStorage(this.attributes['prefixStorage']+'_unr');\n\n attributes.eventEmitter.addListener('unread_message', (data) => {\n var unreadTotal = (data && data.otm);\n if (unreadTotal) {\n unreadTotal = parseInt(unreadTotal);\n unreadTotal += this.unread_counter;\n }\n this.attributes.unread_counter.next(unreadTotal);\n this.showUnreadIndicator(unreadTotal);\n });\n\n if (unreadMessagesNumber !== null) {\n attributes.eventEmitter.emitEvent('unread_message',[{otm:unreadMessagesNumber, init: true}]);\n if (unreadMessagesNumber !== null && !isNaN(unreadMessagesNumber)) {\n this.unread_counter = parseInt(unreadMessagesNumber);\n }\n }\n\n // Widget reload was called\n // We avoid cache by using timestamp because we do not call init call.\n // We also always insert themepage even if there is no css in it.\n attributes.eventEmitter.addListener('reloadWidget',() => {\n if (this.attributes.theme > 0) {\n this.cont.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-status\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + Date.now()}, true);\n }\n helperFunctions.insertCssRemoteFile({crossOrigin : \"anonymous\", id: \"lhc-theme-page\", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themepage/' + this.attributes.theme + '?v=' + Date.now()});\n });\n }\n\n hide () {\n\n this.removeUnreadIndicator();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n if (this.attributes.leaveMessage == true || this.attributes.onlineStatus.value == true || chatParams['id']) {\n\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && ((chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true))) {\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n }\n }\n\n if (this.attributes['hide_status'] !== true || (chatParams['id'] && chatParams['hash']) || this.attributes.widgetStatus.value == true) {\n if (this.attributes.widgetStatus.value == true){\n this.controlMode = true;\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.addClass(icon, \"close-status\");\n }\n return ;\n }\n\n }\n }\n\n this.cont.hide();\n }\n\n showUnreadIndicator(number){\n var iconText = number || '!';\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.addClass(icon, \"has-uread-message\");\n\n var iconValue = this.cont.getElementById(\"unread-msg-number\");\n if (iconValue) {\n iconValue.innerText = iconText;\n }\n\n if (this.attributes.storageHandler)\n this.attributes.storageHandler.setSessionStorage(this.attributes['prefixStorage']+'_unr',iconText);\n }\n\n removeUnreadIndicator() {\n var icon = this.cont.getElementById(\"lhc_status_container\");\n helperFunctions.removeClass(icon, \"has-uread-message\");\n if (this.attributes.storageHandler) {\n this.attributes.storageHandler.removeSessionStorage(this.attributes['prefixStorage']+'_unr');\n }\n this.attributes.eventEmitter.emitEvent('remove_unread_indicator', []);\n this.attributes.unread_counter.next(0);\n this.unread_counter = 0;\n }\n\n show () {\n\n if (this.attributes.hideOffline === false) {\n\n const chatParams = this.attributes['userSession'].getSessionAttributes();\n\n if (this.attributes.clinst === true && this.attributes.isMobile == false) {\n if (this.attributes.widgetStatus.value != true) {\n var icon = this.cont.getElementById(\"status-icon\");\n helperFunctions.removeClass(icon, \"close-status\");\n this.controlMode = false;\n }\n }\n\n // show status icon only if we are not in api mode or chat is going now\n if (this.attributes['position'] != 'api' || (this.attributes['position'] == 'api' && this.attributes['hide_status'] !== true && chatParams['id'] && chatParams['hash'])) {\n this.cont.show();\n } else if (this.attributes.clinst === true) {\n if (this.attributes.widgetStatus.value != true) {\n this.cont.hide();\n }\n }\n\n } else {\n this.cont.hide();\n }\n }\n}","\nclass chatEventsHandler {\n\n constructor(attr) {\n this.attributes = attr\n }\n\n getJSVarsValues(jsVars) {\n var js_args = {};\n\n if (jsVars.length > 0) {\n\n var currentVar = null;\n\n for (var index in jsVars) {\n try {\n currentVar = eval('window.'+jsVars[index].var);\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[jsVars[index].id] = currentVar;\n }\n } catch(err) {\n }\n }\n return js_args;\n }\n\n return js_args;\n }\n\n getInitAttributes() {\n let attr = {\n 'onlineStatus' : this.attributes['onlineStatus'].value,\n 'toggleSound' : this.attributes['toggleSound'].value,\n 'widgetStatus' : this.attributes['widgetStatus'].value,\n 'jsVars' : this.getJSVarsValues(this.attributes['jsVars'].value),\n 'isMobile' : this.attributes['isMobile'],\n 'department' : this.attributes['department'],\n 'product' : this.attributes['product'],\n 'theme' : this.attributes['theme'],\n 'base_url' : this.attributes['base_url'],\n 'mode' : this.attributes['mode'],\n 'captcha' : this.attributes['captcha'],\n 'staticJS' : this.attributes['staticJS'],\n 'static_chat' : this.attributes['userSession'].getSessionAttributes(),\n 'domain_lhc': this.attributes['domain_lhc'],\n 'leave_message': this.attributes['leaveMessage'],\n 'scope_prefix': this.attributes['prefixLowercase']\n };\n\n if (this.attributes['fresh'] == true) {\n if (attr['static_chat']['id']) {\n delete attr['static_chat']['id'];\n }\n\n if (attr['static_chat']['hash']) {\n delete attr['static_chat']['hash'];\n }\n }\n\n if (this.attributes['bot_id'] != '') {\n attr['bot_id'] = this.attributes['bot_id'];\n }\n\n if (this.attributes['trigger_id'] != '') {\n attr['trigger_id'] = this.attributes['trigger_id'];\n }\n\n if (this.attributes['priority'] != '') {\n attr['priority'] = this.attributes['priority'];\n }\n \n if (this.attributes['phash'] !== null) {\n attr['phash'] = this.attributes['phash'];\n }\n\n if (this.attributes['survey'] !== null) {\n attr['survey'] = this.attributes['survey'];\n }\n\n if (this.attributes['pvhash'] !== null) {\n attr['pvhash'] = this.attributes['pvhash'];\n }\n\n if (this.attributes['operator'] !== null) {\n attr['operator'] = this.attributes['operator'];\n }\n\n if (this.attributes['profile_pic'] !== null) {\n attr['profile_pic'] = this.attributes['profile_pic'];\n }\n\n if (this.attributes['lang'] != '') {\n attr['lang'] = this.attributes['lang'];\n }\n\n if (this.attributes['proactive']['invitation']) {\n attr['proactive'] = this.attributes['proactive'];\n }\n\n if (this.attributes['dep_default'] !== null) {\n attr['dep_default'] = this.attributes['dep_default'];\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr) {\n var prefillOptions = this.attributes.LHCChatOptions.attr;\n let fieldsCustom = [];\n prefillOptions.forEach((item, index) => {\n fieldsCustom.push({show : (((typeof item.show != 'undefined' && (item.show == 'on' || item.show == 'off')) ? item.show : 'b')), value : item.value, index : index, name : item.name, \"class\": \"form-control form-control-sm\", 'type' : item.type, 'identifier': ('additional_' + index), 'placeholder' : '', 'width' : (item.size || 6), 'encrypted': (item.encrypted || false), 'required' : (item.req || false), 'label' : item.name});\n });\n\n attr['CUSTOM_FIELDS'] = fieldsCustom;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n if (item.name == 'email') {\n prefilOptionsList.push({'Email' : item.value});\n } else if (item.name == 'username') {\n prefilOptionsList.push({'Username' : item.value});\n } else if (item.name == 'phone') {\n prefilOptionsList.push({'Phone' : item.value});\n } else if (item.name == 'question') {\n prefilOptionsList.push({'Question' : item.value});\n }\n })\n attr['attr_prefill'] = prefilOptionsList;\n }\n\n if (this.attributes.LHCChatOptions && this.attributes.LHCChatOptions.attr_prefill_admin) {\n var prefillOptions = this.attributes.LHCChatOptions.attr_prefill_admin;\n let prefilOptionsList = [];\n prefillOptions.forEach((item) => {\n prefilOptionsList.push({'value' : item.value, 'index' : item.index});\n })\n attr['attr_prefill_admin'] = prefilOptionsList;\n }\n\n if (this.attributes['userSession'].getSessionReferrer() !== null) {\n attr['ses_ref'] = this.attributes['userSession'].getSessionReferrer()\n }\n\n return attr;\n }\n\n sendChildCommand(command) {\n if (this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage(command, '/');\n }\n\n if (this.attributes.popupWidget.cont.elementReferrerPopup && this.attributes.popupWidget.cont.elementReferrerPopup.closed === false)\n {\n this.attributes.popupWidget.cont.elementReferrerPopup.postMessage(command, '*');\n }\n }\n\n sendReadyEvent (popup) {\n\n let args = this.getInitAttributes();\n\n if (!(popup === true) && this.attributes.mainWidget.cont.elmDom && this.attributes.mainWidget.cont.elmDom.contentWindow)\n {\n this.attributes.mainWidget.cont.elmDom.contentWindow.postMessage('lhc_init:' + JSON.stringify(args), '/');\n }\n }\n\n sendChildEvent(event, args, type) {\n if (typeof type === 'undefined') {\n type = 'lhc_event';\n }\n this.sendChildCommand(type+':'+event + '::' + JSON.stringify(args));\n }\n}\n\nexport { chatEventsHandler };","\nclass _domEventsHandler {\n constructor() {\n this.events = {}\n }\n\n attachEvent (object, event, callback) {\n var k = this, dispatch = function (b) {\n callback.call(object, k.getEvent(b))\n };\n object.attachEvent(\"on\" + event, dispatch);\n return dispatch\n };\n\n unlisten(eventName) {\n var presentEvent;\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n }\n\n listen(object, event, callback, eventName) {\n var presentEvent;\n if (eventName) {\n this.events[eventName] && (presentEvent = this.events[eventName], this.events[eventName] = null, this.removeEventHandler(presentEvent.element, presentEvent.eventName, presentEvent.eventListener));\n\n if (object.addEventListener) {\n object.addEventListener(event, callback, !1);\n } else if (document.attachEvent) {\n callback = this.attachEvent(object, event, callback);\n } else {\n return null;\n }\n\n this.events[eventName] = {element: object, eventName: event, eventListener: callback};\n\n return callback\n }\n };\n\n removeEventHandler(object, event, listener) {\n document.removeEventListener ? object.removeEventListener(event, listener, !1) : object.detachEvent(\"on\" + event, listener)\n };\n\n getEvent(event) {\n var eventInstance = event || _this.event;\n if (!eventInstance) {\n for (event = this.getEvent.caller; event && (!(eventInstance = event.arguments[0]) || Event != eventInstance.constructor);) {\n event = event.caller\n };\n }\n return eventInstance\n };\n}\n\nconst domEventsHandler = new _domEventsHandler();\nexport { domEventsHandler };","\nexport class monitoredVariable {\n constructor(value, params) {\n this.valueInternal = value;\n this.listeners = [];\n this.params = params || {};\n }\n\n get value() {\n return this.valueInternal;\n }\n\n set value(val) {\n this.next(val);\n }\n\n next(val) {\n this.valueInternal = val;\n this.callListeners();\n }\n\n nextProperty(key, val) {\n this.valueInternal[key] = val;\n this.callListeners();\n }\n\n callListeners() {\n this.listeners.forEach((item) => {\n if (item && typeof item === \"function\") {\n item(this.valueInternal);\n }\n });\n }\n\n unsubscribe(callback) {\n if (this.listeners.indexOf(callback) !== -1) {\n this.listeners.splice(this.listeners.indexOf(callback), 1);\n }\n }\n\n subscribe(callback) {\n this.listeners.push(callback);\n \n if (!this.params['ignore_sub']) {\n callback(this.valueInternal);\n }\n }\n}\n\n","\nexport class storageHandler {\n constructor(global, domain, prefix, cookieEnabled) {\n this.window = global;\n this.cookieEnabled = false;\n\n // Have we checked cookies support\n this.cookiesSupportChecked = false;\n\n // We should try to enable cookie\n if (cookieEnabled == true) {\n this.checkCookiesSupport();\n }\n\n this.domain = domain;\n this.secureCookie = false;\n this.cookiePerPage = false;\n this.prefix = prefix || 'lhc';\n }\n\n checkCookiesSupport() {\n\n if (this.cookiesSupportChecked === true) {\n return this.cookieEnabled;\n }\n\n this.cookiesSupportChecked = true;\n\n try {\n this.hasSessionStorage = !!this.window.sessionStorage;\n } catch (e){\n this.hasSessionStorage = false;\n }\n\n try {\n this.hasLocalStorage = !!this.window.localStorage;\n } catch (e){\n this.hasLocalStorage = false;\n }\n\n try {\n // Create cookie\n document.cookie = 'cookietest=1';\n this.cookieEnabled = document.cookie.indexOf('cookietest=') !== -1;\n // Delete cookie\n document.cookie = 'cookietest=1; expires=Thu, 01-Jan-1970 00:00:01 GMT';\n } catch (e) {\n\n }\n\n return this.cookieEnabled;\n }\n\n setCookieDomain(domain) {\n this.domain = domain;\n }\n\n setCookiePerPage(cookiePerPage) {\n this.cookiePerPage = cookiePerPage;\n }\n\n getCookieDomain() {\n if (this.domain) {\n return '.' + this.domain;\n } else {\n return null;\n }\n }\n\n setSecureCookie(status) {\n this.secureCookie = status;\n }\n\n setHTTPCookie(coookieName, cookieValue, expireTime, domain) {\n if (this.cookieEnabled === false) return ;\n var string = \"\";\n expireTime || (expireTime = new Date, expireTime.setTime(expireTime.getTime() + 15552E6), string = \"; expires=\" + expireTime.toGMTString());\n document.cookie = coookieName + \"=\" + cookieValue + string + (this.cookiePerPage === false ? \"; path=/\" : (this.cookiePerPage === true ? \"\" : '; path=' + this.cookiePerPage)) + (this.secureCookie ? \";secure\" : \"\") + (domain ? \";domain=\" + domain : \"\") + \";SameSite=Lax\";\n };\n\n getHTTPCookie(cookieName) {\n if (this.cookieEnabled === false) return [];\n var b, d, k = [], baseCookie = cookieName + \"=\", e = document.cookie.split(\";\");\n cookieName = 0;\n for (b = e.length; cookieName < b; cookieName++) {\n for (d = e[cookieName]; \" \" === d.charAt(0);) d = d.substring(1, d.length);\n 0 === d.indexOf(baseCookie) && k.push(d.substring(baseCookie.length, d.length))\n }\n\n // Reset duplicate cookies\n if (k.length == 2) {\n let host = (window.location.hostname || document.location.host),\n reset = baseCookie + \"0;expires=Thu, 01 Jan 1970 00:00:00 GMT; path=/\";\n if (host) {\n document.cookie = reset;\n document.cookie = reset + \"; domain=.\" + host;\n }\n }\n\n return k;\n };\n\n setSessionStorage(key, value) {\n if (this.hasSessionStorage && sessionStorage.setItem) try {\n sessionStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n removeSessionStorage(key) {\n if (this.hasSessionStorage && sessionStorage.removeItem) try {\n sessionStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n getSessionStorage(a) {\n return this.hasSessionStorage && sessionStorage.getItem ?\n sessionStorage.getItem(a) : null\n }\n\n setLocalStorage(key, value) {\n if (this.hasLocalStorage && localStorage.setItem) try {\n localStorage.setItem(key, value)\n } catch (d) {\n }\n }\n\n getLocalStorage(a) {\n return this.hasLocalStorage && localStorage.getItem ?\n localStorage.getItem(a) : null\n }\n\n removeLocalStorage(key) {\n if (this.hasLocalStorage && localStorage.removeItem) try {\n localStorage.removeItem(key)\n } catch (d) {\n }\n }\n\n setSessionReferer(ref) {\n if (!this.getSessionStorage(this.prefix+'_ref')) {\n this.setSessionStorage(this.prefix+'_ref',ref);\n }\n }\n\n getSessionReferrer() {\n return this.getSessionStorage(this.prefix+'_ref');\n }\n\n getSessionInformation() {\n var a;\n this.sessionInformation && (a = this.sessionInformation);\n a || (a = this.getHTTPCookie(this.prefix + \"_per\")[0]);\n return this.parseSessionInformation(a)\n };\n\n getStoreValue(sessionInformation)\n {\n let pairs = [];\n Object.keys(sessionInformation).forEach(key => {\n let value = sessionInformation[key];\n pairs.push(key + '|' + value);\n });\n return pairs.join('|');\n }\n\n storeSessionInformation(sessionInformation) {\n this.setHTTPCookie(this.prefix+\"_per\", this.getStoreValue(sessionInformation), false, this.getCookieDomain());\n this.sessionInformation = sessionInformation;\n };\n\n parseSessionInformation(content) {\n // Check was it stored as our format or JSON.\n if (content && content.indexOf('|') !== -1) {\n let contentReturn = {};\n let parts = content.split('|');\n\n for (var i = 0; i < parts.length / 2; i++) {\n contentReturn[parts[i * 2]] = parts[(i * 2) + 1];\n }\n\n return contentReturn;\n } else {\n if (content) {\n return JSON.parse(unescape(content))\n } else {\n return {};\n }\n }\n\n };\n}\n\n","\nexport class userSession {\n\n constructor() {\n this.vid = null;\n this.hnh = null;\n\n this.attributes = {};\n this.ref = null;\n this.id = null;\n this.hash = null;\n this.jsVars = [];\n this.updateVarsTimeout = null;\n this.JSON = {\n parse: window.JSON && (window.JSON.parse || window.JSON.decode) || String.prototype.evalJSON && function(str){return String(str).evalJSON();} || $.parseJSON || $.evalJSON,\n stringify: Object.toJSON || window.JSON && (window.JSON.stringify || window.JSON.encode) || $.toJSON\n };\n }\n\n setAttributes(attributes) {\n this.attributes = attributes;\n }\n\n setSessionReferrer(ref) {\n this.ref = ref;\n }\n\n getSessionReferrer() {\n return this.ref;\n }\n\n getVID() {\n return this.vid;\n }\n\n setVID(vid) {\n this.vid = vid;\n }\n\n setSessionInformation(params) {\n this.vid = params['vid'] || null;\n this.hnh = params['hnh'] || null;\n this.hash = params['hash'] || null;\n this.id = params['id'] || null;\n }\n\n getSessionAttributes() {\n var attr = {};\n\n if (this.vid !== null) {\n attr['vid'] = this.vid;\n }\n\n if (this.hnh !== null) {\n attr['hnh'] = this.hnh;\n }\n\n if (this.id !== null) {\n attr['id'] = this.id;\n }\n\n if (this.hash !== null) {\n attr['hash'] = this.hash;\n }\n\n return attr\n }\n\n setupVarsMonitoring(jsVars, cb) {\n this.jsVars = jsVars;\n\n // Try to monitor variable if it's lhc_var\n try {\n if (this.attributes.lhc_var !== null)\n {\n\n var validator = {\n set: (obj, prop, value) => {\n // The default behavior to store the value\n obj[prop] = value;\n\n clearTimeout(this.updateVarsTimeout);\n this.updateVarsTimeout = setTimeout( () =>{ this.updateJSVars(obj, cb); },1000);\n\n // Indicate success\n return true;\n }\n };\n\n this.attributes.lhc_var = new Proxy(this.attributes.lhc_var,validator);\n\n // Convert argument or global lhc_var to a reference\n if (this.attributes.LHC_API.args.lhc_var) {\n this.attributes.LHC_API.args.lhc_var = this.attributes.lhc_var;\n } else if (lhc_var) {\n lhc_var = this.attributes.lhc_var;\n }\n\n // Update vars initially\n this.updateJSVars(this.attributes.lhc_var);\n }\n } catch(err) {\n console.log(err);\n };\n\n }\n\n getVars() {\n if (this.jsVars.length > 0) {\n var js_args = {};\n var currentVar = null;\n\n for (var index in this.jsVars) {\n try {\n\n if (this.jsVars[index].var.indexOf('lhc_var.') !== -1) {\n currentVar = this.attributes.lhc_var[this.jsVars[index].var.replace('lhc_var.','')] || null;\n } else {\n currentVar = eval(this.jsVars[index].var);\n }\n\n if (typeof currentVar !== 'undefined' && currentVar !== null && currentVar !== '') {\n js_args[this.jsVars[index].id] = currentVar;\n }\n } catch(err) {\n\n }\n }\n\n return js_args;\n }\n return null;\n }\n\n getAppendVariables(){\n var append = '';\n\n if (this.vid !== null) {\n append = append + '/(vid)/' + this.vid ;\n }\n\n if (this.hash !== null && this.id !== null) {\n append = append + '/(hash)/' + this.id + '_' + this.hash;\n }\n\n return append;\n }\n\n updateJSVars(vars, cb) {\n\n let varsJSON = this.getVars(vars);\n\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", this.attributes.LHC_API.args.lhc_base_url + '/chat/updatejsvars' + this.getAppendVariables(), true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( this.JSON.stringify(varsJSON) ) );\n\n if (typeof cb !== 'undefined' && this.hash === null && this.id === null) {\n cb(varsJSON);\n }\n }\n\n setChatInformation(data, alwaysPersistentNeedHelp) {\n this.id = data.id;\n this.hash = data.hash;\n // Hide only chat starts otherwise don't touch it.\n if (this.id !== null && !alwaysPersistentNeedHelp) {\n this.hnh = Math.round(Date.now() / 1000);\n }\n }\n\n}","const appleIphone = /iPhone/i;\nconst appleIpod = /iPod/i;\nconst appleTablet = /iPad/i;\nconst androidPhone = /\\bAndroid(?:.+)Mobile\\b/i;\nconst androidTablet = /Android/i;\nconst amazonPhone = /(?:SD4930UR|\\bSilk(?:.+)Mobile\\b)/i;\nconst amazonTablet = /Silk/i;\nconst windowsPhone = /Windows Phone/i;\nconst windowsTablet = /\\bWindows(?:.+)ARM\\b/i;\nconst otherBlackBerry = /BlackBerry/i;\nconst otherBlackBerry10 = /BB10/i;\nconst otherOpera = /Opera Mini/i;\nconst otherChrome = /\\b(CriOS|Chrome)(?:.+)Mobile/i;\nconst otherFirefox = /Mobile(?:.+)Firefox\\b/i;\nfunction match(regex, userAgent) {\n return regex.test(userAgent);\n}\nexport default function isMobile(userAgent) {\n userAgent =\n userAgent || (typeof navigator !== 'undefined' ? navigator.userAgent : '');\n let tmp = userAgent.split('[FBAN');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n tmp = userAgent.split('Twitter');\n if (typeof tmp[1] !== 'undefined') {\n userAgent = tmp[0];\n }\n const result = {\n apple: {\n phone: match(appleIphone, userAgent) && !match(windowsPhone, userAgent),\n ipod: match(appleIpod, userAgent),\n tablet: !match(appleIphone, userAgent) &&\n match(appleTablet, userAgent) &&\n !match(windowsPhone, userAgent),\n device: (match(appleIphone, userAgent) ||\n match(appleIpod, userAgent) ||\n match(appleTablet, userAgent)) &&\n !match(windowsPhone, userAgent),\n },\n amazon: {\n phone: match(amazonPhone, userAgent),\n tablet: !match(amazonPhone, userAgent) && match(amazonTablet, userAgent),\n device: match(amazonPhone, userAgent) || match(amazonTablet, userAgent),\n },\n android: {\n phone: (!match(windowsPhone, userAgent) && match(amazonPhone, userAgent)) ||\n (!match(windowsPhone, userAgent) && match(androidPhone, userAgent)),\n tablet: !match(windowsPhone, userAgent) &&\n !match(amazonPhone, userAgent) &&\n !match(androidPhone, userAgent) &&\n (match(amazonTablet, userAgent) || match(androidTablet, userAgent)),\n device: (!match(windowsPhone, userAgent) &&\n (match(amazonPhone, userAgent) ||\n match(amazonTablet, userAgent) ||\n match(androidPhone, userAgent) ||\n match(androidTablet, userAgent))) ||\n match(/\\bokhttp\\b/i, userAgent),\n },\n windows: {\n phone: match(windowsPhone, userAgent),\n tablet: match(windowsTablet, userAgent),\n device: match(windowsPhone, userAgent) || match(windowsTablet, userAgent),\n },\n other: {\n blackberry: match(otherBlackBerry, userAgent),\n blackberry10: match(otherBlackBerry10, userAgent),\n opera: match(otherOpera, userAgent),\n firefox: match(otherFirefox, userAgent),\n chrome: match(otherChrome, userAgent),\n device: match(otherBlackBerry, userAgent) ||\n match(otherBlackBerry10, userAgent) ||\n match(otherOpera, userAgent) ||\n match(otherFirefox, userAgent) ||\n match(otherChrome, userAgent),\n },\n any: false,\n phone: false,\n tablet: false,\n };\n result.any =\n result.apple.device ||\n result.android.device ||\n result.windows.device ||\n result.other.device;\n result.phone =\n result.apple.phone || result.android.phone || result.windows.phone;\n result.tablet =\n result.apple.tablet || result.android.tablet || result.windows.tablet;\n return result;\n}\n//# sourceMappingURL=isMobile.js.map","'use strict';\n\nmodule.exports = require('./lib')\n","'use strict';\n\nvar asap = require('asap/raw');\n\nfunction noop() {}\n\n// States:\n//\n// 0 - pending\n// 1 - fulfilled with _value\n// 2 - rejected with _value\n// 3 - adopted the state of another promise, _value\n//\n// once the state is no longer pending (0) it is immutable\n\n// All `_` prefixed properties will be reduced to `_{random number}`\n// at build time to obfuscate them and discourage their use.\n// We don't use symbols or Object.defineProperty to fully hide them\n// because the performance isn't good enough.\n\n\n// to avoid using try/catch inside critical functions, we\n// extract them to here.\nvar LAST_ERROR = null;\nvar IS_ERROR = {};\nfunction getThen(obj) {\n try {\n return obj.then;\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nfunction tryCallOne(fn, a) {\n try {\n return fn(a);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\nfunction tryCallTwo(fn, a, b) {\n try {\n fn(a, b);\n } catch (ex) {\n LAST_ERROR = ex;\n return IS_ERROR;\n }\n}\n\nmodule.exports = Promise;\n\nfunction Promise(fn) {\n if (typeof this !== 'object') {\n throw new TypeError('Promises must be constructed via new');\n }\n if (typeof fn !== 'function') {\n throw new TypeError('Promise constructor\\'s argument is not a function');\n }\n this._h = 0;\n this._i = 0;\n this._j = null;\n this._k = null;\n if (fn === noop) return;\n doResolve(fn, this);\n}\nPromise._l = null;\nPromise._m = null;\nPromise._n = noop;\n\nPromise.prototype.then = function(onFulfilled, onRejected) {\n if (this.constructor !== Promise) {\n return safeThen(this, onFulfilled, onRejected);\n }\n var res = new Promise(noop);\n handle(this, new Handler(onFulfilled, onRejected, res));\n return res;\n};\n\nfunction safeThen(self, onFulfilled, onRejected) {\n return new self.constructor(function (resolve, reject) {\n var res = new Promise(noop);\n res.then(resolve, reject);\n handle(self, new Handler(onFulfilled, onRejected, res));\n });\n}\nfunction handle(self, deferred) {\n while (self._i === 3) {\n self = self._j;\n }\n if (Promise._l) {\n Promise._l(self);\n }\n if (self._i === 0) {\n if (self._h === 0) {\n self._h = 1;\n self._k = deferred;\n return;\n }\n if (self._h === 1) {\n self._h = 2;\n self._k = [self._k, deferred];\n return;\n }\n self._k.push(deferred);\n return;\n }\n handleResolved(self, deferred);\n}\n\nfunction handleResolved(self, deferred) {\n asap(function() {\n var cb = self._i === 1 ? deferred.onFulfilled : deferred.onRejected;\n if (cb === null) {\n if (self._i === 1) {\n resolve(deferred.promise, self._j);\n } else {\n reject(deferred.promise, self._j);\n }\n return;\n }\n var ret = tryCallOne(cb, self._j);\n if (ret === IS_ERROR) {\n reject(deferred.promise, LAST_ERROR);\n } else {\n resolve(deferred.promise, ret);\n }\n });\n}\nfunction resolve(self, newValue) {\n // Promise Resolution Procedure: https://github.com/promises-aplus/promises-spec#the-promise-resolution-procedure\n if (newValue === self) {\n return reject(\n self,\n new TypeError('A promise cannot be resolved with itself.')\n );\n }\n if (\n newValue &&\n (typeof newValue === 'object' || typeof newValue === 'function')\n ) {\n var then = getThen(newValue);\n if (then === IS_ERROR) {\n return reject(self, LAST_ERROR);\n }\n if (\n then === self.then &&\n newValue instanceof Promise\n ) {\n self._i = 3;\n self._j = newValue;\n finale(self);\n return;\n } else if (typeof then === 'function') {\n doResolve(then.bind(newValue), self);\n return;\n }\n }\n self._i = 1;\n self._j = newValue;\n finale(self);\n}\n\nfunction reject(self, newValue) {\n self._i = 2;\n self._j = newValue;\n if (Promise._m) {\n Promise._m(self, newValue);\n }\n finale(self);\n}\nfunction finale(self) {\n if (self._h === 1) {\n handle(self, self._k);\n self._k = null;\n }\n if (self._h === 2) {\n for (var i = 0; i < self._k.length; i++) {\n handle(self, self._k[i]);\n }\n self._k = null;\n }\n}\n\nfunction Handler(onFulfilled, onRejected, promise){\n this.onFulfilled = typeof onFulfilled === 'function' ? onFulfilled : null;\n this.onRejected = typeof onRejected === 'function' ? onRejected : null;\n this.promise = promise;\n}\n\n/**\n * Take a potentially misbehaving resolver function and make sure\n * onFulfilled and onRejected are only called once.\n *\n * Makes no guarantees about asynchrony.\n */\nfunction doResolve(fn, promise) {\n var done = false;\n var res = tryCallTwo(fn, function (value) {\n if (done) return;\n done = true;\n resolve(promise, value);\n }, function (reason) {\n if (done) return;\n done = true;\n reject(promise, reason);\n });\n if (!done && res === IS_ERROR) {\n done = true;\n reject(promise, LAST_ERROR);\n }\n}\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.done = function (onFulfilled, onRejected) {\n var self = arguments.length ? this.then.apply(this, arguments) : this;\n self.then(null, function (err) {\n setTimeout(function () {\n throw err;\n }, 0);\n });\n};\n","'use strict';\n\n//This file contains the ES6 extensions to the core Promises/A+ API\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nvar TRUE = valuePromise(true);\nvar FALSE = valuePromise(false);\nvar NULL = valuePromise(null);\nvar UNDEFINED = valuePromise(undefined);\nvar ZERO = valuePromise(0);\nvar EMPTYSTRING = valuePromise('');\n\nfunction valuePromise(value) {\n var p = new Promise(Promise._n);\n p._i = 1;\n p._j = value;\n return p;\n}\nPromise.resolve = function (value) {\n if (value instanceof Promise) return value;\n\n if (value === null) return NULL;\n if (value === undefined) return UNDEFINED;\n if (value === true) return TRUE;\n if (value === false) return FALSE;\n if (value === 0) return ZERO;\n if (value === '') return EMPTYSTRING;\n\n if (typeof value === 'object' || typeof value === 'function') {\n try {\n var then = value.then;\n if (typeof then === 'function') {\n return new Promise(then.bind(value));\n }\n } catch (ex) {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n }\n }\n return valuePromise(value);\n};\n\nPromise.all = function (arr) {\n var args = Array.prototype.slice.call(arr);\n\n return new Promise(function (resolve, reject) {\n if (args.length === 0) return resolve([]);\n var remaining = args.length;\n function res(i, val) {\n if (val && (typeof val === 'object' || typeof val === 'function')) {\n if (val instanceof Promise && val.then === Promise.prototype.then) {\n while (val._i === 3) {\n val = val._j;\n }\n if (val._i === 1) return res(i, val._j);\n if (val._i === 2) reject(val._j);\n val.then(function (val) {\n res(i, val);\n }, reject);\n return;\n } else {\n var then = val.then;\n if (typeof then === 'function') {\n var p = new Promise(then.bind(val));\n p.then(function (val) {\n res(i, val);\n }, reject);\n return;\n }\n }\n }\n args[i] = val;\n if (--remaining === 0) {\n resolve(args);\n }\n }\n for (var i = 0; i < args.length; i++) {\n res(i, args[i]);\n }\n });\n};\n\nPromise.reject = function (value) {\n return new Promise(function (resolve, reject) {\n reject(value);\n });\n};\n\nPromise.race = function (values) {\n return new Promise(function (resolve, reject) {\n values.forEach(function(value){\n Promise.resolve(value).then(resolve, reject);\n });\n });\n};\n\n/* Prototype Methods */\n\nPromise.prototype['catch'] = function (onRejected) {\n return this.then(null, onRejected);\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.prototype.finally = function (f) {\n return this.then(function (value) {\n return Promise.resolve(f()).then(function () {\n return value;\n });\n }, function (err) {\n return Promise.resolve(f()).then(function () {\n throw err;\n });\n });\n};\n","'use strict';\n\nmodule.exports = require('./core.js');\nrequire('./done.js');\nrequire('./finally.js');\nrequire('./es6-extensions.js');\nrequire('./node-extensions.js');\nrequire('./synchronous.js');\n","'use strict';\n\n// This file contains then/promise specific extensions that are only useful\n// for node.js interop\n\nvar Promise = require('./core.js');\nvar asap = require('asap');\n\nmodule.exports = Promise;\n\n/* Static Functions */\n\nPromise.denodeify = function (fn, argumentCount) {\n if (\n typeof argumentCount === 'number' && argumentCount !== Infinity\n ) {\n return denodeifyWithCount(fn, argumentCount);\n } else {\n return denodeifyWithoutCount(fn);\n }\n};\n\nvar callbackFn = (\n 'function (err, res) {' +\n 'if (err) { rj(err); } else { rs(res); }' +\n '}'\n);\nfunction denodeifyWithCount(fn, argumentCount) {\n var args = [];\n for (var i = 0; i < argumentCount; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'return new Promise(function (rs, rj) {',\n 'var res = fn.call(',\n ['self'].concat(args).concat([callbackFn]).join(','),\n ');',\n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n return Function(['Promise', 'fn'], body)(Promise, fn);\n}\nfunction denodeifyWithoutCount(fn) {\n var fnLength = Math.max(fn.length - 1, 3);\n var args = [];\n for (var i = 0; i < fnLength; i++) {\n args.push('a' + i);\n }\n var body = [\n 'return function (' + args.join(',') + ') {',\n 'var self = this;',\n 'var args;',\n 'var argLength = arguments.length;',\n 'if (arguments.length > ' + fnLength + ') {',\n 'args = new Array(arguments.length + 1);',\n 'for (var i = 0; i < arguments.length; i++) {',\n 'args[i] = arguments[i];',\n '}',\n '}',\n 'return new Promise(function (rs, rj) {',\n 'var cb = ' + callbackFn + ';',\n 'var res;',\n 'switch (argLength) {',\n args.concat(['extra']).map(function (_, index) {\n return (\n 'case ' + (index) + ':' +\n 'res = fn.call(' + ['self'].concat(args.slice(0, index)).concat('cb').join(',') + ');' +\n 'break;'\n );\n }).join(''),\n 'default:',\n 'args[argLength] = cb;',\n 'res = fn.apply(self, args);',\n '}',\n \n 'if (res &&',\n '(typeof res === \"object\" || typeof res === \"function\") &&',\n 'typeof res.then === \"function\"',\n ') {rs(res);}',\n '});',\n '};'\n ].join('');\n\n return Function(\n ['Promise', 'fn'],\n body\n )(Promise, fn);\n}\n\nPromise.nodeify = function (fn) {\n return function () {\n var args = Array.prototype.slice.call(arguments);\n var callback =\n typeof args[args.length - 1] === 'function' ? args.pop() : null;\n var ctx = this;\n try {\n return fn.apply(this, arguments).nodeify(callback, ctx);\n } catch (ex) {\n if (callback === null || typeof callback == 'undefined') {\n return new Promise(function (resolve, reject) {\n reject(ex);\n });\n } else {\n asap(function () {\n callback.call(ctx, ex);\n })\n }\n }\n }\n};\n\nPromise.prototype.nodeify = function (callback, ctx) {\n if (typeof callback != 'function') return this;\n\n this.then(function (value) {\n asap(function () {\n callback.call(ctx, null, value);\n });\n }, function (err) {\n asap(function () {\n callback.call(ctx, err);\n });\n });\n};\n","'use strict';\n\nvar Promise = require('./core.js');\n\nmodule.exports = Promise;\nPromise.enableSynchronous = function () {\n Promise.prototype.isPending = function() {\n return this.getState() == 0;\n };\n\n Promise.prototype.isFulfilled = function() {\n return this.getState() == 1;\n };\n\n Promise.prototype.isRejected = function() {\n return this.getState() == 2;\n };\n\n Promise.prototype.getValue = function () {\n if (this._i === 3) {\n return this._j.getValue();\n }\n\n if (!this.isFulfilled()) {\n throw new Error('Cannot get a value of an unfulfilled promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getReason = function () {\n if (this._i === 3) {\n return this._j.getReason();\n }\n\n if (!this.isRejected()) {\n throw new Error('Cannot get a rejection reason of a non-rejected promise.');\n }\n\n return this._j;\n };\n\n Promise.prototype.getState = function () {\n if (this._i === 3) {\n return this._j.getState();\n }\n if (this._i === -1 || this._i === -2) {\n return 0;\n }\n\n return this._i;\n };\n};\n\nPromise.disableSynchronous = function() {\n Promise.prototype.isPending = undefined;\n Promise.prototype.isFulfilled = undefined;\n Promise.prototype.isRejected = undefined;\n Promise.prototype.getValue = undefined;\n Promise.prototype.getReason = undefined;\n Promise.prototype.getState = undefined;\n};\n","/*!\n * EventEmitter v5.2.9 - git.io/ee\n * Unlicense - http://unlicense.org/\n * Oliver Caldwell - https://oli.me.uk/\n * @preserve\n */\n\n;(function (exports) {\n 'use strict';\n\n /**\n * Class for managing events.\n * Can be extended to provide event functionality in other classes.\n *\n * @class EventEmitter Manages event registering and emitting.\n */\n function EventEmitter() {}\n\n // Shortcuts to improve speed and size\n var proto = EventEmitter.prototype;\n var originalGlobalValue = exports.EventEmitter;\n\n /**\n * Finds the index of the listener for the event in its storage array.\n *\n * @param {Function[]} listeners Array of listeners to search through.\n * @param {Function} listener Method to look for.\n * @return {Number} Index of the specified listener, -1 if not found\n * @api private\n */\n function indexOfListener(listeners, listener) {\n var i = listeners.length;\n while (i--) {\n if (listeners[i].listener === listener) {\n return i;\n }\n }\n\n return -1;\n }\n\n /**\n * Alias a method while keeping the context correct, to allow for overwriting of target method.\n *\n * @param {String} name The name of the target method.\n * @return {Function} The aliased method\n * @api private\n */\n function alias(name) {\n return function aliasClosure() {\n return this[name].apply(this, arguments);\n };\n }\n\n /**\n * Returns the listener array for the specified event.\n * Will initialise the event object and listener arrays if required.\n * Will return an object if you use a regex search. The object contains keys for each matched event. So /ba[rz]/ might return an object containing bar and baz. But only if you have either defined them with defineEvent or added some listeners to them.\n * Each property in the object response is an array of listener functions.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Function[]|Object} All listener functions for the event.\n */\n proto.getListeners = function getListeners(evt) {\n var events = this._getEvents();\n var response;\n var key;\n\n // Return a concatenated array of all matching events if\n // the selector is a regular expression.\n if (evt instanceof RegExp) {\n response = {};\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n response[key] = events[key];\n }\n }\n }\n else {\n response = events[evt] || (events[evt] = []);\n }\n\n return response;\n };\n\n /**\n * Takes a list of listener objects and flattens it into a list of listener functions.\n *\n * @param {Object[]} listeners Raw listener objects.\n * @return {Function[]} Just the listener functions.\n */\n proto.flattenListeners = function flattenListeners(listeners) {\n var flatListeners = [];\n var i;\n\n for (i = 0; i < listeners.length; i += 1) {\n flatListeners.push(listeners[i].listener);\n }\n\n return flatListeners;\n };\n\n /**\n * Fetches the requested listeners via getListeners but will always return the results inside an object. This is mainly for internal use but others may find it useful.\n *\n * @param {String|RegExp} evt Name of the event to return the listeners from.\n * @return {Object} All listener functions for an event in an object.\n */\n proto.getListenersAsObject = function getListenersAsObject(evt) {\n var listeners = this.getListeners(evt);\n var response;\n\n if (listeners instanceof Array) {\n response = {};\n response[evt] = listeners;\n }\n\n return response || listeners;\n };\n\n function isValidListener (listener) {\n if (typeof listener === 'function' || listener instanceof RegExp) {\n return true\n } else if (listener && typeof listener === 'object') {\n return isValidListener(listener.listener)\n } else {\n return false\n }\n }\n\n /**\n * Adds a listener function to the specified event.\n * The listener will not be added if it is a duplicate.\n * If the listener returns true then it will be removed after it is called.\n * If you pass a regular expression as the event name then the listener will be added to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListener = function addListener(evt, listener) {\n if (!isValidListener(listener)) {\n throw new TypeError('listener must be a function');\n }\n\n var listeners = this.getListenersAsObject(evt);\n var listenerIsWrapped = typeof listener === 'object';\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key) && indexOfListener(listeners[key], listener) === -1) {\n listeners[key].push(listenerIsWrapped ? listener : {\n listener: listener,\n once: false\n });\n }\n }\n\n return this;\n };\n\n /**\n * Alias of addListener\n */\n proto.on = alias('addListener');\n\n /**\n * Semi-alias of addListener. It will add a listener that will be\n * automatically removed after its first execution.\n *\n * @param {String|RegExp} evt Name of the event to attach the listener to.\n * @param {Function} listener Method to be called when the event is emitted. If the function returns true then it will be removed after calling.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addOnceListener = function addOnceListener(evt, listener) {\n return this.addListener(evt, {\n listener: listener,\n once: true\n });\n };\n\n /**\n * Alias of addOnceListener.\n */\n proto.once = alias('addOnceListener');\n\n /**\n * Defines an event name. This is required if you want to use a regex to add a listener to multiple events at once. If you don't do this then how do you expect it to know what event to add to? Should it just add to every possible match for a regex? No. That is scary and bad.\n * You need to tell it what event names should be matched by a regex.\n *\n * @param {String} evt Name of the event to create.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvent = function defineEvent(evt) {\n this.getListeners(evt);\n return this;\n };\n\n /**\n * Uses defineEvent to define multiple events.\n *\n * @param {String[]} evts An array of event names to define.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.defineEvents = function defineEvents(evts) {\n for (var i = 0; i < evts.length; i += 1) {\n this.defineEvent(evts[i]);\n }\n return this;\n };\n\n /**\n * Removes a listener function from the specified event.\n * When passed a regular expression as the event name, it will remove the listener from all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to remove the listener from.\n * @param {Function} listener Method to remove from the event.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListener = function removeListener(evt, listener) {\n var listeners = this.getListenersAsObject(evt);\n var index;\n var key;\n\n for (key in listeners) {\n if (listeners.hasOwnProperty(key)) {\n index = indexOfListener(listeners[key], listener);\n\n if (index !== -1) {\n listeners[key].splice(index, 1);\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of removeListener\n */\n proto.off = alias('removeListener');\n\n /**\n * Adds listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can add to multiple events at once. The object should contain key value pairs of events and listeners or listener arrays. You can also pass it an event name and an array of listeners to be added.\n * You can also pass it a regular expression to add the array of listeners to all events that match it.\n * Yeah, this function does quite a bit. That's probably a bad thing.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add to multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.addListeners = function addListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(false, evt, listeners);\n };\n\n /**\n * Removes listeners in bulk using the manipulateListeners method.\n * If you pass an object as the first argument you can remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be removed.\n * You can also pass it a regular expression to remove the listeners from all events that match it.\n *\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeListeners = function removeListeners(evt, listeners) {\n // Pass through to manipulateListeners\n return this.manipulateListeners(true, evt, listeners);\n };\n\n /**\n * Edits listeners in bulk. The addListeners and removeListeners methods both use this to do their job. You should really use those instead, this is a little lower level.\n * The first argument will determine if the listeners are removed (true) or added (false).\n * If you pass an object as the second argument you can add/remove from multiple events at once. The object should contain key value pairs of events and listeners or listener arrays.\n * You can also pass it an event name and an array of listeners to be added/removed.\n * You can also pass it a regular expression to manipulate the listeners of all events that match it.\n *\n * @param {Boolean} remove True if you want to remove listeners, false if you want to add.\n * @param {String|Object|RegExp} evt An event name if you will pass an array of listeners next. An object if you wish to add/remove from multiple events at once.\n * @param {Function[]} [listeners] An optional array of listener functions to add/remove.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.manipulateListeners = function manipulateListeners(remove, evt, listeners) {\n var i;\n var value;\n var single = remove ? this.removeListener : this.addListener;\n var multiple = remove ? this.removeListeners : this.addListeners;\n\n // If evt is an object then pass each of its properties to this method\n if (typeof evt === 'object' && !(evt instanceof RegExp)) {\n for (i in evt) {\n if (evt.hasOwnProperty(i) && (value = evt[i])) {\n // Pass the single listener straight through to the singular method\n if (typeof value === 'function') {\n single.call(this, i, value);\n }\n else {\n // Otherwise pass back to the multiple function\n multiple.call(this, i, value);\n }\n }\n }\n }\n else {\n // So evt must be a string\n // And listeners must be an array of listeners\n // Loop over it and pass each one to the multiple method\n i = listeners.length;\n while (i--) {\n single.call(this, evt, listeners[i]);\n }\n }\n\n return this;\n };\n\n /**\n * Removes all listeners from a specified event.\n * If you do not specify an event then all listeners will be removed.\n * That means every event will be emptied.\n * You can also pass a regex to remove all events that match it.\n *\n * @param {String|RegExp} [evt] Optional name of the event to remove all listeners for. Will remove from every event if not passed.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.removeEvent = function removeEvent(evt) {\n var type = typeof evt;\n var events = this._getEvents();\n var key;\n\n // Remove different things depending on the state of evt\n if (type === 'string') {\n // Remove all listeners for the specified event\n delete events[evt];\n }\n else if (evt instanceof RegExp) {\n // Remove all events matching the regex.\n for (key in events) {\n if (events.hasOwnProperty(key) && evt.test(key)) {\n delete events[key];\n }\n }\n }\n else {\n // Remove all listeners in all events\n delete this._events;\n }\n\n return this;\n };\n\n /**\n * Alias of removeEvent.\n *\n * Added to mirror the node API.\n */\n proto.removeAllListeners = alias('removeEvent');\n\n /**\n * Emits an event of your choice.\n * When emitted, every listener attached to that event will be executed.\n * If you pass the optional argument array then those arguments will be passed to every listener upon execution.\n * Because it uses `apply`, your array of arguments will be passed as if you wrote them out separately.\n * So they will not arrive within the array on the other side, they will be separate.\n * You can also pass a regular expression to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {Array} [args] Optional array of arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emitEvent = function emitEvent(evt, args) {\n var listenersMap = this.getListenersAsObject(evt);\n var listeners;\n var listener;\n var i;\n var key;\n var response;\n\n for (key in listenersMap) {\n if (listenersMap.hasOwnProperty(key)) {\n listeners = listenersMap[key].slice(0);\n\n for (i = 0; i < listeners.length; i++) {\n // If the listener returns true then it shall be removed from the event\n // The function is executed either with a basic call or an apply if there is an args array\n listener = listeners[i];\n\n if (listener.once === true) {\n this.removeListener(evt, listener.listener);\n }\n\n response = listener.listener.apply(this, args || []);\n\n if (response === this._getOnceReturnValue()) {\n this.removeListener(evt, listener.listener);\n }\n }\n }\n }\n\n return this;\n };\n\n /**\n * Alias of emitEvent\n */\n proto.trigger = alias('emitEvent');\n\n /**\n * Subtly different from emitEvent in that it will pass its arguments on to the listeners, as opposed to taking a single array of arguments to pass on.\n * As with emitEvent, you can pass a regex in place of the event name to emit to all events that match it.\n *\n * @param {String|RegExp} evt Name of the event to emit and execute listeners for.\n * @param {...*} Optional additional arguments to be passed to each listener.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.emit = function emit(evt) {\n var args = Array.prototype.slice.call(arguments, 1);\n return this.emitEvent(evt, args);\n };\n\n /**\n * Sets the current value to check against when executing listeners. If a\n * listeners return value matches the one set here then it will be removed\n * after execution. This value defaults to true.\n *\n * @param {*} value The new value to check for when executing listeners.\n * @return {Object} Current instance of EventEmitter for chaining.\n */\n proto.setOnceReturnValue = function setOnceReturnValue(value) {\n this._onceReturnValue = value;\n return this;\n };\n\n /**\n * Fetches the current value to check against when executing listeners. If\n * the listeners return value matches this one then it should be removed\n * automatically. It will return true by default.\n *\n * @return {*|Boolean} The current value to check for or the default, true.\n * @api private\n */\n proto._getOnceReturnValue = function _getOnceReturnValue() {\n if (this.hasOwnProperty('_onceReturnValue')) {\n return this._onceReturnValue;\n }\n else {\n return true;\n }\n };\n\n /**\n * Fetches the events object and creates one if required.\n *\n * @return {Object} The events storage object.\n * @api private\n */\n proto._getEvents = function _getEvents() {\n return this._events || (this._events = {});\n };\n\n /**\n * Reverts the global {@link EventEmitter} to its previous value and returns a reference to this version.\n *\n * @return {Function} Non conflicting EventEmitter class.\n */\n EventEmitter.noConflict = function noConflict() {\n exports.EventEmitter = originalGlobalValue;\n return EventEmitter;\n };\n\n // Expose the class either via AMD, CommonJS or the global object\n if (typeof define === 'function' && define.amd) {\n define(function () {\n return EventEmitter;\n });\n }\n else if (typeof module === 'object' && module.exports){\n module.exports = EventEmitter;\n }\n else {\n exports.EventEmitter = EventEmitter;\n }\n}(typeof window !== 'undefined' ? window : this || {}));\n","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var inProgress = {};\nvar dataWebpackPrefix = \"LiveHelperChat:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t\tif (script.src.indexOf(window.location.origin + '/') !== 0) {\n\t\t\tscript.crossOrigin = \"anonymous\";\n\t\t}\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t}\n\t;\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"\" + {\"81\":\"75d1d932aa8416f0bf23\",\"213\":\"9704c8f8044bd52f066c\",\"398\":\"16da6b6586a6fd6028ae\",\"417\":\"2de2c9d370bb7f28def0\",\"530\":\"6607a807df452c8883cf\",\"572\":\"77adaf2dba091c4d50d1\",\"783\":\"a68fc3eccb8af7392e9f\",\"821\":\"47fccc99a929b98c866b\"}[chunkId] + \".js\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"./\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkIds[i]] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkLiveHelperChat\"] = self[\"webpackChunkLiveHelperChat\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","(function (global) {\n\n var currentScript = document.currentScript || (function() {\n var scripts = document.getElementsByTagName('script');\n return scripts[scripts.length - 1];\n })();\n\n var scopeScript = currentScript.getAttribute('scope') || 'LHC';\n\n if (/google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex|Chrome-Lighthouse/i.test(navigator.userAgent)) {\n return;\n }\n\n if (!global[scopeScript+'_API']) {\n if (global['LHC_API']) {\n global[scopeScript+'_API'] = global['LHC_API'];\n } else {\n return;\n }\n }\n\n var lhcError = {\n log : function(message, filename, lineNumber, stack, column) {\n var e;\n e = {};\n e.message = message || \"\";\n e.message += \"\\n\" + global.navigator.userAgent;\n e.location = location && location.href ? location.href : \"\";\n e.file = filename || \"\";\n e.line = lineNumber || \"\";\n e.column = column || \"\";\n e.stack = stack ? JSON.stringify(stack) : \"\";\n e.stack = e.stack.replace(/(\\r\\n|\\n|\\r)/gm, \"\");\n var xhr = new XMLHttpRequest();\n xhr.open( \"POST\", global[scopeScript+'_API']['args']['lhc_base_url'] + 'audit/logjserror', true);\n xhr.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");\n xhr.send( \"data=\" + encodeURIComponent( JSON.stringify(e) ) );\n }\n }\n\n try {\n\n window.addEventListener('error', function (e) {\n if (lhcError && e.filename.indexOf(global[scopeScript+'_API']['args']['lhc_base_url'].replace('index.php/')) !== -1) {\n lhcError.log(e.message, e.filename, e.lineNumber || e.lineno, e.error.stack, e.colno);\n }\n })\n\n global['$_' + scopeScript + '_Instance'] = null;\n global['$_' + scopeScript + '_Debug'] = false;\n global['$_' + scopeScript] = global['$_' + scopeScript] || {};\n\n (function (lhc, LHC_API) {\n\n lhc.loaded = false;\n lhc.connected = false;\n lhc.ready = false;\n lhc.version = 186;\n\n var init = () => {\n\n if (!global.Promise) {\n global.Promise = require('promise');\n }\n\n var BehaviorSubject = require('./util/monitoredVariable').monitoredVariable;\n var EventEmitter = require('wolfy87-eventemitter');\n\n var statusWidget = require('./lib/widgets/statusWidget').statusWidget;\n var mainWidget = require('./lib/widgets/mainWidget').mainWidget;\n var mainWidgetPopup = require('./lib/widgets/mainWidgetPopup').mainWidgetPopup;\n var containerChat = require('./lib/widgets/containerChat').containerChat;\n var helperFunctions = require('./lib/helperFunctions').helperFunctions;\n var userSession = require('./util/userSession').userSession;\n var storageHandler = require('./util/storageHandler').storageHandler;\n var chatNotifications = require('./lib/chatNotifications').chatNotifications;\n var chatEventsHandler = require('./util/chatEventsHandler').chatEventsHandler;\n\n const isMobileItem = require('ismobilejs');\n\n var isMobile = isMobileItem.default(global.navigator.userAgent).phone;\n\n LHC_API.args = LHC_API.args || {};\n\n if (typeof LHC_API.args.mobile_view !== 'undefined') {\n isMobile = LHC_API.args.mobile_view;\n }\n\n const prefixLowercase = scopeScript.toLowerCase();\n const prefixStorage = (prefixLowercase && LHC_API.args.scope_storage ? prefixLowercase : 'lhc');\n const cookieEnabledUser = typeof LHC_API.args.cookie_enabled !== 'undefined' ? LHC_API.args.cookie_enabled : true;\n const userMode = LHC_API.args.mode || 'widget';\n\n var storageHandler = new storageHandler(global, LHC_API.args.domain || null, prefixStorage, cookieEnabledUser);\n\n // Cookies are disabled and it's required for us to work. So switch to mode where cookies are not required\n if (storageHandler.cookieEnabled === false && userMode == 'widget') {\n LHC_API.args.orig = {}\n LHC_API.args.orig.mode = LHC_API.args.mode;\n LHC_API.args.orig.proactive = LHC_API.args.proactive;\n LHC_API.args.orig.check_messages = LHC_API.args.check_messages;\n\n LHC_API.args.mode = 'popup';\n LHC_API.args.proactive = false;\n LHC_API.args.check_messages = false;\n }\n\n if (LHC_API.args.cookie_per_page) {\n storageHandler.setCookiePerPage(LHC_API.args.cookie_per_page);\n }\n\n var referrer = (document.referrer) ? document.referrer.substr(document.referrer.indexOf('://') + 1) : '';\n var location = (document.location) ? encodeURIComponent(window.location.href.substring(window.location.protocol.length)) : '';\n\n storageHandler.setSessionReferer(referrer);\n\n referrer = referrer ? encodeURIComponent(referrer) : '';\n\n if (LHC_API.args.lang) {\n LHC_API.args.lang = LHC_API.args.lang.replace('/', '') + '/';\n }\n\n // Main attributes\n var attributesWidget = {\n terminated: false,\n prefixLowercase: prefixLowercase,\n prefixStorage: prefixStorage,\n prefixScope: scopeScript,\n cookie_enabled: cookieEnabledUser,\n LHC_API: LHC_API,\n viewHandler: null,\n msgSnippet: null,\n react_attr: LHC_API.args.react_attr || null,\n hide_parent: LHC_API.args.hide_parent || false,\n hide_iframe: LHC_API.args.hide_iframe || false,\n hide_status: LHC_API.args.hide_status || null,\n mainWidget: new mainWidget(prefixLowercase),\n popupWidget: new mainWidgetPopup(),\n chatNotifications: chatNotifications,\n jsVars: new BehaviorSubject(true),\n onlineStatus: new BehaviorSubject(true),\n wloaded: new BehaviorSubject(false),\n sload: new BehaviorSubject(false),\n shidden: new BehaviorSubject(LHC_API.args.hide_status || false),\n msgsnippet_status: new BehaviorSubject(false),\n unread_counter: new BehaviorSubject(0),\n widgetStatus: new BehaviorSubject((storageHandler.getSessionStorage(prefixStorage + '_ws') === 'true' || (LHC_API.args.mode && LHC_API.args.mode == 'embed'))),\n eventEmitter: new EventEmitter(),\n toggleSound: new BehaviorSubject(storageHandler.getSessionStorage(prefixStorage + '_sound') === 'true', {'ignore_sub': true}),\n hideOffline: false,\n fscreen: LHC_API.args.fscreen || false,\n isMobile: isMobile,\n isIE: (navigator.userAgent.toUpperCase().indexOf(\"TRIDENT/\") != -1 || navigator.userAgent.toUpperCase().indexOf(\"MSIE\") != -1 || typeof Object.assign !== 'function'),\n fresh: LHC_API.args.fresh || false,\n popupDimesnions: {pheight: (LHC_API.args.pheight || 520), pwidth: (LHC_API.args.pwidth || 500)},\n leaveMessage: LHC_API.args.leaveamessage || null,\n department: LHC_API.args.department || [],\n dep_default: LHC_API.args.dep_default || null,\n product: LHC_API.args.product || [],\n theme: LHC_API.args.theme || null,\n theme_v: null,\n domain: LHC_API.args.domain || null,\n domain_lhc: null,\n instance_id: 0,\n profile_pic: LHC_API.args.profile_pic || null,\n position: LHC_API.args.position || 'bottom_right',\n position_placement: LHC_API.args.position_placement || 'bottom_right',\n base_url: LHC_API.args.lhc_base_url,\n mode: LHC_API.args.mode || 'widget',\n tag: LHC_API.args.tag || '',\n proactive: {},\n captcha: null,\n focused: true,\n clinst: false,\n kcw: LHC_API.args.kcw || false,\n offline_redirect: LHC_API.args.offline_redirect || null,\n identifier: LHC_API.args.identifier || '',\n proactive_interval: null,\n lang: LHC_API.args.lang || '',\n bot_id: LHC_API.args.bot_id || '',\n trigger_id: LHC_API.args.trigger_id || '',\n priority: LHC_API.args.priority || null,\n events: LHC_API.args.events || [],\n hhtml: LHC_API.args.hhtml || '',\n survey: LHC_API.args.survey || null,\n operator: LHC_API.args.operator || null,\n phash: LHC_API.args.phash || null,\n pvhash: LHC_API.args.pvhash || null,\n // Login Objects\n userSession: new userSession(),\n storageHandler: storageHandler,\n staticJS: {},\n nh : null, // Need help data\n init_calls: [],\n childCommands: [],\n childExtCommands: [],\n lhc_var: (LHC_API.args.lhc_var || (typeof lhc_var !== 'undefined' ? lhc_var : null)),\n loadcb: LHC_API.args.loadcb || null,\n LHCChatOptions: global[scopeScript + 'ChatOptions'] || {}\n };\n\n attributesWidget.widgetDimesions = new BehaviorSubject({\n sright: (LHC_API.args.sright || 0),\n sbottom: (LHC_API.args.sbottom || 0),\n wright_inv: 0,\n wbottom: 0,\n wright: 0,\n width: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wwidth || 350)),\n height: ((isMobile || attributesWidget.fscreen) ? 100 : (LHC_API.args.wheight || 520)),\n units: ((isMobile || attributesWidget.fscreen) ? '%' : 'px')\n });\n\n var chatEvents = new chatEventsHandler(attributesWidget);\n\n lhc.eventListener = attributesWidget.eventEmitter;\n lhc.attributes = attributesWidget;\n\n attributesWidget.userSession.setAttributes(attributesWidget);\n attributesWidget.userSession.setSessionInformation(attributesWidget.storageHandler.getSessionInformation());\n attributesWidget.userSession.setSessionReferrer(storageHandler.getSessionReferrer());\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n\n var containerChatObj = new containerChat(attributesWidget.prefixLowercase, LHC_API.args.pnode || null);\n\n attributesWidget.viewHandler = new statusWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.viewHandler.cont.constructUI(), !0);\n\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.elmDom.appendChild(attributesWidget.mainWidget.cont.constructUI(), !0);\n }\n\n } else {\n var embedWrapper = document.getElementById(attributesWidget.prefixLowercase + '_status_container_page');\n if (embedWrapper !== null) {\n embedWrapper.appendChild(attributesWidget.mainWidget.cont.constructUI());\n embedWrapper.style.height = (LHC_API.args.wheight || 520) + 'px';\n } else {\n attributesWidget.position = 'api';\n }\n }\n\n function getArguments(){\n return {\n 'cd': (storageHandler.cookieEnabled === false ? 1 : null),\n 'vid': (LHC_API.args.UUID || attributesWidget.userSession.getVID()),\n 'hnh': attributesWidget.userSession.hnh,\n 'tz': helperFunctions.getTzOffset(),\n 'r': referrer,\n 'l': location,\n 'dt': encodeURIComponent(document.title),\n 'ie': attributesWidget.isIE,\n 'dep': attributesWidget.department.join(','),\n 'idnt': attributesWidget.identifier,\n 'tag': attributesWidget.tag,\n 'theme': attributesWidget.theme\n };\n }\n\n function showNeedHelp(nh) {\n import('./lib/widgets/needhelpWidget').then((module) => {\n var needhelpWidget = new module.needhelpWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(needhelpWidget.cont.constructUI(), !0);\n needhelpWidget.init(attributesWidget, nh);\n });\n }\n\n function showProactive(){\n import('./util/proactiveChat').then((module) => {\n module.proactiveChat.setParams({\n 'interval': attributesWidget.proactive_interval\n }, attributesWidget, chatEvents);\n });\n }\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n\n if (lhc.version !== data.wv && document.getElementById(attributesWidget.prefixLowercase+'-js-reload') === null) {\n\n if (data.terminate) {\n return;\n }\n\n attributesWidget.userSession.setVID(data.vid);\n\n // Mark script as terminated\n attributesWidget.terminated = true;\n\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n\n // Create new embed script\n var po = document.createElement(\"script\");\n po.type = currentScript.type;\n po.id = attributesWidget.prefixLowercase+'-js-reload';\n po.async = true;\n if (currentScript.getAttribute('scope')) { po.setAttribute('scope',currentScript.getAttribute('scope')); }\n\n // Expires cache\n po.src = currentScript.getAttribute('src') + '&r='+ (new Date()).getHours() + (new Date()).getMinutes();\n var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);\n return;\n }\n\n if (data.terminate || ((!attributesWidget.leaveMessage && data.chat_ui.leaveamessage === false) && data.isOnline === false)) {\n\n if (LHC_API.args.offline_redirect && attributesWidget.mode == 'embed') {\n document.location = LHC_API.args.offline_redirect;\n }\n\n if (data.terminate) {\n return;\n }\n }\n\n // Send event that lhc has started\n // So parent page informs back that it has lhc\n if ((attributesWidget.hide_parent || attributesWidget.hide_iframe || (data.chat_ui && (data.chat_ui.hide_iframe || data.chat_ui.hide_parent))) && window.location != window.parent.location && window.parent.closed === false) {\n window.parent.postMessage('lhc::started','*');\n }\n\n attributesWidget.leaveMessage = attributesWidget.leaveMessage || data.chat_ui.leaveamessage;\n\n if (data.department) {\n attributesWidget.department = data.department;\n }\n\n __webpack_public_path__ = data.chunks_location + \"/\";\n\n if (data.secure_cookie) {\n attributesWidget.storageHandler.setSecureCookie(true);\n }\n\n if (data.domain) {\n attributesWidget.storageHandler.setCookieDomain(data.domain);\n }\n\n if (data.siteaccess) {\n attributesWidget.lang = data.siteaccess;\n }\n\n if (data.static) {\n attributesWidget.staticJS = data.static;\n }\n\n if (data.pdim) {\n attributesWidget.popupDimesnions = data.pdim;\n }\n\n if (data.survey_id) {\n attributesWidget.survey = data.survey_id;\n }\n\n if (data.domain_lhc) {\n attributesWidget.domain_lhc = data.domain_lhc;\n }\n\n if (data.cont_css) {\n attributesWidget.cont_ss = data.cont_css;\n }\n\n if (data.wposition) {\n attributesWidget.position_placement = data.wposition;\n }\n\n attributesWidget.captcha = {hash: data.hash, ts: data.hash_ts};\n attributesWidget.userSession.setVID(data.vid);\n\n // Store session\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.hideOffline = data.hideOffline;\n attributesWidget.onlineStatus.next(data.isOnline);\n\n if (data.theme) {\n attributesWidget.theme = data.theme;\n attributesWidget.theme_v = data.theme_v;\n }\n\n if (data.chat_ui) {\n\n if (data.chat_ui.hide_parent) {\n attributesWidget.hide_parent = true;\n }\n\n if ((data.chat_ui.fscreen && attributesWidget.mode == 'embed') || attributesWidget.fscreen) {\n attributesWidget.widgetDimesions.nextProperty('width', 100);\n attributesWidget.widgetDimesions.nextProperty('height', 100);\n attributesWidget.widgetDimesions.nextProperty('units', '%');\n attributesWidget.fscreen = isMobile = attributesWidget.isMobile = true;\n }\n\n if (data.chat_ui.wheight && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('height', data.chat_ui.wheight);\n }\n\n if (data.chat_ui.wwidth && !isMobile) {\n attributesWidget.widgetDimesions.nextProperty('width', data.chat_ui.wwidth);\n }\n\n if (data.chat_ui.hhtml) {\n attributesWidget.hhtml = data.chat_ui.hhtml;\n }\n\n if (data.chat_ui.kcw) {\n attributesWidget.kcw = true;\n }\n\n if (data.chat_ui.clinst) {\n attributesWidget.clinst = true;\n }\n\n if (data.chat_ui.wbottom) {\n attributesWidget.widgetDimesions.nextProperty('wbottom', data.chat_ui.wbottom);\n }\n\n if (data.chat_ui.sbottom) {\n attributesWidget.widgetDimesions.nextProperty('sbottom', data.chat_ui.sbottom);\n }\n\n if (data.chat_ui.sright) {\n attributesWidget.widgetDimesions.nextProperty('sright', data.chat_ui.sright);\n }\n\n if (data.chat_ui.wright) {\n attributesWidget.widgetDimesions.nextProperty('wright', data.chat_ui.wright);\n }\n\n if (data.chat_ui.wright_inv) {\n attributesWidget.widgetDimesions.nextProperty('wright_inv', data.chat_ui.wright_inv);\n }\n\n if (data.chat_ui.mobile_popup && isMobile) {\n attributesWidget.mode = 'popup';\n }\n\n if (data.chat_ui.sound_enabled && storageHandler.getSessionStorage(prefixStorage + '_sound') === null) {\n attributesWidget.toggleSound.next(true);\n }\n\n if (data.instance_id) {\n attributesWidget.instance_id = data.instance_id;\n }\n\n if (data.chat_ui.check_status) {\n import('./util/activityMonitoring').then((module) => {\n module.activityMonitoring.setParams({\n 'timeout': data.chat_ui.check_status,\n 'track_mouse': data.chat_ui.track_mouse,\n 'track_activity': data.chat_ui.track_activity\n }, attributesWidget);\n });\n }\n\n if (data.ga) {\n import('./util/analyticEvents').then((module) => {\n module.analyticEvents.setParams({\n 'ga': data.ga\n }, attributesWidget);\n });\n }\n }\n\n if (data.nh && attributesWidget.fresh === false && attributesWidget['position'] != 'api') {\n attributesWidget.nh = data.nh;\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n if (data.nh.ap || attributesWidget.userSession.id === null) {\n showNeedHelp(data.nh);\n }\n }\n }\n\n if (data.js_vars) {\n // Javascript custom variables init\n // Extensions can listen for these\n attributesWidget.jsVars.next(data.js_vars);\n\n // Monitor js vars if required\n if (data.js_vars.length > 0) {\n attributesWidget.userSession.setupVarsMonitoring(data.js_vars, (vars) => {\n chatEvents.sendChildEvent('jsVars', [vars]);\n });\n }\n }\n\n // Init main widgets\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n attributesWidget.viewHandler.init(attributesWidget, data.ll);\n }\n\n if (!(attributesWidget.position == 'api' && attributesWidget.mode == 'embed')) {\n attributesWidget.mainWidget.init(attributesWidget, data.ll);\n }\n\n // Show status widget\n if (attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') {\n containerChatObj.cont.show();\n }\n\n if (attributesWidget.loadcb) {\n attributesWidget.loadcb(attributesWidget);\n }\n\n if (data.init_calls) {\n attributesWidget.init_calls = data.init_calls;\n }\n\n attributesWidget.proactive_interval = data.chat_ui.proactive_interval;\n\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup' || attributesWidget.mode == 'embed') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n\n if (attributesWidget.init_calls.length > 0) {\n attributesWidget.init_calls.forEach((item) => {\n if (item.extension == 'nodeJSChat') {\n import('./util/nodeJSChat').then((module) => {\n module.nodeJSChat.setParams(item.params, attributesWidget, chatEvents);\n });\n }\n });\n }\n\n })\n\n // Widget Hide event\n attributesWidget.eventEmitter.addListener('closeWidget', function () {\n attributesWidget.widgetStatus.next(false);\n chatEvents.sendChildEvent('closedWidget', [{'sender': 'closeButton'}]);\n });\n\n // Send event to the child instantly\n attributesWidget.eventEmitter.addListener('sendChildEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n } else {\n attributesWidget.childCommands.push(params);\n }\n }\n });\n\n // Send smart event to the child\n attributesWidget.eventEmitter.addListener('sendChildExtEvent', function (params) {\n if (typeof params['boot'] !== 'undefined') {\n attributesWidget.mainWidget.bootstrap();\n } else {\n if (attributesWidget.mainWidget.isLoaded == true && lhc.loaded == true) {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n } else {\n attributesWidget.childExtCommands.push(params);\n }\n }\n });\n\n // Toggle sound user\n attributesWidget.eventEmitter.addListener('toggleSound', function () {\n var newValue = !attributesWidget.toggleSound.value;\n attributesWidget.toggleSound.next(newValue);\n });\n\n // Toggle cookies policy\n attributesWidget.eventEmitter.addListener('enableCookies', function () {\n\n // Check does cookies are supported in genreal\n if (storageHandler.checkCookiesSupport() === true) {\n // Store session\n var sessionAtrribute = attributesWidget.userSession.getSessionAttributes();\n if (typeof sessionAtrribute.hnh !== 'undefined') { delete sessionAtrribute['hnh']; }\n attributesWidget.storageHandler.storeSessionInformation(sessionAtrribute);\n\n if (typeof LHC_API.args.orig !== 'undefined') {\n\n attributesWidget.mode = LHC_API.args.mode = LHC_API.args.orig.mode;\n LHC_API.args.proactive = LHC_API.args.orig.proactive;\n LHC_API.args.check_messages = LHC_API.args.orig.check_messages;\n\n helperFunctions.makeRequest(LHC_API.args.lhc_base_url + attributesWidget.lang + 'widgetrestapi/settings', {\n params: getArguments()\n }, (data) => {\n // Change mode for react app\n attributesWidget.eventEmitter.emitEvent('sendChildEvent',[{'cmd' : 'attr_set', 'arg' : {'type':'attr_set','attr': ['mode'], data : attributesWidget.mode}}]);\n\n // Show need help widget if it's required\n if (attributesWidget.mode == 'widget' && attributesWidget.nh !== null) {\n showNeedHelp(attributesWidget.nh);\n }\n\n // Enable proactive if it's required\n if ((attributesWidget.mode == 'widget' || attributesWidget.mode == 'popup') && (typeof LHC_API.args.proactive === 'undefined' || LHC_API.args.proactive === true) && attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_invt') === null) {\n showProactive();\n }\n });\n }\n }\n });\n\n\n // Clear chat cookies if there is any\n // Then popup finishes loading it calls this to clean up chat cookies. So visitor can start new chat.\n attributesWidget.eventEmitter.addListener('endChatCookies', function (params) {\n if (attributesWidget.kcw === false || (params && params['force'] == true)) {\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n attributesWidget.proactive = {};\n }\n });\n\n attributesWidget.eventEmitter.addListener('endChat', function (params) {\n\n attributesWidget.userSession.setChatInformation({'id': null, 'hash': null});\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n\n attributesWidget.proactive = {};\n\n if (attributesWidget.mode != 'popup' && (!params || !params['show_start'])) {\n attributesWidget.widgetStatus.next(false);\n }\n\n if (attributesWidget.viewHandler) {\n attributesWidget.viewHandler.removeUnreadIndicator();\n attributesWidget.eventEmitter.emitEvent('hide_msg_snippet');\n }\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n chatEvents.sendChildEvent('endedChat', [{'sender': 'endButton'}]);\n\n if (attributesWidget.mode == 'embed' || (params && params['show_start'])) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n }\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.freeup();\n }\n });\n\n // Widget show event\n attributesWidget.eventEmitter.addListener('showWidget', function (params) {\n\n // Just to restyle if needed\n attributesWidget.mainWidget.hideInvitation();\n\n attributesWidget.widgetStatus.next(true);\n\n if (attributesWidget.mode == 'popup') {\n attributesWidget.popupWidget.init(attributesWidget, chatEvents, params);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n attributesWidget.mainWidget.hide();\n } else if (typeof params !== 'undefined' && typeof params.event !== 'undefined') {\n params.event.preventDefault();\n }\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n });\n\n // Add tag listener\n attributesWidget.eventEmitter.addListener('addTag', function (tag) {\n attributesWidget.tag = attributesWidget.tag != '' ? attributesWidget.tag + ',' + tag : tag;\n attributesWidget.eventEmitter.emitEvent('tagAdded');\n });\n\n // Events\n attributesWidget.eventEmitter.addListener('addEvent', function (events) {\n attributesWidget.events = events;\n attributesWidget.eventEmitter.emitEvent('eventAdded');\n });\n\n // Popup open event\n attributesWidget.eventEmitter.addListener('openPopup', function () {\n\n attributesWidget.popupWidget.init(attributesWidget, chatEvents);\n\n attributesWidget.viewHandler.removeUnreadIndicator();\n\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n\n attributesWidget.widgetStatus.next(false);\n });\n\n // Chat started event received\n // Store chat information if it's not popup mode.\n attributesWidget.eventEmitter.addListener('chatStarted', function (data, mode) {\n\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n\n if (mode !== 'popup' || attributesWidget.kcw === true) {\n attributesWidget.userSession.setChatInformation(data, attributesWidget.nh && attributesWidget.nh.ap);\n }\n\n if (mode == 'popup') {\n attributesWidget.mainWidget.hide();\n }\n\n // Store information permanently\n if (attributesWidget.fresh === false && (mode !== 'popup' || attributesWidget.kcw === true)) {\n attributesWidget.storageHandler.storeSessionInformation(attributesWidget.userSession.getSessionAttributes());\n }\n });\n\n // Subscribe event\n attributesWidget.eventEmitter.addListener('subscribeEvent', function (data) {\n attributesWidget.chatNotifications.setPublicKey(data.pk, attributesWidget.eventEmitter);\n attributesWidget.chatNotifications.sendNotification();\n });\n\n // User has subscribed to notifications\n // Send back child subscription information\n attributesWidget.eventEmitter.addListener('subcribedEvent', function (data) {\n chatEvents.sendChildEvent('subcribedEvent', [data]);\n });\n\n // Track widget status changes\n attributesWidget.widgetStatus.subscribe((data) => {\n if (attributesWidget.mode !== 'popup') {\n if (attributesWidget.mode !== 'embed') {\n // Do not store open status in local storage because embed is always open\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_ws', data);\n }\n chatEvents.sendChildEvent('widgetStatus', [data]);\n }\n });\n\n // Store sound settings\n attributesWidget.toggleSound.subscribe((data) => {\n attributesWidget.storageHandler.setSessionStorage(prefixStorage + '_sound', data);\n });\n\n attributesWidget.onlineStatus.subscribe((data) => {\n chatEvents.sendChildEvent('onlineStatus', [data]);\n });\n\n attributesWidget.eventEmitter.addListener('screenshot', (data) => {\n helperFunctions.makeScreenshot(attributesWidget.staticJS['screenshot'], data);\n });\n\n attributesWidget.eventEmitter.addListener('screenshare', (data) => {\n import('./util/screenShare').then((module) => {\n module.screenShare.setParams((data || {}), attributesWidget, chatEvents);\n });\n });\n\n attributesWidget.eventEmitter.addListener('location', (data) => {\n document.location = data;\n });\n\n attributesWidget.eventEmitter.addListener('terminated', (data) => {\n attributesWidget.terminated = true;\n // Remove legacy dom\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_container_v2');\n helperFunctions.removeById(attributesWidget.prefixLowercase+'_status_widget_v2');\n });\n\n attributesWidget.eventEmitter.addListener('showInvitation', (data) => {\n attributesWidget.widgetDimesions.nextProperty('bottom_override', 75);\n attributesWidget.widgetDimesions.nextProperty('right_override', 75);\n attributesWidget.mainWidget.showInvitation();\n });\n\n attributesWidget.eventEmitter.addListener('hideInvitation', (data) => {\n attributesWidget.mainWidget.hideInvitation();\n if (data.full) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n attributesWidget.eventEmitter.emitEvent('fullInvitation', [data]);\n } else {\n attributesWidget.eventEmitter.emitEvent('cancelInvitation', []);\n }\n });\n\n attributesWidget.eventEmitter.addListener('msgSnippet', (data) => {\n if (attributesWidget.mode == 'widget' && attributesWidget.widgetStatus.value === false) {\n\n if (data.full_widget) {\n attributesWidget.eventEmitter.emitEvent('showWidget', [{'sender': 'closeButton'}]);\n return;\n }\n\n attributesWidget.position == 'api' && attributesWidget.viewHandler && attributesWidget.viewHandler.show();\n\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n } else {\n attributesWidget.msgSnippet.showSnippet(data, true);\n }\n attributesWidget.eventEmitter.emitEvent('unread_message',[{otm: 1}]);\n });\n }\n });\n\n attributesWidget.eventEmitter.addListener('unread_message', (data) => {\n if (data && data.msg_body && !attributesWidget.msgSnippet) {\n import('./lib/widgets/msgSnippetWidget').then((module) => {\n if (!attributesWidget.msgSnippet) {\n attributesWidget.msgSnippet = new module.msgSnippetWidget(attributesWidget.prefixLowercase);\n containerChatObj.cont.elmDom.appendChild(attributesWidget.msgSnippet.cont.constructUI(), !0);\n attributesWidget.msgSnippet.init(attributesWidget, data);\n }\n });\n }\n });\n\n attributesWidget.originalTitle = document.title;\n attributesWidget.blinkInterval = null;\n\n attributesWidget.eventEmitter.addListener('unread_message_title', (data) => {\n clearInterval(attributesWidget.blinkInterval);\n if (data.status == false) {\n attributesWidget.blinkInterval = setInterval(() => {\n document.title = (Math.round(new Date().getTime() / 1000) % 2) ? '💬 ' + attributesWidget.originalTitle : attributesWidget.originalTitle;\n }, 1000);\n } else {\n attributesWidget.focused = true;\n document.title = attributesWidget.originalTitle;\n }\n });\n\n attributesWidget.eventEmitter.addListener('widgetHeight', (data) => {\n\n if (data.reset_height) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n attributesWidget.widgetDimesions.nextProperty('bottom_override', null);\n attributesWidget.widgetDimesions.nextProperty('right_override', null);\n attributesWidget.widgetDimesions.nextProperty('width_override', null);\n return;\n }\n\n if (data.force_height || data.force_width || data.force_bottom || data.force_right) {\n data.force_height && attributesWidget.widgetDimesions.nextProperty('height_override', data.force_height);\n data.force_width && attributesWidget.widgetDimesions.nextProperty('width_override', data.force_width);\n data.force_right && attributesWidget.widgetDimesions.nextProperty('right_override', data.force_right);\n data.force_bottom && attributesWidget.widgetDimesions.nextProperty('bottom_override', data.force_bottom);\n return;\n }\n\n if (attributesWidget.mode == 'widget' && attributesWidget.isMobile == false) {\n var d = document,\n e = d.documentElement,\n g = d.getElementsByTagName('body')[0],\n y = global.innerHeight || e.clientHeight || g.clientHeight;\n if (parseInt(data.height) > attributesWidget.widgetDimesions.value['height'] && y > parseInt(data.height)) {\n attributesWidget.widgetDimesions.nextProperty('height_override', parseInt(data.height));\n } else if (attributesWidget.widgetDimesions.value['height_override'] && attributesWidget.widgetDimesions.value['height_override'] > y) {\n attributesWidget.widgetDimesions.nextProperty('height_override', null);\n }\n }\n });\n\n var serviceWorkerAvailable = false;\n try {\n serviceWorkerAvailable = ('serviceWorker' in navigator);\n } catch (e) {\n // Worker not available\n }\n\n if (serviceWorkerAvailable === true) {\n try {\n navigator.serviceWorker.addEventListener('message', function (event) {\n try {\n if (typeof event.data.lhc_ch !== 'undefined' && typeof event.data.lhc_cid !== 'undefined') {\n attributesWidget.widgetStatus.next(true);\n if (attributesWidget.mode == 'popup') {\n attributesWidget.userSession.setChatInformation({\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n });\n attributesWidget.eventEmitter.emitEvent('unread_message');\n } else {\n chatEvents.sendChildEvent('shownWidget', [{'sender': 'closeButton'}]);\n chatEvents.sendChildEvent('reopenNotification', [{\n 'id': event.data.lhc_cid,\n 'hash': event.data.lhc_ch\n }]);\n }\n }\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n });\n } catch (e) {\n // Ignore sandbox error\n }\n }\n\n // Listed for post messages\n const handleMessages = (e) => {\n\n if (attributesWidget.terminated === true || typeof e.data !== 'string' || e.data.indexOf(attributesWidget.prefixLowercase + '::')) {\n return;\n }\n\n const parts = e.data.split('::');\n\n if (typeof e.origin !== 'undefined') {\n var originDomain = e.origin.replace(\"http://\", \"\").replace(\"https://\", \"\").replace(/:(\\d+)$/, '');\n\n // We allow to send events only from chat installation or page where script is embeded.\n if (originDomain !== document.domain && attributesWidget.domain_lhc !== originDomain && parts[1] !== 'started' && parts[1] !== 'isstarted') {\n return;\n }\n }\n\n if (parts[1] == 'ready') {\n chatEvents.sendReadyEvent(parts[2] == 'true');\n\n if (attributesWidget.storageHandler.getSessionStorage(prefixStorage + '_screenshare')) {\n attributesWidget.eventEmitter.emitEvent('screenshare', [{'auto_start': true}]);\n }\n\n const focusChangeCb = (e) => {\n const focused = e.type === \"focus\";\n attributesWidget.focused = focused;\n chatEvents.sendChildEvent('focus_changed', [{'status': focused}]);\n };\n\n window.addEventListener('focus', focusChangeCb);\n window.addEventListener('blur', focusChangeCb);\n window.addEventListener('pageshow', focusChangeCb);\n window.addEventListener('pagehide', focusChangeCb);\n\n // App is fully loaded\n lhc.loaded = true;\n\n chatEvents.sendChildEvent('ext_modules', [attributesWidget.staticJS['ex_cb_js']]);\n\n // send child commands if there is any\n attributesWidget.childExtCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']], 'lhc_load_ext');\n });\n\n // send child commands if there is any\n attributesWidget.childCommands.forEach((params) => {\n chatEvents.sendChildEvent(params['cmd'], [params['arg']]);\n });\n\n if (attributesWidget.react_attr !== null) {\n attributesWidget.react_attr.forEach(item => {\n chatEvents.sendChildEvent('attr_set',[{\n 'type':'attr_set','attr': item['k'],\n data : item['v']\n }]);\n })\n }\n\n } else if (parts[1] == 'ready_popup') {\n attributesWidget.popupWidget.sendParameters(chatEvents);\n } else if (parts[1] == 'isstarted') {\n // Parent window has LHC, terminate present instance\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else if (parts[1] == 'started') {\n if (attributesWidget.hide_parent) {\n attributesWidget.eventEmitter.emitEvent('terminated', []);\n } else {\n e.source.postMessage('lhc::isstarted','*');\n }\n } else {\n attributesWidget.eventEmitter.emitEvent(parts[1], JSON.parse(parts[2]));\n }\n };\n\n if (window.addEventListener) {\n window.addEventListener(\"message\", handleMessages, false);\n } else if (window.attachEvent) {\n window.attachEvent(\"onmessage\", handleMessages);\n } else if (document.attachEvent) {\n document.attachEvent(\"onmessage\", handleMessages);\n }\n };\n\n var preInit = () => {\n\n // Avoid multiple times execution\n if (lhc.ready === true) {\n return;\n }\n\n // we have found document body so we can continue\n if (document.body) {\n lhc.ready = true;\n }\n\n lhc.init = init;\n\n if (LHC_API.args.before_init) {\n LHC_API.args.before_init(lhc);\n }\n\n LHC_API.args.manual_init || init();\n };\n\n const eventsHandler = require('./util/domEventsHandler').domEventsHandler;\n\n (preInit(), !lhc.ready) || (eventsHandler.listen(document, \"DOMContentLoaded\", function () {\n preInit();\n }, \"domloaded\"),\n eventsHandler.listen(document, \"readystatechange\", function () {\n (\"complete\" === document.readyState || \"interactive\" === document.readyState && document.body) && preInit();\n }, \"domstatechange\"),\n eventsHandler.listen(global, \"load\", function () {\n preInit();\n }, \"windowload\"));\n\n }).call(this, global['$_' + scopeScript], global[scopeScript + '_API']);\n\n } catch (e) {\n if (lhcError) lhcError.log(e.message, \"index.js\", e.lineNumber || e.line, e.stack); else throw Error(\"lhc : \" + e.message);\n }\n\n})(window);"],"names":["rawAsap","freeTasks","pendingErrors","requestErrorThrow","makeRequestCallFromTimer","length","shift","asap","task","rawTask","pop","RawTask","this","module","exports","prototype","call","error","onerror","push","queue","requestFlush","index","flush","currentIndex","scan","newLength","toggle","observer","node","scope","g","self","BrowserMutationObserver","MutationObserver","WebKitMutationObserver","callback","timeoutHandle","setTimeout","handleTimer","intervalHandle","setInterval","clearTimeout","clearInterval","document","createTextNode","observe","characterData","data","_setPrototypeOf","o","p","Object","setPrototypeOf","__proto__","_typeof","obj","Symbol","iterator","constructor","_possibleConstructorReturn","TypeError","ReferenceError","_getPrototypeOf","getPrototypeOf","UIConstructorIframe","subClass","superClass","create","value","writable","configurable","elementId","style","attributes","tagname","documentRef","bodyId","dir","cl","header","elmDomDoc","helperFunctions","elmDom","open","writeln","close","insertCssFile","insertContent","body","innerHTML","tmpl","UIConsturctor","f","tagName","classNames","id","keys","forEach","attr","a","className","join","cssText","c","d","k","e","getElementById","split","domEventsHandler","restyle","reset","getElementsByTagName","createDocumentFragment","type","settings","appendChild","styleSheet","nodeValue","elm","href","createElement","b","rel","crossOrigin","src","async","loadcb","onload","key","setAttribute","hasOwnProperty","chatNotifications","_chatNotifications","isNotificationsSubscribed","applicationServerPublicKey","eventEmitter","publicKey","that","swRegistration","navigator","window","Notification","permission","requestPermission","alert","serviceWorker","register","then","swReg","pushManager","getSubscription","subscription","applicationServerKey","base64String","base64","repeat","replace","rawData","atob","outputArray","Uint8Array","i","charCodeAt","urlB64ToUint8Array","subscribe","getKey","token","contentEncoding","PushManager","supportedContentEncodings","payload","JSON","stringify","endpoint","btoa","String","fromCharCode","apply","authToken","emitEvent","updateSubscriptionOnServer","_helperFunctions","s","contentWindow","contentDocument","EId","EObj","parentNode","removeChild","Intl","DateTimeFormat","resolvedOptions","timeZone","Date","stdTimezoneOffset","jan","getFullYear","jul","Math","max","getTimezoneOffset","dst","today","params","outline","visibility","resize","boxshadow","overflow","background","opacity","top","right","bottom","left","position","border","minheight","minwidth","maxheight","maxwidth","padding","margin","transition","transform","width","height","display","zindex","backgroundcolor","cursor","borderRadius","element","classList","contains","match","RegExp","add","hasClass","remove","screenshot","url","html2canvas","th","onreadystatechange","makeScreenshot","onrendered","canvas","xhr","XMLHttpRequest","setRequestHeader","send","encodeURIComponent","toDataURL","err","item","pairs","request","urlRequest","makeQuery","readyState","status","parse","responseText","message","req","containerChat","prefix","pnode","cont","constructUI","mainWidget","units","originalCSS","bottom_override","isLoaded","loadStatus","main","css","restyleStyle","position_placement","mode","fscreen","massRestyle","wloaded","next","isMobile","constructUIIframe","staticJS","hhtml","cont_ss","lazyLoad","makeContent","getSessionAttributes","bootstrap","toggleVisibilityWrap","toggleVisibility","widgetStatus","monitorDimensionsWrap","monitorDimensions","widgetDimesions","addListener","valueInternal","insertCssRemoteFile","theme","LHC_API","args","lhc_base_url","theme_v","checkLoadStatus","insertJSFile","prefixLowercase","hide","show","width_override","height_override","wbottom","clinst","right_override","wright_inv","wright","mainWidgetPopup","freeup","argumentsQuery","Array","paramsReturn","LHCChatOptions","name","encrypted","size","attr_prefill","attr_prefill_admin","chatEvents","paramsPopup","elementReferrerPopup","closed","event","preventDefault","focus","urlArgumetns","storageHandler","cookieEnabled","toggleSound","setSessionStorage","fontSize","getLocalStorage","parseInt","getSessionReferrer","parseOptions","dualScreenLeft","undefined","screenLeft","screenX","dualScreenTop","screenTop","screenY","innerWidth","documentElement","clientWidth","screen","innerHeight","clientHeight","systemZoom","availWidth","paramsWindow","newWin","needWindow","windowCreated","location","viewHandler","kcw","sendChildEvent","sendParameters","js_vars","js_args","currentVar","eval","var","statusWidget","controlMode","font","widget","shidden","lload","unread_counter","onlineStatus","icon","leaveMessage","sload","placement","sbottom","sright","_inst","attachUserEventListener","offline_redirect","toggleOfflineIcon","chatParams","unreadMessagesNumber","getSessionStorage","unreadTotal","otm","showUnreadIndicator","init","isNaN","now","removeUnreadIndicator","number","iconText","iconValue","innerText","removeSessionStorage","hideOffline","chatEventsHandler","getJSVarsValues","jsVars","prefillOptions","fieldsCustom","prefilOptionsList","command","postMessage","popupWidget","popup","getInitAttributes","sendChildCommand","_domEventsHandler","events","object","dispatch","getEvent","attachEvent","eventName","presentEvent","removeEventHandler","eventListener","addEventListener","listener","removeEventListener","detachEvent","eventInstance","_this","caller","arguments","Event","monitoredVariable","listeners","val","callListeners","indexOf","splice","global","domain","cookiesSupportChecked","checkCookiesSupport","secureCookie","cookiePerPage","hasSessionStorage","sessionStorage","hasLocalStorage","localStorage","cookie","coookieName","cookieValue","expireTime","string","setTime","getTime","toGMTString","cookieName","baseCookie","charAt","substring","host","hostname","setItem","removeItem","getItem","ref","sessionInformation","getHTTPCookie","parseSessionInformation","setHTTPCookie","getStoreValue","getCookieDomain","content","contentReturn","parts","unescape","userSession","vid","hnh","hash","updateVarsTimeout","decode","evalJSON","str","$","parseJSON","toJSON","encode","cb","lhc_var","validator","set","prop","updateJSVars","Proxy","console","log","getVars","append","vars","varsJSON","getAppendVariables","alwaysPersistentNeedHelp","round","appleIphone","appleIpod","appleTablet","androidPhone","androidTablet","amazonPhone","amazonTablet","windowsPhone","windowsTablet","otherBlackBerry","otherBlackBerry10","otherOpera","otherChrome","otherFirefox","regex","userAgent","test","tmp","result","apple","phone","ipod","tablet","device","amazon","android","windows","other","blackberry","blackberry10","opera","firefox","chrome","any","noop","LAST_ERROR","IS_ERROR","Promise","fn","_h","_i","_j","_k","doResolve","handle","deferred","_l","onFulfilled","onRejected","ret","ex","tryCallOne","reject","promise","resolve","handleResolved","newValue","getThen","finale","bind","_m","Handler","done","res","reason","tryCallTwo","_n","safeThen","TRUE","valuePromise","FALSE","NULL","UNDEFINED","ZERO","EMPTYSTRING","all","arr","slice","remaining","race","values","finally","denodeify","argumentCount","Infinity","concat","callbackFn","Function","denodeifyWithCount","fnLength","map","_","denodeifyWithoutCount","nodeify","ctx","enableSynchronous","isPending","getState","isFulfilled","isRejected","getValue","Error","getReason","disableSynchronous","EventEmitter","proto","originalGlobalValue","indexOfListener","alias","isValidListener","getListeners","evt","response","_getEvents","flattenListeners","flatListeners","getListenersAsObject","listenerIsWrapped","once","on","addOnceListener","defineEvent","defineEvents","evts","removeListener","off","addListeners","manipulateListeners","removeListeners","single","multiple","removeEvent","_events","removeAllListeners","listenersMap","_getOnceReturnValue","trigger","emit","setOnceReturnValue","_onceReturnValue","noConflict","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","defineProperty","_createClass","protoProps","staticProps","__webpack_module_cache__","inProgress","dataWebpackPrefix","__webpack_require__","moduleId","cachedModule","__webpack_modules__","m","n","getter","__esModule","definition","get","chunkId","reduce","promises","u","globalThis","l","script","needAttach","scripts","getAttribute","charset","timeout","nc","origin","onScriptComplete","prev","doneFns","head","r","toStringTag","installedChunks","j","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","runtime","some","chunkLoadingGlobal","currentScript","scopeScript","lhcError","filename","lineNumber","stack","column","file","line","lineno","colno","lhc","loaded","connected","ready","version","require","BehaviorSubject","default","mobile_view","toLowerCase","prefixStorage","scope_storage","cookieEnabledUser","cookie_enabled","userMode","orig","proactive","check_messages","cookie_per_page","setCookiePerPage","referrer","substr","protocol","setSessionReferer","lang","attributesWidget","terminated","prefixScope","msgSnippet","react_attr","hide_parent","hide_iframe","hide_status","msgsnippet_status","isIE","toUpperCase","assign","fresh","popupDimesnions","pheight","pwidth","leaveamessage","department","dep_default","product","domain_lhc","instance_id","profile_pic","base_url","tag","captcha","focused","identifier","proactive_interval","bot_id","trigger_id","priority","survey","operator","phash","pvhash","nh","init_calls","childCommands","childExtCommands","wwidth","wheight","setAttributes","setSessionInformation","getSessionInformation","setSessionReferrer","containerChatObj","embedWrapper","getArguments","UUID","getVID","getTzOffset","title","showNeedHelp","needhelpWidget","showProactive","proactiveChat","setParams","makeRequest","wv","terminate","chat_ui","isOnline","parent","__webpack_public_path__","chunks_location","secure_cookie","setSecureCookie","setCookieDomain","siteaccess","static","pdim","survey_id","cont_css","wposition","ts","hash_ts","setVID","storeSessionInformation","nextProperty","mobile_popup","sound_enabled","check_status","activityMonitoring","track_mouse","track_activity","ga","analyticEvents","ap","setupVarsMonitoring","ll","extension","nodeJSChat","removeById","po","getHours","getMinutes","insertBefore","sessionAtrribute","setChatInformation","hideInvitation","setPublicKey","pk","sendNotification","screenShare","showInvitation","full","full_widget","showSnippet","msgSnippetWidget","msg_body","originalTitle","blinkInterval","reset_height","force_height","force_width","force_bottom","force_right","y","serviceWorkerAvailable","lhc_ch","lhc_cid","handleMessages","originDomain","sendReadyEvent","focusChangeCb","source","preInit","before_init","manual_init","eventsHandler","listen"],"sourceRoot":""} \ No newline at end of file diff --git a/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/mainWidget.js b/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/mainWidget.js index 6901115e8f..91376788cf 100644 --- a/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/mainWidget.js +++ b/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/mainWidget.js @@ -149,7 +149,7 @@ export class mainWidget{ this.cont.insertCssRemoteFile({rel:"stylesheet", crossOrigin : "anonymous", href : this.attributes.staticJS['fontCSS']}); } - if (this.attributes.theme > 0) { + if (this.attributes.theme) { this.cont.insertCssRemoteFile({crossOrigin : "anonymous", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/theme/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true); } diff --git a/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/statusWidget.js b/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/statusWidget.js index 3e9c1d1b3d..4ec05398ce 100644 --- a/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/statusWidget.js +++ b/lhc_web/design/defaulttheme/widget/wrapper/src/lib/widgets/statusWidget.js @@ -126,7 +126,7 @@ export class statusWidget{ this.cont.insertCssRemoteFile({onload: () => {this.loadStatus['font'] = true; this.checkLoadStatus()},"as":"font", rel:"preload", type: "font/woff", crossOrigin : "anonymous", href : this.attributes.staticJS['font_status']}); } - if (this.attributes.theme > 0) { + if (this.attributes.theme) { this.loadStatus['theme'] = false; this.cont.insertCssRemoteFile({onload: ()=>{this.loadStatus['theme'] = true; this.checkLoadStatus()}, id: "lhc-theme-status", crossOrigin : "anonymous", href : this.attributes.LHC_API.args.lhc_base_url + '/widgetrestapi/themestatus/' + this.attributes.theme + '?v=' + this.attributes.theme_v}, true); } else { diff --git a/lhc_web/doc/update_db/structure.json b/lhc_web/doc/update_db/structure.json index 0902b6b4d0..50df3ea8d7 100644 --- a/lhc_web/doc/update_db/structure.json +++ b/lhc_web/doc/update_db/structure.json @@ -2886,6 +2886,15 @@ "extra": "", "collation": "utf8mb4_unicode_ci" }, + { + "field": "alias", + "type": "varchar(50)", + "null": "NO", + "key": "", + "default": null, + "extra": "", + "collation": "utf8mb4_unicode_ci" + }, { "field": "support_closed", "type": "varchar(250)", @@ -5940,6 +5949,14 @@ "default": null, "extra": "" }, + { + "field": "alias", + "type": "varchar(50)", + "null": "NO", + "key": "MUL", + "default": null, + "extra": "" + }, { "field": "mod_start_hour", "type": "int(4)", @@ -9838,6 +9855,7 @@ }, "lh_departament" : { "new" : { + "alias" : "ALTER TABLE `lh_departament` ADD INDEX `alias` (`alias`);", "attr_int_1" : "ALTER TABLE `lh_departament` ADD INDEX `attr_int_1` (`attr_int_1`);", "attr_int_2" : "ALTER TABLE `lh_departament` ADD INDEX `attr_int_2` (`attr_int_2`);", "attr_int_3" : "ALTER TABLE `lh_departament` ADD INDEX `attr_int_3` (`attr_int_3`);", @@ -9928,6 +9946,12 @@ "user_id" : "ALTER TABLE `lh_admin_theme` ADD INDEX `user_id` (`user_id`);" }, "old" : [] + }, + "lh_abstract_widget_theme" : { + "new" : { + "alias" : "ALTER TABLE `lh_abstract_widget_theme` ADD INDEX `alias` (`alias`);" + }, + "old" : [] } }, "tables_create": { diff --git a/lhc_web/doc/update_db/update_260.sql b/lhc_web/doc/update_db/update_260.sql new file mode 100644 index 0000000000..577bcd49c0 --- /dev/null +++ b/lhc_web/doc/update_db/update_260.sql @@ -0,0 +1,5 @@ +ALTER TABLE `lh_departament` ADD `alias` varchar(50) NOT NULL, COMMENT=''; +ALTER TABLE `lh_departament` ADD INDEX `alias` (`alias`); + +ALTER TABLE `lh_abstract_widget_theme` ADD `alias` varchar(50) NOT NULL, COMMENT=''; +ALTER TABLE `lh_abstract_widget_theme` ADD INDEX `alias` (`alias`); \ No newline at end of file diff --git a/lhc_web/lib/core/lhabstract/fields/erlhabstractmodelwidgettheme.php b/lhc_web/lib/core/lhabstract/fields/erlhabstractmodelwidgettheme.php index aede0bf995..31aca3a271 100644 --- a/lhc_web/lib/core/lhabstract/fields/erlhabstractmodelwidgettheme.php +++ b/lhc_web/lib/core/lhabstract/fields/erlhabstractmodelwidgettheme.php @@ -8,6 +8,13 @@ 'validation_definition' => new ezcInputFormDefinitionElement( ezcInputFormDefinitionElement::OPTIONAL, 'unsafe_raw' )), + 'alias' => array( + 'type' => 'text', + 'trans' => erTranslationClassLhTranslation::getInstance()->getTranslation('abstract/widgettheme','Alias for argument. No spaces or slashes.'), + 'required' => true, + 'validation_definition' => new ezcInputFormDefinitionElement( + ezcInputFormDefinitionElement::OPTIONAL, 'unsafe_raw' + )), 'name_company' => array( 'type' => 'text', 'trans' => erTranslationClassLhTranslation::getInstance()->getTranslation('abstract/widgettheme','Name of the company'), diff --git a/lhc_web/lib/core/lhchat/lhchat.php b/lhc_web/lib/core/lhchat/lhchat.php index 086344e0a5..95f50b6c71 100644 --- a/lhc_web/lib/core/lhchat/lhchat.php +++ b/lhc_web/lib/core/lhchat/lhchat.php @@ -2149,7 +2149,45 @@ public static function cleanForDashboard($chatLists) { } } } - } + } + + public static function extractDepartment($departments) { + $output = ['argument' => [],'system' => []]; + foreach ($departments as $department) { + if (is_numeric($department)) { + $dep = erLhcoreClassModelDepartament::fetch((int)$department); + if ($dep instanceof erLhcoreClassModelDepartament) { + $output['system'][] = (int)$department; + $output['argument'][] = $dep->alias == '' ? $dep->id : $dep->alias; + } + } else { + $dep = erLhcoreClassModelDepartament::findOne(['filter' => ['alias' => $department]]); + if ($dep instanceof erLhcoreClassModelDepartament) { + $output['system'][] = (int)$dep->id; + $output['argument'][] = $dep->alias == '' ? $dep->id : $dep->alias; + } + } + } + return $output; + } + + public static function extractTheme($themeId = null) { + + $themeId = isset($_GET['theme']) && !empty($_GET['theme']) ? $_GET['theme'] : $themeId; + + if (!empty($themeId)) { + if (is_numeric($themeId)) { + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); + } else { + $theme = erLhAbstractModelWidgetTheme::findOne(['filter' => ['alias' => $themeId]]); + } + if ($theme instanceof erLhAbstractModelWidgetTheme) { + return $theme->id; + } + } + + return false; + } // Static attribute for class public static $trackActivity = false; diff --git a/lhc_web/lib/core/lhdepartament/lhdepartament.php b/lhc_web/lib/core/lhdepartament/lhdepartament.php index 99ffdbf025..99db7f8360 100644 --- a/lhc_web/lib/core/lhdepartament/lhdepartament.php +++ b/lhc_web/lib/core/lhdepartament/lhdepartament.php @@ -35,6 +35,9 @@ public static function validateDepartment(erLhcoreClassModelDepartament & $depar 'Name' => new ezcInputFormDefinitionElement( ezcInputFormDefinitionElement::OPTIONAL, 'unsafe_raw' ), + 'Alias' => new ezcInputFormDefinitionElement( + ezcInputFormDefinitionElement::OPTIONAL, 'unsafe_raw' + ), 'Email' => new ezcInputFormDefinitionElement( ezcInputFormDefinitionElement::OPTIONAL, 'unsafe_raw' ), @@ -226,6 +229,11 @@ public static function validateDepartment(erLhcoreClassModelDepartament & $depar $department->name = $form->Name; } + if ( $form->hasValidData( 'Alias' ) ) + { + $department->alias = $form->Alias; + } + $botConfiguration = $department->bot_configuration_array; if ((isset($additionalParams['payload_data']) && erLhcoreClassRestAPIHandler::hasAccessTo('lhdepartment', 'actautoassignment')) || erLhcoreClassUser::instance()->hasAccessTo('lhdepartment','actautoassignment') ) { diff --git a/lhc_web/lib/models/lhabstract/erlhabstractmodelwidgettheme.php b/lhc_web/lib/models/lhabstract/erlhabstractmodelwidgettheme.php index 32ca21e697..91d4a32502 100644 --- a/lhc_web/lib/models/lhabstract/erlhabstractmodelwidgettheme.php +++ b/lhc_web/lib/models/lhabstract/erlhabstractmodelwidgettheme.php @@ -103,6 +103,7 @@ public function getState() 'hide_ts' => $this->hide_ts, 'widget_response_width' => $this->widget_response_width, 'modified' => $this->modified, + 'alias' => $this->alias, ); erLhcoreClassChatEventDispatcher::getInstance()->dispatch('lhabstract.erlhabstractmodelwidgettheme.getstate',array('state' => & $stateArray, 'object' => & $this)); @@ -631,6 +632,7 @@ public function translate() { public $widget_popheight = 520; public $widget_pright = 0; public $widget_pbottom = 0; + public $alias = ''; public $hide_add = false; public $hide_delete = false; diff --git a/lhc_web/lib/models/lhdepartament/erlhcoreclassmodeldepartament.php b/lhc_web/lib/models/lhdepartament/erlhcoreclassmodeldepartament.php index 7c85b3f3fc..c485661bce 100644 --- a/lhc_web/lib/models/lhdepartament/erlhcoreclassmodeldepartament.php +++ b/lhc_web/lib/models/lhdepartament/erlhcoreclassmodeldepartament.php @@ -75,7 +75,8 @@ public function getState() 'assign_same_language' => $this->assign_same_language, 'archive' => $this->archive, 'inop_chats_cnt' => $this->inop_chats_cnt, - 'acop_chats_cnt' => $this->acop_chats_cnt + 'acop_chats_cnt' => $this->acop_chats_cnt, + 'alias' => $this->alias ); } @@ -315,6 +316,7 @@ public function __get($var) { public $assign_same_language = 0; public $product_configuration = ''; public $bot_configuration = ''; + public $alias = ''; // 0 - disabled diff --git a/lhc_web/modules/lhchat/chat.php b/lhc_web/modules/lhchat/chat.php index daff1ca05c..726f086a88 100644 --- a/lhc_web/modules/lhchat/chat.php +++ b/lhc_web/modules/lhchat/chat.php @@ -6,9 +6,9 @@ $tpl = erLhcoreClassTemplate::getInstance( 'lhchat/chat.tpl.php'); -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0) { +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); $theme->translate(); $Result['theme'] = $theme; $tpl->set('theme',$theme); diff --git a/lhc_web/modules/lhchat/chatcheckstatus.php b/lhc_web/modules/lhchat/chatcheckstatus.php index 0492d36a1a..166de63e1c 100644 --- a/lhc_web/modules/lhchat/chatcheckstatus.php +++ b/lhc_web/modules/lhchat/chatcheckstatus.php @@ -12,8 +12,9 @@ { $tpl = erLhcoreClassTemplate::getInstance('lhchat/chatcheckstatus.tpl.php'); - if (is_array($Params['user_parameters_unordered']['department'])){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + if (is_array($Params['user_parameters_unordered']['department'])) { + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $tpl->set('department',implode('/', $Params['user_parameters_unordered']['department'])); $tpl->set('department_array',$Params['user_parameters_unordered']['department']); } else { diff --git a/lhc_web/modules/lhchat/chatwidget.php b/lhc_web/modules/lhchat/chatwidget.php index 2ee07fc53e..eea6aebddd 100644 --- a/lhc_web/modules/lhchat/chatwidget.php +++ b/lhc_web/modules/lhchat/chatwidget.php @@ -28,8 +28,8 @@ $theme = false; $modeAppendTheme = ''; -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme instanceof erLhAbstractModelWidgetTheme) { $theme->translate(); $Result['theme'] = $theme; @@ -127,10 +127,12 @@ $disabled_department = false; -if (is_array($Params['user_parameters_unordered']['department']) && erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1){ +if (is_array($Params['user_parameters_unordered']['department']) && erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1) { try { - - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; + $departments = erLhcoreClassModelDepartament::getList(array('filterin' => array('id' => $Params['user_parameters_unordered']['department']))); $disabledAll = true; @@ -162,7 +164,8 @@ $inputData->product_id = ''; if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $inputData->departament_id = 0; @@ -180,7 +183,8 @@ erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.chatwidget_data_field',array('data_fields' => & $startDataFields, 'params' => $Params)); if (is_array($Params['user_parameters_unordered']['department'])) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id_array = $Params['user_parameters_unordered']['department']; } diff --git a/lhc_web/modules/lhchat/chatwidgetchat.php b/lhc_web/modules/lhchat/chatwidgetchat.php index fdc2a35245..2fe97a3244 100644 --- a/lhc_web/modules/lhchat/chatwidgetchat.php +++ b/lhc_web/modules/lhchat/chatwidgetchat.php @@ -21,9 +21,9 @@ $noMobile = true; } -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); $theme->translate(); $Result['theme'] = $theme; $tpl->set('theme',$theme); diff --git a/lhc_web/modules/lhchat/checkchatstatus.php b/lhc_web/modules/lhchat/checkchatstatus.php index 5b2a58ed02..3f48691ef0 100644 --- a/lhc_web/modules/lhchat/checkchatstatus.php +++ b/lhc_web/modules/lhchat/checkchatstatus.php @@ -8,9 +8,9 @@ $tpl = erLhcoreClassTemplate::getInstance('lhchat/checkchatstatus.tpl.php'); $tpl->set('theme',false); -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); $theme->translate(); $tpl->set('theme',$theme); } catch (Exception $e) { diff --git a/lhc_web/modules/lhchat/getstatus.php b/lhc_web/modules/lhchat/getstatus.php index cacf76e035..2afbf5abf7 100644 --- a/lhc_web/modules/lhchat/getstatus.php +++ b/lhc_web/modules/lhchat/getstatus.php @@ -27,8 +27,8 @@ if (erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1 && is_array($Params['user_parameters_unordered']['department'])){ try { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); - + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $departments = erLhcoreClassModelDepartament::getList(array('filterin' => array('id' => $Params['user_parameters_unordered']['department']))); foreach ($departments as $department){ @@ -53,9 +53,9 @@ $validUnits = array('pixels' => 'px','percents' => '%'); $theme = false; -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); } catch (Exception $e) { $theme = false; } @@ -99,8 +99,9 @@ $tpl->set('bot_id',is_numeric($Params['user_parameters_unordered']['bot_id']) ? $Params['user_parameters_unordered']['bot_id'] : null); $tpl->set('fresh',is_numeric($Params['user_parameters_unordered']['fresh']) ? true : false); -if (is_array($Params['user_parameters_unordered']['department'])){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); +if (is_array($Params['user_parameters_unordered']['department'])) { + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $tpl->set('department',implode('/', $Params['user_parameters_unordered']['department'])); $tpl->set('department_array',$Params['user_parameters_unordered']['department']); } else { diff --git a/lhc_web/modules/lhchat/getstatusembed.php b/lhc_web/modules/lhchat/getstatusembed.php index b77fd7990d..93a5140392 100644 --- a/lhc_web/modules/lhchat/getstatusembed.php +++ b/lhc_web/modules/lhchat/getstatusembed.php @@ -10,7 +10,8 @@ if (erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1 && is_array($Params['user_parameters_unordered']['department'])){ try { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $departments = erLhcoreClassModelDepartament::getList(array('filterin' => array('id' => $Params['user_parameters_unordered']['department']))); @@ -27,9 +28,9 @@ } $theme = false; -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); } catch (Exception $e) { $theme = false; } @@ -77,7 +78,8 @@ $tpl->set('fresh',is_numeric($Params['user_parameters_unordered']['fresh']) ? true : false); if (is_array($Params['user_parameters_unordered']['department'])){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $tpl->set('department',implode('/', $Params['user_parameters_unordered']['department'])); $tpl->set('department_array',$Params['user_parameters_unordered']['department']); } else { diff --git a/lhc_web/modules/lhchat/htmlsnippet.php b/lhc_web/modules/lhchat/htmlsnippet.php index 052ec126b2..b6367cbf12 100644 --- a/lhc_web/modules/lhchat/htmlsnippet.php +++ b/lhc_web/modules/lhchat/htmlsnippet.php @@ -26,13 +26,15 @@ } } } elseif ($Params['user_parameters']['type'] == 'theme') { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters']['id']); - if ($theme instanceof erLhAbstractModelWidgetTheme && $theme->bot_configuration_array['inject_html'] != ''){ - $htmlCode = $theme->bot_configuration_array['inject_html']; + if (($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters']['id'])) !== false) { + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); + if ($theme instanceof erLhAbstractModelWidgetTheme && $theme->bot_configuration_array['inject_html'] != '') { + $htmlCode = $theme->bot_configuration_array['inject_html']; + } } } elseif ($Params['user_parameters']['type'] == 'inv') { $invitation = erLhAbstractModelProactiveChatInvitation::fetch($Params['user_parameters']['id']); - if ($invitation instanceof erLhAbstractModelProactiveChatInvitation && $invitation->design_data_array['inject_html'] != ''){ + if ($invitation instanceof erLhAbstractModelProactiveChatInvitation && $invitation->design_data_array['inject_html'] != '') { $htmlCode = $invitation->design_data_array['inject_html']; } } diff --git a/lhc_web/modules/lhchat/logpageview.php b/lhc_web/modules/lhchat/logpageview.php index 3e01644c2f..cc93f9291a 100644 --- a/lhc_web/modules/lhchat/logpageview.php +++ b/lhc_web/modules/lhchat/logpageview.php @@ -12,8 +12,9 @@ if ( $ignorable_ip == '' || !erLhcoreClassIPDetect::isIgnored(erLhcoreClassIPDetect::getIP(),explode(',',$ignorable_ip))) { - if (is_array($Params['user_parameters_unordered']['department'])){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + if (is_array($Params['user_parameters_unordered']['department'])) { + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $department = $Params['user_parameters_unordered']['department']; } else { $department = false; diff --git a/lhc_web/modules/lhchat/readoperatormessage.php b/lhc_web/modules/lhchat/readoperatormessage.php index 88b51b9e7b..c827dc9748 100644 --- a/lhc_web/modules/lhchat/readoperatormessage.php +++ b/lhc_web/modules/lhchat/readoperatormessage.php @@ -26,15 +26,17 @@ $inputData->phone = isset($_GET['prefill']['phone']) ? (string)$_GET['prefill']['phone'] : ''; $inputData->username = isset($_GET['prefill']['username']) ? (string)$_GET['prefill']['username'] : ''; -if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); +if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $inputData->departament_id = 0; } if (is_array($Params['user_parameters_unordered']['department'])){ - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id_array = $Params['user_parameters_unordered']['department']; } @@ -109,9 +111,9 @@ erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.readoperatormessage_data_field',array('data_fields' => & $startDataFields, 'params' => $Params)); $modeAppendTheme = ''; -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); $Result['theme'] = $theme; $modeAppendTheme = '/(theme)/'.$theme->id; $tpl->set('theme',$Result['theme']); diff --git a/lhc_web/modules/lhchat/reopen.php b/lhc_web/modules/lhchat/reopen.php index 3dba457125..9520814ba6 100644 --- a/lhc_web/modules/lhchat/reopen.php +++ b/lhc_web/modules/lhchat/reopen.php @@ -16,9 +16,9 @@ $modeAppend .= ($fullHeight) ? 'true' : 'false'; $modeAppendTheme = ''; -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); $Result['theme'] = $theme; $modeAppendTheme = '/(theme)/'.$theme->id; } catch (Exception $e) { diff --git a/lhc_web/modules/lhchat/start.php b/lhc_web/modules/lhchat/start.php index cae859ea29..57f4ea6039 100644 --- a/lhc_web/modules/lhchat/start.php +++ b/lhc_web/modules/lhchat/start.php @@ -11,7 +11,8 @@ $dep = false; if (is_array($Params['user_parameters_unordered']['department'])) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $dep = $Params['user_parameters_unordered']['department']; $Result['chat_args']['departments'] = $dep; } @@ -81,6 +82,10 @@ } } +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { + $Params['user_parameters_unordered']['theme'] = $themeId; +} + if (!is_numeric($Params['user_parameters_unordered']['theme'])) { $defaultTheme = erLhcoreClassModelChatConfig::fetch('default_theme_id')->current_value; if ($defaultTheme > 0) { @@ -200,8 +205,8 @@ $tpl->set('jsVars',$_GET['jsvar']); } -if ($Params['user_parameters_unordered']['theme'] > 0) { - $themeObject = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); +if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { + $themeObject = erLhAbstractModelWidgetTheme::fetch($themeId); if ($themeObject instanceof erLhAbstractModelWidgetTheme) { $Result['theme'] = $themeObject; diff --git a/lhc_web/modules/lhchat/startchat.php b/lhc_web/modules/lhchat/startchat.php index acecf074a1..2bafd54778 100644 --- a/lhc_web/modules/lhchat/startchat.php +++ b/lhc_web/modules/lhchat/startchat.php @@ -87,8 +87,9 @@ if (is_array($Params['user_parameters_unordered']['department']) && erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1){ try { - - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; + $departments = erLhcoreClassModelDepartament::getList(array('filterin' => array('id' => $Params['user_parameters_unordered']['department']))); $disabledAll = true; @@ -121,7 +122,8 @@ if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $inputData->departament_id = 0; @@ -147,7 +149,8 @@ erLhcoreClassChatEventDispatcher::getInstance()->dispatch('chat.startchat_data_fields',array('data_fields' => & $startDataFields, 'params' => $Params)); if (is_array($Params['user_parameters_unordered']['department'])) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $inputData->departament_id_array = $Params['user_parameters_unordered']['department']; } diff --git a/lhc_web/modules/lhchat/syncuser.php b/lhc_web/modules/lhchat/syncuser.php index 103a1d75cd..96ef59f5d6 100644 --- a/lhc_web/modules/lhchat/syncuser.php +++ b/lhc_web/modules/lhchat/syncuser.php @@ -78,9 +78,9 @@ { $theme = false; - if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ + if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); } catch (Exception $e) { } @@ -140,9 +140,9 @@ if (!isset($theme)) { $theme = false; - if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ + if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false){ try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); } catch (Exception $e) { } @@ -245,9 +245,9 @@ $content = 'false'; $theme = false; - if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ + if (isset($Params['user_parameters_unordered']['theme']) && ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false){ try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); } catch (Exception $e) { } diff --git a/lhc_web/modules/lhwidgetrestapi/chatcheckstatus.php b/lhc_web/modules/lhwidgetrestapi/chatcheckstatus.php index 31284c763f..b71a454658 100644 --- a/lhc_web/modules/lhwidgetrestapi/chatcheckstatus.php +++ b/lhc_web/modules/lhwidgetrestapi/chatcheckstatus.php @@ -7,9 +7,11 @@ header("Pragma: no-cache"); if (!isset($_GET['wopen']) || (isset($_GET['isproactive']) && $_GET['isproactive'] == 1 && $_GET['wopen'] == 1)) { + if (isset($_GET['dep'])) { $department = explode(',', $_GET['dep']); - erLhcoreClassChat::validateFilterIn($department); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $department = $parametersDepartment['system']; } else { $department = false; } diff --git a/lhc_web/modules/lhwidgetrestapi/checkchatstatus.php b/lhc_web/modules/lhwidgetrestapi/checkchatstatus.php index 157e963fa9..37f6142768 100644 --- a/lhc_web/modules/lhwidgetrestapi/checkchatstatus.php +++ b/lhc_web/modules/lhwidgetrestapi/checkchatstatus.php @@ -20,16 +20,10 @@ $tpl->set('theme',false); $tpl->set('react',true); -if (isset($Params['user_parameters_unordered']['theme']) && (int)$Params['user_parameters_unordered']['theme'] > 0){ - try { - $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters_unordered']['theme']); - if (is_object($theme)) { - $theme->translate(); - $tpl->set('theme',$theme); - } - } catch (Exception $e) { - - } +if (($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters_unordered']['theme'])) !== false) { + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); + $theme->translate(); + $tpl->set('theme',$theme); } $responseArray = array(); diff --git a/lhc_web/modules/lhwidgetrestapi/checkinvitation.php b/lhc_web/modules/lhwidgetrestapi/checkinvitation.php index e709ff9ff3..add58324b5 100644 --- a/lhc_web/modules/lhwidgetrestapi/checkinvitation.php +++ b/lhc_web/modules/lhwidgetrestapi/checkinvitation.php @@ -20,8 +20,8 @@ } if (isset($_GET['dep'])) { - $department = explode(',',$_GET['dep']); - erLhcoreClassChat::validateFilterIn($department); + $parametersDepartment = erLhcoreClassChat::extractDepartment(explode(',',$_GET['dep'])); + $department = $parametersDepartment['system']; } else { $department = false; } diff --git a/lhc_web/modules/lhwidgetrestapi/executejs.php b/lhc_web/modules/lhwidgetrestapi/executejs.php index 1560a1f8a6..13a29bfe1f 100644 --- a/lhc_web/modules/lhwidgetrestapi/executejs.php +++ b/lhc_web/modules/lhwidgetrestapi/executejs.php @@ -21,7 +21,8 @@ } if (is_array($Params['user_parameters_unordered']['dep']) && !empty($Params['user_parameters_unordered']['dep'])) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['dep']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['dep']); + $Params['user_parameters_unordered']['dep'] = $parametersDepartment['system']; $tpl->set('dep',$Params['user_parameters_unordered']['dep']); } diff --git a/lhc_web/modules/lhwidgetrestapi/fetchmessages.php b/lhc_web/modules/lhwidgetrestapi/fetchmessages.php index b3121f3cab..b00947aeeb 100644 --- a/lhc_web/modules/lhwidgetrestapi/fetchmessages.php +++ b/lhc_web/modules/lhwidgetrestapi/fetchmessages.php @@ -110,7 +110,7 @@ $tpl->set('async_call',true); } - if (isset($requestPayload['theme']) && $requestPayload['theme'] > 0) { + if (isset($requestPayload['theme']) && ($themeId = erLhcoreClassChat::extractTheme($requestPayload['theme'])) !== false) { $tpl->set('theme',erLhAbstractModelWidgetTheme::fetch($requestPayload['theme'])); } diff --git a/lhc_web/modules/lhwidgetrestapi/getinvitation.php b/lhc_web/modules/lhwidgetrestapi/getinvitation.php index 58846763c9..3bac847d9a 100644 --- a/lhc_web/modules/lhwidgetrestapi/getinvitation.php +++ b/lhc_web/modules/lhwidgetrestapi/getinvitation.php @@ -63,8 +63,9 @@ $outputResponse['bubble'] = false; -if (isset($payload['theme']) && $payload['theme'] > 0) { - $theme = erLhAbstractModelWidgetTheme::fetch($payload['theme']); +if (isset($payload['theme']) && ($themeId = erLhcoreClassChat::extractTheme($payload['theme'])) !== false) { + + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme instanceof erLhAbstractModelWidgetTheme) { diff --git a/lhc_web/modules/lhwidgetrestapi/initchat.php b/lhc_web/modules/lhwidgetrestapi/initchat.php index 0d9f13848a..babad365bc 100644 --- a/lhc_web/modules/lhwidgetrestapi/initchat.php +++ b/lhc_web/modules/lhwidgetrestapi/initchat.php @@ -110,9 +110,9 @@ ) ); - if (isset($requestPayload['theme']) && $requestPayload['theme'] > 0) { + if (isset($requestPayload['theme']) && !empty($requestPayload['theme']) && ($themeId = erLhcoreClassChat::extractTheme($requestPayload['theme'])) !== false) { - $theme = erLhAbstractModelWidgetTheme::fetch($requestPayload['theme']); + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme instanceof erLhAbstractModelWidgetTheme) { diff --git a/lhc_web/modules/lhwidgetrestapi/onlinesettings.php b/lhc_web/modules/lhwidgetrestapi/onlinesettings.php index 1cbd918f31..ec4157757d 100644 --- a/lhc_web/modules/lhwidgetrestapi/onlinesettings.php +++ b/lhc_web/modules/lhwidgetrestapi/onlinesettings.php @@ -53,21 +53,30 @@ function renderMessage($paramsRender, $theme) { $theme = false; -if (isset($requestPayload['theme']) && $requestPayload['theme'] > 0) { - $theme = erLhAbstractModelWidgetTheme::fetch($requestPayload['theme']); - if ($theme instanceof erLhAbstractModelWidgetTheme){ - $theme->translate(); - } else { - $theme = false; +if (isset($requestPayload['theme']) && !empty($requestPayload['theme'])) { + + $themeId = erLhcoreClassChat::extractTheme($requestPayload['theme']); + + if ($themeId !== false) { + $theme = erLhAbstractModelWidgetTheme::fetch($themeId); + if ($theme instanceof erLhAbstractModelWidgetTheme){ + $theme->translate(); + } else { + $theme = false; + } } } // Departments $disabled_department = false; +if (is_array($Params['user_parameters_unordered']['department']) && !empty($Params['user_parameters_unordered']['department'])) { + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; +} + if (is_array($Params['user_parameters_unordered']['department']) && !empty($Params['user_parameters_unordered']['department']) && erLhcoreClassModelChatConfig::fetch('hide_disabled_department')->current_value == 1) { try { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); $departments = erLhcoreClassModelDepartament::getList(array('filterin' => array('id' => $Params['user_parameters_unordered']['department']))); $disabledAll = true; @@ -88,7 +97,6 @@ function renderMessage($paramsRender, $theme) { } if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); $departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $departament_id = 0; @@ -118,7 +126,6 @@ function renderMessage($paramsRender, $theme) { $departament_id_array = array(); if (is_array($Params['user_parameters_unordered']['department'])) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); $departament_id_array = $Params['user_parameters_unordered']['department']; } @@ -566,7 +573,15 @@ function renderMessage($paramsRender, $theme) { // Handle departments if (is_numeric($departament_id) && $departament_id > 0) { - $departmentsOptions = array('departments' => array(array('value' => $departament_id)), 'settings' => array()); + $departmentItem = erLhcoreClassModelDepartament::fetch($departament_id); + + $departament_id_alias = $departament_id; + + if ($departmentItem instanceof erLhcoreClassModelDepartament && $departmentItem->alias != '') { + $departament_id_alias = $departmentItem->alias; + } + + $departmentsOptions = array('departments' => array(array('value' => $departament_id_alias)), 'settings' => array()); } else { $filter = array('filter' => array('disabled' => 0, 'hidden' => 0)); @@ -587,7 +602,7 @@ function renderMessage($paramsRender, $theme) { if (($departament->visible_if_online == 1 && $isOnline === true) || $departament->visible_if_online == 0) { $departmentItem = array( 'online' => $isOnline, - 'value' => $departament->id, + 'value' => ($departament->alias == '' ? $departament->id : $departament->alias), 'name' => $departament->name ); $departmentsOptions['departments'][] = $departmentItem; diff --git a/lhc_web/modules/lhwidgetrestapi/settings.php b/lhc_web/modules/lhwidgetrestapi/settings.php index 1d23ef02eb..1fe705d40e 100644 --- a/lhc_web/modules/lhwidgetrestapi/settings.php +++ b/lhc_web/modules/lhwidgetrestapi/settings.php @@ -38,7 +38,11 @@ } if (is_array($department)) { - erLhcoreClassChat::validateFilterIn($department); + $parametersDepartment = erLhcoreClassChat::extractDepartment($department); + $department = $parametersDepartment['system']; + $departmentArgument = $parametersDepartment['argument']; +} else { + $departmentArgument = $department; } $departmentUpdated = $department; @@ -127,8 +131,8 @@ } } -if (isset($_GET['theme']) && is_numeric($_GET['theme']) && (int)$_GET['theme'] > 0) { - $outputResponse['theme'] = (int)$_GET['theme']; +if (($themeId = erLhcoreClassChat::extractTheme()) !== false) { + $outputResponse['theme'] = $themeId; } else { $defaultTheme = erLhcoreClassModelChatConfig::fetch('default_theme_id')->current_value; if ($defaultTheme > 0) { @@ -138,9 +142,13 @@ $pageCSS = false; -if (isset($outputResponse['theme'])){ +if (isset($outputResponse['theme'])) { $theme = erLhAbstractModelWidgetTheme::fetch($outputResponse['theme']); + if ($theme instanceof erLhAbstractModelWidgetTheme) { + + $outputResponse['theme'] = $theme->alias != '' ? $theme->alias : $theme->id; + if (isset($theme->bot_configuration_array['wwidth']) && $theme->bot_configuration_array['wwidth'] > 0) { $outputResponse['chat_ui']['wwidth'] = $theme->bot_configuration_array['wwidth']; } @@ -388,7 +396,7 @@ $outputResponse['hash_ts'] = $ts; if (is_array($department) && !empty($department)) { - $outputResponse['department'] = $department; + $outputResponse['department'] = $departmentArgument; } $gaOptions = erLhcoreClassModelChatConfig::fetch('ga_options')->data_value; diff --git a/lhc_web/modules/lhwidgetrestapi/submitoffline.php b/lhc_web/modules/lhwidgetrestapi/submitoffline.php index 5afe1724b1..dca90b7678 100644 --- a/lhc_web/modules/lhwidgetrestapi/submitoffline.php +++ b/lhc_web/modules/lhwidgetrestapi/submitoffline.php @@ -26,7 +26,8 @@ $inputData->vid = isset($requestPayload['vid']) && $requestPayload['vid'] != '' ? (string)$requestPayload['vid'] : ''; if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $requestPayload['fields']['DepartamentID'] = $inputData->departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $inputData->departament_id = 0; @@ -40,8 +41,8 @@ $startDataFields = (array)$startData->data; } -if (isset($requestPayload['theme']) && $requestPayload['theme'] > 0) { - $additionalParams['theme'] = erLhAbstractModelWidgetTheme::fetch($requestPayload['theme']); +if (isset($requestPayload['theme']) && ($themeId = erLhcoreClassChat::extractTheme($requestPayload['theme'])) !== false) { + $additionalParams['theme'] = erLhAbstractModelWidgetTheme::fetch($themeId); } $additionalParams['payload_data'] = $requestPayload['fields']; diff --git a/lhc_web/modules/lhwidgetrestapi/submitonline.php b/lhc_web/modules/lhwidgetrestapi/submitonline.php index a5937b2b17..8056bed2b0 100644 --- a/lhc_web/modules/lhwidgetrestapi/submitonline.php +++ b/lhc_web/modules/lhwidgetrestapi/submitonline.php @@ -22,14 +22,15 @@ $inputData->only_bot_online = isset($_POST['onlyBotOnline']) ? (int)$_POST['onlyBotOnline'] : 0; $inputData->vid = isset($requestPayload['vid']) && $requestPayload['vid'] != '' ? (string)$requestPayload['vid'] : ''; -if (isset($requestPayload['fields']['DepartamentID']) && is_numeric($requestPayload['fields']['DepartamentID'])) { +if (isset($requestPayload['fields']['DepartamentID']) && !empty($requestPayload['fields']['DepartamentID'])) { $Params['user_parameters_unordered']['department'] = [$requestPayload['fields']['DepartamentID']]; } $validStart = false; if (is_array($Params['user_parameters_unordered']['department']) && count($Params['user_parameters_unordered']['department']) == 1) { - erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['department']); + $parametersDepartment = erLhcoreClassChat::extractDepartment($Params['user_parameters_unordered']['department']); + $Params['user_parameters_unordered']['department'] = $parametersDepartment['system']; $requestPayload['fields']['DepartamentID'] = $inputData->departament_id = array_shift($Params['user_parameters_unordered']['department']); } else { $inputData->departament_id = 0; @@ -43,8 +44,8 @@ $startDataFields = (array)$startData->data; } -if (isset($requestPayload['theme']) && $requestPayload['theme'] > 0) { - $additionalParams['theme'] = erLhAbstractModelWidgetTheme::fetch($requestPayload['theme']); +if (isset($requestPayload['theme']) && ($themeId = erLhcoreClassChat::extractTheme($requestPayload['theme'])) !== false) { + $additionalParams['theme'] = erLhAbstractModelWidgetTheme::fetch($themeId); } $additionalParams['payload_data'] = isset($requestPayload['fields']) ? $requestPayload['fields'] : array(); diff --git a/lhc_web/modules/lhwidgetrestapi/theme.php b/lhc_web/modules/lhwidgetrestapi/theme.php index 2671b5f2a9..6a66dcf7d5 100644 --- a/lhc_web/modules/lhwidgetrestapi/theme.php +++ b/lhc_web/modules/lhwidgetrestapi/theme.php @@ -2,7 +2,11 @@ erLhcoreClassRestAPIHandler::setHeaders('Content-type: text/css'); -$theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters']['theme']); +if (empty($Params['user_parameters']['theme']) || ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters']['theme'])) === false){ + exit; +} + +$theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme->modified > 0) { Header("Expires:".gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); diff --git a/lhc_web/modules/lhwidgetrestapi/themeneedhelp.php b/lhc_web/modules/lhwidgetrestapi/themeneedhelp.php index ee0d9f8efa..29ce8a1702 100644 --- a/lhc_web/modules/lhwidgetrestapi/themeneedhelp.php +++ b/lhc_web/modules/lhwidgetrestapi/themeneedhelp.php @@ -2,7 +2,11 @@ erLhcoreClassRestAPIHandler::setHeaders('Content-type: text/css'); -$theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters']['theme']); +if (empty($Params['user_parameters']['theme']) || ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters']['theme'])) === false){ + exit; +} + +$theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme->modified > 0) { Header("Expires:".gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); diff --git a/lhc_web/modules/lhwidgetrestapi/themepage.php b/lhc_web/modules/lhwidgetrestapi/themepage.php index 48a9c97051..416704cc44 100644 --- a/lhc_web/modules/lhwidgetrestapi/themepage.php +++ b/lhc_web/modules/lhwidgetrestapi/themepage.php @@ -2,6 +2,10 @@ erLhcoreClassRestAPIHandler::setHeaders('Content-type: text/css'); +if (empty($Params['user_parameters']['theme']) || ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters']['theme'])) === false){ + exit; +} + $theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters']['theme']); if ($theme->modified > 0) { diff --git a/lhc_web/modules/lhwidgetrestapi/themestatus.php b/lhc_web/modules/lhwidgetrestapi/themestatus.php index 58ee45536c..fd3735a170 100644 --- a/lhc_web/modules/lhwidgetrestapi/themestatus.php +++ b/lhc_web/modules/lhwidgetrestapi/themestatus.php @@ -2,7 +2,11 @@ erLhcoreClassRestAPIHandler::setHeaders('Content-type: text/css'); -$theme = erLhAbstractModelWidgetTheme::fetch($Params['user_parameters']['theme']); +if (empty($Params['user_parameters']['theme']) || ($themeId = erLhcoreClassChat::extractTheme($Params['user_parameters']['theme'])) === false) { + exit; +} + +$theme = erLhAbstractModelWidgetTheme::fetch($themeId); if ($theme->modified > 0) { header("Expires:".gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); diff --git a/lhc_web/pos/lhabstract/erlhabstractmodelwidgettheme.php b/lhc_web/pos/lhabstract/erlhabstractmodelwidgettheme.php index 0bd7dc8929..48646d4c80 100644 --- a/lhc_web/pos/lhabstract/erlhabstractmodelwidgettheme.php +++ b/lhc_web/pos/lhabstract/erlhabstractmodelwidgettheme.php @@ -9,7 +9,7 @@ $def->idProperty->propertyName = 'id'; $def->idProperty->generator = new ezcPersistentGeneratorDefinition( 'ezcPersistentNativeGenerator' ); -foreach (['widget_pbottom','widget_position','notification_configuration','bot_configuration','buble_operator_text_color','buble_operator_title_color','buble_operator_background','buble_visitor_text_color','buble_visitor_title_color','buble_visitor_background','department_select','department_title','noonline_operators_offline','noonline_operators','pending_join_queue','pending_join','support_closed','support_joined','intro_operator_text','explain_text','offline_text','online_text','need_help_text','need_help_header','custom_popup_css','custom_widget_css','custom_container_css','custom_status_css','show_copyright','widget_copyright_url','copyright_image_path','copyright_image','need_help_image_path','need_help_image','need_help_hover_bg','need_help_close_bg','need_help_border','need_help_tcolor','need_help_bcolor','logo_image_path','logo_image','offline_image_path','need_help_close_hover_bg','operator_image_path','online_image_path','offline_image','close_image_path','restore_image_path','hide_popup','hide_close','popup_image_path','minimize_image_path','popup_image','close_image','restore_image','minimize_image','operator_image','online_image','name','name_company','onl_bcolor','bor_bcolor','text_color','header_background','bot_status_text','widget_border_color'] as $posAttr) { +foreach (['alias','widget_pbottom','widget_position','notification_configuration','bot_configuration','buble_operator_text_color','buble_operator_title_color','buble_operator_background','buble_visitor_text_color','buble_visitor_title_color','buble_visitor_background','department_select','department_title','noonline_operators_offline','noonline_operators','pending_join_queue','pending_join','support_closed','support_joined','intro_operator_text','explain_text','offline_text','online_text','need_help_text','need_help_header','custom_popup_css','custom_widget_css','custom_container_css','custom_status_css','show_copyright','widget_copyright_url','copyright_image_path','copyright_image','need_help_image_path','need_help_image','need_help_hover_bg','need_help_close_bg','need_help_border','need_help_tcolor','need_help_bcolor','logo_image_path','logo_image','offline_image_path','need_help_close_hover_bg','operator_image_path','online_image_path','offline_image','close_image_path','restore_image_path','hide_popup','hide_close','popup_image_path','minimize_image_path','popup_image','close_image','restore_image','minimize_image','operator_image','online_image','name','name_company','onl_bcolor','bor_bcolor','text_color','header_background','bot_status_text','widget_border_color'] as $posAttr) { $def->properties[$posAttr] = new ezcPersistentObjectProperty(); $def->properties[$posAttr]->columnName = $posAttr; $def->properties[$posAttr]->propertyName = $posAttr; diff --git a/lhc_web/pos/lhdepartament/erlhcoreclassmodeldepartament.php b/lhc_web/pos/lhdepartament/erlhcoreclassmodeldepartament.php index 59e49ba489..9ed13779b1 100644 --- a/lhc_web/pos/lhdepartament/erlhcoreclassmodeldepartament.php +++ b/lhc_web/pos/lhdepartament/erlhcoreclassmodeldepartament.php @@ -9,56 +9,22 @@ $def->idProperty->propertyName = 'id'; $def->idProperty->generator = new ezcPersistentGeneratorDefinition( 'ezcPersistentNativeGenerator' ); -$def->properties['name'] = new ezcPersistentObjectProperty(); -$def->properties['name']->columnName = 'name'; -$def->properties['name']->propertyName = 'name'; -$def->properties['name']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['email'] = new ezcPersistentObjectProperty(); -$def->properties['email']->columnName = 'email'; -$def->properties['email']->propertyName = 'email'; -$def->properties['email']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['xmpp_recipients'] = new ezcPersistentObjectProperty(); -$def->properties['xmpp_recipients']->columnName = 'xmpp_recipients'; -$def->properties['xmpp_recipients']->propertyName = 'xmpp_recipients'; -$def->properties['xmpp_recipients']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['xmpp_group_recipients'] = new ezcPersistentObjectProperty(); -$def->properties['xmpp_group_recipients']->columnName = 'xmpp_group_recipients'; -$def->properties['xmpp_group_recipients']->propertyName = 'xmpp_group_recipients'; -$def->properties['xmpp_group_recipients']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['priority'] = new ezcPersistentObjectProperty(); -$def->properties['priority']->columnName = 'priority'; -$def->properties['priority']->propertyName = 'priority'; -$def->properties['priority']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['archive'] = new ezcPersistentObjectProperty(); -$def->properties['archive']->columnName = 'archive'; -$def->properties['archive']->propertyName = 'archive'; -$def->properties['archive']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['department_transfer_id'] = new ezcPersistentObjectProperty(); -$def->properties['department_transfer_id']->columnName = 'department_transfer_id'; -$def->properties['department_transfer_id']->propertyName = 'department_transfer_id'; -$def->properties['department_transfer_id']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['transfer_timeout'] = new ezcPersistentObjectProperty(); -$def->properties['transfer_timeout']->columnName = 'transfer_timeout'; -$def->properties['transfer_timeout']->propertyName = 'transfer_timeout'; -$def->properties['transfer_timeout']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['identifier'] = new ezcPersistentObjectProperty(); -$def->properties['identifier']->columnName = 'identifier'; -$def->properties['identifier']->propertyName = 'identifier'; -$def->properties['identifier']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; +foreach (['name','email','xmpp_recipients','xmpp_group_recipients','identifier','inform_options','inform_close_all_email','product_configuration','bot_configuration','alias'] as $posAttr) { + $def->properties[$posAttr] = new ezcPersistentObjectProperty(); + $def->properties[$posAttr]->columnName = $posAttr; + $def->properties[$posAttr]->propertyName = $posAttr; + $def->properties[$posAttr]->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; +} -// New chat notification configuration -$def->properties['online_hours_active'] = new ezcPersistentObjectProperty(); -$def->properties['online_hours_active']->columnName = 'online_hours_active'; -$def->properties['online_hours_active']->propertyName = 'online_hours_active'; -$def->properties['online_hours_active']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; +foreach (['priority','archive','department_transfer_id','transfer_timeout','online_hours_active','inform_delay','inform_close','inform_unread','inform_unread_delay','disabled', + 'visible_if_online','hidden','active_chats_counter','pending_chats_counter','max_load','max_load_h','nc_cb_execute','na_cb_execute','delay_lm','active_balancing','max_active_chats','max_ac_dep_chats', + 'exclude_inactive_chats','delay_before_assign','max_timeout_seconds','attr_int_1','attr_int_2','attr_int_3','sort_priority','inform_close_all','pending_max','pending_group_max','bot_chats_counter','inactive_chats_cnt','inop_chats_cnt', + 'acop_chats_cnt','assign_same_language'] as $posAttr) { + $def->properties[$posAttr] = new ezcPersistentObjectProperty(); + $def->properties[$posAttr]->columnName = $posAttr; + $def->properties[$posAttr]->propertyName = $posAttr; + $def->properties[$posAttr]->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; +} foreach (array('mod','tud','wed','thd','frd','sad','sud') as $dayShort) { $def->properties[$dayShort.'_start_hour'] = new ezcPersistentObjectProperty(); @@ -72,199 +38,6 @@ $def->properties[$dayShort.'_end_hour']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; } -$def->properties['inform_options'] = new ezcPersistentObjectProperty(); -$def->properties['inform_options']->columnName = 'inform_options'; -$def->properties['inform_options']->propertyName = 'inform_options'; -$def->properties['inform_options']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['inform_delay'] = new ezcPersistentObjectProperty(); -$def->properties['inform_delay']->columnName = 'inform_delay'; -$def->properties['inform_delay']->propertyName = 'inform_delay'; -$def->properties['inform_delay']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['inform_close'] = new ezcPersistentObjectProperty(); -$def->properties['inform_close']->columnName = 'inform_close'; -$def->properties['inform_close']->propertyName = 'inform_close'; -$def->properties['inform_close']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['inform_unread'] = new ezcPersistentObjectProperty(); -$def->properties['inform_unread']->columnName = 'inform_unread'; -$def->properties['inform_unread']->propertyName = 'inform_unread'; -$def->properties['inform_unread']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['inform_unread_delay'] = new ezcPersistentObjectProperty(); -$def->properties['inform_unread_delay']->columnName = 'inform_unread_delay'; -$def->properties['inform_unread_delay']->propertyName = 'inform_unread_delay'; -$def->properties['inform_unread_delay']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['disabled'] = new ezcPersistentObjectProperty(); -$def->properties['disabled']->columnName = 'disabled'; -$def->properties['disabled']->propertyName = 'disabled'; -$def->properties['disabled']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['visible_if_online'] = new ezcPersistentObjectProperty(); -$def->properties['visible_if_online']->columnName = 'visible_if_online'; -$def->properties['visible_if_online']->propertyName = 'visible_if_online'; -$def->properties['visible_if_online']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['hidden'] = new ezcPersistentObjectProperty(); -$def->properties['hidden']->columnName = 'hidden'; -$def->properties['hidden']->propertyName = 'hidden'; -$def->properties['hidden']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['active_chats_counter'] = new ezcPersistentObjectProperty(); -$def->properties['active_chats_counter']->columnName = 'active_chats_counter'; -$def->properties['active_chats_counter']->propertyName = 'active_chats_counter'; -$def->properties['active_chats_counter']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['pending_chats_counter'] = new ezcPersistentObjectProperty(); -$def->properties['pending_chats_counter']->columnName = 'pending_chats_counter'; -$def->properties['pending_chats_counter']->propertyName = 'pending_chats_counter'; -$def->properties['pending_chats_counter']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['max_load'] = new ezcPersistentObjectProperty(); -$def->properties['max_load']->columnName = 'max_load'; -$def->properties['max_load']->propertyName = 'max_load'; -$def->properties['max_load']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['max_load_h'] = new ezcPersistentObjectProperty(); -$def->properties['max_load_h']->columnName = 'max_load_h'; -$def->properties['max_load_h']->propertyName = 'max_load_h'; -$def->properties['max_load_h']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -/** - * Reset new chat callback execution - * */ -$def->properties['nc_cb_execute'] = new ezcPersistentObjectProperty(); -$def->properties['nc_cb_execute']->columnName = 'nc_cb_execute'; -$def->properties['nc_cb_execute']->propertyName = 'nc_cb_execute'; -$def->properties['nc_cb_execute']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -/** - * Reset unanswered chat callback execution - * */ -$def->properties['na_cb_execute'] = new ezcPersistentObjectProperty(); -$def->properties['na_cb_execute']->columnName = 'na_cb_execute'; -$def->properties['na_cb_execute']->propertyName = 'na_cb_execute'; -$def->properties['na_cb_execute']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -/** - * Delay before leave a message window is shown - * */ -$def->properties['delay_lm'] = new ezcPersistentObjectProperty(); -$def->properties['delay_lm']->columnName = 'delay_lm'; -$def->properties['delay_lm']->propertyName = 'delay_lm'; -$def->properties['delay_lm']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['active_balancing'] = new ezcPersistentObjectProperty(); -$def->properties['active_balancing']->columnName = 'active_balancing'; -$def->properties['active_balancing']->propertyName = 'active_balancing'; -$def->properties['active_balancing']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['max_active_chats'] = new ezcPersistentObjectProperty(); -$def->properties['max_active_chats']->columnName = 'max_active_chats'; -$def->properties['max_active_chats']->propertyName = 'max_active_chats'; -$def->properties['max_active_chats']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['max_ac_dep_chats'] = new ezcPersistentObjectProperty(); -$def->properties['max_ac_dep_chats']->columnName = 'max_ac_dep_chats'; -$def->properties['max_ac_dep_chats']->propertyName = 'max_ac_dep_chats'; -$def->properties['max_ac_dep_chats']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['exclude_inactive_chats'] = new ezcPersistentObjectProperty(); -$def->properties['exclude_inactive_chats']->columnName = 'exclude_inactive_chats'; -$def->properties['exclude_inactive_chats']->propertyName = 'exclude_inactive_chats'; -$def->properties['exclude_inactive_chats']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['delay_before_assign'] = new ezcPersistentObjectProperty(); -$def->properties['delay_before_assign']->columnName = 'delay_before_assign'; -$def->properties['delay_before_assign']->propertyName = 'delay_before_assign'; -$def->properties['delay_before_assign']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['max_timeout_seconds'] = new ezcPersistentObjectProperty(); -$def->properties['max_timeout_seconds']->columnName = 'max_timeout_seconds'; -$def->properties['max_timeout_seconds']->propertyName = 'max_timeout_seconds'; -$def->properties['max_timeout_seconds']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['attr_int_1'] = new ezcPersistentObjectProperty(); -$def->properties['attr_int_1']->columnName = 'attr_int_1'; -$def->properties['attr_int_1']->propertyName = 'attr_int_1'; -$def->properties['attr_int_1']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['attr_int_2'] = new ezcPersistentObjectProperty(); -$def->properties['attr_int_2']->columnName = 'attr_int_2'; -$def->properties['attr_int_2']->propertyName = 'attr_int_2'; -$def->properties['attr_int_2']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['attr_int_3'] = new ezcPersistentObjectProperty(); -$def->properties['attr_int_3']->columnName = 'attr_int_3'; -$def->properties['attr_int_3']->propertyName = 'attr_int_3'; -$def->properties['attr_int_3']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['sort_priority'] = new ezcPersistentObjectProperty(); -$def->properties['sort_priority']->columnName = 'sort_priority'; -$def->properties['sort_priority']->propertyName = 'sort_priority'; -$def->properties['sort_priority']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['inform_close_all'] = new ezcPersistentObjectProperty(); -$def->properties['inform_close_all']->columnName = 'inform_close_all'; -$def->properties['inform_close_all']->propertyName = 'inform_close_all'; -$def->properties['inform_close_all']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -// Maximum of pending chats -$def->properties['pending_max'] = new ezcPersistentObjectProperty(); -$def->properties['pending_max']->columnName = 'pending_max'; -$def->properties['pending_max']->propertyName = 'pending_max'; -$def->properties['pending_max']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['pending_group_max'] = new ezcPersistentObjectProperty(); -$def->properties['pending_group_max']->columnName = 'pending_group_max'; -$def->properties['pending_group_max']->propertyName = 'pending_group_max'; -$def->properties['pending_group_max']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['bot_chats_counter'] = new ezcPersistentObjectProperty(); -$def->properties['bot_chats_counter']->columnName = 'bot_chats_counter'; -$def->properties['bot_chats_counter']->propertyName = 'bot_chats_counter'; -$def->properties['bot_chats_counter']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -// Department inactive chats -$def->properties['inactive_chats_cnt'] = new ezcPersistentObjectProperty(); -$def->properties['inactive_chats_cnt']->columnName = 'inactive_chats_cnt'; -$def->properties['inactive_chats_cnt']->propertyName = 'inactive_chats_cnt'; -$def->properties['inactive_chats_cnt']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -// Inactive chats for online operators -$def->properties['inop_chats_cnt'] = new ezcPersistentObjectProperty(); -$def->properties['inop_chats_cnt']->columnName = 'inop_chats_cnt'; -$def->properties['inop_chats_cnt']->propertyName = 'inop_chats_cnt'; -$def->properties['inop_chats_cnt']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -// Active operators online chats -$def->properties['acop_chats_cnt'] = new ezcPersistentObjectProperty(); -$def->properties['acop_chats_cnt']->columnName = 'acop_chats_cnt'; -$def->properties['acop_chats_cnt']->propertyName = 'acop_chats_cnt'; -$def->properties['acop_chats_cnt']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['assign_same_language'] = new ezcPersistentObjectProperty(); -$def->properties['assign_same_language']->columnName = 'assign_same_language'; -$def->properties['assign_same_language']->propertyName = 'assign_same_language'; -$def->properties['assign_same_language']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_INT; - -$def->properties['inform_close_all_email'] = new ezcPersistentObjectProperty(); -$def->properties['inform_close_all_email']->columnName = 'inform_close_all_email'; -$def->properties['inform_close_all_email']->propertyName = 'inform_close_all_email'; -$def->properties['inform_close_all_email']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['product_configuration'] = new ezcPersistentObjectProperty(); -$def->properties['product_configuration']->columnName = 'product_configuration'; -$def->properties['product_configuration']->propertyName = 'product_configuration'; -$def->properties['product_configuration']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - -$def->properties['bot_configuration'] = new ezcPersistentObjectProperty(); -$def->properties['bot_configuration']->columnName = 'bot_configuration'; -$def->properties['bot_configuration']->propertyName = 'bot_configuration'; -$def->properties['bot_configuration']->propertyType = ezcPersistentObjectProperty::PHP_TYPE_STRING; - return $def; ?> \ No newline at end of file From 1fd158891345ae57054805a7b89ec3d4e93c74f9 Mon Sep 17 00:00:00 2001 From: Remigijus Kiminas Date: Fri, 26 Nov 2021 09:20:30 -0500 Subject: [PATCH 02/14] Terminate script if passed department is not valid --- .../tpl/lhsystem/htmlcodebeta.tpl.php | 28 +++++----------- lhc_web/lib/core/lhchat/lhchat.php | 33 ++++++++++++++++++- lhc_web/modules/lhchat/module.php | 6 ++-- lhc_web/modules/lhchat/start.php | 28 ---------------- lhc_web/modules/lhrestapi/onlineimage.php | 4 +-- lhc_web/modules/lhsystem/hashargs.php | 12 ------- lhc_web/modules/lhsystem/module.php | 5 --- 7 files changed, 45 insertions(+), 71 deletions(-) delete mode 100644 lhc_web/modules/lhsystem/hashargs.php diff --git a/lhc_web/design/defaulttheme/tpl/lhsystem/htmlcodebeta.tpl.php b/lhc_web/design/defaulttheme/tpl/lhsystem/htmlcodebeta.tpl.php index 799eef3ec8..7444ea3896 100644 --- a/lhc_web/design/defaulttheme/tpl/lhsystem/htmlcodebeta.tpl.php +++ b/lhc_web/design/defaulttheme/tpl/lhsystem/htmlcodebeta.tpl.php @@ -49,7 +49,7 @@
@@ -185,7 +185,7 @@
@@ -269,7 +269,7 @@ function staticImageGeneration(){ var width = parseInt($('#OnlineImageWidth').val()) > 0 ? '&w=' + parseInt($('#OnlineImageWidth').val()) : ''; var department = $('#DepartmentID').val() && $('#DepartmentID').val().length > 0 && $('#DepartmentID').val().join('/') != '0' ? '/(department)/'+$('#DepartmentID').val().join('/') : ''; var operator = $('#id_operator').val() > 0 ? '/(operator)/'+$('#id_operator').val() : ''; - var theme = $('#ThemeID').val() > 0 ? '/(theme)/'+$('#ThemeID').val() : ''; + var theme = $('#ThemeID').val() != 0 ? '/(theme)/'+$('#ThemeID').val() : ''; var baseURL = '' + department + operator + theme + '?' + onlineText + offlineText + width; @@ -296,10 +296,6 @@ function staticImageGeneration(){

Static URL. You can send this url to your customers

-
- -
-