dmstern / likers-blocker

A browser extension to block likers, retweeters, list members and Twitter ads and share your block lists with others. - say NO to hate speech!
https://dmstern.github.io/likers-blocker/
GNU General Public License v3.0
356 stars 17 forks source link

Uncaught (in promise) Error: CSRF or Authorization not set #159

Open affshinr opened 1 year ago

affshinr commented 1 year ago

!function(t){"use strict";function e(t,e,i,s){return new(i||(i=Promise))((function(n,o){function r(t){try{c(s.next(t))}catch(t){o(t)}}function l(t){try{c(s.throw(t))}catch(t){o(t)}}function c(t){var e;t.done?n(t.value):(e=t.value,e instanceof i?e:new i((function(t){t(e)}))).then(r,l)}c((s=s.apply(t,e||[])).next())}))}function i(i=!0){return e(this,void 0,void 0,(function(){const e=(yield t.tabs.query({currentWindow:!0,active:i})).reverse().find((t=>t.url.includes("twitter.com")));return console.debug("found twitterTab: ",e),e}))}var s;!function(t){t.getUserInfo="getUserInfo",t.queueUpdate="queueUpdate",t.blockSpeedUpdate="blockSpeedUpdate",t.block="block",t.clickLogin="clickLogin",t.nextBatch="nextBatch",t.toggleAdBlocker="toggleAdBlocker",t.login="login"}(s||(s={}));class n{static sendNextBatch(i){return e(this,void 0,void 0,(function(){const{nextBatchFromStorage:e}=i,n={action:s.nextBatch,nextBatchFromStorage:e};try{return yield t.runtime.sendMessage(n)}catch(t){this.log(n,t)}}))}static sendBlock(i){return e(this,void 0,void 0,(function(){const{success:e,status:n}=i,o={action:s.block,success:e,status:n};try{yield t.runtime.sendMessage(o)}catch(t){this.log(o,t)}}))}static sendBlockSpeedUpdate(){return e(this,void 0,void 0,(function(){const e={action:s.blockSpeedUpdate};try{yield t.runtime.sendMessage(e)}catch(t){this.log(e,t)}}))}static sendGetUserInfo(n){return e(this,void 0,void 0,(function(){n||(n=yield i());const e={action:s.getUserInfo};if(n)try{return t.tabs.sendMessage(n.id,e)}catch(t){this.log(e,t)}}))}static sendToggleAdBlocker(n,o){return e(this,void 0,void 0,(function(){o||(o=yield i(!1));const e={action:s.toggleAdBlocker,shouldAdBlockerBeActive:n};if(o)try{return t.tabs.sendMessage(o.id,e)}catch(t){this.log(e,t)}}))}static sendClickLogin(){return e(this,void 0,void 0,(function(){const e={action:s.clickLogin};try{return yield t.runtime.sendMessage(e)}catch(t){this.log(e,t)}}))}static sendLogin(){return e(this,void 0,void 0,(function(){const e={action:s.login};try{yield t.runtime.sendMessage(e)}catch(t){this.log(e,t)}}))}static sendQueueUpdate(i){return e(this,void 0,void 0,(function(){const e=s.queueUpdate,n=Object.assign({action:e},i);try{yield t.runtime.sendMessage(n)}catch(t){this.log(n,t)}}))}static onToggleAdBlocker(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.toggleAdBlocker)return this.log(t),e(t.shouldAdBlockerBeActive),!0}))}static onNextBatch(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.nextBatch){const{nextBatchFromStorage:i}=t;return this.log(t),e({nextBatchFromStorage:i}),!0}}))}static onBlock(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.block){const{success:i,status:s}=t;return this.log(t),e({success:i,status:s})}}))}static onBlockSpeedUpdate(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.blockSpeedUpdate)return this.log(t),e(),!0}))}static onGetUserInfo(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.getUserInfo)return this.log(t),e()}))}static onClickLogin(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.clickLogin)return this.log(t),e()}))}static onLogin(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.login)return this.log(t),e()}))}static onQueueUpdate(e){t.runtime.onMessage.addListener((t=>{if(t.action===s.queueUpdate){this.log(t);const{queueLength:i}=t;return e({queueLength:i}),!0}}))}static log(t,e){e?console.info("✉ Message was send but no receiver listens to it.",t,e):console.debug("✉ message from background",t)}}var o,r=1600,l=2,c="#e1285c",a="#be2a54",d=6,u=42,h=14,g=500;!function(t){t.lang="lang",t.twid="twid"}(o||(o={}));class p{static getLanguage(){return e(this,void 0,void 0,(function(){return(yield this.get(o.lang))||t.runtime.getManifest().default_locale}))}static getIdentity(){return e(this,void 0,void 0,(function(){const t=yield this.get(o.twid);return(null==t?void 0:t.startsWith("u%3D"))?t.split("D")[1]:""}))}static get(i){var s;return e(this,void 0,void 0,(function(){if(t.cookies&&t.cookies.get){const e=yield t.cookies.get({name:i,url:"https://twitter.com"});return null==e?void 0:e.value}{const t=document.cookie.split("; ");return null===(s=t.find((t=>null==t?void 0:t.startsWith(${i}=))))||void 0===s?void 0:s.split("=")[1]}}))}}class v{constructor(t){this.users=[],t&&t.forEach((t=>{this.find(t)||this.users.push(t)}))}get size(){return this.users.length}add(t){return!(!t.id&&!t.screen_name)&&(!this.has(t)&&(this.users.push(t),!0))}merge(t){const e=this.size;return t.forEach((t=>{this.add(t)})),this.size-e}delete(t){const e=this.find(t),i=this.users.indexOf(e);i>-1&&(this.users=this.users.splice(i,1))}shift(){return this.users.shift()}toArray(){return this.users}splice(t){return this.users.splice(0,t)}has(t){return void 0!==this.find(t)}find(t){return this.users.find((e=>e.screen_name?e.screen_name===t.screenname:e.id?e.id===t.id:void 0))}}const f=new Date;var m;!function(t){t.hideBadgeShare="hideBadgeShare",t.hideBadgeDonate="hideBadgeDonate",t.hideBadgeFollow="hideBadgeFollow",t.hideIdleWarning="hideIdleWarning",t.installedNewReleaseDate="installedNewReleaseDate",t.blockedAdsCounts="blockedAdsCounts",t.acceptedLanguage="login.acceptedLanguage",t.userId="login.userId",t.authorization="login.authorization",t.csfr="login.csfr",t.userInfo="login.userInfo",t.lang="login.lang",t.blockingQueue="queue.blockingQueue",t.tempQueue="queue.tempQueue",t.queueLength="queue.queueLength",t.blockedAccounts="blocklist.blockedAccounts",t.blockListLength="blocklist.blockListLength",t.currentBlocksCount="blocklist.currentBlocksCount",t.blocksPerMinute="options.blocksPerMinute",t.scrollsPerMinute="options.scrollsPerMinute",t.adBlockerActive="options.adBlockerActive",t.animationLevel="options.animationLevel",t.blockerRunning="blockerRunning",t.screenshotMode="screenshotMode",t.useMock="useMock"}(m||(m={}));const y={today:parseInt(${f.getFullYear()}${f.getMonth()}${f.getDate()})};class b{static getIdentity(){return e(this,void 0,void 0,(function(){const t=yield p.getIdentity(),e=yield this.get(m.userId,!1);let i=e;return t&&t!==e&&(i=t,b.set(m.userId,t,!1)),new Promise((t=>t(i)))}))}static getScreenshotMode(){return e(this,void 0,void 0,(function(){const t=yield this.get(m.screenshotMode,!1);return void 0===t&&this.set(m.screenshotMode,!1,!1),!!t}))}static getUseMock(){return e(this,void 0,void 0,(function(){const t=yield this.get(m.useMock,!1);return void 0===t&&this.set(m.useMock,!1,!1),!!t}))}static setIdentity(t){return e(this,void 0,void 0,(function(){this.set(m.userId,t,!1)}))}static getHideBadgeShare(){return e(this,void 0,void 0,(function(){return this.get(m.hideBadgeShare,!1)}))}static setHideBadgeShare(t){this.set(m.hideBadgeShare,t,!1)}static getHideBadgeDonate(){return e(this,void 0,void 0,(function(){return this.get(m.hideBadgeDonate,!1)}))}static setHideBadgeDonate(t){this.set(m.hideBadgeDonate,t,!1)}static getHideBadgeFollow(){return e(this,void 0,void 0,(function(){return this.get(m.hideBadgeFollow,!1)}))}static setHideBadgeFollow(t){this.set(m.hideBadgeFollow,t,!1)}static getHideIdleWarning(){return e(this,void 0,void 0,(function(){return this.get(m.hideIdleWarning,!1)}))}static setHideIdleWarning(t){this.set(m.hideIdleWarning,t,!1)}static getInstalledNewReleaseDate(){return e(this,void 0,void 0,(function(){const t=yield this.get(m.installedNewReleaseDate,!1),e=t?parseInt(t[m.installedNewReleaseDate]):void 0;return Number.isNaN(e)?y.today:e}))}static resetInstalledNewReleaseDate(){this.set(m.installedNewReleaseDate,y.today,!1)}static getIsNewRelease(){return e(this,void 0,void 0,(function(){const t=yield this.getInstalledNewReleaseDate();return y.today<t+3}))}static resetBadges(){return e(this,void 0,void 0,(function(){this.remove(m.hideBadgeDonate,!1),this.remove(m.hideBadgeFollow,!1),this.remove(m.hideBadgeShare,!1)}))}static getBlockedAdsCount(){return e(this,void 0,void 0,(function(){let t=yield this.get(m.blockedAdsCounts);return void 0===t&&(t=0,this.set(m.blockedAdsCounts,t)),t}))}static increaseBlockedAdsCount(){return e(this,void 0,void 0,(function(){let t=yield this.getBlockedAdsCount();t++,this.set(m.blockedAdsCounts,t)}))}static isBlockerRunning(){return e(this,void 0,void 0,(function(){return yield this.get(m.blockerRunning)}))}static setBlockerRunning(t){this.set(m.blockerRunning,t)}static get(i,s=!0){return e(this,void 0,void 0,(function(){const e=s?yield this.prefix(i):i;return(yield t.storage.local.get(e))[e]}))}static set(i,s,n=!0){return e(this,void 0,void 0,(function(){const e=n?yield this.prefix(i):i;yield t.storage.local.set({[e]:s})}))}static remove(i,s=!0){return e(this,void 0,void 0,(function(){const e=s?yield b.prefix(i):i;yield t.storage.local.remove(e)}))}static prefix(t){return e(this,void 0,void 0,(function(){return`${yield this.getIdentity()}${t}}))}}class k extends b{static isBlockLimitReached(){return e(this,void 0,void 0,(function*(){return(yield this.getCurrentBlocksCount())>=g}))}static getBlockListLength(){const t=Object.create(null,{get:{get:()=>super.get}});return e(this,void 0,void 0,(function*(){let e=yield t.get.call(this,m.blockListLength);return void 0===e&&(e=(yield this.getBlockedAccounts()).size),e}))}static getBlockedAccounts(){const t=Object.create(null,{get:{get:()=>super.get}});return e(this,void 0,void 0,(function*(){let e=yield t.get.call(this,m.blockedAccounts);return e||(e=[],b.set(m.blockedAccounts,e)),new v(e)}))}static addBlockedMulti(t){const i=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){const e=yield this.getBlockedAccounts(),s=t.map((t=>({screen_name:t.screen_name,interacted_with:t.interacted_with})));e.merge(s),i.set.call(this,m.blockListLength,e.size),i.set.call(this,m.blockedAccounts,e.toArray())}))}static addBlocked(t){const i=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){const e=yield this.getBlockedAccounts(),s={};t.screen_name&&(s.screen_name=t.screen_name),t.id&&(s.id=t.id),t.interacted_with&&(s.interacted_with=t.interacted_with);e.add(s)&&(yield this.increaseBlockListLength(),yield this.increaseCurrentBlocksCount()),i.set.call(this,m.blockedAccounts,e.toArray())}))}static getCurrentBlocksCount(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.currentBlocksCount);return void 0===t&&(this.resetCurrentBlocksCount(),t=0),t}))}static resetCurrentBlocksCount(){this.set(m.currentBlocksCount,0)}static increaseBlockListLength(){const t=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){let e=yield this.getBlockListLength();e++,t.set.call(this,m.blockListLength,e)}))}static increaseCurrentBlocksCount(){const t=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){let e=yield this.getCurrentBlocksCount();e++,t.set.call(this,m.currentBlocksCount,e)}))}}class w extends b{static login(t){this.setUserInfo(t),n.sendLogin()}static logout(){super.remove(m.userInfo),k.resetCurrentBlocksCount()}static getLanguage(){return e(this,void 0,void 0,(function*(){let e=yield this.get(m.lang);return e||(e=yield p.getLanguage()),e||(e=t.runtime.getManifest().default_locale),b.set(m.lang,e),e}))}static getCSFR(){return e(this,void 0,void 0,(function*(){return this.get(m.csfr)}))}static getAuthToken(){return e(this,void 0,void 0,(function*(){return this.get(m.authorization)}))}static getAcceptedLanguage(){return e(this,void 0,void 0,(function*(){return this.get(m.acceptedLanguage)}))}static setCSFR(t){return e(this,void 0,void 0,(function*(){this.set(m.csfr,t)}))}static setAuthToken(t){return e(this,void 0,void 0,(function*(){this.set(m.authorization,t)}))}static setAcceptedLanguage(t){return e(this,void 0,void 0,(function*(){this.set(m.acceptedLanguage,t)}))}static getUserInfo(){return e(this,void 0,void 0,(function*(){const t=yield this.get(m.userInfo);return new Promise((e=>e(t)))}))}static setUserInfo(t){t.errors||this.set(m.userInfo,t)}}var L;!function(t){t.off="off",t.mild="mild",t.frisky="frisky"}(L||(L={}));class B extends b{static resetSettings(){const t=Object.create(null,{remove:{get:()=>super.remove}});return e(this,void 0,void 0,(function*(){yield t.remove.call(this,m.blocksPerMinute,!1),yield t.remove.call(this,m.scrollsPerMinute,!1),yield t.remove.call(this,m.animationLevel,!1),yield t.remove.call(this,m.adBlockerActive,!1)}))}static getAnimationLevel(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.animationLevel,!1);return void 0===t&&(t=L.frisky,this.setAnimationLevel(t)),t}))}static setAnimationLevel(t){this.set(m.animationLevel,t,!1)}static isAdBlockerActive(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.adBlockerActive,!1);return void 0===t&&(t=!0,this.setAdBlockerActive(t)),t}))}static setAdBlockerActive(t){return e(this,void 0,void 0,(function*(){this.set(m.adBlockerActive,t,!1)}))}static setBlocksPerMinute(t){return e(this,void 0,void 0,(function*(){this.set(m.blocksPerMinute,t,!1)}))}static getBlocksPerMinute(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.blocksPerMinute,!1);return null==t&&(t=d,this.setBlocksPerMinute(t)),t}))}static setScrollsPerMinute(t){return e(this,void 0,void 0,(function*(){this.set(m.scrollsPerMinute,t,!1)}))}static getScrollsPerMinute(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.scrollsPerMinute,!1);return null==t&&(t=Math.round(6e4/r),this.setScrollsPerMinute(t)),t}))}}function _(t,e,i,s,n=10){let o,r,l=null,c=0;return new Promise((a=>{r=setInterval((function(){c++,c>=n&&(clearInterval(r),a(null)),e?(o=s?s.querySelectorAll(t):document.querySelectorAll(t),i&&o.length>=i&&(l=o.item(o.length-1))):l=s?s.querySelector(t):document.querySelector(t),l&&"none"!==l.style.display&&null!==l.offsetParent&&(clearInterval(r),a(l)),e&&!i&&o&&o.length&&(clearInterval(r),a(o))}),500)}))}class M extends b{static getTempQueue(){return e(this,void 0,void 0,(function*(){const t=u-h,e=yield this.getQueueLength(),i=yield this.get(m.tempQueue);let s=new v(i);if(s||(console.debug("🕍 FIRST BATCH"),s=yield this.dequeueMulti(u),this.set(m.tempQueue,s.toArray())),s.size<=h&&e){console.debug("🕍 NEXT BATCH");const e=yield this.dequeueMulti(t);s.merge(e.toArray()),this.set(m.tempQueue,s.toArray()),n.sendNextBatch({nextBatchFromStorage:e.toArray()})}return s}))}static dequeueFromTempQueue(){return e(this,void 0,void 0,(function*(){const t=yield this.getTempQueue(),e=t.shift();return e&&(this.set(m.tempQueue,t.toArray()),this.decreaseQueueLength()),e}))}static getQueueLength(){return e(this,void 0,void 0,(function*(){let t=yield this.get(m.queueLength);if(void 0===t){t=(yield this.getQueue()).size,this.setQueueLength(t)}return t}))}static queue(t){const i=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){const e=yield this.getQueue();e.add(t)&&(yield this.increaseQueueLength()),i.set.call(this,m.blockingQueue,e.toArray())}))}static queueMulti(t){const i=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){const e=yield this.getQueue(),s=yield k.getBlockedAccounts(),n=t.filter((t=>!s.has(t))),o=e.merge(n);return i.set.call(this,m.blockingQueue,e.toArray()),this.setQueueLength(e.size),o}))}static queueEmpty(){return e(this,void 0,void 0,(function*(){return 0===(yield this.getQueueLength())}))}static setQueueLength(t){return e(this,void 0,void 0,(function*(){this.set(m.queueLength,t),n.sendQueueUpdate({queueLength:t})}))}static increaseQueueLength(){return e(this,void 0,void 0,(function*(){let t=yield this.getQueueLength();t++,n.sendQueueUpdate({queueLength:t}),this.setQueueLength(t)}))}static decreaseQueueLength(){return e(this,void 0,void 0,(function*(){let t=yield this.getQueueLength();0!==t?(t--,console.debug("🔢 this.decreaseQueueLength",t),n.sendQueueUpdate({queueLength:t}),this.setQueueLength(t)):console.debug("already 0, return.")}))}static getQueue(){const t=Object.create(null,{get:{get:()=>super.get},set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){let e=yield t.get.call(this,m.blockingQueue);return e||(e=[],t.set.call(this,m.blockingQueue,e)),new v(e)}))}static dequeueMulti(t){const i=Object.create(null,{set:{get:()=>super.set}});return e(this,void 0,void 0,(function*(){const e=yield this.getQueue(),s=e.splice(t);return i.set.call(this,m.blockingQueue,e.toArray()),new v(s)}))}}const C="https://api.twitter.com/1.1/";var A,S;!function(t){t.block="blocks/create.json",t.retweeters="statuses/retweets",t.lookupUsers="users/lookup",t.getTweet="statuses/show",t.getList="lists/show"}(A||(A={})),function(t){t.POST="POST",t.GET="GET"}(S||(S={}));class T{static block(t){return e(this,void 0,void 0,(function*(){console.info(👊 blocking ${t.screen_name}...);if((yield k.getBlockedAccounts()).has(t))return void console.warn(${t.screen_name} is already blocked.);const e=t.screen_name?this.getScreenNameBody(t.screen_name):this.getIdBody(t.id),i=yield this.sendPostRequest(A.block,e),s=i&&i.ok;return s?(console.info("%c✔ user blocked.","color: YellowGreen"),k.addBlocked(t)):(console.error("🛑 did not block",i),M.queue(t)),n.sendBlock({success:s,status:i.status}),i}))}static getTweet(t){return e(this,void 0,void 0,(function*(){const e=yield this.sendGetRequest({endpoint:A.getTweet,params:{id:t},preventPreflight:!0});if(e&&e.ok){return yield e.json()}console.error("No tweet found",e)}))}static getList(t){return e(this,void 0,void 0,(function*(){const e=yield this.sendGetRequest({endpoint:A.getList,params:{list_id:t},preventPreflight:!0});if(e&&e.ok){return yield e.json()}console.error("No list found",e)}))}static getScreenNameBody(t){returnscreen_name=${t}}static getIdBody(t){returnuser_id=${t}}static getHeaders(t,i=!1){return e(this,void 0,void 0,(function*(){const e=yield w.getCSFR(),s=yield w.getAuthToken(),n=yield w.getAcceptedLanguage(),o=yield w.getLanguage();if(console.debug("authorization "+s),!e||!s)throw new Error("CSRF or Authorization not set");console.debug("Prevent Preflight: "+i);const r=t===S.POST?"application/x-www-form-urlencoded":"application/json";return i?{"Content-Type":"text/plain",authorization:s}:(console.debug(r),{"User-Agent":navigator.userAgent,Accept:"*/*","Accept-Language":null!=n?n:"de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7","Content-Type":r,"x-twitter-auth-type":"OAuth2Session","x-twitter-client-language":o,"x-twitter-active-user":"yes","x-csrf-token":e,"Sec-Fetch-Dest":"empty","Sec-Fetch-Mode":"cors","Sec-Fetch-Site":"same-site","Sec-GPC":"1",authorization:s})}))}static getRequestInit(){return e(this,void 0,void 0,(function*(){return{credentials:"include",referrer:location.origin,mode:"cors"}}))}static sendPostRequest(t,i){return e(this,void 0,void 0,(function*(){const e=yield this.getRequestInit(),s=yield this.getHeaders(S.POST);return yield fetch(${C}${t},Object.assign(Object.assign({},e),{headers:s,method:S.POST,body:i}))}))}static sendGetRequest({endpoint:t,segment:i,params:s,preventPreflight:n}){return e(this,void 0,void 0,(function*(){const e=new URLSearchParams(s),o=new URL(${C}${t}${i?/${i}:""}.json?${e}),r=yield this.getHeaders(S.GET,n||!1);return console.debug("fetching from API:",o),fetch(o,{headers:r,method:"GET"})}))}}const x="blocklist.csv",q="text/csv";class P{static getDownloadLinkForBlockList(t){const e=E(t),i=data:text/csv;charset=utf-8,${encodeURIComponent(e)};return{filename:x,url:i}}static downloadBlockList(){return e(this,void 0,void 0,(function*(){const e=yield k.getBlockedAccounts(),i=new File([E(e)],x,{type:q}),s=URL.createObjectURL(i);yield t.downloads.download({url:s,conflictAction:"uniquify",filename:x,saveAs:!0})}))}static importBlockList(t){return e(this,void 0,void 0,(function*(){return new Promise(((i,s)=>{if(!t||!t[0])return console.error("not a file"),void s(new Error("not a file."));try{const n=t[0],o=new FileReader;o.onload=t=>e(this,void 0,void 0,(function*(){if(!t.target)return;const e=t.target.result;console.info("Importing: ",e);try{const t=function(t){if(!t)return[];return t.split("\n").map((t=>{const[e,i]=t.split(",");let s,n="",o="";if(/\D/.test(e)){if(!function(t){if(["-","}","{","[","]","$","%"," ","]"].some((e=>t.includes(e))))return!1;if(/\s/.test(t))return!1;return!0}(e))throw new Error("invalid blocklist format");o=e}else s=e;const r=s?{id:s}:{screen_name:o};return i&&i.startsWith("https://twitter.com")?(n=i.replace("https://twitter.com",""),Object.assign(Object.assign({},r),{interacted_with:n})):r})).filter((t=>t&&(t.screen_name||t.id)))}(e);if(console.debug("⚙ parsed:",t),t.length){const e=yield M.queueMulti(t);i([t,e])}else s(new Error("empty"))}catch(t){s(t),console.error(t)}})),o.readAsText(n)}catch(t){console.error("Import failed.",t),s(t)}}))}))}}function E(t){return t.size?t.toArray().map((t=>{const{screen_name:e,interacted_with:i}=t;return${e},https://twitter.com${i}`})).join("\n"):""}const I='',U='',H='',z='',$='',R='',Q='',F='',j=I,W='',D='',O='',N='',V='',G='',Z='',K='',Y='',X=U;class J{constructor(t){this.color=t.color,this.fontFamily=t.fontFamily,this.fontStyle=t.fontStyle,this.fontWeight=t.fontWeight}}class tt{static get backgroundColor(){return getComputedStyle(document.body).backgroundColor}static get twitterBrandColor(){return"#1A8CD8"}static get highlightColor(){const t=document.querySelector("a[href='/compose/tweet']");return t?getComputedStyle(t).backgroundColor:this.twitterBrandColor}static get popupContainer(){return document.querySelector("[aria-modal=true]")||document.querySelector("body")}static get isMobile(){return document.documentElement.clientWidth<699}static get viewport(){return this.isMobile?"mobile":"desktop"}static getTextStyle(t){let e;if(t)e=document.querySelector(".js-tweet-text");else{const t=document.querySelector("[data-testid=UserCell] > div > div:nth-child(2) > div:nth-child(2)"),i=document.querySelector("[data-testid=UserCell] > div > div:nth-child(2) > div > div > a > div > div > div");e=t||i}e||(e=document.querySelector("span"));const i=e?getComputedStyle(e):new CSSStyleDeclaration;return new J(i)}static isTweetPage(){return new Promise((t=>{setTimeout((()=>e(this,void 0,void 0,(function(){const e=(yield this.isLikesPage())||(yield this.isRetweetsPage()),i=location.pathname.includes("status")&&e;t(i)}))),1)}))}static getTweetId(){return e(this,void 0,void 0,(function(){const t=yield this.isTweetPage(),e=location.href.split("/"),i=e.at(-1),s=/\d/.test(i);let n;return location.pathname.includes("status")&&s&&(n=i),t&&(n=e.at(-2)),n}))}static getListId(){return e(this,void 0,void 0,(function(){const t=yield this.isListPage(),e=location.href.split("/"),i=e.at(-1),s=/\d/.test(i);let n;return location.pathname.includes("status")&&s&&(n=i),t&&(n=e.at(-2)),n}))}static isLikesPage(){const t=location.pathname.endsWith("likes");return document.body.classList.toggle("lb-likes-page",t),new Promise((e=>e(t)))}static isRetweetsPage(){const t=location.pathname.endsWith("retweets");return document.body.classList.toggle("lb-retweets-page",t),new Promise((t=>t(location.pathname.endsWith("retweets"))))}static isBlockExportPage(){return e(this,void 0,void 0,(function(){return new Promise((t=>{setTimeout((()=>{var e;const i=location.href.endsWith("blocked/all")||location.href.endsWith("settings/content_preferences")||location.href.endsWith("settings/mute_andblock");null===(e=document.querySelector("body"))||void 0===e||e.classList.toggle("lb-block-page",i),t(i)}),1)}))}))}static isListPage(){return e(this,void 0,void 0,(function(){return new Promise((t=>{setTimeout((()=>{const e=location.href.split("/"),i=e[e.length-1];return location.href.includes("list")&&(location.href.endsWith(et.followers)||location.href.endsWith(et.members))&&t(et[i]),t(!1)}),1)}))}))}}var et;!function(t){t.members="members",t.followers="followers"}(et||(et={}));const it={mobile:"main > div > div > div > div > div > div",desktop:"[aria-labelledby=modal-header] > div > div > div > div > div > div > div > div > div"};class st{constructor(){this.handleKeydown=t=>e(this,void 0,void 0,(function(){"Escape"===t.key&&(this.stopScrolling(),yield this.closePopup());window.setTimeout((()=>{const e=this.popup.matches(":focus-within");"Tab"!==t.key||e||this.popup.focus()}),0)})),this.stopScrolling=()=>{console.debug("stopScrolling()"),clearInterval(this.scrollInterval)},this.collectedUsers=new v,this.progressInPercent=0,this.uiIdleCounter=0,this.lastCollectedUserCount=[],this.isLegacyTwitter=null!==document.getElementById("page-outer"),this.getAnimationLevel().then(),this.setUpBlockButton().then(),this.setUpExportButton().then()}get loadingInfo(){return this.popup.querySelector(".lb-label")}get scrolly(){return tt.isMobile?new Promise((t=>t(document.documentElement))):this.getScrollList()}get textStyle(){return tt.getTextStyle(this.isLegacyTwitter)}get hasStateChangedToConfirm(){return Array.from(this.popup.classList).some((t=>"lb-confirm"===t))}get isLegacyTwitter(){return this.legacyTwitter}set isLegacyTwitter(t){t&&document.body.classList.add("lb-legacy-twitter"),this.legacyTwitter=t}static run(){new st,(it[tt.viewport],null,null,null,100).then((()=>new st)),_("[data-testid=UserCell] [role=button]",null,null,null,100).then((()=>new st)),document.body.addEventListener("click",(()=>new st)),window.addEventListener("resize",function(t,e,i){let s;return function(...n){const o=i&&!s;clearTimeout(s),s=window.setTimeout((()=>{s=0,i||t.apply(this,n)}),e),o&&t.apply(this,n)}}((()=>new st),250))}static getBadgeClass(t){return e(this,void 0,void 0,(function(){const e={donate:yield b.getHideBadgeDonate(),follow:yield b.getHideBadgeFollow(),share:yield b.getHideBadgeShare()};if(Object.values(e).every((t=>t)))return"";const i=Object.entries(e).find((([,t])=>!t)),s=i?i[0]:"";return t===s?"lb-footer__link--show-badge":""}))}getAnimationLevel(){return e(this,void 0,void 0,(function(){const t=yield B.getAnimationLevel();return document.body.classList.remove("animation-level--off","animation-level--mild","animation-level--frisky"),document.body.classList.add(animation-level--${t}),t}))}getTotalUsersCount(){return e(this,void 0,void 0,(function(){const t=yield tt.isRetweetsPage(),e=yield tt.isTweetPage(),i=yield tt.isListPage();if(!this.totalUsersCount)if(e){const e=yield tt.getTweetId(),i=yield T.getTweet(e);this.totalUsersCount=t?i.retweet_count:i.favorite_count}else if(i){const t=yield tt.getListId(),e=yield T.getList(t);this.totalUsersCount=i===et.followers?e.subscriber_count:e.member_count}return this.totalUsersCount||(this.totalUsersCount=-1),this.totalUsersCount}))}getLimitMessage(){return e(this,void 0,void 0,(function(){return(yield tt.isBlockExportPage())?${t.i18n.getMessage("ui_take_a_moment")}:${t.i18n.getMessage("ui_only_list_items")}<br>${t.i18n.getMessage("ui_twitter_hides")}}))}getScrollableParent(t){const e=t.parentElement;if(!e)return t;return"auto"===getComputedStyle(e).overflow?e:this.getScrollableParent(e)}getScrollList(){return e(this,void 0,void 0,(function(){const t=document.querySelector("html");let e;if(yield tt.isBlockExportPage())e=t;else{const t=yield this.getTopbar(),i=t?this.getScrollableParent(t):document.documentElement;e=this.isLegacyTwitter?document.querySelector(".activity-popup-users"):i}return e||(e=t),e}))}changeStateToConfirm(){return e(this,void 0,void 0,(function(){console.debug("changeStateToConfirm()"),this.popup.classList.add("lb-confirm");const t=document.querySelector(".lb-truck-animationavatars");null==t||t.remove(),(yield this.getScrollList()).classList.remove("lb-blur")}))}closePopup(){return e(this,void 0,void 0,(function(){const t=yield this.getAnimationLevel();this.popup.classList.add("lb-hide"),t===L.off?this.popup.remove():this.popup.addEventListener("transitionend",(()=>{this.popup.remove()})),this.popupWrapper.remove(),(yield this.getScrollList()).classList.remove("lb-blur"),window.setTimeout((()=>{const t=tt.popupContainer.querySelector("[aria-modal='true']");t&&t.focus()}),0)}))}collectUsers(){return e(this,void 0,void 0,(function(){const t=yield tt.isBlockExportPage(),e=this.isLegacyTwitter?(yield this.getScrollList()).querySelectorAll("a.js-user-profile-link"):(yield this.getScrollList()).querySelectorAll('[data-testid="UserCell"]'),i=l+Math.floor(this.collectedUsers.size/500),s=yield this.getTotalUsersCount(),n=s<100?70:s<200?80:90,o=yield this.getAnimationLevel(),r=Array.from(e);for(const e of r){const i=e.querySelector('a[aria-hidden="true"]'),s=e.querySelector("img"),n=i.href,r=s.src,l={screen_name:n.replace("https://twitter.com/",""),interacted_with:location.pathname,profile_image_url_https:r};this.collectedUsers.add(l)&&!t&&o===L.frisky&&this.renderAvatar(s)}const c=document.querySelector(".lb-user-counter");c&&(c.innerText=${this.collectedUsers.size.toLocaleString()});const a=this.lastCollectedUserCount.at(-1)===this.lastCollectedUserCount.at(-2);if(a||(this.uiIdleCounter=0),document.hasFocus()&&a&&(this.uiIdleCounter++,this.uiIdleCounter>i&&this.progressInPercent<n&&(yield this.createIdleWarning())),s>0){this.progressInPercent=Math.ceil(this.collectedUsers.size/s100);const t=document.querySelector(".lb-progress-barlabel"),e=document.querySelector(".lb-progress-barinner");t&&(t.innerHTML=${this.progressInPercent}%),e&&(e.style.setProperty("--progress",this.progressInPercent.toString()),this.progressInPercent>50&&e.classList.add("lb-progress-barinner--large"))}this.lastCollectedUserCount.push(this.collectedUsers.size)}))}renderAvatar(t){const e=document.querySelector(".lb-truck-animationavatars");if(!e)return;const i=t.cloneNode();i.src&&(i.src=i.src.replace("normal","mini"),i.removeAttribute("class"));const s=document.createElement("span");s.classList.add("lb-truck-animation__avatar"),s.style.setProperty("--index",this.collectedUsers.size.toString()),s.append(i),e.prepend(s),s.addEventListener("animationend",(()=>{s.remove()}))}createBlockButton(){var i;return e(this,void 0,void 0,(function(){const e=this.isLegacyTwitter?yield ("button.button-text.follow-text"):yield ("[role=button] [role=button]",!1,1,yield this.getScrollList());if(document.querySelector("[data-testid=blockAll]"))return;this.blockButton=document.createElement("a");const s=e instanceof HTMLElement?e.classList:[];s&&this.blockButton.classList.add("lb-block-button",...s),this.blockButton.dataset.testid="blockAll",this.blockButton.tabIndex=0,this.blockButton.innerHTML=e?e.innerHTML:"",this.blockButton.style.color="var(--color)",this.blockButton.style.borderColor="var(--border-color)",this.blockButton.style.backgroundColor="var(--background-color);";const n=this.isLegacyTwitter?this.blockButton:this.blockButton.querySelector("div > span > span");n&&(n.innerHTML=t.i18n.getMessage("ui_block_all")),null===(i=yield this.getTopbar())||void 0===i||i.appendChild(this.blockButton);const o=document.createElement("span");o.innerHTML=H,o.style.marginRight=".3em";const r=this.isLegacyTwitter?this.blockButton:this.blockButton.querySelector("div");null==r||r.prepend(o);const l=o.querySelector("svg");l&&(l.style.color=tt.highlightColor),this.blockButton.addEventListener("click",(()=>{this.setUpBlockPopup()})),this.blockButton.addEventListener("keyup",(t=>{"Enter"===t.key&&this.setUpBlockPopup()}))}))}createRetweetersLink(){const e=document.createElement("a"),i=document.createElement("div");return i.classList.add("lb-label-wrapper"),e.target="_blank",e.innerHTML=\n\t\t\t${Z}\n\t\t\t<span>${t.i18n.getMessage("ui_block_retweeters")}</span>\n\t\t,e.classList.add("lb-link"),e.title=t.i18n.getMessage("ui_retweeters_hover_hint"),e.href=location.href.replace("likes","retweets"),i.appendChild(e),i}createCloseButton(){return e(this,void 0,void 0,(function(){const e=document.createElement("button");e.innerHTML=R,e.tabIndex=0,e.classList.add("lb-close-button"),e.title=t.i18n.getMessage("ui_cancel"),e.style.backgroundColor=tt.highlightColor.replace(")",", 0.1)"),e.style.color=tt.highlightColor,this.popup.prepend(e),e.addEventListener("click",(()=>{this.closePopup(),this.stopScrolling()}))}))}createFinishButton(){return e(this,void 0,void 0,(function(){const i=yield this.getAnimationLevel(),s=document.createElement("button");s.innerHTML=${D}${N},s.tabIndex=0,s.classList.add("lb-finish-button"),s.title=t.i18n.getMessage("ui_finish"),s.style.backgroundColor=tt.highlightColor.replace(")",", 0.1)"),s.style.color=tt.highlightColor,this.popup.append(s),s.addEventListener("click",(()=>e(this,void 0,void 0,(function(){s.classList.add("lb-finish-button--active");const t=s.querySelector("svg");if(!t)return;const n=()=>e(this,void 0,void 0,(function(){s.disabled=!0,this.popup.classList.remove("lb-popup--has-warning"),yield this.finishCollecting()}));i===L.off?yield n():t.addEventListener("transitionend",n,{once:!0})}))))}))}createConfirmButton(){var i,s;return e(this,void 0,void 0,(function(){const e=document.createElement("div"),n=document.createElement("div"),o=yield tt.isBlockExportPage(),r=t=>({explanation:{block:"ui_block_explanation",queue:"ui_queue_explanation"},confirmTitle:{block:"ui_confirm_title_block",queue:"ui_confirm_title_queue"},buttonLabel:{block:"ui_download",queue:"ui_add_to_queue"},icon:{block:K,queue:G}}[t][o?"block":"queue"]);e.classList.add("lb-confirm-wrapper"),n.classList.add("lb-confirm-info"),n.style.color=this.textStyle.color;const l=r("explanation");if(n.innerHTML=<p>${t.i18n.getMessage(l)}</p>,e.appendChild(n),o){const t=document.querySelector("[data-testid=UserCell] [role=button]");this.confirmButton=document.createElement("a"),this.confirmButton.innerHTML=t.innerHTML,this.confirmButton.classList.add(...t.classList)}else this.confirmButton=this.blockButton.cloneNode(!0);this.confirmButton.classList.add("lb-confirm-button"),this.confirmButton.classList.remove("lb-block-button");const c=r("confirmTitle");this.confirmButton.title=t.i18n.getMessage(c),this.confirmButton.style.backgroundColor="var(--background-color)",this.confirmButton.style.color="var(--color)",this.popup.appendChild(this.confirmButton),this.isLegacyTwitter||o||null===(i=this.confirmButton.querySelector("div > span"))||void 0===i||i.remove();const a=this.isLegacyTwitter?this.confirmButton:this.confirmButton.querySelector("div > span > span");a.innerText=t.i18n.getMessage(r("buttonLabel"));const d=document.createElement("span");d.innerHTML=r("icon");const u=d.querySelector("svg");return u&&(null===(s=null==a?void 0:a.parentElement)||void 0===s||s.append(u)),o||this.confirmButton.addEventListener("click",(()=>{this.addToQueue(n,d,a),this.popup.classList.add("lb-confirmed")})),yield this.createConfirmCloseButton(this.confirmButton),e}))}createConfirmCloseButton(i){var s;return e(this,void 0,void 0,(function(){const n=i.cloneNode(!0);n.classList.add("lb-confirm-button--done"),this.popup.appendChild(n);const o=this.isLegacyTwitter?n:n.querySelector("div > span > span");o.innerText=t.i18n.getMessage("ui_confirm_button_label");const r=document.createElement("span");r.innerHTML=$;const l=r.querySelector("svg");l&&(null===(s=null==o?void 0:o.parentElement)||void 0===s||s.append(l)),n.addEventListener("click",(()=>e(this,void 0,void 0,(function(){yield this.closePopup()}))))}))}addToQueue(i,s,n){var o;return e(this,void 0,void 0,(function(){const e=yield M.queueMulti(this.collectedUsers.toArray());i.innerHTML=<p>${t.i18n.getMessage("ui_confirm_clicked",[e.toString()])}</p>;const r=s.querySelector("svg");r&&(null===(o=null==n?void 0:n.parentElement)||void 0===o||o.prepend(r));const l=document.createElement("div");l.classList.add("lb-added-count-label"),l.innerHTML=+${e},this.popup.append(l)}))}createConfirmMessageElement(){var i;return e(this,void 0,void 0,(function*(){const e=yield tt.isBlockExportPage();this.confirmMessageElement=null===(i=this.loadingInfo)||void 0===i?void 0:i.cloneNode(),this.confirmMessageElement&&(Object.assign(this.confirmMessageElement.style,this.textStyle),this.confirmMessageElement.classList.remove("lb-collecting"),this.confirmMessageElement.classList.add("lb-confirm-message"),this.confirmMessageElement.innerHTML=`\n\t\t\t

\n\t\t\t\t${t.i18n.getMessage("ui_users_found")}\n\t\t\t\t${e?"":t.i18n.getMessage("ui_confirm_message_heading_addon")}\n\t\t\t

\n\t\t\t<div class="lb-labelmain">
,this.popup.appendChild(this.confirmMessageElement))}))}createPopup(t){return e(this,void 0,void 0,(function*(){this.popupWrapper=document.createElement("div"),tt.popupContainer.appendChild(this.popupWrapper),this.popupWrapper.classList.add("lb-popup-wrapper","lb-hide"),this.popup=document.createElement("div"),this.popupWrapper.appendChild(this.popup),this.popup.tabIndex=0,this.popup.setAttribute("aria-modal","true"),this.popup.setAttribute("aria-labeledby","lb-popup-heading"),this.popup.dataset.focusable="true",this.popup.classList.add("lb-popup"),this.popup.style.background=tt.backgroundColor,this.popup.style.color=tt.highlightColor,this.popup.style.setProperty("--background-color",tt.backgroundColor),this.popup.style.setProperty("--color",this.textStyle.color),this.popup.style.setProperty("--highlight-color",tt.highlightColor),this.popup.innerHTML=t,window.setTimeout((()=>{this.popup.focus()}),0),window.setTimeout((()=>{this.popupWrapper.classList.remove("lb-hide")}),250),document.addEventListener("keydown",this.handleKeydown)}))}initBlockAction(){return e(this,void 0,void 0,(function*(){const t=this.popup.querySelector(".lb-label");Object.assign(t.style,this.textStyle),yield this.startScrolling()}))}scrollDown(t){return e(this,void 0,void 0,(function*(){console.debug("scrollDown()");const e=yield this.scrolly,i=e.scrollHeight<2*e.clientHeight,s=Math.ceil(e.scrollTop)>=e.scrollHeight-e.clientHeight,n=100===this.progressInPercent;e.scroll({top:e.scrollTop+e.clientHeight,left:0,behavior:t===L.off?"auto":"smooth"}),yield this.collectUsers(),(s||i||n)&&(console.info("finished collecting!",{scrolledToBottom:s,scrollListIsSmall:i}),yield this.finishCollecting())}))}finishCollecting(){return e(this,void 0,void 0,(function*(){if(!this.hasStateChangedToConfirm){if(console.debug("finishCollecting()"),this.stopScrolling(),yield tt.isBlockExportPage()){yield k.addBlockedMulti(this.collectedUsers.toArray());const t=yield k.getBlockedAccounts(),{filename:e,url:i}=P.getDownloadLinkForBlockList(t);this.confirmButton instanceof HTMLAnchorElement&&(this.confirmButton.href=i,this.confirmButton.download=e)}setTimeout((()=>{const e=this.popup.querySelector(".lb-confirm-message h3 span");e&&(e.innerHTML=t.i18n.getMessage("ui_users_found",this.collectedUsers.size.toLocaleString()))}),1e3),this.popup.classList.add("lb-check","lb-collected"),setTimeout((()=>e(this,void 0,void 0,(function*(){yield this.changeStateToConfirm()}))),1200)}}))}getTopbar(){return e(this,void 0,void 0,(function*(){let t;return this.topbar||(this.isLegacyTwitter?(t=yield _("#activity-popup-dialog-header"),this.isLegacyTwitter=!0,this.topbar=null==t?void 0:t.parentElement):this.topbar=yield _(it[tt.viewport])),this.topbar}))}setUpBlockButton(){return e(this,void 0,void 0,(function*(){((yield tt.isBlockExportPage())||(yield tt.isTweetPage())||!1!==(yield tt.isListPage()))&&(yield this.createBlockButton())}))}setUpBlockPopup(){var i,s,n,o;return e(this,void 0,void 0,(function*(){const e=\n\t\t\t
\n\t\t\t\t

\n\t\t\t\t\t${t.i18n.getMessage("ui_collecting_usernames")}...\n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t

${yield this.getLimitMessage()}

\n\t\t\t\t

\n\t\t\t\t\t${X} \n\t\t\t\t\t${t.i18n.getMessage("ui_scroll_speed")}\n\t\t\t\t

\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t\t0%\n\t\t\t\t\t\t${z}\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t
;yield this.createPopup(e),yield this.createConfirmMessageElement();const r=yield this.createConfirmButton();if(yield tt.isLikesPage()){const t=this.createRetweetersLink();null===(s=null===(i=this.confirmMessageElement)||void 0===i?void 0:i.querySelector(".lb-label__main"))||void 0===s||s.appendChild(t)}null===(o=null===(n=this.confirmMessageElement)||void 0===n?void 0:n.querySelector(".lb-label__main"))||void 0===o||o.appendChild(r),yield this.createCloseButton(),yield this.createFooter(),yield this.createFinishButton(),yield this.initBlockAction()}))}createFooter(){return e(this,void 0,void 0,(function*(){const e=document.createElement("footer"),i=yield b.getIsNewRelease();e.innerHTML=\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\t${Y}\n\t\t\t\t
\n\t\t\t
\n\n\t\t\t\n\t\t\t`,e.style.backgroundColor=tt.backgroundColor,e.style.color=tt.highlightColor,this.popup.appendChild(e),e.querySelectorAll(".lb-footerlink.lb-footerlink--show-badge").forEach((t=>{t.addEventListener("click",(t=>{const e="lb-footerlink--",i=t.target.closest("a"),s=(i?Array.from(i.classList):[]).find((t=>t.startsWith(e))),n=null==s?void 0:s.replace(e,"");switch(null==i||i.classList.remove("lb-footerlink--show-badge"),n){case"donate":b.setHideBadgeDonate(!0);break;case"follow":b.setHideBadgeFollow(!0);break;case"share":b.setHideBadgeShare(!0)}}))}))}))}setUpExportButton(){return e(this,void 0,void 0,(function*(){if(!(yield tt.isBlockExportPage()))return;if(document.querySelector(".lb-btn--export"))return;const e=yield ("section",!0,3);if(!e)return;if(!(yield tt.isBlockExportPage()))return;const i=document.createElement("button");i.innerHTML=Q,i.setAttribute("aria-label",t.i18n.getMessage("ui_export")),i.setAttribute("title",t.i18n.getMessage("ui_export")),i.classList.add("lb-btn--export"),i.style.backgroundColor=tt.highlightColor,e.appendChild(i),i.addEventListener("click",(()=>{this.setUpBlockPopup()}))}))}startScrolling(){return e(this,void 0,void 0,(function(){(yield this.getScrollList()).classList.add("lb-blur"),(yield this.scrolly).scrollTo(0,0);const t=yield this.getAnimationLevel();this.collectedUsers=new v;const i=yield B.getScrollsPerMinute(),s=Math.round(60/i1e3);this.scrollInterval=window.setInterval((()=>e(this,void 0,void 0,(function(){yield this.scrollDown(t)}))),s)}))}createIdleWarning(){var i;return e(this,void 0,void 0,(function(){const e=yield this.getAnimationLevel();if((yield b.getHideIdleWarning())||Array.from(this.popup.classList).includes("lb-popup--has-warning")||this.hasStateChangedToConfirm)return;const s=document.createElement("div");s.style.backgroundColor=tt.backgroundColor,s.classList.add("lb-warning"),s.innerHTML=\n\t\t\t<h4 class="lb-warning__heading">${O}<span>${t.i18n.getMessage("ui_warning_heading")}</span></h4>\n\t\t\t<span class="lb-warning__text">${t.i18n.getMessage("ui_warning_text")}</span>\n\t\t\t<div class="lb-warning__buttons">\n\t\t\t\t<button class="lb-warning__button lb-warning__button--ok">${t.i18n.getMessage("ui_ok")}</button>\n\t\t\t\t<button class="lb-warning__button lb-warning__button--hide">${t.i18n.getMessage("ui_do_not_show_again")}</button>\n\t\t\t</div>\n\t\t,this.popup.append(s),this.popup.classList.add("lb-popup--has-warning"),s.style.color=this.textStyle.color,s.style.fontFamily=this.textStyle.fontFamily,s.style.fontStyle=this.textStyle.fontStyle,s.style.fontWeight=this.textStyle.fontWeight,this.popup.querySelectorAll(".lb-warningbutton").forEach((t=>{t.addEventListener("click",(()=>{this.popup.classList.remove("lb-popup--has-warning"),this.uiIdleCounter=-1,e===L.off?s.remove():s.addEventListener("transitionend",(()=>{s.remove()}))}))})),null===(i=this.popup.querySelector(".lb-warningbutton--hide"))||void 0===i||i.addEventListener("click",(()=>{b.setHideIdleWarning(!0)}))}))}}const nt='svg path[d="M19.498 3h-15c-1.381 0-2.5 1.12-2.5 2.5v13c0 1.38 1.119 2.5 2.5 2.5h15c1.381 0 2.5-1.12 2.5-2.5v-13c0-1.38-1.119-2.5-2.5-2.5zm-3.502 12h-2v-3.59l-5.293 5.3-1.414-1.42L12.581 10H8.996V8h7v7z"]';class ot{static get scrollListener(){return this._scrollListener||(this._scrollListener=()=>{this.findAds(!1).then((t=>{this.removeAds(t)}))}),this.scrollListener}static start(){this.isRunning||(console.info("starting AdBlocker..."),this.findAds(!1).then((t=>{this.removeAds(t)})),this.findAds(!0).then((t=>{this.removeAds(t)})),window.addEventListener("scroll",this.scrollListener),this.isRunning=!0)}static stop(){window.removeEventListener("scroll",this.scrollListener),this.isRunning=!1,console.info("AdBlocker stopped.")}static findAds(t){return e(this,void 0,void 0,(function*(){const e=t?yield (nt,!0,null,null,50):document.querySelectorAll(nt);if(e&&0!==e.length)return e}))}static removeAds(t){if(!t||!t.length)return;Array.from(t).map((t=>t.closest('[data-testid="cellInnerDiv"]')||t.closest('[data-testid="UserCell"]'))).filter((t=>t)).forEach((t=>{t instanceof HTMLElement&&!t.style.getPropertyValue("--adBlocked")&&(console.info("removing ad..."),t.style.setProperty("--adBlocked","true"),t.style.visibility="hidden",t.style.maxHeight="0",b.increaseBlockedAdsCount())}))}}!function(){n.onGetUserInfo((()=>e(this,void 0,void 0,(function*(){let t=yield w.getUserInfo();if(t&&t.screenname)return Promise.resolve({userInfo:t});const e=yield ("a[data-testid=AppTabBar_ProfileLink]"),i=yield ('header[role="banner"] [data-testid^="UserAvatar-Container"] div img');if(e instanceof HTMLAnchorElement&&i instanceof HTMLImageElement){const s=yield b.getIdentity();return t={screen_name:e.href.split("/").pop(),profile_image_url_https:i.src,id:parseInt(s)},w.login(t),Promise.resolve({userInfo:t})}})))),st.run(),B.isAdBlockerActive().then((t=>{t&&ot.start()})),n.onToggleAdBlocker((t=>{t?ot.start():ot.stop()})),b.getScreenshotMode().then((t=>{document.body.classList.toggle("screenshot-blur",t)})),document.body.style.setProperty("--color--brand",c),document.body.style.setProperty("--color--brand--dark",a)}()}(chrome);