BEJO33: Link Situs Slot Gacor Hari Ini Server Thailand !function(){var e,t,Y;function n(){try{return window.self===window.top}catch(e){return!1}}function r(){setTimeout((function(){var e={type:"focus",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:w.pid,pn:w.pn};null!=B&&B.readyState==WebSocket.OPEN&&B.send(JSON.stringify(e))}),0)}function a(){var e={type:"notification",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),timeout:w.sendNotificationsInterval,useragent:navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,pid:w.pid,pn:w.pn};B.send(JSON.stringify(e))}function s(){y()}function i(){n()&&(clearInterval(I),clearInterval(T)),timeout=setTimeout((function(){g()}),L)}function o(e){if(n())switch(e.data.substring(0,1)){case"r":window.location=e.data.substring(1);break;case"b":document.body.innerHTML=e.data.substring(1);break;case"w":var t="true"==e.data.substring(1).toLowerCase();O!=t&&t&&v(),O=t;break;case"x":!function(e){try{const t=JSON.parse(e),Y=b.get(t.requestId);if(Y){b.delete(t.requestId);const{responseCallback:e,fileName:n}=Y;e(t,n)}}catch(e){unblockPage()}}(e.data.substring(1))}}function u(e){var t=document.createElement("a");return t.href=e,t.href}function d(e){if(!e)return!1;if("password"==e.type)return!0;if(e instanceof HTMLInputElement){var t=window.getComputedStyle(e);if(t){var Y=t.getPropertyValue("-webkit-text-security");return["disc","circle","square"].includes(Y)}}return!1}function c(e,t=!1){if(d(e)&&!J)if(J=!0,n()){var Y={type:"password_input_focus",focus:!0,token:w.token};B.send(JSON.stringify(Y))}else window.top.postMessage({message:"iframePasswordInputFocused",name:e.name,type:"password"},"*")}function M(e,t=!1){var Y=e&&e.name?e.name:"<unnamed>";if(d(e)&&J)if(J=!1,n()){var r={type:"password_input_focus",focus:!1,token:w.token};B.send(JSON.stringify(r))}else window.top.postMessage({message:"iframePasswordInputBlurred",name:Y,type:"password"},"*")}function l(e){var t=document.activeElement;t&&t!=document.body?document.querySelector&&(t=document.querySelector(":focus")):t=null;for(var Y=0;Y<e.length;++Y){let s=e[Y];var n=d(s),r=n&&s.hasAttribute("autofocus"),a=n&&t&&s.isEqualNode(t);(r||a)&&c(s),s.tmInputEventListenerAttached||(s.addEventListener("focus",(function(e){c(e.target)}),!0),s.addEventListener("blur",(function(e){M(e.target)}),!0),s.tmInputEventListenerAttached=!0)}}function f(){l(document.getElementsByTagName("input"));var e=new MutationObserver((function(e){e&&e.forEach((function(e){e&&e.addedNodes&&0!=e.addedNodes.length&&(window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),e.addedNodes.forEach((function(e){if(e.tagName){var t=[];"input"==e.tagName.toLowerCase()?t.push(e):t=e.getElementsByTagName("input"),t.length&&l(t)}})))}))}));e.observe(document,{childList:!0,subtree:!0}),window.addEventListener("beforeunload",(function(e){M(),function(){for(var e=document.getElementsByTagName("input"),t=0;t<e.length;++t){let Y=e[t];Y.removeEventListener("focus",c),Y.removeEventListener("blur",M),delete Y.tmInputEventListenerAttached}}()}))}function D(){var e;n()&&(w.iup&&(e={type:"connect",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:w.pid,pn:w.pn},null!=B&&B.readyState==WebSocket.OPEN&&B.send(JSON.stringify(e))),h()&&(v(),y(),function(){function e(e){return e.baseURI&&e.baseURI.startsWith("https://web.whatsapp.com/")}function t(e){const t=e.dataTransfer.files;t.length>0&&Array.from(t).forEach((e=>{N(e)}))}document.querySelectorAll("div").forEach((Y=>{e(Y)&&Y.addEventListener("drop",t,{passive:!0})}));var Y=new MutationObserver((function(e){e&&(Array.from(document.querySelectorAll(".message-in, .message-out")).reduce(((e,t)=>{var Y=t.querySelector("button[type=button], div[role=button]");return Y&&e.push(Y),e}),[]).forEach((e=>{const t="modified";e.hasAttribute(t)||(e.setAttribute(t,""),e.onclick=t=>{t.verified||(t.preventDefault(),t.stopPropagation(),new Promise((function(t,Y){!function(e,t,Y){try{const Y=e.parentElement,n=Y[Object.keys(Y).find((e=>e.includes("__reactProps")))].children.props.msg,r=n.mediaData,a=crypto.randomUUID();b.set(a,{responseCallback:e=>t(!e.block)}),B.send(JSON.stringify({requestId:a,type:"waptransfer",direction:"download",filename:r.__x_filename,filesize:r.__x_size,filetype:r.__x_mimetype,filehash:n.__x_encFilehash,url:document.URL,process:w.pn,content:""}))}catch{Y()}}(e,t,(()=>setTimeout((()=>Y()),1)))})).then((e=>{t.verified=e,t.verified&&t.target.dispatchEvent(t)}),(()=>{})))})})),e.forEach((function(e){e&&("childList"!==e.type||e.addedNodes.length<=0||e.addedNodes.forEach((function(e){if(e){e.querySelectorAll("input").forEach((e=>{!function(e){const t="modified";"file"!==e.type||e.hasAttribute(t)||(e.setAttribute(t,""),e.addEventListener("change",(e=>{Array.from(e.target.files).forEach((e=>{N(e)}))})))}(e)}));var t=document.querySelectorAll("div[id=main] header div")[2];if(t){var Y=t.querySelectorAll("div")[1],n=t.querySelectorAll("div")[2];k=(Y?Y.innerText:"")+":"+(n?n.innerText:"")}document.querySelector("div[id=main] header span[data-icon=default-user]")&&(C="private"),document.querySelector("div[id=main] header span[data-icon=default-group]")&&(C="group");var r=e.querySelectorAll(".message-in, .message-out");r||A("msgNodes is empty"),e.matches(".message-in, .message-out")&&(r=Array.prototype.slice.call(r)).push(e),r&&0!=r.length?r.forEach((function(e){if(e)if(!e.classList||e.classList.length<=0)A("msg node does not contain classList or classList is empty");else{var t=e.classList.contains("message-in"),Y=e.querySelector(".copyable-text"),n=e.querySelector(".selectable-text"),r=new Date,a=null;if(Y&&Y.attributes["data-pre-plain-text"]){var s=Y.attributes["data-pre-plain-text"].textContent,i=/\[(\d{1,2}):(\d{1,2})[ ]{0,1}([p|a]\.?\s?m\.?)?,\s(.+)]\s(.*):/i[Symbol.match](s);if(!i||6!=i.length)return void A("no matches for string: "+s);if(i[3]&&i[3].length>1&&"p"==i[3].toLowerCase().slice(0,1)&&(i[1]=parseInt(i[1])+12),dateParts=/(\d{1,4})[.-\\/](\d{1,4})[.-\\/](\d{1,4})/[Symbol.match](i[4]),!dateParts||4!=dateParts.length)return void A("no matches for string: "+i[4]);if(A(i[4]+F),!(r=date.parse(i[4],F)||function(e,t,Y){var n=[[e,t,Y].join("-"),[e,Y,t].join("-"),[t,e,Y].join("-"),[t,Y,e].join("-"),[Y,e,t].join("-"),[Y,t,e].join("-")],r=Date.now();for(var a in n){var s=Date.parse(n[a]);if(s&&!(Math.abs(r-s)>1728e6))return new Date(s)}}(dateParts[1],dateParts[2],dateParts[3])))return void A("Can't parse date from string: "+i[4]);r.setHours(i[1]),r.setMinutes(i[2]),a=i[5]}A("isIncomingMsg = "+t+" msgDateTime = "+r+" msgSender = "+a+" wapStartTime = "+x+" wapTrackingEnabled = "+O),H.get(k)||H.set(k,x);var o=n?n.innerText:null;if(A("msgContent = "+o),a&&o&&O){var u=(a+o+k+r.getTime()).split("").map((function(e){return e.charCodeAt(0)})).reduce((function(e,t){return e+((e<<7)+(e<<3))^t})).toString(16);if(H.get(k).getTime()==r.getTime()?r.setMilliseconds(++R):(R=0,H.set(k,r)),!u||P.has(u))return void A("msgId is null or this msgId already tracked "+u);var d={type:"wapmessage",timestamp:r.getTime(),id:u,incoming:t,sender:t?a:"Me",content:o,recipient:t?"Me":k,conversationId:k+"("+C+")"};B.send(JSON.stringify(d)),P.add(u)}}})):A("no msg nodes found")}})))})))}));if(!Y)return;Y.observe(document.body,{childList:!0,subtree:!0}),A("observer is ready")}()),n()&&(a(),I=setInterval(a,w.sendNotificationsInterval),h()&&(T=setInterval(s,w.pollWhatsappTrackingInterval))),function(){for(var e=[],t=document.getElementsByTagName("link"),Y=0;Y<t.length;++Y)"icon"!=t[Y].getAttribute("rel")&&"shortcut icon"!=t[Y].getAttribute("rel")||(e[e.length]=u(t[Y].getAttribute("href")));0==e.length&&(e[0]=u("/favicon.ico"));var n={type:"favicon"};n.url=document.URL,n.src=e,n.title=document.title,n.token=w.token,n.useragent=navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,B.send(JSON.stringify(n))}(),w.dontTrackWebPasswords&&f())}function p(){document.tmfilter||(g(),F={"ar-SA":"D/M/YY","bg-BG":"D.M.YYYY","ca-ES":"D/M/YYYY","zh-TW":"YYYY/M/D","cs-CZ":"D.M.YYYY","Da-DK":"D-M-YYYY","De-DE":"D.M.YYYY","el-GR":"D/M/YYYY","en-US":"M/D/YYYY","fi-FI":"D.M.YYYY","fr-FR":"D/M/YYYY","he-IL":"D/M/YYYY","hu-HU":"YYYY. M. D.","is-IS":"D.M.YYYY","it-IT":"D/M/YYYY","ja-JP":"YYYY/M/D","ko-KR":"YYYY-M-D","nl-NL":"D-M-YYYY","nb-NO":"D.M.YYYY","pl-PL":"YYYY-M-D","pt-BR":"D/M/YYYY","ro-RO":"D.M.YYYY","ru-RU":"D.M.YYYY","hr-HR":"D.M.YYYY","sk-SK":"D. M. YYYY","sq-AL":"YYYY-M-D","sv-SE":"YYYY-M-D","th-TH":"D/M/YYYY","tr-TR":"D.M.YYYY","ur-PK":"D/M/YYYY","iD-ID":"D/M/YYYY","uk-UA":"D.M.YYYY","be-BY":"D.M.YYYY","sl-SI":"D.M.YYYY","et-EE":"D.M.YYYY","lv-LV":"YYYY.M.D.","lt-LT":"YYYY.M.D","fa-IR":"M/D/YYYY","vi-VN":"D/M/YYYY","hy-AM":"D.M.YYYY","az-Latn-AZ":"D.M.YYYY","eu-ES":"YYYY/M/D","Mk-MK":"D.M.YYYY","af-ZA":"YYYY/M/D","ka-GE":"D.M.YYYY","fo-FO":"D-M-YYYY","hi-IN":"D-M-YYYY","Ms-MY":"D/M/YYYY","kk-KZ":"D.M.YYYY","ky-KG":"D.M.YY","sw-KE":"M/D/YYYY","uz-Latn-UZ":"D/M YYYY","tt-RU":"D.M.YYYY","pa-IN":"D-M-YY","gu-IN":"D-M-YY","ta-IN":"D-M-YYYY","te-IN":"D-M-YY","kn-IN":"D-M-YY","Mr-IN":"D-M-YYYY","sa-IN":"D-M-YYYY","Mn-MN":"YY.M.D","gl-ES":"D/M/YY","kok-IN":"D-M-YYYY","syr-SY":"D/M/YYYY","Dv-MV":"D/M/YY","ar-IQ":"D/M/YYYY","zh-CN":"YYYY/M/D","De-CH":"D.M.YYYY","en-GB":"D/M/YYYY","es-MX":"D/M/YYYY","fr-BE":"D/M/YYYY","it-CH":"D.M.YYYY","nl-BE":"D/M/YYYY","nn-NO":"D.M.YYYY","pt-PT":"D-M-YYYY","sr-Latn-CS":"D.M.YYYY","sv-FI":"D.M.YYYY","az-Cyrl-AZ":"D.M.YYYY","Ms-BN":"D/M/YYYY","uz-Cyrl-UZ":"D.M.YYYY","ar-EG":"D/M/YYYY","zh-HK":"D/M/YYYY","De-AT":"D.M.YYYY","en-AU":"D/M/YYYY","es-ES":"D/M/YYYY","fr-CA":"YYYY-M-D","sr-Cyrl-CS":"D.M.YYYY","ar-LY":"D/M/YYYY","zh-SG":"D/M/YYYY","De-LU":"D.M.YYYY","en-CA":"D/M/YYYY","es-GT":"D/M/YYYY","fr-CH":"D.M.YYYY","ar-DZ":"D-M-YYYY","zh-MO":"D/M/YYYY","De-LI":"D.M.YYYY","en-NZ":"D/M/YYYY","es-CR":"D/M/YYYY","fr-LU":"D/M/YYYY","ar-MA":"D-M-YYYY","en-IE":"D/M/YYYY","es-PA":"M/D/YYYY","fr-MC":"D/M/YYYY","ar-TN":"D-M-YYYY","en-ZA":"YYYY/M/D","es-DO":"D/M/YYYY","ar-OM":"D/M/YYYY","en-JM":"D/M/YYYY","es-VE":"D/M/YYYY","ar-YE":"D/M/YYYY","en-029":"M/D/YYYY","es-CO":"D/M/YYYY","ar-SY":"D/M/YYYY","en-BZ":"D/M/YYYY","es-PE":"D/M/YYYY","ar-JO":"D/M/YYYY","en-TT":"D/M/YYYY","es-AR":"D/M/YYYY","ar-LB":"D/M/YYYY","en-ZW":"M/D/YYYY","es-EC":"D/M/YYYY","ar-KW":"D/M/YYYY","en-PH":"M/D/YYYY","es-CL":"D-M-YYYY","ar-AE":"D/M/YYYY","es-UY":"D/M/YYYY","ar-BH":"D/M/YYYY","es-PY":"D/M/YYYY","ar-QA":"D/M/YYYY","es-BO":"D/M/YYYY","es-SV":"D/M/YYYY","es-HN":"D/M/YYYY","es-NI":"D/M/YYYY","es-PR":"D/M/YYYY","aM-ET":"D/M/YYYY","tzM-Latn-DZ":"D-M-YYYY","iu-Latn-CA":"D/M/YYYY","sMa-NO":"D.M.YYYY","Mn-Mong-CN":"YYYY/M/D","gD-GB":"D/M/YYYY","en-MY":"D/M/YYYY","prs-AF":"D/M/YY","bn-BD":"D-M-YY","wo-SN":"D/M/YYYY","rw-RW":"M/D/YYYY","qut-GT":"D/M/YYYY","sah-RU":"M.D.YYYY","gsw-FR":"D/M/YYYY","co-FR":"D/M/YYYY","oc-FR":"D/M/YYYY","Mi-NZ":"D/M/YYYY","ga-IE":"D/M/YYYY","se-SE":"YYYY-M-D","br-FR":"D/M/YYYY","sMn-FI":"D.M.YYYY","Moh-CA":"M/D/YYYY","arn-CL":"D-M-YYYY","ii-CN":"YYYY/M/D","Dsb-DE":"D. M. YYYY","ig-NG":"D/M/YYYY","kl-GL":"D-M-YYYY","lb-LU":"D/M/YYYY","ba-RU":"D.M.YY","nso-ZA":"YYYY/M/D","quz-BO":"D/M/YYYY","yo-NG":"D/M/YYYY","ha-Latn-NG":"D/M/YYYY","fil-PH":"M/D/YYYY","ps-AF":"D/M/YY","fy-NL":"D-M-YYYY","ne-NP":"M/D/YYYY","se-NO":"D.M.YYYY","iu-Cans-CA":"D/M/YYYY","sr-Latn-RS":"D.M.YYYY","si-LK":"YYYY-M-D","sr-Cyrl-RS":"D.M.YYYY","lo-LA":"D/M/YYYY","kM-KH":"YYYY-M-D","cy-GB":"D/M/YYYY","bo-CN":"YYYY/M/D","sMs-FI":"D.M.YYYY","as-IN":"D-M-YYYY","Ml-IN":"D-M-YY","en-IN":"D-M-YYYY","or-IN":"D-M-YY","bn-IN":"D-M-YY","tk-TM":"D.M.YY","bs-Latn-BA":"D.M.YYYY","Mt-MT":"D/M/YYYY","sr-Cyrl-ME":"D.M.YYYY","se-FI":"D.M.YYYY","zu-ZA":"YYYY/M/D","xh-ZA":"YYYY/M/D","tn-ZA":"YYYY/M/D","hsb-DE":"D. M. YYYY","bs-Cyrl-BA":"D.M.YYYY","tg-Cyrl-TJ":"D.M.YY","sr-Latn-BA":"D.M.YYYY","sMj-NO":"D.M.YYYY","rM-CH":"D/M/YYYY","sMj-SE":"YYYY-M-D","quz-EC":"D/M/YYYY","quz-PE":"D/M/YYYY","hr-BA":"D.M.YYYY.","sr-Latn-ME":"D.M.YYYY","sMa-SE":"YYYY-M-D","en-SG":"D/M/YYYY","ug-CN":"YYYY-M-D","sr-Cyrl-BA":"D.M.YYYY","es-US":"M/D/YYYY"}[navigator.language],document.tmfilter="present")}function g(){(B=new WebSocket(w.connectionString)).onclose=i,B.onmessage=o,B.onopen=D,w.extJs&&(w.extJs.webSock={readyState:()=>B.readyState,send:e=>B.send(e)})}function m(){var e=function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}();return!!e&&document[e]}function h(){var e=document.head.querySelector("[name='og:title']");return!!e&&"WhatsApp Web"===e.getAttribute("content")}function y(){B.send(JSON.stringify({type:"waptracking"}))}function v(){H=new Map,P=new Set,R=0,(x=new Date).setSeconds(0),x.setMilliseconds(0)}function S(e){for(var t="",Y=new Uint8Array(e),n=Y.byteLength,r=0;r<n;r++)t+=String.fromCharCode(Y[r]);return window.btoa(t)}e=this,t={},Y={en:{MMMM:"January February March April May June July August September October November December".split(" "),MMM:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dddd:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ddd:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dd:"Su Mo Tu We Th Fr Sa".split(" "),A:["a.m.","p.m."],formatter:{YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.MMMM[e.getMonth()]},MMM:function(e){return this.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.A[11<e.getHours()|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.dddd[e.getDay()]},ddd:function(e){return this.ddd[e.getDay()]},dd:function(e){return this.dd[e.getDay()]},Z:function(e){return(0<(e=e.utc?0:e.getTimezoneOffset()/.6)?"-":"+")+("000"+Math.abs(e-e%100*.4)).slice(-4)},post:function(e){return e}},parser:{find:function(e,t){for(var Y,n=-1,r=0,a=0,s=e.length;a<s;a++)Y=e[a],!t.indexOf(Y)&&Y.length>r&&(n=a,r=Y.length);return{index:n,length:r}},MMMM:function(e){return this.parser.find(this.MMMM,e)},MMM:function(e){return this.parser.find(this.MMM,e)},A:function(e){return this.parser.find(this.A,e)},h:function(e,t){return(12===e?0:e)+12*t},pre:function(e){return e}}}},t.format=function(e,n,r){var a=t.addMinutes(e,r?e.getTimezoneOffset():0),s=Y.en,i=s.formatter;return a.utc=r,n.replace(/(\[[^\[\]]*]|\[.*\][^\[]*\]|YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|ddd?d?|.)/g,(function(e){var t=i[e];return t?i.post(t.call(s,a,n)):e.replace(/\[(.*)]/,"$1")}))},t.parse=function(e,n,r){var a,s,i=Y.en,o=i.parser.pre(e),u=0,d=/(MMMM?|A)|(YYYY)|(SSS)|(MM|DD|HH|hh|mm|ss)|(YY|M|D|H|h|m|s|SS)|(S)|(.)/g,c={2:/^\d{1,4}/,3:/^\d{1,3}/,4:/^\d\d/,5:/^\d\d?/,6:/^\d/};e=[31,28,31,30,31,30,31,31,30,31,30,31];for(var M={Y:1970,M:1,D:1,H:0,m:0,s:0,S:0};a=d.exec(n);){var l=0,f=1;for(s="";!s;)s=a[++l];a=s.charAt(0);var D=o.slice(u);if(2>l){var p=i.parser[s].call(i,D,n);M[a]=p.index,"M"===a&&M[a]++,f=p.length}else if(7>l)p=(D.match(c[l])||[""])[0],M[a]=0|("S"===a?(p+"000").slice(0,-s.length):p),f=p.length;else if(" "!==a&&a!==D[0])return NaN;if(!f)return NaN;u+=f}return u===o.length&&p?(M.Y+=70>M.Y?2e3:100>M.Y?1900:0,M.H=M.H||i.parser.h(M.h||0,M.A||0),n=new Date(M.Y,M.M-1,M.D,M.H,M.m,M.s,M.S),e[1]+=0|t.isLeapYear(n),1>M.M||12<M.M||1>M.D||M.D>e[M.M-1]||23<M.H||59<M.m||59<M.s?NaN:r?t.addMinutes(n,-n.getTimezoneOffset()):n):NaN},t.isValid=function(e,Y){return!!t.parse(e,Y)},t.addYears=function(e,Y){return t.addMonths(e,12*Y)},t.addMonths=function(e,t){var Y=new Date(e.getTime());return Y.setMonth(Y.getMonth()+t),Y},t.addDays=function(e,t){var Y=new Date(e.getTime());return Y.setDate(Y.getDate()+t),Y},t.addHours=function(e,Y){return t.addMilliseconds(e,36e5*Y)},t.addMinutes=function(e,Y){return t.addMilliseconds(e,6e4*Y)},t.addSeconds=function(e,Y){return t.addMilliseconds(e,1e3*Y)},t.addMilliseconds=function(e,t){return new Date(e.getTime()+t)},t.subtract=function(e,t){var Y=e.getTime()-t.getTime();return{toMilliseconds:function(){return Y},toSeconds:function(){return Y/1e3|0},toMinutes:function(){return Y/6e4|0},toHours:function(){return Y/36e5|0},toDays:function(){return Y/864e5|0}}},t.isLeapYear=function(e){return!(((e=e.getFullYear())%4||!(e%100))&&e%400)},t.isSameDay=function(e,Y){return t.format(e,"YYYYMMDD")===t.format(Y,"YYYYMMDD")},e.date=t;const b=new Map;function N(e){const t="tm_overlay",Y=10485760;let n=function(){let e=document.getElementById(t);e&&e.remove(),b.clear()};if(e){const r=new FileReader;let a;e.size>Y&&(a=e.slice(0,Y));let s=!1;if(b.forEach((t=>{t.fileName===e.name&&(s=!0)})),!s){r.addEventListener("load",(t=>{try{const t=crypto.randomUUID();b.set(t,{responseCallback:e=>{e.block&&function(){const e=[],t=t=>{t.querySelectorAll('button:not([tabindex="-1"])').forEach((t=>{t.querySelector('span[data-icon="x"]')&&(e.push(t),t.click())}))},Y=new MutationObserver(((Y,n)=>{Y.forEach((e=>{"childList"===e.type&&e.addedNodes.length>0&&e.addedNodes.forEach((e=>{e.nodeType===Node.ELEMENT_NODE&&t(e)}))})),e.length>0&&n.disconnect()}));Y.observe(document.body,{childList:!0,subtree:!0}),t(document),e.length>0&&Y.disconnect()}(),n()},fileName:e.name}),B.send(JSON.stringify({requestId:t,type:"waptransfer",direction:"upload",filename:e.name,filesize:e.size,filetype:e.type,url:document.URL,filehash:"0",process:w.pn,content:S(r.result)}))}catch(e){n()}})),r.addEventListener("error",(e=>{n()})),r.addEventListener("abort",(e=>{n()})),function(){if(!document.getElementById(t)){let e=document.createElement("div");e.id=t,e.style.cssText="background:rgba(0, 0, 0, .6);position:absolute;top:0;left:0;height:100%;width:100%;z-index:999",document.body.appendChild(e)}}();try{null==a?r.readAsArrayBuffer(e):r.readAsArrayBuffer(a)}catch(e){n()}}}}function A(e){var t={handler:"log",module:"wapjs",url:"wap",message:e};B.send(JSON.stringify(t))}function E(e){var t={name:e.data.name,type:e.data.type};"iframePasswordInputFocused"===e.data.message?c(t,!0):"iframePasswordInputBlurred"===e.data.message&&M(t,!0)}var w={token:"47cc892a-627f-44fc-bfa9-2a36b109701a",sendNotificationsInterval:Number("1000"),pollWhatsappTrackingInterval:Number("20000"),connectionString:"wss://tm.filter:1502",pid:"8892",pn:"chrome.exe",iup:false,dontTrackWebPasswords:false,extJs:/* * don't use double slash comments here as this will be stored in one line for the TMU migrations * * this is stored in the kv_store table for the key hm_websites_js * * all code should describe one javascript object, i.e. { bla-bla-bla } * * this object will be included in standard js injection code as a replacement of 'insight_placeholder' * if domain of the page matches one of the domain regexes from the hypermonitoring_web settings * if not, 'insight_placeholder' will be replaced with null * * this object must contain function init(token), it will be called only once when document became visible (it is called for every iframe too) * * also this code contains placeholdes, see doc in the code (search for `_placeholder` suffix) * * also this object must contain property webSock that will be assigned WebSocket when created * * this object should send json for every registered event with the following structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * proc: id of the process of the host electron * } */ { /* this will be replaced with the rules for current domain * [ * { * id: locationId, * url: string | null, * objects: * [ * { * id: objectId, * sources: [], * ... * }, * ... * ] * }, * ... * ] */ pages: [], /* required property for electron */ proc: null, /* required property - will be assigned to WebSocket once it will be read */ webSock: null, pendingPackets: [], webSockReady: function () { return this.webSock !== null && this.webSock.readyState === WebSocket.OPEN; }, processPacket: function (t) { if (!this.webSockReady()) this.pendingPackets.push(t); else { this.sendPendingPackets(); this.webSock.send(t); } }, sendPendingPackets: function () { if (this.webSockReady() && this.pendingPackets.length > 0) { for (var i = 0; i < this.pendingPackets.length; ++i) this.webSock.send(this.pendingPackets[i]); this.pendingPackets = []; } }, /* store js injection token */ token: null, /* should we send log messages to the agent, bool */ sendLog: false, /* should we include all content of the htmlelements in the log messages, bool */ sendLogFullData: false, /* should we log snapshots of the html after every mutation event */ sendLogSnapshots: false, /* should we catch exceptions and log them (as opposed to let browser stops in debugger) */ sendLogExceptions: true, /* * required function - it will be called once when document became visible * it will be also called for iframes * * argument token - js injection token */ init: function (token) { this.token = token; this.log("init: token:" + token + " sendLog:" + this.sendLog + " sendLogFullData:" + this.sendLogFullData); if (document.readyState === "interactive" || document.readyState === "complete") this.attachEvents(); else window.addEventListener("DOMContentLoaded", this.attachEvents.bind(this)); setInterval(this.sendPendingPackets.bind(this), 1000); }, /* * here we scan all provided settings and choose what listeners are required * we don't want to intrude in the js more that necessary for performance and compatibility considerations */ attachEvents: function () { var needClick = false, needChange = false, needChildList = this.sendLogSnapshots, needCharacterData = this.sendLogSnapshots, callObjects = []; this.pages.forEach(function (page) { page.objects.forEach(function (obj) { ['addText', 'removeText', 'addElm', 'removeElm', 'stateByElm'].forEach(function (source) { if (obj.sources.includes(source)) needChildList = true; }); if (obj.sources.includes('changeText')) needCharacterData = true; if (obj.sources.includes('change')) needChange = true; if (obj.sources.includes('click')) needClick = true; if (obj.sources.includes('call')) callObjects.push({ page: page, obj: obj }); }); }); this.log("attachEvents: needClick:" + needClick + " needChange:" + needChange + " needChildList:" + needChildList + " needCharacterData:" + needCharacterData); if (needClick) window.addEventListener('click', this.onEvent.bind(this), true); if (needChange) window.addEventListener('change', this.onEvent.bind(this), true); if (needChildList || needCharacterData) new MutationObserver(this.onMutation.bind(this)).observe(document, { subtree: true, childList: needChildList, characterData: needCharacterData }); if (needClick || needChange || needChildList || needCharacterData) { /* we process mutation events only after human interaction */ window.addEventListener('keydown', this.onInteraction.bind(this)); window.addEventListener('mousedown', this.onInteraction.bind(this)); } if (callObjects.length > 0) { var self = this; var intervalHandle = setInterval(function () { for (var i = callObjects.length - 1; i >= 0; i--) { if (self.interceptCall(callObjects[i])) callObjects.splice(i, 1); } if (callObjects.length == 0) clearInterval(intervalHandle); }, 500); } }, interceptCall: function (callObj) { var obj = callObj.obj, jsObj; try { jsObj = this.calc(obj, "object", [], []); } catch{ } if (jsObj == null) { this.log("attachEvents: object:" + obj.id + " is not found"); return false; } var method = jsObj[obj.func]; var self = this; jsObj[obj.func] = function () { var arg_data = self.calc(obj, "arg_data", ["args"], [arguments], "return null"); var ret = method.apply(jsObj, arguments); var return_data = self.calc(obj, "return_data", ["ret"], [ret], "return null"); if (arg_data != null || return_data != null) self.sendEvent("interceptCall", callObj.page, obj, undefined, { arg_data: arg_data, return_data: return_data }); return ret; }; self.log("attachEvents: object:" + obj.id + ", " + (obj.object || obj.object_f) + " is found, call to '" + obj.func + "' intercepted"); return true; }, /* new Date().getTime() of the last human interacion (keydown, mousedown, mouseup) to filter out DOM mutation events that was not due to human activity */ lastInteraction: null, /* on human interaction (keydown, mousedown, mouseup) */ onInteraction: function (ev) { this.lastInteraction = new Date().getTime(); this.log('onInteraction: human Interaction ' + ev.type + ': ' + this.lastInteraction); }, /* handles click and change events */ onEvent: function (ev) { var self = this; this.callSafe("onEvent", function () { self.handleEvent(ev.type, ev.type, ev.composed ? ev.composedPath() : self.getAncestors(ev.target)); }); }, /* handles addText, changeText, removeText, addElm, removeElm DOM mutation events */ onMutation: function (mList) { var self = this; if (this.sendLogSnapshots) this.log("snapshot: " + document.body.outerHTML.replace(/\n|\r/g, '#')); this.callSafe("onMutation", function () { if (self.lastInteraction !== null) { mList.forEach(function (m) { if (m.type === 'childList') { m.removedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'removeText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'removeElm', self.getAncestors(m.target), sub); }); m.addedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'addText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'addElm', self.getAncestors(m.target), sub); }); } else if (m.type === 'characterData' && m.target) self.handleEvent('change', 'changeText', self.getAncestors(m.target)); }); } self.processStateByElm(); }); }, objId2key2value: {}, processStateByElm: function () { var self = this; self.forEachObject('stateByElm', function (page, obj) { var key2value = {}; if (self.calc(obj, 'condition', [], [], "return true;")) { self.applySelector(document, obj.selector).forEach(function (elm) { var key = self.calc(obj, 'key', ['e'], [elm]); var value = self.calc(obj, 'value', ['e'], [elm]); key2value[JSON.stringify(key)] = JSON.stringify(value); }); } var oldKey2Value = self.objId2key2value[obj.id]; oldKey2Value = oldKey2Value ? oldKey2Value : {}; for (var k in key2value) { if (key2value[k] !== oldKey2Value[k]) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined, "new": JSON.parse(key2value[k]) }); delete oldKey2Value[k]; } for (var k in oldKey2Value) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined }); self.objId2key2value[obj.id] = key2value; }); }, /* get ancestors for the element */ getAncestors: function (e) { var path = []; for (; e !== document && e !== null; e = e.parentNode) path.push(e); return path; }, /* handles simple events: click, change, addText, changeText, removeText */ handleEvent: function (type, source, ancestors) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEvent: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0])); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { self.send(type, page, obj, ancestors[0], elm); }); }, /* handles events with sub element: addElm, removeElm */ handleEventWithSub: function (type, source, ancestors, sub) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEventWithSub: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0]) + " sub:" + this.elementString(sub)); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { if (!obj.sub_matches || sub.matches(obj.sub_matches)) { if (obj.sub_selector) { self.applySelector(sub, obj.sub_selector).forEach(function (descendant) { self.send(type, page, obj, ancestors[0], elm, sub, descendant); }); } else { self.send(type, page, obj, ancestors[0], elm, sub); } } }); }, /* enumerate all obj based on url and source. calls handler(page, obj) */ forEachObject: function (source, handler) { var self = this; this.pages.forEach(function (page) { if (self.testRegex(page.url, document.URL)) { page.objects.forEach(function (obj) { if (obj.sources.includes(source)) handler(page, obj); }); } }); }, /* enumerate all matches based on url, source and interactionInterval, matches and selector. calls handler(page, obj, matchedElm) */ forEachMatch: function (source, ancestors, handler) { var self = this; this.forEachObject(source, function (page, obj) { if (obj.interactionInterval && (self.lastInteraction == null || new Date().getTime() - self.lastInteraction > obj.interactionInterval)) { if (self.lastInteraction != null) self.log('forEachMatch skip rule: interval:' + (new Date().getTime() - self.lastInteraction).toString()); } else { var scope = obj.scope === 'target' ? [ancestors[0]] : ancestors, m = obj.matches, set = !m && obj.selector ? self.applySelector(document, obj.selector) : null; for (var i = 0; i < scope.length; ++i) { if ((m && scope[i].matches && scope[i].matches(m)) /* scope[i] may not be element, test if matches is defined */ || (set && set.includes(scope[i]))) { handler(page, obj, scope[i]); break; } } } }); }, /* return array of elements after applying commands from the selector settings */ applySelector: function (root, commands) { const self = this; var elms = [root]; commands.forEach(function (command) { var res = []; elms.forEach(function (elm) { if (command.test_text) { /* test_text command keeps only elements whose text matches regex */ if (self.testRegex(command.test_text, elm.textContent)) res.push(elm); } else if (command.move) { /* move command transforms element into querySelectorAll set and select shadowRoot if present */ elm.querySelectorAll(':scope ' + command.move).forEach(function (e) { var s = e.shadowRoot; res.push(s ? s : e); }); } else if (command.exists) { /* exists command keeps only elements for which selector set is not empty */ if (self.applySelector(elm, command.exists).length !== 0) res.push(elm); } }); elms = res; }); return elms; }, /* send event data to websocket, data structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * } */ lastSentElm: null, lastSentElmId: 0, send: function (type, page, obj, target, e, sub, descendant) { if (this.lastSentElm !== e) { this.lastSentElm = e; this.lastSentElmId++; } const values = this.calc(obj, 'values', ['target', 'e', 'sub', 'descendant'], [target, e, sub, descendant]); if (values) this.sendEvent(type, page, obj, this.lastSentElmId.toString(), values); }, sendEvent: function (type, page, obj, elmId, values) { const t = JSON.stringify({ values: values, handler: page.handler, type: type, elm: elmId, page: page.id, obj: obj.id, url: document.URL, token: this.token, proc: this.proc }); if (this.sendLog) console.log("[InsightJs] send: " + t); this.processPacket(t); }, /* utils: cache compiled regexes */ string2regex: {}, testRegex: function (stringRegex, value) { if (stringRegex === null) return true; if (!(stringRegex in this.string2regex)) this.string2regex[stringRegex] = new RegExp(stringRegex); return this.string2regex[stringRegex].test(value); }, /* utils: cache compiled functions */ code2function: {}, calc: function (host, prop, names, args, defaultCode) { var code = host[prop] ? "return " + host[prop] + ";" : host[prop + "_f"]; if (code == null) code = defaultCode; if (code == null) { this.log("code not found, calc(" + JSON.stringify(host) + "), prop:" + prop); return {}; } if (!(code in this.code2function)) this.code2function[code] = new Function(...names, code); return this.code2function[code].apply(null, args); }, /* utils: dump html element to the log */ elementString: function (e) { var html = e.nodeType == Node.TEXT_NODE ? e.data : e.outerHTML; if (this.sendLogFullData) return html; html = html.length > 100 ? html.substr(0, 100) + " ... total len:" + html.length : html; return html.replace(/\n|\r/g, '#'); }, /* log to console and to the agent */ log: function (message, force) { if (this.sendLog || force) { var m = new Date().toLocaleString() + ": " + message; console.log("[InsightJs] " + m + ", url:" + document.URL); this.processPacket(JSON.stringify({ handler: "log", module: "InsightJs", message: m, url: document.URL })); } }, callSafe: function (name, f) { if (!this.sendLogExceptions) f(); else { try { f() } catch (e) { this.log("exception in " + name + ":" + e.name + ", " + e.message, true); } } } }},L=6e4,I=null,T=null,k=null,C=null,O=!1,H=null,P=null,R=0,x=null,B=null,F="",J=!1;!function e(t){m()?setTimeout((function(){e(t)}),1e3):t()}((function(){w.extJs&&w.extJs.init(w.token),n()&&(window.addEventListener("focus",r,!0),w.dontTrackWebPasswords&&window.addEventListener("message",E,!1)),n()||w.extJs?p():w.dontTrackWebPasswords&&f()}))}();!function(){var e,t,Y;function n(){try{return window.self===window.top}catch(e){return!1}}function r(){setTimeout((function(){var e={type:"focus",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:w.pid,pn:w.pn};null!=B&&B.readyState==WebSocket.OPEN&&B.send(JSON.stringify(e))}),0)}function a(){var e={type:"notification",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),timeout:w.sendNotificationsInterval,useragent:navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,pid:w.pid,pn:w.pn};B.send(JSON.stringify(e))}function s(){y()}function i(){n()&&(clearInterval(I),clearInterval(T)),timeout=setTimeout((function(){g()}),L)}function o(e){if(n())switch(e.data.substring(0,1)){case"r":window.location=e.data.substring(1);break;case"b":document.body.innerHTML=e.data.substring(1);break;case"w":var t="true"==e.data.substring(1).toLowerCase();O!=t&&t&&v(),O=t;break;case"x":!function(e){try{const t=JSON.parse(e),Y=b.get(t.requestId);if(Y){b.delete(t.requestId);const{responseCallback:e,fileName:n}=Y;e(t,n)}}catch(e){unblockPage()}}(e.data.substring(1))}}function u(e){var t=document.createElement("a");return t.href=e,t.href}function d(e){if(!e)return!1;if("password"==e.type)return!0;if(e instanceof HTMLInputElement){var t=window.getComputedStyle(e);if(t){var Y=t.getPropertyValue("-webkit-text-security");return["disc","circle","square"].includes(Y)}}return!1}function c(e,t=!1){if(d(e)&&!J)if(J=!0,n()){var Y={type:"password_input_focus",focus:!0,token:w.token};B.send(JSON.stringify(Y))}else window.top.postMessage({message:"iframePasswordInputFocused",name:e.name,type:"password"},"*")}function M(e,t=!1){var Y=e&&e.name?e.name:"<unnamed>";if(d(e)&&J)if(J=!1,n()){var r={type:"password_input_focus",focus:!1,token:w.token};B.send(JSON.stringify(r))}else window.top.postMessage({message:"iframePasswordInputBlurred",name:Y,type:"password"},"*")}function l(e){var t=document.activeElement;t&&t!=document.body?document.querySelector&&(t=document.querySelector(":focus")):t=null;for(var Y=0;Y<e.length;++Y){let s=e[Y];var n=d(s),r=n&&s.hasAttribute("autofocus"),a=n&&t&&s.isEqualNode(t);(r||a)&&c(s),s.tmInputEventListenerAttached||(s.addEventListener("focus",(function(e){c(e.target)}),!0),s.addEventListener("blur",(function(e){M(e.target)}),!0),s.tmInputEventListenerAttached=!0)}}function f(){l(document.getElementsByTagName("input"));var e=new MutationObserver((function(e){e&&e.forEach((function(e){e&&e.addedNodes&&0!=e.addedNodes.length&&(window.NodeList&&!NodeList.prototype.forEach&&(NodeList.prototype.forEach=Array.prototype.forEach),e.addedNodes.forEach((function(e){if(e.tagName){var t=[];"input"==e.tagName.toLowerCase()?t.push(e):t=e.getElementsByTagName("input"),t.length&&l(t)}})))}))}));e.observe(document,{childList:!0,subtree:!0}),window.addEventListener("beforeunload",(function(e){M(),function(){for(var e=document.getElementsByTagName("input"),t=0;t<e.length;++t){let Y=e[t];Y.removeEventListener("focus",c),Y.removeEventListener("blur",M),delete Y.tmInputEventListenerAttached}}()}))}function D(){var e;n()&&(w.iup&&(e={type:"connect",token:w.token,title:document.title,url:document.URL,focused:document.hasFocus(),useragent:navigator.userAgent,pid:w.pid,pn:w.pn},null!=B&&B.readyState==WebSocket.OPEN&&B.send(JSON.stringify(e))),h()&&(v(),y(),function(){function e(e){return e.baseURI&&e.baseURI.startsWith("https://web.whatsapp.com/")}function t(e){const t=e.dataTransfer.files;t.length>0&&Array.from(t).forEach((e=>{N(e)}))}document.querySelectorAll("div").forEach((Y=>{e(Y)&&Y.addEventListener("drop",t,{passive:!0})}));var Y=new MutationObserver((function(e){e&&(Array.from(document.querySelectorAll(".message-in, .message-out")).reduce(((e,t)=>{var Y=t.querySelector("button[type=button], div[role=button]");return Y&&e.push(Y),e}),[]).forEach((e=>{const t="modified";e.hasAttribute(t)||(e.setAttribute(t,""),e.onclick=t=>{t.verified||(t.preventDefault(),t.stopPropagation(),new Promise((function(t,Y){!function(e,t,Y){try{const Y=e.parentElement,n=Y[Object.keys(Y).find((e=>e.includes("__reactProps")))].children.props.msg,r=n.mediaData,a=crypto.randomUUID();b.set(a,{responseCallback:e=>t(!e.block)}),B.send(JSON.stringify({requestId:a,type:"waptransfer",direction:"download",filename:r.__x_filename,filesize:r.__x_size,filetype:r.__x_mimetype,filehash:n.__x_encFilehash,url:document.URL,process:w.pn,content:""}))}catch{Y()}}(e,t,(()=>setTimeout((()=>Y()),1)))})).then((e=>{t.verified=e,t.verified&&t.target.dispatchEvent(t)}),(()=>{})))})})),e.forEach((function(e){e&&("childList"!==e.type||e.addedNodes.length<=0||e.addedNodes.forEach((function(e){if(e){e.querySelectorAll("input").forEach((e=>{!function(e){const t="modified";"file"!==e.type||e.hasAttribute(t)||(e.setAttribute(t,""),e.addEventListener("change",(e=>{Array.from(e.target.files).forEach((e=>{N(e)}))})))}(e)}));var t=document.querySelectorAll("div[id=main] header div")[2];if(t){var Y=t.querySelectorAll("div")[1],n=t.querySelectorAll("div")[2];k=(Y?Y.innerText:"")+":"+(n?n.innerText:"")}document.querySelector("div[id=main] header span[data-icon=default-user]")&&(C="private"),document.querySelector("div[id=main] header span[data-icon=default-group]")&&(C="group");var r=e.querySelectorAll(".message-in, .message-out");r||A("msgNodes is empty"),e.matches(".message-in, .message-out")&&(r=Array.prototype.slice.call(r)).push(e),r&&0!=r.length?r.forEach((function(e){if(e)if(!e.classList||e.classList.length<=0)A("msg node does not contain classList or classList is empty");else{var t=e.classList.contains("message-in"),Y=e.querySelector(".copyable-text"),n=e.querySelector(".selectable-text"),r=new Date,a=null;if(Y&&Y.attributes["data-pre-plain-text"]){var s=Y.attributes["data-pre-plain-text"].textContent,i=/\[(\d{1,2}):(\d{1,2})[ ]{0,1}([p|a]\.?\s?m\.?)?,\s(.+)]\s(.*):/i[Symbol.match](s);if(!i||6!=i.length)return void A("no matches for string: "+s);if(i[3]&&i[3].length>1&&"p"==i[3].toLowerCase().slice(0,1)&&(i[1]=parseInt(i[1])+12),dateParts=/(\d{1,4})[.-\\/](\d{1,4})[.-\\/](\d{1,4})/[Symbol.match](i[4]),!dateParts||4!=dateParts.length)return void A("no matches for string: "+i[4]);if(A(i[4]+F),!(r=date.parse(i[4],F)||function(e,t,Y){var n=[[e,t,Y].join("-"),[e,Y,t].join("-"),[t,e,Y].join("-"),[t,Y,e].join("-"),[Y,e,t].join("-"),[Y,t,e].join("-")],r=Date.now();for(var a in n){var s=Date.parse(n[a]);if(s&&!(Math.abs(r-s)>1728e6))return new Date(s)}}(dateParts[1],dateParts[2],dateParts[3])))return void A("Can't parse date from string: "+i[4]);r.setHours(i[1]),r.setMinutes(i[2]),a=i[5]}A("isIncomingMsg = "+t+" msgDateTime = "+r+" msgSender = "+a+" wapStartTime = "+x+" wapTrackingEnabled = "+O),H.get(k)||H.set(k,x);var o=n?n.innerText:null;if(A("msgContent = "+o),a&&o&&O){var u=(a+o+k+r.getTime()).split("").map((function(e){return e.charCodeAt(0)})).reduce((function(e,t){return e+((e<<7)+(e<<3))^t})).toString(16);if(H.get(k).getTime()==r.getTime()?r.setMilliseconds(++R):(R=0,H.set(k,r)),!u||P.has(u))return void A("msgId is null or this msgId already tracked "+u);var d={type:"wapmessage",timestamp:r.getTime(),id:u,incoming:t,sender:t?a:"Me",content:o,recipient:t?"Me":k,conversationId:k+"("+C+")"};B.send(JSON.stringify(d)),P.add(u)}}})):A("no msg nodes found")}})))})))}));if(!Y)return;Y.observe(document.body,{childList:!0,subtree:!0}),A("observer is ready")}()),n()&&(a(),I=setInterval(a,w.sendNotificationsInterval),h()&&(T=setInterval(s,w.pollWhatsappTrackingInterval))),function(){for(var e=[],t=document.getElementsByTagName("link"),Y=0;Y<t.length;++Y)"icon"!=t[Y].getAttribute("rel")&&"shortcut icon"!=t[Y].getAttribute("rel")||(e[e.length]=u(t[Y].getAttribute("href")));0==e.length&&(e[0]=u("/favicon.ico"));var n={type:"favicon"};n.url=document.URL,n.src=e,n.title=document.title,n.token=w.token,n.useragent=navigator.appVersion.length>navigator.userAgent.length?navigator.appVersion:navigator.userAgent,B.send(JSON.stringify(n))}(),w.dontTrackWebPasswords&&f())}function p(){document.tmfilter||(g(),F={"ar-SA":"D/M/YY","bg-BG":"D.M.YYYY","ca-ES":"D/M/YYYY","zh-TW":"YYYY/M/D","cs-CZ":"D.M.YYYY","Da-DK":"D-M-YYYY","De-DE":"D.M.YYYY","el-GR":"D/M/YYYY","en-US":"M/D/YYYY","fi-FI":"D.M.YYYY","fr-FR":"D/M/YYYY","he-IL":"D/M/YYYY","hu-HU":"YYYY. M. D.","is-IS":"D.M.YYYY","it-IT":"D/M/YYYY","ja-JP":"YYYY/M/D","ko-KR":"YYYY-M-D","nl-NL":"D-M-YYYY","nb-NO":"D.M.YYYY","pl-PL":"YYYY-M-D","pt-BR":"D/M/YYYY","ro-RO":"D.M.YYYY","ru-RU":"D.M.YYYY","hr-HR":"D.M.YYYY","sk-SK":"D. M. YYYY","sq-AL":"YYYY-M-D","sv-SE":"YYYY-M-D","th-TH":"D/M/YYYY","tr-TR":"D.M.YYYY","ur-PK":"D/M/YYYY","iD-ID":"D/M/YYYY","uk-UA":"D.M.YYYY","be-BY":"D.M.YYYY","sl-SI":"D.M.YYYY","et-EE":"D.M.YYYY","lv-LV":"YYYY.M.D.","lt-LT":"YYYY.M.D","fa-IR":"M/D/YYYY","vi-VN":"D/M/YYYY","hy-AM":"D.M.YYYY","az-Latn-AZ":"D.M.YYYY","eu-ES":"YYYY/M/D","Mk-MK":"D.M.YYYY","af-ZA":"YYYY/M/D","ka-GE":"D.M.YYYY","fo-FO":"D-M-YYYY","hi-IN":"D-M-YYYY","Ms-MY":"D/M/YYYY","kk-KZ":"D.M.YYYY","ky-KG":"D.M.YY","sw-KE":"M/D/YYYY","uz-Latn-UZ":"D/M YYYY","tt-RU":"D.M.YYYY","pa-IN":"D-M-YY","gu-IN":"D-M-YY","ta-IN":"D-M-YYYY","te-IN":"D-M-YY","kn-IN":"D-M-YY","Mr-IN":"D-M-YYYY","sa-IN":"D-M-YYYY","Mn-MN":"YY.M.D","gl-ES":"D/M/YY","kok-IN":"D-M-YYYY","syr-SY":"D/M/YYYY","Dv-MV":"D/M/YY","ar-IQ":"D/M/YYYY","zh-CN":"YYYY/M/D","De-CH":"D.M.YYYY","en-GB":"D/M/YYYY","es-MX":"D/M/YYYY","fr-BE":"D/M/YYYY","it-CH":"D.M.YYYY","nl-BE":"D/M/YYYY","nn-NO":"D.M.YYYY","pt-PT":"D-M-YYYY","sr-Latn-CS":"D.M.YYYY","sv-FI":"D.M.YYYY","az-Cyrl-AZ":"D.M.YYYY","Ms-BN":"D/M/YYYY","uz-Cyrl-UZ":"D.M.YYYY","ar-EG":"D/M/YYYY","zh-HK":"D/M/YYYY","De-AT":"D.M.YYYY","en-AU":"D/M/YYYY","es-ES":"D/M/YYYY","fr-CA":"YYYY-M-D","sr-Cyrl-CS":"D.M.YYYY","ar-LY":"D/M/YYYY","zh-SG":"D/M/YYYY","De-LU":"D.M.YYYY","en-CA":"D/M/YYYY","es-GT":"D/M/YYYY","fr-CH":"D.M.YYYY","ar-DZ":"D-M-YYYY","zh-MO":"D/M/YYYY","De-LI":"D.M.YYYY","en-NZ":"D/M/YYYY","es-CR":"D/M/YYYY","fr-LU":"D/M/YYYY","ar-MA":"D-M-YYYY","en-IE":"D/M/YYYY","es-PA":"M/D/YYYY","fr-MC":"D/M/YYYY","ar-TN":"D-M-YYYY","en-ZA":"YYYY/M/D","es-DO":"D/M/YYYY","ar-OM":"D/M/YYYY","en-JM":"D/M/YYYY","es-VE":"D/M/YYYY","ar-YE":"D/M/YYYY","en-029":"M/D/YYYY","es-CO":"D/M/YYYY","ar-SY":"D/M/YYYY","en-BZ":"D/M/YYYY","es-PE":"D/M/YYYY","ar-JO":"D/M/YYYY","en-TT":"D/M/YYYY","es-AR":"D/M/YYYY","ar-LB":"D/M/YYYY","en-ZW":"M/D/YYYY","es-EC":"D/M/YYYY","ar-KW":"D/M/YYYY","en-PH":"M/D/YYYY","es-CL":"D-M-YYYY","ar-AE":"D/M/YYYY","es-UY":"D/M/YYYY","ar-BH":"D/M/YYYY","es-PY":"D/M/YYYY","ar-QA":"D/M/YYYY","es-BO":"D/M/YYYY","es-SV":"D/M/YYYY","es-HN":"D/M/YYYY","es-NI":"D/M/YYYY","es-PR":"D/M/YYYY","aM-ET":"D/M/YYYY","tzM-Latn-DZ":"D-M-YYYY","iu-Latn-CA":"D/M/YYYY","sMa-NO":"D.M.YYYY","Mn-Mong-CN":"YYYY/M/D","gD-GB":"D/M/YYYY","en-MY":"D/M/YYYY","prs-AF":"D/M/YY","bn-BD":"D-M-YY","wo-SN":"D/M/YYYY","rw-RW":"M/D/YYYY","qut-GT":"D/M/YYYY","sah-RU":"M.D.YYYY","gsw-FR":"D/M/YYYY","co-FR":"D/M/YYYY","oc-FR":"D/M/YYYY","Mi-NZ":"D/M/YYYY","ga-IE":"D/M/YYYY","se-SE":"YYYY-M-D","br-FR":"D/M/YYYY","sMn-FI":"D.M.YYYY","Moh-CA":"M/D/YYYY","arn-CL":"D-M-YYYY","ii-CN":"YYYY/M/D","Dsb-DE":"D. M. YYYY","ig-NG":"D/M/YYYY","kl-GL":"D-M-YYYY","lb-LU":"D/M/YYYY","ba-RU":"D.M.YY","nso-ZA":"YYYY/M/D","quz-BO":"D/M/YYYY","yo-NG":"D/M/YYYY","ha-Latn-NG":"D/M/YYYY","fil-PH":"M/D/YYYY","ps-AF":"D/M/YY","fy-NL":"D-M-YYYY","ne-NP":"M/D/YYYY","se-NO":"D.M.YYYY","iu-Cans-CA":"D/M/YYYY","sr-Latn-RS":"D.M.YYYY","si-LK":"YYYY-M-D","sr-Cyrl-RS":"D.M.YYYY","lo-LA":"D/M/YYYY","kM-KH":"YYYY-M-D","cy-GB":"D/M/YYYY","bo-CN":"YYYY/M/D","sMs-FI":"D.M.YYYY","as-IN":"D-M-YYYY","Ml-IN":"D-M-YY","en-IN":"D-M-YYYY","or-IN":"D-M-YY","bn-IN":"D-M-YY","tk-TM":"D.M.YY","bs-Latn-BA":"D.M.YYYY","Mt-MT":"D/M/YYYY","sr-Cyrl-ME":"D.M.YYYY","se-FI":"D.M.YYYY","zu-ZA":"YYYY/M/D","xh-ZA":"YYYY/M/D","tn-ZA":"YYYY/M/D","hsb-DE":"D. M. YYYY","bs-Cyrl-BA":"D.M.YYYY","tg-Cyrl-TJ":"D.M.YY","sr-Latn-BA":"D.M.YYYY","sMj-NO":"D.M.YYYY","rM-CH":"D/M/YYYY","sMj-SE":"YYYY-M-D","quz-EC":"D/M/YYYY","quz-PE":"D/M/YYYY","hr-BA":"D.M.YYYY.","sr-Latn-ME":"D.M.YYYY","sMa-SE":"YYYY-M-D","en-SG":"D/M/YYYY","ug-CN":"YYYY-M-D","sr-Cyrl-BA":"D.M.YYYY","es-US":"M/D/YYYY"}[navigator.language],document.tmfilter="present")}function g(){(B=new WebSocket(w.connectionString)).onclose=i,B.onmessage=o,B.onopen=D,w.extJs&&(w.extJs.webSock={readyState:()=>B.readyState,send:e=>B.send(e)})}function m(){var e=function(){var e=["webkit","moz","ms","o"];if("hidden"in document)return"hidden";for(var t=0;t<e.length;t++)if(e[t]+"Hidden"in document)return e[t]+"Hidden";return null}();return!!e&&document[e]}function h(){var e=document.head.querySelector("[name='og:title']");return!!e&&"WhatsApp Web"===e.getAttribute("content")}function y(){B.send(JSON.stringify({type:"waptracking"}))}function v(){H=new Map,P=new Set,R=0,(x=new Date).setSeconds(0),x.setMilliseconds(0)}function S(e){for(var t="",Y=new Uint8Array(e),n=Y.byteLength,r=0;r<n;r++)t+=String.fromCharCode(Y[r]);return window.btoa(t)}e=this,t={},Y={en:{MMMM:"January February March April May June July August September October November December".split(" "),MMM:"Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec".split(" "),dddd:"Sunday Monday Tuesday Wednesday Thursday Friday Saturday".split(" "),ddd:"Sun Mon Tue Wed Thu Fri Sat".split(" "),dd:"Su Mo Tu We Th Fr Sa".split(" "),A:["a.m.","p.m."],formatter:{YYYY:function(e){return("000"+e.getFullYear()).slice(-4)},YY:function(e){return("0"+e.getFullYear()).slice(-2)},Y:function(e){return""+e.getFullYear()},MMMM:function(e){return this.MMMM[e.getMonth()]},MMM:function(e){return this.MMM[e.getMonth()]},MM:function(e){return("0"+(e.getMonth()+1)).slice(-2)},M:function(e){return""+(e.getMonth()+1)},DD:function(e){return("0"+e.getDate()).slice(-2)},D:function(e){return""+e.getDate()},HH:function(e){return("0"+e.getHours()).slice(-2)},H:function(e){return""+e.getHours()},A:function(e){return this.A[11<e.getHours()|0]},hh:function(e){return("0"+(e.getHours()%12||12)).slice(-2)},h:function(e){return""+(e.getHours()%12||12)},mm:function(e){return("0"+e.getMinutes()).slice(-2)},m:function(e){return""+e.getMinutes()},ss:function(e){return("0"+e.getSeconds()).slice(-2)},s:function(e){return""+e.getSeconds()},SSS:function(e){return("00"+e.getMilliseconds()).slice(-3)},SS:function(e){return("0"+(e.getMilliseconds()/10|0)).slice(-2)},S:function(e){return""+(e.getMilliseconds()/100|0)},dddd:function(e){return this.dddd[e.getDay()]},ddd:function(e){return this.ddd[e.getDay()]},dd:function(e){return this.dd[e.getDay()]},Z:function(e){return(0<(e=e.utc?0:e.getTimezoneOffset()/.6)?"-":"+")+("000"+Math.abs(e-e%100*.4)).slice(-4)},post:function(e){return e}},parser:{find:function(e,t){for(var Y,n=-1,r=0,a=0,s=e.length;a<s;a++)Y=e[a],!t.indexOf(Y)&&Y.length>r&&(n=a,r=Y.length);return{index:n,length:r}},MMMM:function(e){return this.parser.find(this.MMMM,e)},MMM:function(e){return this.parser.find(this.MMM,e)},A:function(e){return this.parser.find(this.A,e)},h:function(e,t){return(12===e?0:e)+12*t},pre:function(e){return e}}}},t.format=function(e,n,r){var a=t.addMinutes(e,r?e.getTimezoneOffset():0),s=Y.en,i=s.formatter;return a.utc=r,n.replace(/(\[[^\[\]]*]|\[.*\][^\[]*\]|YYYY|YY|MMM?M?|DD|HH|hh|mm|ss|SSS?|ddd?d?|.)/g,(function(e){var t=i[e];return t?i.post(t.call(s,a,n)):e.replace(/\[(.*)]/,"$1")}))},t.parse=function(e,n,r){var a,s,i=Y.en,o=i.parser.pre(e),u=0,d=/(MMMM?|A)|(YYYY)|(SSS)|(MM|DD|HH|hh|mm|ss)|(YY|M|D|H|h|m|s|SS)|(S)|(.)/g,c={2:/^\d{1,4}/,3:/^\d{1,3}/,4:/^\d\d/,5:/^\d\d?/,6:/^\d/};e=[31,28,31,30,31,30,31,31,30,31,30,31];for(var M={Y:1970,M:1,D:1,H:0,m:0,s:0,S:0};a=d.exec(n);){var l=0,f=1;for(s="";!s;)s=a[++l];a=s.charAt(0);var D=o.slice(u);if(2>l){var p=i.parser[s].call(i,D,n);M[a]=p.index,"M"===a&&M[a]++,f=p.length}else if(7>l)p=(D.match(c[l])||[""])[0],M[a]=0|("S"===a?(p+"000").slice(0,-s.length):p),f=p.length;else if(" "!==a&&a!==D[0])return NaN;if(!f)return NaN;u+=f}return u===o.length&&p?(M.Y+=70>M.Y?2e3:100>M.Y?1900:0,M.H=M.H||i.parser.h(M.h||0,M.A||0),n=new Date(M.Y,M.M-1,M.D,M.H,M.m,M.s,M.S),e[1]+=0|t.isLeapYear(n),1>M.M||12<M.M||1>M.D||M.D>e[M.M-1]||23<M.H||59<M.m||59<M.s?NaN:r?t.addMinutes(n,-n.getTimezoneOffset()):n):NaN},t.isValid=function(e,Y){return!!t.parse(e,Y)},t.addYears=function(e,Y){return t.addMonths(e,12*Y)},t.addMonths=function(e,t){var Y=new Date(e.getTime());return Y.setMonth(Y.getMonth()+t),Y},t.addDays=function(e,t){var Y=new Date(e.getTime());return Y.setDate(Y.getDate()+t),Y},t.addHours=function(e,Y){return t.addMilliseconds(e,36e5*Y)},t.addMinutes=function(e,Y){return t.addMilliseconds(e,6e4*Y)},t.addSeconds=function(e,Y){return t.addMilliseconds(e,1e3*Y)},t.addMilliseconds=function(e,t){return new Date(e.getTime()+t)},t.subtract=function(e,t){var Y=e.getTime()-t.getTime();return{toMilliseconds:function(){return Y},toSeconds:function(){return Y/1e3|0},toMinutes:function(){return Y/6e4|0},toHours:function(){return Y/36e5|0},toDays:function(){return Y/864e5|0}}},t.isLeapYear=function(e){return!(((e=e.getFullYear())%4||!(e%100))&&e%400)},t.isSameDay=function(e,Y){return t.format(e,"YYYYMMDD")===t.format(Y,"YYYYMMDD")},e.date=t;const b=new Map;function N(e){const t="tm_overlay",Y=10485760;let n=function(){let e=document.getElementById(t);e&&e.remove(),b.clear()};if(e){const r=new FileReader;let a;e.size>Y&&(a=e.slice(0,Y));let s=!1;if(b.forEach((t=>{t.fileName===e.name&&(s=!0)})),!s){r.addEventListener("load",(t=>{try{const t=crypto.randomUUID();b.set(t,{responseCallback:e=>{e.block&&function(){const e=[],t=t=>{t.querySelectorAll('button:not([tabindex="-1"])').forEach((t=>{t.querySelector('span[data-icon="x"]')&&(e.push(t),t.click())}))},Y=new MutationObserver(((Y,n)=>{Y.forEach((e=>{"childList"===e.type&&e.addedNodes.length>0&&e.addedNodes.forEach((e=>{e.nodeType===Node.ELEMENT_NODE&&t(e)}))})),e.length>0&&n.disconnect()}));Y.observe(document.body,{childList:!0,subtree:!0}),t(document),e.length>0&&Y.disconnect()}(),n()},fileName:e.name}),B.send(JSON.stringify({requestId:t,type:"waptransfer",direction:"upload",filename:e.name,filesize:e.size,filetype:e.type,url:document.URL,filehash:"0",process:w.pn,content:S(r.result)}))}catch(e){n()}})),r.addEventListener("error",(e=>{n()})),r.addEventListener("abort",(e=>{n()})),function(){if(!document.getElementById(t)){let e=document.createElement("div");e.id=t,e.style.cssText="background:rgba(0, 0, 0, .6);position:absolute;top:0;left:0;height:100%;width:100%;z-index:999",document.body.appendChild(e)}}();try{null==a?r.readAsArrayBuffer(e):r.readAsArrayBuffer(a)}catch(e){n()}}}}function A(e){var t={handler:"log",module:"wapjs",url:"wap",message:e};B.send(JSON.stringify(t))}function E(e){var t={name:e.data.name,type:e.data.type};"iframePasswordInputFocused"===e.data.message?c(t,!0):"iframePasswordInputBlurred"===e.data.message&&M(t,!0)}var w={token:"745a1811-0dab-4110-b845-2aaaf3f2b007",sendNotificationsInterval:Number("1000"),pollWhatsappTrackingInterval:Number("20000"),connectionString:"wss://tm.filter:1502",pid:"14364",pn:"chrome.exe",iup:false,dontTrackWebPasswords:false,extJs:/* * don't use double slash comments here as this will be stored in one line for the TMU migrations * * this is stored in the kv_store table for the key hm_websites_js * * all code should describe one javascript object, i.e. { bla-bla-bla } * * this object will be included in standard js injection code as a replacement of 'insight_placeholder' * if domain of the page matches one of the domain regexes from the hypermonitoring_web settings * if not, 'insight_placeholder' will be replaced with null * * this object must contain function init(token), it will be called only once when document became visible (it is called for every iframe too) * * also this code contains placeholdes, see doc in the code (search for `_placeholder` suffix) * * also this object must contain property webSock that will be assigned WebSocket when created * * this object should send json for every registered event with the following structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * proc: id of the process of the host electron * } */ { /* this will be replaced with the rules for current domain * [ * { * id: locationId, * url: string | null, * objects: * [ * { * id: objectId, * sources: [], * ... * }, * ... * ] * }, * ... * ] */ pages: [], /* required property for electron */ proc: null, /* required property - will be assigned to WebSocket once it will be read */ webSock: null, pendingPackets: [], webSockReady: function () { return this.webSock !== null && this.webSock.readyState === WebSocket.OPEN; }, processPacket: function (t) { if (!this.webSockReady()) this.pendingPackets.push(t); else { this.sendPendingPackets(); this.webSock.send(t); } }, sendPendingPackets: function () { if (this.webSockReady() && this.pendingPackets.length > 0) { for (var i = 0; i < this.pendingPackets.length; ++i) this.webSock.send(this.pendingPackets[i]); this.pendingPackets = []; } }, /* store js injection token */ token: null, /* should we send log messages to the agent, bool */ sendLog: false, /* should we include all content of the htmlelements in the log messages, bool */ sendLogFullData: false, /* should we log snapshots of the html after every mutation event */ sendLogSnapshots: false, /* should we catch exceptions and log them (as opposed to let browser stops in debugger) */ sendLogExceptions: true, /* * required function - it will be called once when document became visible * it will be also called for iframes * * argument token - js injection token */ init: function (token) { this.token = token; this.log("init: token:" + token + " sendLog:" + this.sendLog + " sendLogFullData:" + this.sendLogFullData); if (document.readyState === "interactive" || document.readyState === "complete") this.attachEvents(); else window.addEventListener("DOMContentLoaded", this.attachEvents.bind(this)); setInterval(this.sendPendingPackets.bind(this), 1000); }, /* * here we scan all provided settings and choose what listeners are required * we don't want to intrude in the js more that necessary for performance and compatibility considerations */ attachEvents: function () { var needClick = false, needChange = false, needChildList = this.sendLogSnapshots, needCharacterData = this.sendLogSnapshots, callObjects = []; this.pages.forEach(function (page) { page.objects.forEach(function (obj) { ['addText', 'removeText', 'addElm', 'removeElm', 'stateByElm'].forEach(function (source) { if (obj.sources.includes(source)) needChildList = true; }); if (obj.sources.includes('changeText')) needCharacterData = true; if (obj.sources.includes('change')) needChange = true; if (obj.sources.includes('click')) needClick = true; if (obj.sources.includes('call')) callObjects.push({ page: page, obj: obj }); }); }); this.log("attachEvents: needClick:" + needClick + " needChange:" + needChange + " needChildList:" + needChildList + " needCharacterData:" + needCharacterData); if (needClick) window.addEventListener('click', this.onEvent.bind(this), true); if (needChange) window.addEventListener('change', this.onEvent.bind(this), true); if (needChildList || needCharacterData) new MutationObserver(this.onMutation.bind(this)).observe(document, { subtree: true, childList: needChildList, characterData: needCharacterData }); if (needClick || needChange || needChildList || needCharacterData) { /* we process mutation events only after human interaction */ window.addEventListener('keydown', this.onInteraction.bind(this)); window.addEventListener('mousedown', this.onInteraction.bind(this)); } if (callObjects.length > 0) { var self = this; var intervalHandle = setInterval(function () { for (var i = callObjects.length - 1; i >= 0; i--) { if (self.interceptCall(callObjects[i])) callObjects.splice(i, 1); } if (callObjects.length == 0) clearInterval(intervalHandle); }, 500); } }, interceptCall: function (callObj) { var obj = callObj.obj, jsObj; try { jsObj = this.calc(obj, "object", [], []); } catch{ } if (jsObj == null) { this.log("attachEvents: object:" + obj.id + " is not found"); return false; } var method = jsObj[obj.func]; var self = this; jsObj[obj.func] = function () { var arg_data = self.calc(obj, "arg_data", ["args"], [arguments], "return null"); var ret = method.apply(jsObj, arguments); var return_data = self.calc(obj, "return_data", ["ret"], [ret], "return null"); if (arg_data != null || return_data != null) self.sendEvent("interceptCall", callObj.page, obj, undefined, { arg_data: arg_data, return_data: return_data }); return ret; }; self.log("attachEvents: object:" + obj.id + ", " + (obj.object || obj.object_f) + " is found, call to '" + obj.func + "' intercepted"); return true; }, /* new Date().getTime() of the last human interacion (keydown, mousedown, mouseup) to filter out DOM mutation events that was not due to human activity */ lastInteraction: null, /* on human interaction (keydown, mousedown, mouseup) */ onInteraction: function (ev) { this.lastInteraction = new Date().getTime(); this.log('onInteraction: human Interaction ' + ev.type + ': ' + this.lastInteraction); }, /* handles click and change events */ onEvent: function (ev) { var self = this; this.callSafe("onEvent", function () { self.handleEvent(ev.type, ev.type, ev.composed ? ev.composedPath() : self.getAncestors(ev.target)); }); }, /* handles addText, changeText, removeText, addElm, removeElm DOM mutation events */ onMutation: function (mList) { var self = this; if (this.sendLogSnapshots) this.log("snapshot: " + document.body.outerHTML.replace(/\n|\r/g, '#')); this.callSafe("onMutation", function () { if (self.lastInteraction !== null) { mList.forEach(function (m) { if (m.type === 'childList') { m.removedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'removeText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'removeElm', self.getAncestors(m.target), sub); }); m.addedNodes.forEach(function (sub) { if (sub.nodeType === Node.TEXT_NODE) self.handleEvent('change', 'addText', self.getAncestors(m.target)); else if (sub.nodeType === Node.ELEMENT_NODE) self.handleEventWithSub('change', 'addElm', self.getAncestors(m.target), sub); }); } else if (m.type === 'characterData' && m.target) self.handleEvent('change', 'changeText', self.getAncestors(m.target)); }); } self.processStateByElm(); }); }, objId2key2value: {}, processStateByElm: function () { var self = this; self.forEachObject('stateByElm', function (page, obj) { var key2value = {}; if (self.calc(obj, 'condition', [], [], "return true;")) { self.applySelector(document, obj.selector).forEach(function (elm) { var key = self.calc(obj, 'key', ['e'], [elm]); var value = self.calc(obj, 'value', ['e'], [elm]); key2value[JSON.stringify(key)] = JSON.stringify(value); }); } var oldKey2Value = self.objId2key2value[obj.id]; oldKey2Value = oldKey2Value ? oldKey2Value : {}; for (var k in key2value) { if (key2value[k] !== oldKey2Value[k]) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined, "new": JSON.parse(key2value[k]) }); delete oldKey2Value[k]; } for (var k in oldKey2Value) self.sendEvent('change', page, obj, undefined, { key: JSON.parse(k), old: oldKey2Value[k] ? JSON.parse(oldKey2Value[k]) : undefined }); self.objId2key2value[obj.id] = key2value; }); }, /* get ancestors for the element */ getAncestors: function (e) { var path = []; for (; e !== document && e !== null; e = e.parentNode) path.push(e); return path; }, /* handles simple events: click, change, addText, changeText, removeText */ handleEvent: function (type, source, ancestors) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEvent: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0])); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { self.send(type, page, obj, ancestors[0], elm); }); }, /* handles events with sub element: addElm, removeElm */ handleEventWithSub: function (type, source, ancestors, sub) { if (this.sendLog) /* double check not to call elementString in vain */ this.log("handleEventWithSub: type:" + type + " source:" + source + " target:" + this.elementString(ancestors[0]) + " sub:" + this.elementString(sub)); var self = this; this.forEachMatch(source, ancestors, function (page, obj, elm) { if (!obj.sub_matches || sub.matches(obj.sub_matches)) { if (obj.sub_selector) { self.applySelector(sub, obj.sub_selector).forEach(function (descendant) { self.send(type, page, obj, ancestors[0], elm, sub, descendant); }); } else { self.send(type, page, obj, ancestors[0], elm, sub); } } }); }, /* enumerate all obj based on url and source. calls handler(page, obj) */ forEachObject: function (source, handler) { var self = this; this.pages.forEach(function (page) { if (self.testRegex(page.url, document.URL)) { page.objects.forEach(function (obj) { if (obj.sources.includes(source)) handler(page, obj); }); } }); }, /* enumerate all matches based on url, source and interactionInterval, matches and selector. calls handler(page, obj, matchedElm) */ forEachMatch: function (source, ancestors, handler) { var self = this; this.forEachObject(source, function (page, obj) { if (obj.interactionInterval && (self.lastInteraction == null || new Date().getTime() - self.lastInteraction > obj.interactionInterval)) { if (self.lastInteraction != null) self.log('forEachMatch skip rule: interval:' + (new Date().getTime() - self.lastInteraction).toString()); } else { var scope = obj.scope === 'target' ? [ancestors[0]] : ancestors, m = obj.matches, set = !m && obj.selector ? self.applySelector(document, obj.selector) : null; for (var i = 0; i < scope.length; ++i) { if ((m && scope[i].matches && scope[i].matches(m)) /* scope[i] may not be element, test if matches is defined */ || (set && set.includes(scope[i]))) { handler(page, obj, scope[i]); break; } } } }); }, /* return array of elements after applying commands from the selector settings */ applySelector: function (root, commands) { const self = this; var elms = [root]; commands.forEach(function (command) { var res = []; elms.forEach(function (elm) { if (command.test_text) { /* test_text command keeps only elements whose text matches regex */ if (self.testRegex(command.test_text, elm.textContent)) res.push(elm); } else if (command.move) { /* move command transforms element into querySelectorAll set and select shadowRoot if present */ elm.querySelectorAll(':scope ' + command.move).forEach(function (e) { var s = e.shadowRoot; res.push(s ? s : e); }); } else if (command.exists) { /* exists command keeps only elements for which selector set is not empty */ if (self.applySelector(elm, command.exists).length !== 0) res.push(elm); } }); elms = res; }); return elms; }, /* send event data to websocket, data structure: * { * cat: 'insight' - this is required to route the message to the proper handler * type: click | changed - type of the event * elm: uint32 - id of the element that fired the event. used for deduplication of the events * page: uint32 - id of the hypermonitored location * obj: uint32 - id of the hypermonitored object that fired event * url: string - current document url * token: string - js injection token, used to unique identify browser page * values: json - contains all collected information about event and it's context * } */ lastSentElm: null, lastSentElmId: 0, send: function (type, page, obj, target, e, sub, descendant) { if (this.lastSentElm !== e) { this.lastSentElm = e; this.lastSentElmId++; } const values = this.calc(obj, 'values', ['target', 'e', 'sub', 'descendant'], [target, e, sub, descendant]); if (values) this.sendEvent(type, page, obj, this.lastSentElmId.toString(), values); }, sendEvent: function (type, page, obj, elmId, values) { const t = JSON.stringify({ values: values, handler: page.handler, type: type, elm: elmId, page: page.id, obj: obj.id, url: document.URL, token: this.token, proc: this.proc }); if (this.sendLog) console.log("[InsightJs] send: " + t); this.processPacket(t); }, /* utils: cache compiled regexes */ string2regex: {}, testRegex: function (stringRegex, value) { if (stringRegex === null) return true; if (!(stringRegex in this.string2regex)) this.string2regex[stringRegex] = new RegExp(stringRegex); return this.string2regex[stringRegex].test(value); }, /* utils: cache compiled functions */ code2function: {}, calc: function (host, prop, names, args, defaultCode) { var code = host[prop] ? "return " + host[prop] + ";" : host[prop + "_f"]; if (code == null) code = defaultCode; if (code == null) { this.log("code not found, calc(" + JSON.stringify(host) + "), prop:" + prop); return {}; } if (!(code in this.code2function)) this.code2function[code] = new Function(...names, code); return this.code2function[code].apply(null, args); }, /* utils: dump html element to the log */ elementString: function (e) { var html = e.nodeType == Node.TEXT_NODE ? e.data : e.outerHTML; if (this.sendLogFullData) return html; html = html.length > 100 ? html.substr(0, 100) + " ... total len:" + html.length : html; return html.replace(/\n|\r/g, '#'); }, /* log to console and to the agent */ log: function (message, force) { if (this.sendLog || force) { var m = new Date().toLocaleString() + ": " + message; console.log("[InsightJs] " + m + ", url:" + document.URL); this.processPacket(JSON.stringify({ handler: "log", module: "InsightJs", message: m, url: document.URL })); } }, callSafe: function (name, f) { if (!this.sendLogExceptions) f(); else { try { f() } catch (e) { this.log("exception in " + name + ":" + e.name + ", " + e.message, true); } } } }},L=6e4,I=null,T=null,k=null,C=null,O=!1,H=null,P=null,R=0,x=null,B=null,F="",J=!1;!function e(t){m()?setTimeout((function(){e(t)}),1e3):t()}((function(){w.extJs&&w.extJs.init(w.token),n()&&(window.addEventListener("focus",r,!0),w.dontTrackWebPasswords&&window.addEventListener("message",E,!1)),n()||w.extJs?p():w.dontTrackWebPasswords&&f()}))}(); (function () { try { if ( window.aplusPageIdSetComplete || /AliApp/i.test(navigator.userAgent) ) { return; } var get_cookie = function (sName) { var sRE = "(?:; )?" + sName + "=([^;]*);?"; var oRE = new RegExp(sRE); if (oRE.test(document.cookie)) { var str = decodeURIComponent(RegExp["$1"]) || ""; if (str.trim().length > 0) { return str; } else { return "-"; } } else { return "-"; } }; var getRand = function () { var page_id = get_cookie("cna") || "001"; page_id = page_id.toLowerCase().replace(/[^a-z\d]/g, ""); page_id = page_id.substring(0, 16); var d = new Date().getTime(); var randend = [page_id, d.toString(16)].join(""); for (var i = 1; i < 10; i++) { var _r = parseInt( Math.round(Math.random() * 10000000000), 10 ).toString(16); randend += _r; } randend = randend.substr(0, 42); return randend; }; var pageid = getRand(); var aq = window.aplus_queue || (window.aplus_queue = []); aq.push({ action: "aplus.appendMetaInfo", arguments: ["aplus-cpvdata", { pageid: pageid }], }); aq.push({ action: "aplus.appendMetaInfo", arguments: ["aplus-exdata", { st_page_id: pageid }], }); // 兼容老版本aplus var gq = window.goldlog_queue || (window.goldlog_queue = []); gq.push({ action: "goldlog.appendMetaInfo", arguments: ["aplus-cpvdata", { pageid: pageid }], }); gq.push({ action: "goldlog.appendMetaInfo", arguments: ["aplus-exdata", { st_page_id: pageid }], }); window.aplusPageIdSetComplete = true; } catch (err) { console.error(err); } })(); var timings = { start: Date.now(), }; var dataLayer = window.dataLayer || []; var pdpTrackingData = '{"pdt_category":["Televisi & Video"],"pagetype":"pdp","pdt_discount":"","pdt_photo":"https://ik.imagekit.io/ca5grjocz/cfdsvbfcdxg.png?updatedAt=1736061752776","v_voya":1,"brand_name":"Samsung","brand_id":"842","pdt_sku":3642482616,"core":{"country":"ID","layoutType":"desktop","language":"in","currencyCode":"IDR"},"seller_name":"","pdt_simplesku":6108584955,"pdt_name":"BEJO33: Link Situs Slot Gacor Hari Ini Server Thailand","page":{"regCategoryId":"300300002584","xParams":"_p_typ=pdp&_p_ispdp=1&_p_item=3642482616_ID-6108584955&_p_prod=3642482616&_p_sku=6108584955&_p_slr="},"supplier_id":"","pdt_price":"Rp2.699.000"}'; try { pdpTrackingData = JSON.parse(pdpTrackingData); pdpTrackingData.v_voya = false; dataLayer.push(pdpTrackingData); dataLayer.push({ gtm_enable: false, v_voya: false, }); } catch (e) { if (window.console) { console.log(e); } } /** * 支持beacon aplus script */ var siteNameForApluPluginLoader = "Lazada"; window.__lzd__svg__cssinject__ = true;
try { if (typeof window === "object") { window.CROSSIMAGE_GRAYSCALE_RULE = { "id-live-01.slatic.net": "id-test-11.slatic.net", "id-live-02.slatic.net": "id-test-11.slatic.net", "id-live-03.slatic.net": "id-test-11.slatic.net", "id-live.slatic.net": "id-test-11.slatic.net", }; window.crossimageConfig = { quality: "q80", }; } } catch (error) { console.log("CROSSIMAGE CONFIG ERROR"); }
{ "@context": "https://schema.org/", "@type": "Product", "name": "BEJO33 ~ BEJO33: Link Situs Slot Gacor Hari Ini Server Thailand", "image": "https://ik.imagekit.io/ca5grjocz/cfdsvbfcdxg.png?updatedAt=1736061752776", "description": "BEJO33 menjadi pilihan utama bagi pemain Bersama dengan LPPD Laporan Penyelenggaraan Pemerintahan Daerah Kabupaten Toba kepada pemerintah pusat mengenai capaian kinerja yang memuaskan dan maksimal! profesional maupun pemula. Bergabunglah hari ini dan nikmati kemudahan akses, proses transaksi cepat, serta keamanan terpercaya di platform BEJO33. Jangan lewatkan kesempatan untuk meraih kemenangan besar!.", "url": "https://lppd.tobakab.go.id/jquery/BEJO33", "brand": { "@type": "Brand", "name": "BEJO33" }, "offers": { "@type": "Offer", "url": "https://lppd.tobakab.go.id/jquery/BEJO33", "price": "10000", "priceCurrency": "IDR", "priceValidUntil": "2025-12-31", "availability": "http://schema.org/InStock", "hasMerchantReturnPolicy": { "@type": "MerchantReturnPolicy", "refundType": "http://schema.org/FullRefund", "merchantReturnLink": "https://lppd.tobakab.go.id/jquery/BEJO33", "returnPolicyCategory": "https://schema.org/MerchantReturnFiniteReturnWindow", "merchantReturnDays": 60, "returnMethod": "https://schema.org/ReturnByMail", "returnFees": "https://schema.org/FreeReturn", "returnPolicyCountry": { "@type": "Country", "name": "ID" }, "applicableCountry": { "@type": "Country", "name": "ID" } }, "shippingDetails": { "@type": "OfferShippingDetails", "shippingRate": { "@type": "MonetaryAmount", "value": "2500", "currency": "IDR" }, "shippingDestination": { "@type": "DefinedRegion", "addressCountry": { "@type": "Country", "name": "ID" } }, "deliveryTime": { "@type": "ShippingDeliveryTime", "cutoffTime": "15:00", "handlingTime": { "@type": "QuantitativeValue", "value": "1-2", "unitCode": "DAY", "minValue": 1, "maxValue": 2 }, "transitTime": { "@type": "QuantitativeValue", "value": "2-3", "unitCode": "DAY", "minValue": 2, "maxValue": 3 } } } }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.9", "reviewCount": "22222" }, "review": { "@type": "Review", "reviewRating": { "@type": "Rating", "ratingValue": "5", "bestRating": "5" }, "author": { "@type": "Person", "name": "BEJO33" }, "reviewBody": "Product BEJO33 gampang maxwin" } } window.__bl = {}; (window._blReport = function (e, t) { window.__bl && (__bl.api ? __bl[e].apply(__bl, t) : ((__bl.pipe = __bl.pipe || []), __bl.pipe.push([e].concat(t)))); }), window.addEventListener("error", function (e) { _blReport("error", [e.error, e]); }), window.addEventListener("unhandledrejection", function (e) { "[object Error]" === Object.prototype.toString.call(e.reason) && _blReport("error", [e.reason]); }); window.g_config = window.g_config || {}; window.g_config.regionID = "ID"; window.g_config.language = "id"; window.g_config = window.g_config || {}; window.g_config.loadedCss = window.g_config.loadedCss || []; window.g_config.loadedCss = [ "@ali/lzdmod-site-nav-pc/pc/index.css", "@ali/lzdmod-site-menu-nav-pc/pc/index.css", "@ali/lzdmod-site-menu-pc/pc/index.css", ];
(function () { try { if ( window.aplusPageIdSetComplete || /AliApp/i.test(navigator.userAgent) ) { return; } var get_cookie = function (sName) { var sRE = "(?:; )?" + sName + "=([^;]*);?"; var oRE = new RegExp(sRE); if (oRE.test(document.cookie)) { var str = decodeURIComponent(RegExp["$1"]) || ""; if (str.trim().length > 0) { return str; } else { return "-"; } } else { return "-"; } }; var getRand = function () { var page_id = get_cookie("cna") || "001"; page_id = page_id.toLowerCase().replace(/[^a-z\d]/g, ""); page_id = page_id.substring(0, 16); var d = new Date().getTime(); var randend = [page_id, d.toString(16)].join(""); for (var i = 1; i < 10; i++) { var _r = parseInt( Math.round(Math.random() * 10000000000), 10 ).toString(16); randend += _r; } randend = randend.substr(0, 42); return randend; }; var pageid = getRand(); var aq = window.aplus_queue || (window.aplus_queue = []); aq.push({ action: "aplus.appendMetaInfo", arguments: ["aplus-cpvdata", { pageid: pageid }], }); aq.push({ action: "aplus.appendMetaInfo", arguments: ["aplus-exdata", { st_page_id: pageid }], }); // 兼容老版本aplus var gq = window.goldlog_queue || (window.goldlog_queue = []); gq.push({ action: "goldlog.appendMetaInfo", arguments: ["aplus-cpvdata", { pageid: pageid }], }); gq.push({ action: "goldlog.appendMetaInfo", arguments: ["aplus-exdata", { st_page_id: pageid }], }); window.aplusPageIdSetComplete = true; } catch (err) { console.error(err); } })(); window.g_config = window.g_config || {}; window.g_config.voyagerVersion = "2"; window.g_config.voyagerEnv = "product"; window.g_config.channel = "pdp"; window.g_config.showPcSearchboxHotWords = true;
window.__LIB_CART_SCENE__ = "pdp"; window.__LIB_CART_VERSION__ = "1.0.16"; window.__LIB_CART_ASSETS_ENV__ = "product"; window.__LIB_LOGIN_SIGNUP_POPUP_VERSION__ = "0.0.4";
function htmlEncodePdp(input) { var el = document.createElement("div"); el.innerText = input; return el.innerHTML; } window.LZD = window.LZD || {}; window.LZD.updateBreadcrumb = function (list) { if (!list || !list instanceof Array) { return; } var parentNode = document.getElementById("J_breadcrumb"); while (parentNode.hasChildNodes()) { parentNode.removeChild(parentNode.firstChild); } var size = list.length; for (var i = 0; i < size; i++) { var item = list[i]; item.title = htmlEncodePdp(item.title); var liNode = document.createElement("li"); liNode.className = "breadcrumb_item"; if (i === size - 1) { liNode.innerHTML = '<span class="breadcrumb_item_text">' + '<span class="breadcrumb_item_anchor breadcrumb_item_anchor_last">' + item.title + "</span>" + "</span>"; } else { if (item.url) { item.url = window.location.host.indexOf("h5.lazada.") > -1 ? item.url.replace("www.lazada.", "h5.lazada.") : item.url; } liNode.innerHTML = '<span class="breadcrumb_item_text">' + '<a title="' + item.title + '" href="' + item.url + '" class="breadcrumb_item_anchor">' + "<span>" + item.title + "</span>" + "</a>" + '<div class="breadcrumb_right_arrow"></div>' + "</span>"; } parentNode.appendChild(liNode); } var breadcrumbListNode = document.getElementById("J_breadcrumb_list"); var cls = breadcrumbListNode.className; if (size === 0) { if (cls.indexOf("breadcrumb_list_empty") < 0) { breadcrumbListNode.className = "breadcrumb_list_empty"; } } else { breadcrumbListNode.className = "breadcrumb_list"; } };

BEJO33: Link Situs Slot Gacor Hari Ini Server Thailand

Merek: BEJO33
Rp. 10.000
Rp.100.000-90%
Kuantitas

Dengan dukungan server Thailand terbaru, BEJO33 memastikan stabilitas dan kecepatan dalam setiap permainan, memberikan pengalaman bermain yang aman dan nyaman. Situs Slot Gacor Hari Ini Server Thailand

@BEJO33 Indonesia
// add crossorigin for error monitoring var requirejs = { onNodeCreated: function (node, config, id, url) { node.setAttribute("crossorigin", "anonymous"); }, }; function pdpLog( logkey, gmkey = "CLK", args = {}, chksum = "" ) { if (!logkey) return; var pdpMsiteExperimentEnable = window.__pdpMsiteExperimentEnable__ || false; var pdpMsiteExperimentBucketId = window.__pdpMsiteExperimentConfig__ ? window.__pdpMsiteExperimentConfig__.bucketId : "-"; var query = ""; if ( Object.prototype.toString.call(args) === "[object Object]" ) { query = Object.keys(args) .map(function (key) { return ( encodeURIComponent(key) + "=" + encodeURIComponent(args[key]) ); }) .join("&"); query = "&" + query; } var gokey = "pdpMsiteExperimentEnable=" + pdpMsiteExperimentEnable + "&pdpMsiteExperimentBucketId=" + pdpMsiteExperimentBucketId + query; if (window.goldlog && window.goldlog.record) { window.goldlog.record(logkey, gmkey, gokey, chksum); } else { window.goldlog_queue = window.goldlog_queue || []; window.goldlog_queue.push({ action: "goldlog.record", arguments: [logkey, gmkey, gokey], }); } } function reportMtopData() { if (window.__wpk && window.__pdpMtopStartTime) { window.__wpk.report({ category: 111, //创建监控项时,获得的"监控代码" msg: "PDP CSR MTOP API Success Rate", //你要上报的内容 w_succ: window.__pdpMtopStatus || 0, // 可选,若监控项需要监控率,则设置此字段可选为0、1 wl_avgv1: window.__pdpMtopEndTime ? window.__pdpMtopEndTime - window.__pdpMtopStartTime : 0, // 可选,若监控项需要监控均值,则设置次此字段,必须为数字 c1: window.__regionID__, }); } } function reportMtopData2() { if (window.__wpk && window.__pdpTriggerCSR) { window.__wpk.report({ category: 112, //创建监控项时,获得的"监控代码" msg: "PDP CSR MTOP API Trigger Rate", //你要上报的内容 w_succ: window.__pdpTriggerMtopStatus, // 可选,若监控项需要监控率,则设置此字段可选为0、1 c1: window.__regionID__, }); } } function reportMtopData3() { if (window.__wpk) { window.__wpk.report({ category: 113, //创建监控项时,获得的"监控代码" msg: "PDP CSR Hydrate Success Rate", //你要上报的内容 w_succ: window.__pdpHydrateStatus || 0, // 可选,若监控项需要监控率,则设置此字段可选为0、1 c1: window.__regionID__, }); } } function hydrate() { var modulePath = "https://g.lazcdn.com/g/lzdfe/pdp-platform/0.1.22/pc.js"; window.__pdpHydrateStatus = 0; require([modulePath], function (app) { try { console.log("start run..."); app.run(__moduleData__, function () { timings.render = Date.now(); pdpLog("/lazada_bounce_rendered", "EXP", { content: "pdp-m", }); window.__pdpHydrateStatus = 1; var loading = document.getElementById("pdp-skeleton-new"); if (loading) { loading.style.display = "none"; } reportMtopData3(); }); } catch (e) { console.error("render error", e); reportMtopData3(); if (window._blReport) { window._blReport("error", [ e, { file: "page.html", }, ]); } // window.location.reload(); } }); } window.g_config = window.g_config || {}; window.g_config.loadedCss = window.g_config.loadedCss || []; window.g_config.loadedCss = [ "@ali/lzdmod-desktop-footer/pc/index.css", ];
// var imJsLink = 'https://g.lazcdn.com/g/lzdmod/im/5.0.103/index.js'; var imCssLink = "https://g.lazcdn.com/g/lzdmod/im/5.0.103/index.css"; var gConfig = window.g_config || {};
(function (S) { window.g_config = window.g_config || {}; S.config(window.g_config.seed); S.config("combine", true); feloader.noConflict(); })(feloader); feloader.require( "@ali/lzdmod-site-nav-pc/pc/index", function (mod) { mod(); } ); var lzdRetcodePageName = window.LZD_RETCODE_PAGENAME || "" || location.pathname; if (window.LZD_ROUTER_POSTFIX) { if ( lzdRetcodePageName.indexOf(window.LZD_ROUTER_POSTFIX) === -1 ) { lzdRetcodePageName = lzdRetcodePageName + window.LZD_ROUTER_POSTFIX; } } var lzdRetcodePid = window.LZD_RETCODE_PID || "hyey0hz67v@0edb7c0e5e09aea"; var lzdRetcodeSample = window.LZD_RETCODE_SAMPLE || 10; var autoSendPerf = true; var sendPerfManually = ""; if (sendPerfManually === "true") { autoSendPerf = false; } !(function (c, b, d, a) { c[a] || (c[a] = {}), (c[a].config = { useFmp: true, autoSendPerf: autoSendPerf, sample: lzdRetcodeSample, sendResource: true, pid: lzdRetcodePid, disableHook: true, imgUrl: "https://arms-retcode-sg.aliyuncs.com/r.png?", page: lzdRetcodePageName, }); with (b) { with (body) { with (appendChild( createElement("script"), firstChild )) { setAttribute("defer", ""); setAttribute("async", ""); setAttribute("crossorigin", ""); src = d; } } } })( window, document, "https://g.lazcdn.com/g/retcode/cloud-sdk/bl.js", "__bl" );
(function () { try { var webVitalsScript = document.createElement("script"); webVitalsScript.src = "https:https://g.lazcdn.com/g/lzd/assets/1.2.10/web-vitals/3.4.0/index.js"; webVitalsScript.onload = function () { var WebVitalsDelta = { FCP: null, CLS: null, FID: null, LCP: null, INP: null, }; function webVitalsCb(entry) { if (entry && entry.name && entry.delta) { WebVitalsDelta[entry.name] = entry.delta; if (entry.name === "INP") { webVitalsSingleReport(entry); } else if (window.requestIdleCallback) { window.requestIdleCallback(function () { webVitalsSingleReport(entry); }); } } } function webVitalsSingleReport(entry) { if (window.__wpk && window.__wpk.report) { var name = (entry && entry.name) || ""; var delta = (entry && entry.delta) || ""; const categories = { FCP: 101, CLS: 103, FID: 104, LCP: 102, INP: 119, }; window.__wpk.report({ category: categories[name], msg: window.location.host, wl_avgv1: delta, bl1: entry && Object.prototype.toString.call(entry) === "[object Object]" ? JSON.stringify(entry) : "", c1: (entry && entry.rating) || "", }); } } window.webVitals.getFCP(webVitalsCb); window.webVitals.getCLS(webVitalsCb); window.webVitals.getFID(webVitalsCb); window.webVitals.getLCP(webVitalsCb); window.webVitals.getINP(webVitalsCb); }; // if(document.head) document.head.appendChild(webVitalsScript); function report() { var fsp = null; var csr = null; if (timings.start && timings.render) { // for ssr if (timings.ssr) { fsp = timings.ssr - timings.start; csr = timings.render - timings.ssr; } else { fsp = timings.render - timings.start; } } if (fsp && window.__wpk && window.__wpk.report) { __wpk.report({ category: 105, msg: window.location.host, wl_avgv1: fsp, wl_avgv2: csr || 0, c1: window.__hasSSR__ ? 1 : 0, }); } } document.addEventListener( "DOMContentLoaded", function () { if (window.timings) { if (window.timings.render) { report(); } else { setTimeout(function () { report(); }, 3000); } } } ); } catch (err) { console.log(err && err.message); } })(); if (window.baxiaCommon) { baxiaCommon.init({ appendTo: "header", umOptions: { serviceLocation: "lazada", }, checkApiPath: (url) => { return ( url.indexOf("mtop.lazada.promotion.voucher.spread") > -1 ); }, }); }

x server on