2017-05-30 17:56:05 +02:00
// ==UserScript==
2017-05-30 17:53:30 +02:00
// @name AAK-Cont Userscript Core
2017-05-30 17:32:00 +02:00
// @description Helps you keep your Ad-Blocker active, when you visit a website and it asks you to disable.
2017-05-30 17:53:30 +02:00
// @author AAK-Cont contributors
// @version 1.006
2017-05-30 17:32:00 +02:00
// @encoding utf-8
2017-05-30 17:53:30 +02:00
// @license GNU GPL v3
2017-05-30 17:32:00 +02:00
// @icon https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/images/icon.png
// @homepage https://xuhaiyang1234.gitlab.io/AAK-Cont/
// @supportURL https://gitlab.com/xuhaiyang1234/AAK-Cont/issues
2017-05-30 17:56:05 +02:00
// @updateURL https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/dist/aak-cont-script-ubo.user.js
// @downloadURL https://gitlab.com/xuhaiyang1234/AAK-Cont/raw/master/dist/aak-cont-script-ubo.user.js
2017-05-30 17:32:00 +02:00
// @include http://*/*
// @include https://*/*
// @grant unsafeWindow
// @grant GM_addStyle
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @grant GM_registerMenuCommand
// @grant GM_deleteValue
// @grant GM_listValues
// @grant GM_getResourceText
// @grant GM_getResourceURL
// @grant GM_log
// @grant GM_openInTab
// @grant GM_setClipboard
// @grant GM_info
// @grant GM_getMetadata
// @run-at document-start
// @connect *
// ==/UserScript==
2017-05-30 17:53:30 +02:00
//Paste after Meta
2017-05-30 17:32:00 +02:00
/*jshint evil:true newcap:false*/
/*global unsafeWindow, GM_addStyle, GM_getValue, GM_setValue, GM_xmlhttpRequest, GM_registerMenuCommand, GM_deleteValue, GM_listValues, GM_getResourceText, GM_getResourceURL, GM_log, GM_openInTab, GM_setClipboard, GM_info, GM_getMetadata, $, document, console, location, setInterval, setTimeout, clearInterval*/
/ * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
Thanks
=== === === === === === === === === === === === === === === === === ===
Donors : M . Howard , Shunjou , Charmine , Kierek93 , G . Barnard , H . Young , Seinhor9 , ImGlodar , Ivanosevitch , HomeDipo , R . Martin , DrFiZ , Tippy , B . Rohner , P . Kozica , M . Patel , W4rell , Tscheckoff , AdBlock Polska , AVENIR INTERNET , coolNAO , Ben , J . Park , C . Young , J . Bou , M . Cano , J . Jung , A . Sonino , J . Litten , M . Schrumpf , G . Pepe , A . Trufanov , R . Palmer , J . Rautiainen , S . Blystone , M . Silveira , K . MacArthur , M . Ivanov , A . Schmidt , A . Waage , F . Tismer , S . Ehnert , J . Corpus , J . Dluhos , Maklemenz , Strobelix , Modellpilot . EU , E . Benedetti , V . Venditti , Shakos , A . Eliason , A . Saloranta , S . Geiger , A . Otterloo , M . Coppen , S . Fischer , H . Becker , D . Ackerman , S . Pitsch , K . Pertcheck , S . Abel , K . O ' Connor , B . Obrien , S . Vogler , S . Goebl , A . Biar , S . Scott , Bassmobile . org , S . Große , M . Peot , R . Chan Balam , L . Bond - Kennedy , R . Emond , A . Pavlov , W . Tracey , A . Sergey , R . López López , R . Reddy Kasireddy , A . Moujeer , M . Betz , M . Lefèvre , R . McCurdy , LR Geeks , M . Beauregard , CasperTech Ltd , M . Dudas , S . Scharf , S . Prokhorov , K . Papalias , J . Wojnowski , B . Curtis , D . Lawrence , D . He , N . Kelsall , Idogewallet , J . Spaulding , S . Lafon , Mat , H . Roberts , C . Hedlund , J . Hawkins , J . Andersen , M . Bjorksten , B . Wolfe III , T . Yocom , Š . Intas , S . Moenich , J . Chang , C . Munk , A . Naruta , Б . Михаил , J . Benz , F . Sloot , J . Creed , M . Gillam , C . Leicht , A . Gnana , S . Sundaram , A . Koller , M . Kotlar , S . Abel , T . Flanagan , M . Arduini , P . Stackhouse , B . Oliver , M . Johnson , R . Mannert , E . Siordia
Collaborators : InfinityCoding , Couchy , Dindog , Floxflob , U Bless , Watilin , @ prdonahue , Hoshie , 3 lf3nLi3d , Alexo , Crits , Noname120 , Crt32 , JixunMoe , Athorcis , Killerbadger , SMed79 , Alexander255 , Anonsubmitter , RaporLoLpro , Maynak00 , Robotex , Vinctux , Blahx , MajkiIT , F4z , Angelsl , Mikhaelk , Marek , Hamsterbacke , Gorhill , Hacker999 , xxcriticxx , Skr4tchGr3azyMonkiBallllllZzzz , Giwayume , MrSherlockHolmes , xDarkARG , Noahp78 , Mapx -
Users : Thank you to all those who use Anti Adblock Killer , who report problems , who write the review , which add to their favorites , making donations , which support the project and help in its development or promote .
=== === === === === === === === === === === === === === === === === === =
Mirrors
=== === === === === === === === === === === === === === === === === === =
Github : http : //tinyurl.com/mcra3dn
Greasyfork : http : //tinyurl.com/pbbdnh6
Openuserjs : http : //tinyurl.com/nnqje32
MonkeyGuts : http : //tinyurl.com/ka5fcqm
Userscripts : http : //tinyurl.com/q8xcejl
=== === === === === === === === === === === === === === === === === === =
Documentation
=== === === === === === === === === === === === === === === === === === =
Greasemonkey : http : //tinyurl.com/yeefnj5
Scriptish : http : //tinyurl.com/cnd9nkd
Tampermonkey : http : //tinyurl.com/pdytfde
Violentmonkey : http : //tinyurl.com/n34wn6j
NinjaKit : http : //tinyurl.com/pkkm9ug
=== === === === === === === === === === === === === === === === === === =
Script
=== === === === === === === === === === === === === === === === === === * /
/ * = = = = = = = = = = = = =
| AAK / uBP API |
=== === === === == * /
var a = ( function ( win ) {
"use strict" ;
var aak = {
/ * *
* Adds a script in the scope of the unsafeWindow . Useful to get things running on all script managers .
* @ method addScript
* @ param source { String | Function } The Javascript to inject on the page .
* @ param [ injectMode ] { Number } undefined = autodetect , 1 for force eval , 2 for force drop element
* @ param [ body ] { Boolean } true : Inject into body , false : Inject into head .
* /
addScript ( source , injectMode , body ) {
var txt = ( typeof source === "function" ) ? this . intoString ( source ) : source . toString ( ) ;
var forceEval = ( txt ) => {
this . win . eval ( "(" + txt + ")();" ) ;
} ;
var forceDrop = ( txt ) => {
var script = this . doc . createElement ( "script" ) ;
script . type = "text/javascript" ;
script . innerHTML = txt ;
if ( body ) {
this . doc . body . appendChild ( script ) ;
} else {
this . doc . head . appendChild ( script ) ;
}
script . remove ( ) ;
} ;
if ( ! injectMode ) {
if ( this . win && this . getScriptManager ( ) === "Tampermonkey" ) {
forceEval ( txt ) ;
} else {
forceDrop ( txt ) ;
}
} else if ( injectMode === 1 ) {
forceEval ( txt ) ;
} else {
forceDrop ( txt ) ;
}
} ,
/ * *
* Runs a function on DOM & window load .
* @ method always
* @ param func { Function } The function to run .
* @ param capture { Boolean } Dispatches event to the listener ( func ) before the event target .
* /
always ( func , capture ) {
func ( ) ;
this . on ( "DOMContentLoaded" , func , capture ) ;
this . on ( "load" , func , capture ) ;
} ,
/ * *
* String content matching across an array of strings . Returns true if any string in the args array is matched .
* @ method applyMatch
* @ param args { Array } The strings to match against .
* @ param method { Number } The method to match with . Defined in the enum ( aak . matchMethod ) .
* @ param filter { String | RegExp } The matching criteria .
* @ return { Boolen } True if any string match , false otherwise .
* /
applyMatch ( args , method , filter ) {
switch ( method ) {
case this . matchMethod . string :
for ( let i = 0 ; i < args . length ; i ++ ) {
if ( String ( args [ i ] ) . includes ( filter ) ) {
return true ;
}
}
break ;
case this . matchMethod . stringExact :
for ( let i = 0 ; i < args . length ; i ++ ) {
if ( filter === String ( args [ i ] ) ) {
return true ;
}
}
break ;
case this . matchMethod . RegExp :
for ( let i = 0 ; i < args . length ; i ++ ) {
if ( filter . test ( String ( args [ i ] ) ) ) {
return true ;
}
}
break ;
case this . matchMethod . callback :
return filter ( args ) ;
default :
return true ;
}
return false ;
} ,
/ * *
* Adds an HTML element to the page for scripts checking an element ' s existence .
* @ method bait
* @ param type { String } The element tag name .
* @ param identifier { String } CSS selector for adding an ID or class to the element .
* /
bait ( type , identifier ) {
let elem = this . $ ( ` < ${ type } > ` ) ;
if ( identifier . startsWith ( "#" ) ) {
elem . attr ( "id" , identifier . substr ( 1 ) ) ;
} else if ( identifier . startsWith ( "." ) ) {
elem . addClass ( identifier . substr ( 1 ) ) ;
}
elem . html ( "<br>" ) . prependTo ( "html" ) ;
} ,
/ * *
* Configuration for this script .
* @ method config
* @ type Object
* /
config ( ) {
this . config . debugMode = GM _getValue ( "config_debugMode" , this . config . debugMode ) ;
this . config . allowExperimental = GM _getValue ( "config_allowExperimental" , this . config . allowExperimental ) ;
this . config . aggressiveAdflySkipper = GM _getValue ( "config_aggressiveAdflySkiper" , this . config . aggressiveAdflySkipper ) ;
} ,
/ * *
* Sets or gets a cookie , depending on whether the value is provided or not .
* @ method cookie
* @ param key { String } The cookie name .
* @ param val { String } The cookie value . Leave out to retrieve the current value .
* @ param time { Number } Number of milliseconds in which to expire the cookie .
* @ param path { String } The cookie path .
* @ return { String } The value of the cookie , if "val" parameter is omitted .
* /
cookie ( key , val , time , path ) {
if ( typeof val === "undefined" ) {
const value = "; " + this . doc . cookie ;
let parts = value . split ( "; " + key + "=" ) ;
if ( parts . length == 2 ) {
return parts . pop ( ) . split ( ";" ) . shift ( ) ;
} else {
return null ;
}
} else {
let expire = new this . win . Date ( ) ;
expire . setTime ( ( new this . win . Date ( ) ) . getTime ( ) + ( time || 31536000000 ) ) ;
this . setProp ( "document.cookie" ,
key + "=" + this . win . encodeURIComponent ( val ) + ";expires=" + expire . toGMTString ( ) + ";path=" + ( path || "/" )
) ;
}
} ,
/ * *
* Removes an inline script on the page , using the sample string .
* @ method crashScript
* @ param sample { String } Sample function string .
* /
crashScript ( sample ) {
this . patchHTML ( ( html ) => {
return html . replace ( sample , "])} \"'` ])} \n\r \r\n */ ])}" ) ;
} ) ;
} ,
/ * *
* Adds CSS styles to the page .
* @ method css
* @ param str { String } The CSS string to add .
* /
css ( str ) {
let temp = str . split ( ";" ) ;
for ( let i = 0 ; i < temp . length - 1 ; i ++ ) {
if ( ! temp [ i ] . endsWith ( "!important" ) ) {
temp [ i ] += " !important" ;
}
}
GM _addStyle ( temp . join ( ";" ) ) ;
} ,
/ * *
* Defines a property on the unsafe window .
* @ method defineProperty
* @ param name { String } The property name . Can also be a dot separated syntax to traverse into embedded objects from the unsafe window .
* @ param definition { Object } The property definition .
* /
defineProperty ( name , definition ) {
try {
// Code that assumes we can directly set properties on the unsafe window.
let property = this . win ;
let parent ;
let stack = name . split ( "." ) ;
let current ;
while ( current = stack . shift ( ) ) {
parent = property ;
property = parent [ current ] ;
if ( ! stack . length ) {
this . win . Object . defineProperty ( parent , current , definition ) ;
}
}
}
catch ( err ) {
if ( typeof exportFunction === "function" ) {
// If the first solution didn't work, we're probably in greasemonkey. A script tag needs to be injected on the page.
let stack = name . split ( "." ) ;
let last = stack . pop ( ) ;
stack . unshift ( "window" ) ;
let path = stack . join ( "." ) ;
let templateDefinition = [ ] ;
if ( typeof definition . configurable !== "undefined" ) {
templateDefinition . push ( ` configurable: ${ definition . configurable } ` ) ;
}
if ( typeof definition . enumerable !== "undefined" ) {
templateDefinition . push ( ` enumerable: ${ definition . enumerable } ` ) ;
}
if ( typeof definition . writable !== "undefined" ) {
templateDefinition . push ( ` writable: ${ definition . writable } ` ) ;
}
if ( typeof definition . value !== "undefined" ) {
var valueType = Object . prototype . toString . call ( definition . value ) ;
if ( valueType === "[object String]" ) {
definition . value = '"' + definition . value . replace ( /"/g , "\\\"" ) ; + '"' ;
} else if ( valueType === "[object Array]" || valueType === "[object Object]" ) {
definition . value = JSON . stringify ( definition . value ) ;
}
templateDefinition . push ( ` value: ${ definition . value } ` ) ;
}
if ( typeof definition . set !== "undefined" ) {
let setter = definition . set ;
let setterName = this . uid ( ) ;
exportFunction ( setter , this . win , { defineAs : setterName } ) ;
templateDefinition . push ( ` set: function(val) {
window [ "${setterName}" ] ( val ) ;
} ` );
}
if ( typeof definition . get !== "undefined" ) {
let getter = definition . get ;
let getterName = this . uid ( ) ;
exportFunction ( getter , this . win , { defineAs : getterName } ) ;
templateDefinition . push ( ` get: function() {
return window [ "${getterName}" ] ( ) ;
} ` );
}
templateDefinition = templateDefinition . join ( ',' ) ;
this . addScript ( `
try {
Object . defineProperty ( $ { path } , "${last}" , {
$ { templateDefinition }
} ) ;
} catch ( err ) {
console . error ( "AAK failed to define property ${name}!" ) ;
}
` , this.scriptInjectMode.drop);
}
else {
throw ( err ) ;
}
}
} ,
/ * *
* The document of the unsafe window .
* @ property doc
* /
doc : win . document ,
/ * *
* The domain name of the unsafe window .
* @ property dom
* /
dom : win . document . domain ,
/ * *
* Compares the current domain to a list of domains , returns true if in that list .
* @ method domCmp
* @ param domList { Array } The list of domain names to check against .
* @ param noErr { Boolean } Don ' t display errors in debug mode .
* @ return { Boolean } true if the current domain is in the domain list .
* /
domCmp ( domList , noErr ) {
for ( let i = 0 ; i < domList . length ; i ++ ) {
if ( this . dom === domList [ i ] || this . dom . endsWith ( "." + domList [ i ] ) ) {
if ( this . config . debugMode && ! noErr ) {
this . err ( ) ;
}
return true ;
}
}
return false ;
} ,
/ * *
* Checks if the current domain string is included as a sub domain or partial domain in the list .
* @ method domInc
* @ param domList { Array } The list of domain names to check against .
* @ param noErr { Boolean } Don ' t display errors in debug mode .
* @ return { Boolean } True if the current domain is included in the domain list .
* /
domInc ( domList , noErr ) {
for ( let i = 0 ; i < domList . length ; i ++ ) {
if ( this . dom . startsWith ( domList [ i ] + "." ) || this . dom . includes ( "." + domList [ i ] + "." ) ) {
if ( this . config . debugMode && ! noErr ) {
this . err ( ) ;
}
return true ;
}
}
return false ;
} ,
/ * *
* Displays a console error .
* @ method err
* @ param name { String } Descriptive type of error .
* /
err ( name ) {
if ( name ) {
name = name + " " ;
} else {
name = ""
}
this . out . error ( ` Uncaught AdBlock Error: ${ name } AdBlocker detectors are not allowed on this device! ` ) ;
} ,
/ * *
* Replaces a global function with a version that can stop or modify its execution based on the arguments passed .
* @ method filter
* @ param func { String } The name of the function ( or dot separate path to the function ) to be replaced . Starts at the global context .
* @ param method { Number } The method to match function arguments with . Defined in the enum ( aak . matchMethod ) .
* @ param filter { String | RegExp } This string or regex criteria that determines a match . If this matches , the original function is not executed .
* @ param onMatch { Function } Callback when the "filter" argument matches . The return value of this function is used instead of the original function ' s return value .
* @ param onAfter { Function } Callback that fires every time original function is called . The first argument is whether or not the flter matched . The second argument is the args passed into the original function .
* @ return { Boolean } True if errors did not occur .
* /
filter ( func , method , filter , onMatch , onAfter ) {
let original = this . win ;
let parent ;
const newFunc = ( ... args ) => {
if ( this . config . debugMode ) {
this . out . warn ( func + " was called with these arguments: " ) ;
for ( let i = 0 ; i < args . length ; i ++ ) {
this . out . warn ( String ( args [ i ] ) ) ;
}
}
if ( ! method || this . applyMatch ( args , method , filter ) ) {
this . config . debugMode && this . err ( ) ;
let ret = undefined ;
if ( onMatch ) {
ret = onMatch ( args ) ;
}
onAfter && onAfter ( true , args ) ;
return ret ;
}
this . config . debugMode && this . out . info ( "Tests passed." ) ;
onAfter && onAfter ( false , args ) ;
return original . apply ( parent , args ) ;
} ;
try {
let stack = func . split ( "." ) ;
let current ;
while ( current = stack . shift ( ) ) {
parent = original ;
original = parent [ current ] ;
if ( ! stack . length ) {
if ( typeof exportFunction === "function" ) { // Firefox
exportFunction ( newFunc , parent , { defineAs : current } ) ;
} else {
parent [ current ] = newFunc ;
}
}
}
if ( this . protectFunc . enabled ) {
this . protectFunc . pointers . push ( newFunc ) ;
this . protectFunc . masks . push ( String ( original ) ) ;
}
this . config . debugMode && this . out . warn ( "Filter activated on " + func ) ;
} catch ( err ) {
this . config . debugMode && this . out . error ( "AAK failed to activate fitler on " + func + "!" ) ;
return false ;
}
return true ;
} ,
/ * *
* Generic anti - adblocking solutions that run on every page .
* @ method generic
* /
generic ( ) {
//@pragma-keepline Based on generic solutions of Anti-Adblock Killer
//@pragma-keepline License: https://github.com/reek/anti-adblock-killer/blob/master/LICENSE
if ( this . config . allowGeneric && ! this . config . domExcluded ) {
const data = { } ;
this . generic . FuckAdBlock ( "FuckAdBlock" , "fuckAdBlock" ) ;
this . generic . FuckAdBlock ( "BlockAdBlock" , "blockAdBlock" ) ;
this . readOnly ( "canRunAds" , true ) ;
this . readOnly ( "canShowAds" , true ) ;
this . readOnly ( "isAdBlockActive" , false ) ;
let playwireZeus ;
this . defineProperty ( "Zeus" , {
configurable : false ,
set : function ( val ) {
playwireZeus = val ;
} ,
get : function ( ) {
this . config . debugMode && this . err ( "Playwire" ) ;
try {
playwireZeus . AdBlockTester = {
check : function ( a ) { a ( ) ; }
} ;
} catch ( err ) { }
return playwireZeus ;
}
} ) ;
this . ready ( ( ) => {
if ( this . win . XenForo && typeof this . win . XenForo . rellect === "object" ) {
this . config . debugMode && this . err ( "XenForo" ) ;
this . setProp ( "XenForo.rellect" , {
AdBlockDetector : {
start : function ( ) { }
}
} ) ;
}
if ( typeof this . win . closeAdbuddy === "function" ) {
this . config . debugMode && this . err ( "Adbuddy" ) ;
this . win . closeAdbuddy ( ) ;
}
if ( this . $ ( "div.adb_overlay > div.adb_modal_img" ) . length > 0 ) {
this . config . debugMode && this . err ( "AdBlock Alerter" ) ;
this . $ ( "div.adb_overlay" ) . remove ( ) ;
this . css ( "html,body {height:auto; overflow: auto;}" ) ;
}
if ( this . $ ( "#blockdiv" ) . html ( ) === "disable ad blocking or use another browser without any adblocker when you visit" ) {
this . config . debugMode && this . out . err ( "Uncaught AdBlock Error: Generic block screens are not allowed on this device! " ) ;
this . $ ( "#blockdiv" ) . remove ( ) ;
}
const styles = document . querySelectorAll ( "style" ) ;
for ( let i = 0 ; i < styles . length ; i ++ ) {
const style = styles [ i ] ;
const cssRules = style . sheet . cssRules ;
for ( var j = 0 ; j < cssRules . length ; j ++ ) {
const cssRule = cssRules [ j ] ;
const cssText = cssRule . cssText ;
const pattern = /^#([a-z0-9]{4,10}) ~ \* \{ display: none; \}/ ;
if ( pattern . test ( cssText ) ) {
const id = pattern . exec ( cssText ) [ 1 ] ;
if ( this . $ ( "script:contains(w.addEventListener('load'," + id + ",false))" ) ) {
this . config . debugMode && this . err ( "Antiblock.org v2" ) ;
data . abo2 = id ;
break ;
}
}
}
}
for ( let prop in this . win ) {
try {
if ( ! prop . startsWith ( "webkit" ) && /^[a-z0-9]{4,12}$/i . test ( prop ) && prop !== "document" && ( this . win [ prop ] instanceof this . win . HTMLDocument ) === false && this . win . hasOwnProperty ( prop ) && typeof this . win [ prop ] === "object" ) {
const method = this . win [ prop ] ;
if ( method . deferExecution &&
method . displayMessage &&
method . getElementBy &&
method . getStyle &&
method . insert &&
method . nextFunction ) {
if ( method . toggle ) {
this . config . debugMode && this . err ( "BetterStopAdblock" ) ;
data . bsa = prop ;
} else {
this . config . debugMode && this . err ( "Antiblock.org v3" ) ;
data . abo3 = prop ;
}
this . setProp ( prop , null ) ;
}
if ( method . bab ) {
this . config . debugMode && this . err ( "BlockAdBlock" ) ;
this . setProp ( prop , null ) ;
} else if ( this . win . Object . keys ( method ) . length === 3 && this . win . Object . keys ( method ) . join ( ) . length === 32 ) {
this . config . debugMode && this . err ( "BlockAdBlock" ) ;
this . setProp ( prop , null ) ;
}
}
} catch ( err ) { }
}
} ) ;
const onInsertHandler = ( insertedNode ) => {
if ( insertedNode . nodeName === "DIV" &&
insertedNode . id &&
insertedNode . id . length === 4 &&
/^[a-z0-9]{4}$/ . test ( insertedNode . id ) &&
insertedNode . firstChild &&
insertedNode . firstChild . id &&
insertedNode . firstChild . id === insertedNode . id &&
insertedNode . innerHTML . includes ( "no-adblock.com" ) ) {
this . config . debugMode && this . err ( "No-Adblock" ) ;
insertedNode . remove ( ) ;
}
if ( insertedNode . nodeName === "DIV" &&
insertedNode . id &&
insertedNode . id . length === 7 &&
/^a[a-z0-9]{6}$/ . test ( insertedNode . id ) &&
insertedNode . parentNode &&
insertedNode . parentNode . id &&
insertedNode . parentNode . id === insertedNode . id + "2" &&
insertedNode . innerHTML . includes ( "stopadblock.org" ) ) {
this . config . debugMode && this . err ( "StopAdblock" ) ;
insertedNode . remove ( ) ;
}
const reIframeId = /^(zd|wd)$/ ;
const reImgId = /^(xd|gd)$/ ;
const reImgSrc = /\/ads\/banner.jpg/ ;
const reIframeSrc = /(\/adhandler\/|\/adimages\/|ad.html)/ ;
if ( insertedNode . id &&
reImgId . test ( insertedNode . id ) &&
insertedNode . nodeName === "IMG" &&
reImgSrc . test ( insertedNode . src ) ||
insertedNode . id &&
reIframeId . test ( insertedNode . id ) &&
insertedNode . nodeName === "IFRAME" &&
reIframeSrc . test ( insertedNode . src ) ) {
this . config . debugMode && this . err ( "AntiAdblock" ) ;
insertedNode . remove ( ) ;
}
const reId = /^[a-z]{8}$/ ;
const reClass = /^[a-z]{8} [a-z]{8}/ ;
const reBg = /^[a-z]{8}-bg$/ ;
if ( typeof this . win . vtfab !== "undefined" &&
typeof this . win . adblock _antib !== "undefined" &&
insertedNode . parentNode &&
insertedNode . parentNode . nodeName === "BODY" &&
insertedNode . id &&
reId . test ( insertedNode . id ) &&
insertedNode . nodeName === "DIV" &&
insertedNode . nextSibling &&
insertedNode . nextSibling . className &&
insertedNode . nextSibling . nodeName === "DIV" ) {
if ( insertedNode . className &&
reClass . test ( insertedNode . className ) &&
reBg . test ( insertedNode . nextSibling . className ) &&
insertedNode . nextSibling . style &&
insertedNode . nextSibling . style . display !== "none" ) {
this . config . debugMode && this . err ( "Adunblock Premium" ) ;
insertedNode . nextSibling . remove ( ) ;
insertedNode . remove ( ) ;
} else if ( insertedNode . nextSibling . id &&
reId . test ( insertedNode . nextSibling . id ) &&
insertedNode . innerHTML . includes ( "Il semblerait que vous utilisiez un bloqueur de publicité !" ) ) {
this . config . debugMode && this . err ( "Adunblock Free" ) ;
insertedNode . remove ( ) ;
}
}
const reMsgId = /^[a-z0-9]{4,10}$/i ;
const reTag1 = /^(div|span|b|i|font|strong|center)$/i ;
const reTag2 = /^(a|b|i|s|u|q|p|strong|center)$/i ;
const reWords1 = /ad blocker|ad block|ad-block|adblocker|ad-blocker|adblock|bloqueur|bloqueador|Werbeblocker|adblockert|آدبلوك بلس|блокировщиком/i ;
const reWords2 = /kapat|disable|désactivez|désactiver|desactivez|desactiver|desative|desactivar|desactive|desactiva|deaktiviere|disabilitare|απενεργοποίηση|запрещать|állítsd le|publicités|рекламе|verhindert|advert|kapatı nı z/i ;
if ( insertedNode . parentNode &&
insertedNode . id &&
insertedNode . style &&
insertedNode . childNodes . length &&
insertedNode . firstChild &&
! insertedNode . firstChild . id &&
! insertedNode . firstChild . className &&
reMsgId . test ( insertedNode . id ) &&
reTag1 . test ( insertedNode . nodeName ) &&
reTag2 . test ( insertedNode . firstChild . nodeName ) ) {
this . config . debugMode && this . err ( "Antiblock.org" ) ;
const audio = insertedNode . querySelector ( "audio[loop]" ) ;
if ( audio ) {
audio . pause ( ) ;
audio . remove ( ) ;
} else if ( ( data . abo2 && insertedNode . id === data . abo2 ) ||
( insertedNode . firstChild . hasChildNodes ( ) && reWords1 . test ( insertedNode . firstChild . innerHTML ) && reWords2 . test ( insertedNode . firstChild . innerHTML ) ) ) {
insertedNode . remove ( ) ;
} else if ( ( data . abo3 && insertedNode . id === data . abo3 ) ||
( insertedNode . firstChild . hasChildNodes ( ) && insertedNode . firstChild . firstChild . nodeName === "IMG" && insertedNode . firstChild . firstChild . src . startsWith ( "data:image/png;base64" ) ) ) {
aak . win [ data . abo3 ] = null ;
insertedNode . remove ( ) ;
} else if ( data . bsa && insertedNode . id === data . bsa ) {
this . win [ data . bsa ] = null ;
insertedNode . remove ( ) ;
}
}
} ;
this . observe ( "insert" , onInsertHandler ) ;
} else if ( this . config . debugMode ) {
this . out . warn ( "Generic solutions are disabled on this domain. " ) ;
}
} ,
/ * *
* Gets the name of the current script manager , if available .
* @ method getScriptManager
* /
getScriptManager ( ) {
if ( typeof GM _info === 'object' ) {
// Greasemonkey (Firefox)
if ( typeof GM _info . uuid !== 'undefined' ) {
return 'Greasemonkey' ;
} // Tampermonkey (Chrome/Opera)
else if ( typeof GM _info . scriptHandler !== 'undefined' ) {
return 'Tampermonkey' ;
}
} else {
// Scriptish (Firefox)
if ( typeof GM _getMetadata === 'function' ) {
return 'Scriptish' ;
} // NinjaKit (Safari/Chrome)
else if ( typeof GM _setValue !== 'undefined' &&
typeof GM _getResourceText === 'undefined' &&
typeof GM _getResourceURL === 'undefined' &&
typeof GM _openInTab === 'undefined' &&
typeof GM _setClipboard === 'undefined' ) {
return 'NinjaKit' ;
} else { // Native
return 'Native' ;
}
}
} ,
/ * *
* Initialize the script .
* @ method init
* @ param excluded { Array } An array of URLs to exclude from blocking .
* @ param AdFlyMatch { Boolean } Whether or not to match adfly .
* @ param AdflyUnmatch { Boolean } Wheter or not to unmatch adfly .
* /
init ( excluded , AdflyMatch , AdflyUnmatch ) {
this . $ = this . make$ ( ) ;
this . config ( ) ;
this . config . debugMode && this . out . warn ( "Domain: " + a . dom ) ;
this . config . domExcluded = excluded ;
if ( this . config . debugMode && excluded ) {
this . out . warn ( "This domain is in excluded list. " ) ;
}
if ( ! excluded && ( AdflyMatch || ( this . config . aggressiveAdflySkiper && ! AdflyUnmatch ) ) ) {
this . generic . AdflySkipper ( ) ;
}
} ,
/ * *
* Converts a string into an object . For functions , only the function body is taken .
* @ method intoString
* @ param a { Any } The object to convert
* @ param { String } The string representation of the object .
* /
intoString ( a ) {
if ( typeof a === 'function' ) {
var str = a . toString ( ) ;
var first = str . indexOf ( "{" ) + 1 ;
var last = str . lastIndexOf ( "}" ) ;
return str . substr ( first , last - first ) . trim ( ) ;
} else if ( typeof entry === 'object' ) {
return JSON . stringify ( a ) ;
} else { // array or string
return a . toString ( ) ;
}
} ,
/ * *
* Create a jQuery instance .
* @ method make$
* /
make$ ( ) {
let $ = this . jQueryFactory ( this . win , true ) ;
return $ ;
} ,
/ * *
* Match enum for the "applyMatch" method .
* @ property matchMethod
* @ type Object
* /
matchMethod : {
matchAll : 0 , // Match all, this is default.
string : 1 , // Substring match
stringExact : 2 , // Exact string match, will result in match if one or more arguments matches the filter
RegExp : 3 , // Regular expression
callback : 4 // Callback, arguments list will be supplied as an array. Retrun true for match, false for no match.
} ,
/ * *
* Creates a native video player .
* @ method nativePlayer
* @ param source { String } The source URL of the video stream .
* @ param [ typeIn ] { String } Specify a video MIME type .
* @ param [ widthIn ] { String } Specify a custom width .
* @ param [ heightIn ] { String } Specify a custom height .
* /
nativePlayer ( source , typeIn , widthIn , heightIn ) {
let type ;
if ( typeIn ) {
type = typeIn ;
} else {
const temp = source . split ( "." ) ;
switch ( temp [ temp . length - 1 ] ) {
case "webm" :
type = "video/webm" ;
break ;
case "mp4" :
type = "video/mp4" ;
break ;
case "ogg" :
type = "video/ogg" ;
break ;
default :
type = "video/mp4" ;
break ;
}
}
const width = widthIn || "100%" ;
const height = heightIn || "auto" ;
return ` <video width=' ${ width } ' height=' ${ height } ' controls><source src=' ${ source } ' type=' ${ type } '></video> ` ;
} ,
/ * *
* Blocks scripts from accessing a global property .
* @ method noAccess
* @ param name { String } The name of the property to deny access to . Using "." will traverse an object ' s properties . Starts at the global context .
* /
noAccess ( name ) {
const errMsg = "AdBlock Error: This property may not be accessed!" ;
try {
this . defineProperty ( name , {
configurable : false ,
set : function ( ) {
throw errMsg ;
} ,
get : function ( ) {
throw errMsg ;
}
} ) ;
} catch ( err ) {
this . config . debugMode && this . out . error ( "AAK failed to define non-accessible property '" + name + "'!" ) ;
}
} ,
/ * *
* Shorthand function for observing and reacting to DOM mutations .
* @ method observe
* @ param type { String } The type of mutation to observe , "insert" or "remove" .
* @ param callback { Function } The callback function that fires when the mutation occurs .
* /
observe ( type , callback ) {
if ( ! this . observe . init . done ) {
this . observe . init . done = true ;
this . observe . init ( ) ;
}
switch ( type ) {
case "insert" :
this . observe . insertCallbacks . push ( callback ) ;
break ;
case "remove" :
this . observe . removeCallbacks . push ( callback ) ;
break ;
}
} ,
/ * *
* Shorthand function for unsafeWindow . attachEventListener .
* @ method on
* @ param event { String } The event to listen to .
* @ param func { Function } The callback that fires when the event occurs .
* @ param capture { Boolean } "useCapture" .
* /
on ( event , func , capture ) {
if ( typeof exportFunction === "function" ) {
var funcName = this . uid ( ) ;
exportFunction ( func , this . win , { defineAs : funcName } ) ;
this . addScript ( `
window . addEventListener ( "${event}" , window . $ { funcName } , $ { capture } ) ;
delete window . $ { funcName } ;
` , this.scriptInjectMode.drop);
} else {
this . win . addEventListener ( event , func , capture ) ;
}
} ,
/ * *
* The console of the unsafe window
* @ property out
* /
out : win . console ,
/ * *
* Modify the HTML of the entire page before it loads .
* @ method patchHTML
* @ param patcher { Function } Function that is passed the HTML of the page , and returns the replacement .
* /
patchHTML ( patcher ) {
this . win . stop ( ) ;
GM _xmlhttpRequest ( {
method : "GET" ,
url : this . doc . location . href ,
headers : {
"Referer" : this . doc . referer
} ,
onload : ( result ) => {
this . doc . write ( patcher ( result . responseText ) ) ;
}
} ) ;
} ,
/ * *
* @ method patchToString
* /
patchToString ( ) {
//Implementation wanted.
//Patch Function.prototype.toString so our modification can't be detected by the page script
} ,
/ * *
* Stops websites from detecting function modifications by utilizing the toString method of the function . Used in conjunction with "filter" .
* @ method protectFunc
* /
protectFunc ( ) {
this . protectFunc . enabled = true ;
const original = this . win . Function . prototype . toString ;
const newFunc = ( ) => {
const index = this . protectFunc . pointers . indexOf ( this ) ;
if ( index === - 1 ) {
return original . apply ( this ) ;
} else {
return this . protectFunc . masks [ index ] ;
}
} ;
try {
this . win . Function . prototype . toString = newFunc ;
this . protectFunc . pointers . push ( newFunc ) ;
this . protectFunc . masks . push ( String ( original ) ) ;
this . config . debugMode && this . out . warn ( "Functions protected." ) ;
} catch ( err ) {
this . config . debugMode && this . out . error ( "AAK failed to protect functions!" ) ;
return false ;
}
return true ;
} ,
/ * *
* Makes it so a global property is not modifiable by further scripts .
* @ method noAccess
* @ param name { String } The name of the property to make read - only . Using "." will traverse an object ' s properties . Starts at the global context .
* @ param val { Any } The desired value of the read - only property .
* /
readOnly ( name , val ) {
try {
this . defineProperty ( name , {
configurable : false ,
set : function ( ) { } ,
get : function ( ) {
return val ;
}
} ) ;
} catch ( err ) {
this . config . debugMode && this . out . error ( "AAK failed to define non-accessible property '" + name + "'!" ) ;
}
} ,
/ * *
* Fires when the DOM is ready for modification .
* @ method ready
* @ param func { Function } Callback to fire when DOM is ready .
* @ param capture { Boolean } Whether or not the callback should fire before event target .
* /
ready ( func , capture ) {
this . on ( "DOMContentLoaded" , func , capture ) ;
} ,
/ * *
* Redirects the page with a get or post request . Use this instead of window . location . href for greater compatibility .
* @ method redirect
* @ param url { String } The URL to redirect to .
* @ param [ method = "get" ] { String } The redirection method , "get" or "post" .
* @ param [ params ] { Object } Either get params or post body data , depending on the method .
* /
redirect ( url , method , params ) {
var callRedirect = ( ) => {
method = ( method || "get" ) . toLowerCase ( ) ;
let form = this . doc . createElement ( "form" ) ;
form . method = method ;
form . action = url ;
if ( params ) {
for ( let key in params ) {
if ( params . hasOwnProperty ( key ) ) {
let hiddenField = this . doc . createElement ( "input" ) ;
hiddenField . type = "hidden" ;
hiddenField . name = key ;
hiddenField . value = params [ key ] ;
form . appendChild ( hiddenField ) ;
}
}
}
let submitButton = this . doc . createElement ( "input" ) ;
submitButton . style . display = "none" ;
submitButton . type = "submit" ;
form . appendChild ( submitButton ) ;
this . doc . body . appendChild ( form ) ;
submitButton . click ( ) ;
this . doc . body . removeChild ( form ) ;
} ;
if ( document . readyState == "interactive" || document . readyState == "complete" ) {
callRedirect ( ) ;
} else {
this . ready ( ( ) => {
callRedirect ( ) ;
} ) ;
}
} ,
scriptInjectMode : {
default : 0 ,
eval : 1 ,
drop : 2
} ,
/ * *
* The unsafe window ' s setInterval .
* @ property setInterval
* /
setInterval : win . setInterval ,
/ * *
* Sets a property on the unsafe window .
* @ method setProp
* @ param name { String } The name of the property to set . Can use a dot separated syntax to drill down into objects .
* @ param val { Any } The value of the property .
* /
setProp ( name , val ) {
if ( Object . prototype . toString . call ( name ) === "[object Array]" ) {
name = name . join ( "." ) ;
}
if ( typeof exportFunction === "function" ) {
var valFunction = function ( ) {
return val ;
} ;
var valFunctionName = this . uid ( ) ;
exportFunction ( valFunction , this . win , { defineAs : valFunctionName } ) ;
this . addScript ( `
window . $ { name } = $ { valFunctionName } ( ) ;
delete $ { valFunctionName } ;
` , this.scriptInjectMode.drop);
}
else {
let original = this . win ;
let parent ;
let stack = name . split ( "." ) ;
let current ;
while ( current = stack . shift ( ) ) {
parent = original ;
original = parent [ current ] ;
if ( ! stack . length ) {
parent [ current ] = val ;
}
}
}
} ,
/ * *
* The unsafe window ' s setTimeout .
* @ property setTimeout
* /
setTimeout : win . setTimeout ,
/ * *
* Creates a SHA - 256 hash signature of provided string .
* @ method sha256
* @ param r { String } The string to encrypt .
* /
sha256 ( r ) {
//@pragma-keepline Based on work of Angel Marin and Paul Johnston
//@pragma-keepline More information: http://www.webtoolkit.info/javascript-sha256.html
function n ( r , n ) {
var t = ( 65535 & r ) + ( 65535 & n ) ,
e = ( r >> 16 ) + ( n >> 16 ) + ( t >> 16 ) ;
return e << 16 | 65535 & t ;
}
function t ( r , n ) {
return r >>> n | r << 32 - n ;
}
function e ( r , n ) {
return r >>> n ;
}
function o ( r , n , t ) {
return r & n ^ ~ r & t ;
}
function u ( r , n , t ) {
return r & n ^ r & t ^ n & t ;
}
function a ( r ) {
return t ( r , 2 ) ^ t ( r , 13 ) ^ t ( r , 22 ) ;
}
function f ( r ) {
return t ( r , 6 ) ^ t ( r , 11 ) ^ t ( r , 25 ) ;
}
function c ( r ) {
return t ( r , 7 ) ^ t ( r , 18 ) ^ e ( r , 3 ) ;
}
function i ( r ) {
return t ( r , 17 ) ^ t ( r , 19 ) ^ e ( r , 10 ) ;
}
function h ( r , t ) {
var e , h , C , g , d , v , A , l , m , S , y , w , b = new Array ( 1116352408 , 1899447441 , 3049323471 , 3921009573 , 961987163 , 1508970993 , 2453635748 , 2870763221 , 3624381080 , 310598401 , 607225278 , 1426881987 , 1925078388 , 2162078206 , 2614888103 , 3248222580 , 3835390401 , 4022224774 , 264347078 , 604807628 , 770255983 , 1249150122 , 1555081692 , 1996064986 , 2554220882 , 2821834349 , 2952996808 , 3210313671 , 3336571891 , 3584528711 , 113926993 , 338241895 , 666307205 , 773529912 , 1294757372 , 1396182291 , 1695183700 , 1986661051 , 2177026350 , 2456956037 , 2730485921 , 2820302411 , 3259730800 , 3345764771 , 3516065817 , 3600352804 , 4094571909 , 275423344 , 430227734 , 506948616 , 659060556 , 883997877 , 958139571 , 1322822218 , 1537002063 , 1747873779 , 1955562222 , 2024104815 , 2227730452 , 2361852424 , 2428436474 , 2756734187 , 3204031479 , 3329325298 ) ,
p = new Array ( 1779033703 , 3144134277 , 1013904242 , 2773480762 , 1359893119 , 2600822924 , 528734635 , 1541459225 ) ,
s = new Array ( 64 ) ;
r [ t >> 5 ] |= 128 << 24 - t % 32 , r [ ( t + 64 >> 9 << 4 ) + 15 ] = t ;
for ( m = 0 ; m < r . length ; m += 16 ) {
e = p [ 0 ] , h = p [ 1 ] , C = p [ 2 ] , g = p [ 3 ] , d = p [ 4 ] , v = p [ 5 ] , A = p [ 6 ] , l = p [ 7 ] ;
for ( S = 0 ; 64 > S ; S ++ ) 16 > S ? s [ S ] = r [ S + m ] : s [ S ] = n ( n ( n ( i ( s [ S - 2 ] ) , s [ S - 7 ] ) , c ( s [ S - 15 ] ) ) , s [ S - 16 ] ) , y = n ( n ( n ( n ( l , f ( d ) ) , o ( d , v , A ) ) , b [ S ] ) , s [ S ] ) , w = n ( a ( e ) , u ( e , h , C ) ) , l = A , A = v , v = d , d = n ( g , y ) , g = C , C = h , h = e , e = n ( y , w ) ;
p [ 0 ] = n ( e , p [ 0 ] ) , p [ 1 ] = n ( h , p [ 1 ] ) , p [ 2 ] = n ( C , p [ 2 ] ) , p [ 3 ] = n ( g , p [ 3 ] ) , p [ 4 ] = n ( d , p [ 4 ] ) , p [ 5 ] = n ( v , p [ 5 ] ) , p [ 6 ] = n ( A , p [ 6 ] ) , p [ 7 ] = n ( l , p [ 7 ] ) ;
}
return p ;
}
function C ( r ) {
for ( var n = Array ( ) , t = ( 1 << v ) - 1 , e = 0 ; e < r . length * v ; e += v ) n [ e >> 5 ] |= ( r . charCodeAt ( e / v ) & t ) << 24 - e % 32 ;
return n ;
}
function g ( r ) {
r = r . replace ( /\r\n/g , "\n" ) ;
for ( var n = "" , t = 0 ; t < r . length ; t ++ ) {
var e = r . charCodeAt ( t ) ;
128 > e ? n += String . fromCharCode ( e ) : e > 127 && 2048 > e ? ( n += String . fromCharCode ( e >> 6 | 192 ) , n += String . fromCharCode ( 63 & e | 128 ) ) : ( n += String . fromCharCode ( e >> 12 | 224 ) , n += String . fromCharCode ( e >> 6 & 63 | 128 ) , n += String . fromCharCode ( 63 & e | 128 ) ) ;
}
return n ;
}
function d ( r ) {
for ( var n = A ? "0123456789ABCDEF" : "0123456789abcdef" , t = "" , e = 0 ; e < 4 * r . length ; e ++ ) t += n . charAt ( r [ e >> 2 ] >> 8 * ( 3 - e % 4 ) + 4 & 15 ) + n . charAt ( r [ e >> 2 ] >> 8 * ( 3 - e % 4 ) & 15 ) ;
return t ;
}
var v = 8 ,
A = 0 ;
return r = g ( r ) , d ( h ( C ( r ) , r . length * v ) ) ;
} ,
/ * *
* Similar to "filter" , except all arguments are multiplied by a "ratio" for detection on the next call . Usually used on "setInterval" .
* @ method timewarp
* /
timewarp ( func , method , filter , onMatch , onAfter , ratio ) {
ratio = ratio || 0.02 ;
const original = this . win [ func ] ;
const newFunc = ( ... args ) => {
if ( this . config . debugMode ) {
this . out . warn ( "Timewarpped " + func + " is called with these arguments: " ) ;
for ( let i = 0 ; i < args . length ; i ++ ) {
this . out . warn ( String ( args [ i ] ) ) ;
}
}
if ( ! method || this . applyMatch ( args , method , filter ) ) {
this . config . debugMode && this . out . warn ( "Timewarpped. " ) ;
onMatch && onMatch ( args ) ;
onAfter && onAfter ( true , args ) ;
args [ 1 ] = args [ 1 ] * ratio ;
return original . apply ( this . win , args ) ;
} else {
this . config . debugMode && this . out . info ( "Not timewarpped. " ) ;
onAfter && onAfter ( false , args ) ;
return original . apply ( this . win , args ) ;
}
} ;
try {
if ( typeof exportFunction === "function" ) { // Firefox
exportFunction ( newFunc , this . win , { defineAs : func } ) ;
} else {
this . win [ func ] = newFunc ;
}
if ( this . protectFunc . enabled ) {
this . protectFunc . pointers . push ( newFunc ) ;
this . protectFunc . masks . push ( String ( original ) ) ;
}
this . config . debugMode && this . out . warn ( "Timewarp activated on " + func ) ;
} catch ( err ) {
this . config . debugMode && this . out . error ( "uBlock Protector failed to apply timewarp on " + func + "! " ) ;
return false ;
}
return true ;
} ,
/ * *
* Generated a unique ID string .
* @ method uid
* @ return { String } The unique id .
* /
uid ( ) {
const chars = "abcdefghijklnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ" ;
let str = "" ;
for ( let i = 0 ; i < 10 ; i ++ ) {
str += chars . charAt ( this . win . Math . floor ( this . win . Math . random ( ) * chars . length ) ) ;
}
this . uid . counter ++ ;
return str + this . uid . counter . toString ( ) ;
} ,
/ * *
* Creates a videoJS player .
* @ method videoJS
*
* /
videoJS ( sources , types , width , height ) {
let html = ` <video id="uBlock_Protector_Video_Player" class="video-js vjs-default-skin" controls preload="auto" width=" ${ width } " height=" ${ height } " data-setup="{}"> ` ;
for ( let i = 0 ; i < sources . length ; i ++ ) {
html += ` <source src=" ${ sources [ i ] } " type=" ${ types [ i ] } "> ` ;
}
html += ` </video> ` ;
return html ;
} ,
/ * *
* The unsafe window . Use for read - only access .
* Writing directly does not work in all setups . Use the "setProp" method to write .
* @ property window
* /
win : win
} ;
/ *
* Static properties for aak . config
* /
aak . config . aggressiveAdflySkipper = true ;
aak . config . allowExperimental = true ;
aak . config . allowGeneric = true ;
aak . config . debugMode = true ;
aak . config . domExcluded = null ;
aak . config . update = ( id , val ) => {
const names = [
"config_debugMode" ,
"config_allowExperimental" ,
"config_aggressiveAdflySkiper"
] ;
if ( names . includes ( id ) ) {
GM _setValue ( id , Boolean ( val ) ) ;
}
} ;
/ *
* Static properties for aak . generic
* /
aak . generic . AdflySkipper = function ( ) {
//@pragma-keepline Based on AdsBypasser
//@pragma-keepline License: https://github.com/adsbypasser/adsbypasser/blob/master/LICENSE
const handler = function ( encodedURL ) {
if ( aak . doc . body ) {
return ;
}
const index = encodedURL . indexOf ( "!HiTommy" ) ;
if ( index >= 0 ) {
encodedURL = encodedURL . substring ( 0 , index ) ;
}
let var1 = "" , var2 = "" ;
for ( let i = 0 ; i < encodedURL . length ; ++ i ) {
if ( i % 2 === 0 ) {
var1 = var1 + encodedURL . charAt ( i ) ;
} else {
var2 = encodedURL . charAt ( i ) + var2 ;
}
}
let decodedURL = aak . win . atob ( var1 + var2 ) ;
decodedURL = decodedURL . substr ( 2 ) ;
if ( aak . win . location . hash ) {
decodedURL += aak . win . location . hash ;
}
if ( decodedURL . length > 3 && decodedURL . includes ( "." ) ) {
aak . win . stop ( ) ;
aak . setProp ( "onbeforeunload" , null ) ;
aak . redirect ( decodedURL ) ;
}
} ;
try {
let val ;
let flag = true ;
aak . defineProperty ( "ysmm" , {
configurable : false ,
set : function ( value ) {
if ( flag ) {
flag = false ;
try {
if ( typeof value === "string" ) {
handler ( value ) ;
}
} catch ( err ) { }
}
val = value ;
} ,
get : function ( ) {
return val ;
}
} ) ;
} catch ( err ) {
aak . config . debugMode && aak . out . error ( "uBlock Protector could not set up Adfly skipper. " ) ;
}
} ;
aak . generic . FuckAdBlock = function ( constructorName , instanceName ) {
const patchedFuckAdBlock = function ( ) {
//@pragma-keepline Based on FuckAdBlock
//@pragma-keepline License: https://github.com/sitexw/FuckAdBlock/blob/master/LICENSE
this . _callbacks = [ ] ;
aak . on ( "load" , ( function ( ) {
this . emitEvent ( ) ;
} ) . bind ( this ) ) ;
this . setOption = function ( ) {
return this ;
} ;
this . check = function ( ) {
this . emitEvent ( ) ;
return true ;
} ;
this . emitEvent = function ( ) {
for ( let i = 0 ; i < this . _callbacks . length ; i ++ ) {
this . _callbacks [ i ] ( ) ;
}
return this ;
} ;
this . clearEvent = function ( ) {
this . _callbacks = [ ] ;
} ;
this . on = function ( detected , func ) {
aak . config . debugMode && aak . err ( "FuckAdBlock" ) ;
if ( ! detected ) {
this . _callbacks . push ( func ) ;
}
return this ;
} ;
this . onDetected = function ( ) {
aak . config . debugMode && aak . err ( "FuckAdBlock" ) ;
return this ;
} ;
this . onNotDetected = function ( func ) {
return this . on ( false , func ) ;
} ;
this . debug = { } ;
this . debug . set = ( function ( ) {
return this ;
} ) . bind ( this ) ;
} ;
return aak . readOnly ( constructorName , patchedFuckAdBlock ) && aak . readOnly ( instanceName , new aak . win [ constructorName ] ( ) ) ;
} ;
/ *
* Static properties for aak . observe
* /
aak . observe . init = ( ) => {
const observer = new aak . win . MutationObserver ( function ( mutations ) {
for ( let i = 0 ; i < mutations . length ; i ++ ) {
if ( mutations [ i ] . addedNodes . length ) {
for ( let ii = 0 ; ii < aak . observe . insertCallbacks . length ; ii ++ ) {
for ( let iii = 0 ; iii < mutations [ i ] . addedNodes . length ; iii ++ ) {
aak . observe . insertCallbacks [ ii ] ( mutations [ i ] . addedNodes [ iii ] ) ;
}
}
}
if ( mutations [ i ] . removedNodes . length ) {
for ( let ii = 0 ; ii < aak . observe . removeCallbacks . length ; ii ++ ) {
for ( let iii = 0 ; iii < mutations [ i ] . removedNodes . length ; iii ++ ) {
aak . observe . removeCallbacks [ ii ] ( mutations [ i ] . removedNodes [ iii ] ) ;
}
}
}
}
} ) ;
observer . observe ( aak . doc , {
childList : true ,
subtree : true
} ) ;
} ;
aak . observe . init . done = false ;
aak . observe . insertCallbacks = [ ] ;
aak . observe . removeCallbacks = [ ] ;
/ *
* Static properties for aak . protectFunc
* /
aak . protectFunc . enabled = false ;
aak . protectFunc . pointers = [ ] ;
aak . protectFunc . masks = [ ] ;
/ *
* Static properties for aak . uuid
* /
aak . uid . counter = 0 ;
/ *
* Static properties for aak . videoJS
* /
aak . videoJS . init = ( ... args ) => {
try {
aak . win . HELP _IMPROVE _VIDEOJS = false ;
} catch ( err ) { }
let plugins = args . join ( ) ;
aak . $ ( "head" ) . append ( ` <link href="//vjs.zencdn.net/5.4.6/video-js.min.css" rel="stylesheet"><script src="//vjs.zencdn.net/5.4.6/video.min.js">< \/ script> ${ plugins } ` ) ;
} ;
aak . videoJS . plugins = { } ;
aak . videoJS . plugins . hls = ` <script src="//cdnjs.cloudflare.com/ajax/libs/videojs-contrib-hls/5.4.0/videojs-contrib-hls.min.js">< \/ script> ` ;
return aak ;
} ) ( ( typeof unsafeWindow !== "undefined" ) ? unsafeWindow : window ) ;
/ * = = = = = = = =
| jQuery |
=== === === * /
a . jQueryFactory = function ( a , b ) { "use strict" ; var c = [ ] , d = a . document , e = Object . getPrototypeOf , f = c . slice , g = c . concat , h = c . push , i = c . indexOf , j = { } , k = j . toString , l = j . hasOwnProperty , m = l . toString , n = m . call ( Object ) , o = { } ; function p ( a , b ) { b = b || d ; var c = b . createElement ( "script" ) ; c . text = a , b . head . appendChild ( c ) . parentNode . removeChild ( c ) } var q = "3.2.1" , r = function ( a , b ) { return new r . fn . init ( a , b ) } , s = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g , t = /^-ms-/ , u = /-([a-z])/g , v = function ( a , b ) { return b . toUpperCase ( ) } ; r . fn = r . prototype = { jquery : q , constructor : r , length : 0 , toArray : function ( ) { return f . call ( this ) } , get : function ( a ) { return null == a ? f . call ( this ) : a < 0 ? this [ a + this . length ] : this [ a ] } , pushStack : function ( a ) { var b = r . merge ( this . constructor ( ) , a ) ; return b . prevObject = this , b } , each : function ( a ) { return r . each ( this , a ) } , map : function ( a ) { return this . pushStack ( r . map ( this , function ( b , c ) { return a . call ( b , c , b ) } ) ) } , slice : function ( ) { return this . pushStack ( f . apply ( this , arguments ) ) } , first : function ( ) { return this . eq ( 0 ) } , last : function ( ) { return this . eq ( - 1 ) } , eq : function ( a ) { var b = this . length , c = + a + ( a < 0 ? b : 0 ) ; return this . pushStack ( c >= 0 && c < b ? [ this [ c ] ] : [ ] ) } , end : function ( ) { return this . prevObject || this . constructor ( ) } , push : h , sort : c . sort , splice : c . splice } , r . extend = r . fn . extend = function ( ) { var a , b , c , d , e , f , g = arguments [ 0 ] || { } , h = 1 , i = arguments . length , j = ! 1 ; for ( "boolean" == typeof g && ( j = g , g = arguments [ h ] || { } , h ++ ) , "object" == typeof g || r . isFunction ( g ) || ( g = { } ) , h === i && ( g = this , h -- ) ; h < i ; h ++ ) if ( null != ( a = arguments [ h ] ) ) for ( b in a ) c = g [ b ] , d = a [ b ] , g !== d && ( j && d && ( r . isPlainObject ( d ) || ( e = Array . isArray ( d ) ) ) ? ( e ? ( e = ! 1 , f = c && Array . isArray ( c ) ? c : [ ] ) : f = c && r . isPlainObject ( c ) ? c : { } , g [ b ] = r . extend ( j , f , d ) ) : void 0 !== d && ( g [ b ] = d ) ) ; return g } , r . extend ( { expando : "jQuery" + ( q + Math . random ( ) ) . replace ( /\D/g , "" ) , isReady : ! 0 , error : function ( a ) { throw new Error ( a ) } , noop : function ( ) { } , isFunction : function ( a ) { return "function" === r . type ( a ) } , isWindow : function ( a ) { return null != a && a === a . window } , isNumeric : function ( a ) { var b = r . type ( a ) ; return ( "number" === b || "string" === b ) && ! isNaN ( a - parseFloat ( a ) ) } , isPlainObject : function ( a ) { var b , c ; return ! ( ! a || "[object Object]" !== k . call ( a ) ) && ( ! ( b = e ( a ) ) || ( c = l . call ( b , "constructor" ) && b . constructor , "function" == typeof c && m . call ( c ) === n ) ) } , isEmptyObject : function ( a ) { var b ; for ( b in a ) return ! 1 ; return ! 0 } , type : function ( a ) { return null == a ? a + "" : "object" == typeof a || "function" == typeof a ? j [ k . call ( a ) ] || "object" : typeof a } , globalEval : function ( a ) { p ( a ) } , camelCase : function ( a ) { return a . replace ( t , "ms-" ) . replace ( u , v ) } , each : function ( a , b ) { var c , d = 0 ; if ( w ( a ) ) { for ( c = a . length ; d < c ; d ++ ) if ( b . call ( a [ d ] , d , a [ d ] ) === ! 1 ) break } else for ( d in a ) if ( b . call ( a [ d ] , d , a [ d ] ) === ! 1 ) break ; return a } , trim : function ( a ) { return null == a ? "" : ( a + "" ) . replace ( s , "" ) } , makeArray : function ( a , b ) { var c = b || [ ] ; return null != a && ( w ( Object ( a ) ) ? r . merge ( c , "string" == typeof a ? [ a ] : a ) : h . call ( c , a ) ) , c } , inArray : function ( a , b , c ) { return null == b ? - 1 : i . call ( b , a , c ) } , merge : function ( a , b ) { for ( var c = + b . length , d = 0 , e = a . length ; d < c ; d ++ ) a [ e ++ ] = b [ d ] ; return a . length = e , a } , grep : function ( a , b , c ) { for ( var d , e = [ ] , f = 0 , g = a . length , h = ! c ; f < g ; f ++ ) d = ! b ( a [ f ] , f ) , d !== h && e . push ( a [ f ] ) ; return e } , map : function ( a , b , c ) { var d , e , f = 0 , h = [ ] ; if ( w ( a ) ) for ( d = a . length ; f < d ; f ++ ) e = b ( a [ f ] , f , c ) , null != e && h . push ( e ) ; else for ( f in a ) e = b ( a [ f ] , f , c ) , null != e && h . push ( e ) ; return g . apply ( [ ] , h ) } , guid : 1 , proxy : function ( a , b ) { var c , d , e ; if ( "string" == typeof b && ( c = a [ b ] , b = a , a = c ) , r . isFunction ( a ) ) return d = f . call ( arguments , 2 ) , e = function ( ) { return a . apply ( b || this , d . concat ( f . call ( arguments ) ) ) } , e . guid = a . guid = a . guid || r . guid ++ , e } , now : Date . now , support : o } ) , "function" == typeof Symbol && ( r . fn [ Symbol . iterator ] = c [ Symbol . iterator ] ) , r . each ( "Boolean Number String Function Array Date RegExp Object Error Symbol" . split ( " " ) , function ( a , b ) { j [ "[object " + b + "]" ] = b . toLowerCase ( ) } ) ; function w ( a ) { var b = ! ! a && "length" in a && a . length , c = r . type ( a ) ; return "function" !== c && ! r . isWindow ( a ) && ( "array" === c || 0 === b || "number" == typeof b && b > 0 && b - 1 in a ) } var x = function ( a ) { var b , c , d , e , f , g , h , i , j , k , l , m , n , o , p , q , r , s , t , u = "sizzle" + 1 * new Date , v = a . document , w = 0 , x = 0 , y = ha ( ) , z = ha ( ) , A = ha ( ) , B = function ( a , b ) { return a === b && ( l = ! 0 ) , 0 } , C = { } . hasOwnProperty , D = [ ] , E = D . pop , F = D . push , G = D . push , H = D . slice , I = function ( a , b ) { for ( var c = 0 , d = a . length ; c < d ; c ++ ) if ( a [ c ] === b ) return c ; return - 1 } , J = " checked | selecte
a . removeEventListener ( "load" , S ) , r . ready ( ) } "complete" === d . readyState || "loading" !== d . readyState && ! d . documentElement . doScroll ? a . setTimeout ( r . ready ) : ( d . addEventListener ( "DOMContentLoaded" , S ) , a . addEventListener ( "load" , S ) ) ; var T = function ( a , b , c , d , e , f , g ) { var h = 0 , i = a . length , j = null == c ; if ( "object" === r . type ( c ) ) { e = ! 0 ; for ( h in c ) T ( a , b , h , c [ h ] , ! 0 , f , g ) } else if ( void 0 !== d && ( e = ! 0 , r . isFunction ( d ) || ( g = ! 0 ) , j && ( g ? ( b . call ( a , d ) , b = null ) : ( j = b , b = function ( a , b , c ) { return j . call ( r ( a ) , c ) } ) ) , b ) ) for ( ; h < i ; h ++ ) b ( a [ h ] , c , g ? d : d . call ( a [ h ] , h , b ( a [ h ] , c ) ) ) ; return e ? a : j ? b . call ( a ) : i ? b ( a [ 0 ] , c ) : f } , U = function ( a ) { return 1 === a . nodeType || 9 === a . nodeType || ! + a . nodeType } ; function V ( ) { this . expando = r . expando + V . uid ++ } V . uid = 1 , V . prototype = { cache : function ( a ) { var b = a [ this . expando ] ; return b || ( b = { } , U ( a ) && ( a . nodeType ? a [ this . expando ] = b : Object . defineProperty ( a , this . expando , { value : b , configurable : ! 0 } ) ) ) , b } , set : function ( a , b , c ) { var d , e = this . cache ( a ) ; if ( "string" == typeof b ) e [ r . camelCase ( b ) ] = c ; else for ( d in b ) e [ r . camelCase ( d ) ] = b [ d ] ; return e } , get : function ( a , b ) { return void 0 === b ? this . cache ( a ) : a [ this . expando ] && a [ this . expando ] [ r . camelCase ( b ) ] } , access : function ( a , b , c ) { return void 0 === b || b && "string" == typeof b && void 0 === c ? this . get ( a , b ) : ( this . set ( a , b , c ) , void 0 !== c ? c : b ) } , remove : function ( a , b ) { var c , d = a [ this . expando ] ; if ( void 0 !== d ) { if ( void 0 !== b ) { Array . isArray ( b ) ? b = b . map ( r . camelCase ) : ( b = r . camelCase ( b ) , b = b in d ? [ b ] : b . match ( L ) || [ ] ) , c = b . length ; while ( c -- ) delete d [ b [ c ] ] } ( void 0 === b || r . isEmptyObject ( d ) ) && ( a . nodeType ? a [ this . expando ] = void 0 : delete a [ this . expando ] ) } } , hasData : function ( a ) { var b = a [ this . expando ] ; return void 0 !== b && ! r . isEmptyObject ( b ) } } ; var W = new V , X = new V , Y = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/ , Z = /[A-Z]/g ; function $ ( a ) { return "true" === a || "false" !== a && ( "null" === a ? null : a === + a + "" ? + a : Y . test ( a ) ? JSON . parse ( a ) : a ) } function _ ( a , b , c ) { var d ; if ( void 0 === c && 1 === a . nodeType ) if ( d = "data-" + b . replace ( Z , "-$&" ) . toLowerCase ( ) , c = a . getAttribute ( d ) , "string" == typeof c ) { try { c = $ ( c ) } catch ( e ) { } X . set ( a , b , c ) } else c = void 0 ; return c } r . extend ( { hasData : function ( a ) { return X . hasData ( a ) || W . hasData ( a ) } , data : function ( a , b , c ) { return X . access ( a , b , c ) } , removeData : function ( a , b ) { X . remove ( a , b ) } , _data : function ( a , b , c ) { return W . access ( a , b , c ) } , _removeData : function ( a , b ) { W . remove ( a , b ) } } ) , r . fn . extend ( { data : function ( a , b ) { var c , d , e , f = this [ 0 ] , g = f && f . attributes ; if ( void 0 === a ) { if ( this . length && ( e = X . get ( f ) , 1 === f . nodeType && ! W . get ( f , "hasDataAttrs" ) ) ) { c = g . length ; while ( c -- ) g [ c ] && ( d = g [ c ] . name , 0 === d . indexOf ( "data-" ) && ( d = r . camelCase ( d . slice ( 5 ) ) , _ ( f , d , e [ d ] ) ) ) ; W . set ( f , "hasDataAttrs" , ! 0 ) } return e } return "object" == typeof a ? this . each ( function ( ) { X . set ( this , a ) } ) : T ( this , function ( b ) { var c ; if ( f && void 0 === b ) { if ( c = X . get ( f , a ) , void 0 !== c ) return c ; if ( c = _ ( f , a ) , void 0 !== c ) return c } else this . each ( function ( ) { X . set ( this , a , b ) } ) } , null , b , arguments . length > 1 , null , ! 0 ) } , removeData : function ( a ) { return this . each ( function ( ) { X . remove ( this , a ) } ) } } ) , r . extend ( { queue : function ( a , b , c ) { var d ; if ( a ) return b = ( b || "fx" ) + "queue" , d = W . get ( a , b ) , c && ( ! d || Array . isArray ( c ) ? d = W . access ( a , b , r . makeArray ( c ) ) : d . push ( c ) ) , d || [ ] } , dequeue : function ( a , b ) { b = b || "fx" ; var c = r . queue ( a , b ) , d = c . length , e = c . shift ( ) , f = r . _queueHooks ( a , b ) , g = function ( ) { r . dequeue ( a , b ) } ; "inprogress" === e && ( e = c . shift ( ) , d -- ) , e && ( "fx" === b && c . unshift ( "inprogress" ) , delete f . stop , e . call ( a , g , f ) ) , ! d && f && f . empty . fire ( ) } , _queueHooks : function ( a , b ) { var c = b + "queueHooks" ; return W . get ( a , c ) || W . access ( a , c , { empty : r . Callbacks ( "once memory" ) . add ( function ( ) { W . remove ( a , [ b + "queue" , c ] ) } ) } ) } } ) , r . fn . extend ( { queue : function ( a , b ) { var c = 2 ; return "string" != typeof a && ( b = a , a = "fx" , c -- ) , arguments . length < c ? r . queue ( this [ 0 ] , a ) : void 0 === b ? this : this . each ( function ( ) { var c = r . queue ( this , a , b ) ; r . _queueHooks ( this , a ) , "fx" === a && "inprogress" !== c [ 0 ] && r . dequeue ( this , a ) } ) } , dequeue : function ( a ) { return this . each ( function ( ) { r . dequeue ( this , a ) } ) } , clearQueue : function ( a ) { return this . queue ( a || "fx" , [ ] ) } , promise : function ( a , b ) { var c , d = 1 , e = r . Deferred ( ) , f = this , g = this . length , h = function ( ) { -- d || e . resolveWith ( f , [ f ] ) } ; "string" != typeof a && ( b = a , a = void 0 ) , a = a || "fx" ; while ( g -- ) c = W . get ( f [ g ] , a + "queueHooks" ) , c && c . empty && ( d ++ , c . empty . add ( h ) ) ; return h ( ) , e . promise ( b ) } } ) ; var aa = /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ . source , ba = new RegExp ( "^(?:([+-])=|)(" + aa + " )
null == d ? void 0 : d ) ) } , attrHooks : { type : { set : function ( a , b ) { if ( ! o . radioValue && "radio" === b && B ( a , "input" ) ) { var c = a . value ; return a . setAttribute ( "type" , b ) , c && ( a . value = c ) , b } } } } , removeAttr : function ( a , b ) { var c , d = 0 , e = b && b . match ( L ) ; if ( e && 1 === a . nodeType ) while ( c = e [ d ++ ] ) a . removeAttribute ( c ) } } ) , lb = { set : function ( a , b , c ) { return b === ! 1 ? r . removeAttr ( a , c ) : a . setAttribute ( c , c ) , c } } , r . each ( r . expr . match . bool . source . match ( /\w+/g ) , function ( a , b ) { var c = mb [ b ] || r . find . attr ; mb [ b ] = function ( a , b , d ) { var e , f , g = b . toLowerCase ( ) ; return d || ( f = mb [ g ] , mb [ g ] = e , e = null != c ( a , b , d ) ? g : null , mb [ g ] = f ) , e } } ) ; var nb = /^(?:input|select|textarea|button)$/i , ob = /^(?:a|area)$/i ; r . fn . extend ( { prop : function ( a , b ) { return T ( this , r . prop , a , b , arguments . length > 1 ) } , removeProp : function ( a ) { return this . each ( function ( ) { delete this [ r . propFix [ a ] || a ] } ) } } ) , r . extend ( { prop : function ( a , b , c ) { var d , e , f = a . nodeType ; if ( 3 !== f && 8 !== f && 2 !== f ) return 1 === f && r . isXMLDoc ( a ) || ( b = r . propFix [ b ] || b , e = r . propHooks [ b ] ) , void 0 !== c ? e && "set" in e && void 0 !== ( d = e . set ( a , c , b ) ) ? d : a [ b ] = c : e && "get" in e && null !== ( d = e . get ( a , b ) ) ? d : a [ b ] } , propHooks : { tabIndex : { get : function ( a ) { var b = r . find . attr ( a , "tabindex" ) ; return b ? parseInt ( b , 10 ) : nb . test ( a . nodeName ) || ob . test ( a . nodeName ) && a . href ? 0 : - 1 } } } , propFix : { "for" : "htmlFor" , "class" : "className" } } ) , o . optSelected || ( r . propHooks . selected = { get : function ( a ) { var b = a . parentNode ; return b && b . parentNode && b . parentNode . selectedIndex , null } , set : function ( a ) { var b = a . parentNode ; b && ( b . selectedIndex , b . parentNode && b . parentNode . selectedIndex ) } } ) , r . each ( [ "tabIndex" , "readOnly" , "maxLength" , "cellSpacing" , "cellPadding" , "rowSpan" , "colSpan" , "useMap" , "frameBorder" , "contentEditable" ] , function ( ) { r . propFix [ this . toLowerCase ( ) ] = this } ) ; function pb ( a ) { var b = a . match ( L ) || [ ] ; return b . join ( " " ) } function qb ( a ) { return a . getAttribute && a . getAttribute ( "class" ) || "" } r . fn . extend ( { addClass : function ( a ) { var b , c , d , e , f , g , h , i = 0 ; if ( r . isFunction ( a ) ) return this . each ( function ( b ) { r ( this ) . addClass ( a . call ( this , b , qb ( this ) ) ) } ) ; if ( "string" == typeof a && a ) { b = a . match ( L ) || [ ] ; while ( c = this [ i ++ ] ) if ( e = qb ( c ) , d = 1 === c . nodeType && " " + pb ( e ) + " " ) { g = 0 ; while ( f = b [ g ++ ] ) d . indexOf ( " " + f + " " ) < 0 && ( d += f + " " ) ; h = pb ( d ) , e !== h && c . setAttribute ( "class" , h ) } } return this } , removeClass : function ( a ) { var b , c , d , e , f , g , h , i = 0 ; if ( r . isFunction ( a ) ) return this . each ( function ( b ) { r ( this ) . removeClass ( a . call ( this , b , qb ( this ) ) ) } ) ; if ( ! arguments . length ) return this . attr ( "class" , "" ) ; if ( "string" == typeof a && a ) { b = a . match ( L ) || [ ] ; while ( c = this [ i ++ ] ) if ( e = qb ( c ) , d = 1 === c . nodeType && " " + pb ( e ) + " " ) { g = 0 ; while ( f = b [ g ++ ] ) while ( d . indexOf ( " " + f + " " ) > - 1 ) d = d . replace ( " " + f + " " , " " ) ; h = pb ( d ) , e !== h && c . setAttribute ( "class" , h ) } } return this } , toggleClass : function ( a , b ) { var c = typeof a ; return "boolean" == typeof b && "string" === c ? b ? this . addClass ( a ) : this . removeClass ( a ) : r . isFunction ( a ) ? this . each ( function ( c ) { r ( this ) . toggleClass ( a . call ( this , c , qb ( this ) , b ) , b ) } ) : this . each ( function ( ) { var b , d , e , f ; if ( "string" === c ) { d = 0 , e = r ( this ) , f = a . match ( L ) || [ ] ; while ( b = f [ d ++ ] ) e . hasClass ( b ) ? e . removeClass ( b ) : e . addClass ( b ) } else void 0 !== a && "boolean" !== c || ( b = qb ( this ) , b && W . set ( this , "__className__" , b ) , this . setAttribute && this . setAttribute ( "class" , b || a === ! 1 ? "" : W . get ( this , "__className__" ) || "" ) ) } ) } , hasClass : function ( a ) { var b , c , d = 0 ; b = " " + a + " " ; while ( c = this [ d ++ ] ) if ( 1 === c . nodeType && ( " " + pb ( qb ( c ) ) + " " ) . indexOf ( b ) > - 1 ) return ! 0 ; return ! 1 } } ) ; var rb = /\r/g ; r . fn . extend ( { val : function ( a ) { var b , c , d , e = this [ 0 ] ; { if ( arguments . length ) return d = r . isFunction ( a ) , this . each ( function ( c ) { var e ; 1 === this . nodeType && ( e = d ? a . call ( this , c , r ( this ) . val ( ) ) : a , null == e ? e = "" : "number" == typeof e ? e += "" : Array . isArray ( e ) && ( e = r . map ( e , function ( a ) { return null == a ? "" : a + "" } ) ) , b = r . valHooks [ this . type ] || r . valHooks [ this . nodeName . toLowerCase ( ) ] , b && "set" in b && void 0 !== b . set ( this , e , "value" ) || ( this . value = e ) ) } ) ; if ( e ) return b = r . valHooks [ e . type ] || r . valHooks [ e . nodeName . toLowerCase ( ) ] , b && "get" in b && void 0 !== ( c = b . get ( e , "value" ) ) ? c : ( c = e . value , "string" == typeof c ? c . replace ( rb , "" ) : null == c ? "" : c ) } } } ) , r . extend ( { valHooks : { option : { get : function ( a ) { var b = r . find . attr ( a , "value" ) ; return null != b ? b : pb ( r . text ( a ) ) } } , select : { get : function ( a ) { var b , c , d , e = a . options , f = a . selectedIndex , g = "select-one" === a . type , h = g ? null : [ ] , i = g ? f + 1 : e . length ; for ( d = f < 0 ? i : g ? f : 0 ; d < i ; d ++ ) if ( c = e [ d ] , ( c . selected || d === f ) && ! c .
/ * = = = = = = = = = = = = = = = =
| Initialize AAK |
=== === === === === == * /
( function ( ) {
if ( a . domCmp ( [ "29443kmq.video" , "dato.porn" ] ) ) {
a . readOnly ( "cRAds" , true ) ;
}
const excludedDomCmp = [ "360.cn" , "apple.com" , "ask.com" , "baidu.com" , "bing.com" , "bufferapp.com" ,
"chromeactions.com" , "easyinplay.net" , "ebay.com" , "facebook.com" , "flattr.com" , "flickr.com" ,
"ghacks.net" , "imdb.com" , "imgbox.com" , "imgur.com" , "instagram.com" , "jsbin.com" , "jsfiddle.net" ,
"linkedin.com" , "live.com" , "mail.ru" , "microsoft.com" , "msn.com" , "paypal.com" , "pinterest.com" ,
"preloaders.net" , "qq.com" , "reddit.com" , "stackoverflow.com" , "tampermonkey.net" , "twitter.com" ,
"vimeo.com" , "wikipedia.org" , "w3schools.com" , "yandex.ru" , "youtu.be" , "youtube.com" , "xemvtv.net" ,
"vod.pl" , "agar.io" , "pandoon.info" , "fsf.org" , "adblockplus.org" , "plnkr.co" , "exacttarget.com" ,
"dolldivine.com" , "popmech.ru" , "calm.com" , "chatango.com" , "filiser.tv" ] ;
const excludedDomInc = [ "google" , "amazon" , "yahoo" ] ;
const AdflyMatchDomCmp = [ "adf.ly" , "ay.gy" , "j.gs" , "q.gs" , "gamecopyworld.click" , "babblecase.com" ,
"pintient.com" , "atominik.com" , "bluenik.com" , "sostieni.ilwebmaster21.com" , "auto-login-xxx.com" ,
"microify.com" , "riffhold.com" ] ;
a . init (
a . domCmp ( excludedDomCmp , true ) || a . domInc ( excludedDomInc , true ) ,
a . domCmp ( AdflyMatchDomCmp ) ,
false
) ;
} ) ( ) ;
/ * = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
| AAK Website Rules |
| ( Please keep in alphabetical order to avoid unnecessary duplicates . ) |
=== === === === === === === === === === === === === === === === === === === === === === === == * /
//Rules:#
if ( a . domCmp ( [ "15min.lt" ] ) ) {
a . noAccess ( "__adblock_config" ) ;
}
if ( a . domCmp ( [ "29443kmq.video" , "czechhq.net" , "peeperz.com" , "pornhub.com" , "pornmd.com" , "redtube.com" ,
"thumbzilla.com" , "tube8.com" , "xtube.com" , "youporn.com" ] ) ) {
a . win . open = function ( arg ) {
if ( arg . includes ( a . dom ) ) {
a . redirect ( arg ) ;
}
} ;
}
if ( a . domCmp ( [ "2site.me" , "sport-show.fr" , "vipflash.net" ] ) ) {
a . css ( "#blockblockA {visibility:invisible;display:none;} #blockblockA td {visibility:invisible;di" +
"splay:none;} #blockblockA td p {visibility:invisible;display:none;} #blockblockB {visibility:visible" +
";display:block;}" ) ;
}
if ( a . domCmp ( [ "37.187.173.205" , "latelegratuite.blogspot.com" , "lewebtvbouquetfrancophone.overblog.com" ,
"totaldebrid.org" , "tvgratuite.blogspot.com" , "webtv.bloguez.com" ] ) ) {
a . bait ( "div" , "#my_ad_div" ) ;
a . readOnly ( "jabbahud" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "3dgames.com.ar" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "gw" ) ;
}
if ( a . domCmp ( [ "3dnews.ru" ] ) ) {
a . cookie ( "adblockwarn" , "1" ) ;
a . css ( "#earAds { width: 401px; }" ) ;
a . bait ( "div" , "#earAds" ) ;
a . readOnly ( "__AT_detected" , true ) ;
}
if ( a . domCmp ( [ "4shared.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "body" ) . removeClass ( "jsBlockDetect" ) ;
} ) ;
}
if ( a . domCmp ( [ "5278bbs.com" ] ) ) {
a . readOnly ( "myaabpfun12" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "720pmkv.com" ] ) ) {
a . bait ( "div" , "#advert" ) ;
}
//Rules:A
if ( a . domCmp ( [ "abczdrowie.pl" , "autokrata.pl" , "autokult.pl" , "biztok.pl" , "echirurgia.pl" , "fotoblogia.pl" ,
"gadzetomania.pl" , "hotmoney.pl" , "kafeteria.pl" , "kafeteria.tv" , "kardiolo.pl" , "komediowo.pl" ,
"komorkomania.pl" , "money.pl" , "o2.pl" , "parenting.pl" , "pudelek.pl" , "pudelek.tv" , "pudelekx.pl" ,
"sfora.pl" , "snobka.pl" , "wawalove.pl" , "wp.pl" , "wp.tv" , "wrzuta.pl" ] ) ) {
a . cookie ( "ABCABC" , "true" ) ;
a . filter ( "addEventListener" , a . matchMethod . stringExact , "advertisement" ) ;
a . readOnly ( "hasSentinel" , function ( ) { return false ; } ) ;
}
if ( a . domCmp ( [ "adbull.me" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
if ( a . domCmp ( [ "adz.bz" , "clik.bz" , "hop.bz" , "mellow.link" , "mellowads.com" , "url.vin" ] ) ) {
let val ;
a . win . Object . defineProperty ( a . win , "linkVM" , {
configurable : false ,
set : function ( arg ) {
val = arg ;
} ,
get : function ( ) {
if ( val . verify ) {
val . verify = ( function ( ) {
callAPI (
"publishing" ,
"VerifyLinkClick" ,
{
linkRef : val . linkRef ( ) ,
linkClickRef : $ ( "#LinkClickRef" ) [ 0 ] . value ,
recaptchaResponse : val . recaptchaResponse ( )
} ,
"Verify" ,
"Verifying" ,
function ( response ) {
if ( response . result ) {
a . redirect ( response . linkURL ) ;
} else {
showMessageModal ( "Verify failed" , response . resultHtml , response . result ) ;
}
} ,
null ,
function ( ) {
grecaptcha . reset ( ) ;
}
) ;
} ) . bind ( val ) ;
}
return val ;
}
} ) ;
}
if ( a . domCmp ( [ "agarabi.com" , "agario.sx" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "agario_SX_ads" ) ;
}
if ( a . domCmp ( [ "ahmedabadmirror.com" ] ) ) {
a . protectFunc ( ) ;
a . filter ( "document.addEventListener" , a . matchMethod . string , "function _0x" ) ;
a . protectFunc . masks [ 1 ] = "function addEventListener() { [native code] }" ;
}
if ( a . domCmp ( [ "ahzahg6ohb.com" , "ahzahg6ohb.com" , "chouhaa.info" , "youwatch.org" ] ) ) {
a . readOnly ( "adsShowPopup1" , 1 ) ;
a . ready ( function ( ) {
a . $ ( "#player_imj, #player_imj + div[id]" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "aidemu.fr" ] ) ) {
a . cookie ( "adblockPopup" , "true" ) ;
}
if ( a . domCmp ( [ "akam.no" , "amobil.no" , "diskusjon.no" , "gamer.no" , "hardware.no" , "insidetelecom.no" ,
"prisguide.no" , "tek.no" , "teknofil.no" , "teknojobb.no" ] ) ) {
a . ready ( function ( ) {
a . $ ( "<div>" ) . attr ( "id" , "google_ads_iframe_" ) . html ( "<p></p>" ) . appendTo ( "body" ) ;
} ) ;
}
if ( a . domCmp ( [ "ajihezo.info" , "bojem3a.info" , "chefti.info" , "exashare.com" , "yahmaib3ai.com" , "yahmaib3ai.com" ] ) ) {
a . readOnly ( "adsShowPopup1" , 1 ) ;
a . ready ( function ( ) {
a . $ ( "#player_gaz, #player_gaz + div[id]" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "allmyvideos.net" , "amvtv.net" ] ) ) {
a . cookie ( "_favbt33" , "1" ) ;
}
if ( a . domCmp ( [ "ally.sh" , "al.ly" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
a . win . open = null ;
}
if ( a . domCmp ( [ "an1me.se" ] ) ) {
a . readOnly ( "isBlockAds2" , false ) ;
}
if ( a . domCmp ( [ "anandabazar.com" ] ) ) {
a . readOnly ( "canRunAds" , false ) ;
a . config . allowGeneric = false ;
}
if ( a . domCmp ( [ "andoveradvertiser.co.uk" , "asianimage.co.uk" , "autoexchange.co.uk" , "banburycake.co.uk" ,
"barryanddistrictnews.co.uk" , "basildonrecorder.co.uk" , "basingstokegazette.co.uk" , "bicesteradvertiser.net" ,
"borehamwoodtimes.co.uk" , "bournmouthecho.co.uk" , "boxingnewsonline.net" , "braintreeandwithamtimes.co.uk" ,
"brentwoodweeklynews.co.uk" , "bridgwatermercury.co.uk" , "bridportnews.co.uk" , "bromsgroveadvertiser.co.uk" ,
"bucksfreepress.co.uk" , "burnhamandhighbridgeweeklynews.co.uk" , "burytimes.co.uk" , "campaignseries.co.uk" ,
"chardandilminsternews.co.uk" , "chelmsfordweeklynews.co.uk" , "chesterlestreetadvertiser.co.uk" ,
"chorleycitizen.co.uk" , "clactonandfrintongazette.co.uk" , "consettstanleyadvertiser.co.uk" ,
"cotswoldessence.co.uk" , "cotswoldjournal.co.uk" , "cravenherald.co.uk" , "creweguardian.co.uk" ,
"croydonguardian.co.uk" , "dailyecho.co.uk" , "darlingtonandstocktontimes.co.uk" ,
"darlingtonaycliffesedgefieldadvertiser.co.uk" , "dorsetecho.co.uk" , "droitwichadvertiser.co.uk" ,
"dudleynews.co.uk" , "durhamadvertiser.co.uk" , "durhamtimes.co.uk" , "ealingtimes.co.uk" , "echo-news.co.uk" ,
"edition.pagesuite-professional.co.uk" , "enfieldindependent.co.uk" , "engagedinvestor.co.uk" ,
"epsomguardian.co.uk" , "essexcountystandard.co.uk" , "eveningtimes.co.uk" , "eveshamjournal.co.uk" ,
"falmouthpacket.co.uk" , "freepressseries.co.uk" , "gazette-news.co.uk" , "gazetteherald.co.uk" ,
"gazetteseries.co.uk" , "globalreinsurance.com" , "guardian-series.co.uk" , "halesowennews.co.uk" ,
"halsteadgazette.co.uk" , "hampshirechronicle.co.uk" , "haringeyindependent.co.uk" , "harrowtimes.co.uk" ,
"harwichandmanningtreestandard.co.uk" , "heraldscotland.com" , "heraldseries.co.uk" , "herefordtimes.com" ,
"hillingdontimes.co.uk" , "ilkleygazette.co.uk" , "insurancetimes.co.uk" , "keighleynews.co.uk" ,
"kidderminstershuttle.co.uk" , "kingstonguardian.co.uk" , "knutsfordguardian.co.uk" , "lancashiretelegraph.co.uk" ,
"ledburyreporter.co.uk" , "leighjournal.co.uk" , "ludlowadvertiser.co.uk" , "maldonandburnhamstandard.co.uk" ,
"malverngazette.co.uk" , "messengernewspapers.co.uk" , "middevonstar.co.uk" , "middlewichguardian.co.uk" ,
"milfordmercury.co.uk" , "monmouthshirecountylife.co.uk" , "newsquest.co.uk" , "newsshopper.co.uk" ,
"northernfarmer.co.uk" , "northwichguardian.co.uk" , "northyorkshireadvertiser.co.uk" , "oxfordmail.co.uk" ,
"oxfordtimes.co.uk" , "pembrokeshirecountyliving.co.uk" , "penarthtimes.co.uk" , "pensions-insight.co.uk" ,
"prestwichandwhitefieldguide.co.uk" , "redditchadvertiser.co.uk" , "redhillandreigatelife.co.uk" ,
"reward-guide.co.uk" , "richmondandtwickenhamtimes.co.uk" , "romseyadvertiser.co.uk" ,
"runcornandwidnesworld.co.uk" , "s1cars.com" , "s1community.com" , "s1homes.com" , "s1jobs.com" , "s1rental.com" ,
"salisburyjournal.co.uk" , "smallholder.co.uk" , "somersetcountygazette.co.uk" , "southendstandard.co.uk" ,
"southwalesargus.co.uk" , "southwalesguardian.co.uk" , "southwestfarmer.co.uk" , "stalbansreview.co.uk" ,
"sthelensstar.co.uk" , "stourbridgenews.co.uk" , "strategic-risk-global.com" , "streathamguardian.co.uk" ,
"surreycomet.co.uk" , "suttonguardian.co.uk" , "swindonadvertiser.co.uk" , "tewkesburyadmag.co.uk" ,
"theargus.co.uk" , "theboltonnews.co.uk" , "thenational.scot" , "thenorthernecho.co.uk" , "thescottishfarmer.co.uk" ,
"thestrad.com" , "thetelegraphandargus.co.uk" , "thewestmorlandgazette.co.uk" , "thisisthewestcountry.co.uk" ,
"thurrockgazette.co.uk" , "times-series.co.uk" , "tivysideadvertiser.co.uk" , "wandsworthguardian.co.uk" ,
"warringtonguardian.co.uk" , "watfordobserver.co.uk" , "wearvalleyadvertiser.co.uk" , "westerntelegraph.co.uk" ,
"wharfedaleobserver.co.uk" , "wilmslowguardian.co.uk" , "wiltsglosstandard.co.uk" , "wiltshiretimes.co.uk" ,
"wimbledonguardian.co.uk" , "wirralglobe.co.uk" , "witneygazette.co.uk" , "worcesternews.co.uk" ,
"yeovilexpress.co.uk" , "yorkpress.co.uk" ] ) ) {
a . readOnly ( "_sp_" , null ) ;
}
if ( a . domCmp ( [ "animes-mangas-ddl.com" , "animmex.co" , "avmoo.com" , "btaia.com" , "cda-online.pl" , "cheminots.net" ,
"computerworm.net" , "coolsoft.altervista.org" , "corepacks.com" , "crackhex.com" , "darkstars.org" , "dasolo.org" ,
"europeup.com" , "fullstuff.net" , "hisse.net" , "leporno.org" , "linkdrop.net" , "lolsy.tv" , "mamahd.com" ,
"naturalbd.com" , "noticiasautomotivas.com.br" , "nrj.fr" , "openload.us" , "pizzamaking.com" , "revclouds.com" ,
"revealedtricks4u.com" , "sadeempc.com" , "socketloop.com" , "srnk.co" , "thailande-fr.com" , "tusoft.org" ,
"uploadshub.com" , "urbanplanet.org" , "yourlifeupdated.net" , "zeusnews.it" ] ) ) {
a . filter ( "setTimeout" , a . matchMethod . string , "bab_elementid" ) ;
}
if ( a . domCmp ( [ "anizm.com" ] ) ) {
a . always ( function ( ) {
a . win . stopAdBlock = { } ;
} ) ;
}
if ( a . domCmp ( [ "antennesport.com" , "serverhd.eu" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#pub .pubclose" ) . remove ( ) ;
a . $ ( "#pub .embed iframe" ) . attr ( "src" , "/embed/embed.php" ) ;
} ) ;
}
if ( a . domCmp ( [ "apkmirror.com" ] ) ) {
a . readOnly ( "doCheck" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "armorgames.com" ] ) ) {
a . readOnly ( "ga_detect" , null ) ;
}
if ( a . domCmp ( [ "arsopo.com" , "buzina.xyz" , "farmet.info" , "kitorelo.com" , "omnipola.com" , "porosin.co.uk" ,
"rimladi.com" , "rimleno.com" , "simple4alls.com" ] ) ) {
a . css ( "#adsframe { height: 151px; }" ) ;
a . ready ( function ( ) {
a . $ ( "#adsframe" ) . remove ( ) ;
a . $ ( "#remove-over" ) . click ( ) ;
} ) ;
}
if ( a . domCmp ( [ "atdhe.al" , "atdhe.bz" , "atdhe.li" , "atdhe.me" , "atdhe.mx" , "atdhe.ru" , "atdhe.se" ,
"atdhe.to" , "atdhe.top" , "firstrow.co" , "firstrow1us.eu" , "firstrows.biz" , "firstrows.co" ,
"firstrows.org" , "firstrows.ru" , "firstrows.tv" , "firstrowsportes.com" , "firstrowsportes.tv" ,
"firstrowus.eu" , "firstsrowsports.eu" , "hahasport.me" , "justfirstrowsports.com" , "myp2p.biz" ,
"myp2p.com" , "myp2p.ec" , "myp2p.eu" , "myp2p.la" , "myp2p.sx" , "myp2p.tv" , "myp2p.ws" , "wiziwig.ru" ,
"wiziwig.sx" , "wiziwig.to" , "wiziwig.tv" ] ) ) {
a . filter ( "open" ) ;
a . always ( function ( ) {
a . cookie ( "adb" , "1" ) ;
a . css ( "#bannerInCenter, #hiddenBannerCanvas { display: none; }" ) ;
a . cookie ( "anCookie" , "true" ) ;
a . win . anOptions = { } ;
} ) ;
}
if ( a . domCmp ( [ "auto-motor-i-sport.pl" , "menshealth.pl" , "mojeauto.pl" , "motocykl-online.pl" , "runners-world.pl" ,
"womenshealth.pl" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname . startsWith ( "/welcome-page" ) ) {
a . redirect ( a . $ ( "#timeLink" ) . attr ( "href" ) ) ;
}
} ) ;
}
if ( a . domCmp ( [ "automobile-sportive.com" ] ) ) {
a . css ( ".myTestAd { height: 51px; display: none; }" ) ;
}
//Rules:B
if ( a . domCmp ( [ "bakersfield.com" ] ) ) {
a . readOnly ( "AD_SLOT_RENDERED" , true ) ;
}
if ( a . domCmp ( [ "backin.net" ] ) ) {
a . css ( "#divad { height: 31px; }" ) ;
}
if ( a . domCmp ( [ "badcomics.it" , "badgames.it" , "badtv.it" , "badtaste.it" ] ) ) {
a . cookie ( "adBlockChecked" , "disattivo" ) ;
}
if ( a . domCmp ( [ "bc.vc" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
if ( a . domCmp ( [ "bhaskar.com" , "divyabhaskar.co.in" ] ) ) {
a . readOnly ( "openPopUpForBreakPage" , function ( ) { } ) ;
a . readOnly ( "canABP" , true ) ;
a . readOnly ( "canCheckAds" , true ) ;
}
if ( a . domCmp ( [ "beppegrillo.it" , "la-cosa.it" , "tzetze.it" ] ) ) {
a . generic . FuckAdBlock ( "CADetect" , "cadetect" ) ;
}
if ( a . domCmp ( [ "beta.speedtest.net" ] ) ) {
a . readOnly ( "adsOoklaComReachable" , true ) ;
a . readOnly ( "scriptsLoaded" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "betterdocs.net" ] ) ) {
a . filter ( "eval" , a . matchMethod . string , "eval(function(p,a,c,k,e,d)" ) ;
}
if ( a . domCmp ( [ "bg-gledai.tv" ] ) ) {
a . css ( ".myAd { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "bigdownloader.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#anti_adblock" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "binbucks.com" ] ) ) {
a . readOnly ( "testJuicyPay" , true ) ;
a . readOnly ( "testSensePay" , true ) ;
}
if ( a . domCmp ( [ "bitcoinaliens.com" ] ) ) {
a . bait ( "ins" , ".adsbygoogle" ) ;
}
if ( a . domCmp ( [ "bitcoiner.net" , "litecoiner.net" ] ) ) {
a . bait ( "div" , "#tester" ) ;
a . bait ( "div" , "#ad-top" ) ;
}
if ( a . domCmp ( [ "bitcoinker.com" ] ) ) {
a . readOnly ( "claim" , function ( ) {
return true ;
} ) ;
a . ready ( function ( ) {
a . $ ( "#E33FCCcX2fW" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "bitcoinzebra.com" , "moonbit.co.in" , "moondoge.co.in" , "moonliteco.in" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#AB, #E442Dv, #eCC5h" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "bitvisits.com" ] ) ) {
a . readOnly ( "blockAdblockUser" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "bknime.com" , "debrido.com" , "go4up.com" ] ) ) {
a . css ( ".myTestAd { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "blockadblock.com" ] ) ) {
a . filter ( "eval" ) ;
a . ready ( function ( ) {
a . $ ( "#babasbmsgx" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "bluesatoshi.com" ] ) ) {
a . css ( "#test { height: 280px; }" ) ;
a . bait ( "div" , "#test" ) ;
}
if ( a . domCmp ( [ "bokepspot.com" ] ) ) {
a . cookie ( "hideDialog" , "hide" ) ;
a . ready ( function ( ) {
a . $ ( "#tupiklan" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "bolor-toli.com" ] ) ) {
a . on ( "load" , function ( ) {
a . $ ( ".banner" ) . html ( "<br>" ) . css ( "height" , "1px" ) ;
} ) ;
}
if ( a . domCmp ( [ "burning-feed.com" ] ) ) {
a . readOnly ( "ads_enable" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "business-standard.com" ] ) ) {
a . readOnly ( "adsLoaded" , 1 ) ;
a . cookie ( "_pw" , "t" ) ;
}
if ( a . domCmp ( [ "businessinsider.com" , "chip.de" , "comicbook.com" ] ) ) {
a . noAccess ( "stop" ) ;
}
if ( a . domCmp ( [ "businesstoday.in" , "intoday.in" , "lovesutras.com" ] ) ) {
a . css ( "#adbocker_alt { display: none; }" ) ;
a . readOnly ( "openPopup" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "businesstoday.in" , "dl-protect.com" , "doatoolsita.altervista.org" , "drivearabia.com" , "filecom.net" ,
"free-movie-home.com" , "generatupremium.biz" , "kooora.com" , "mega-debrid.eu" , "newsinlevels.com" ,
"pc.online143.com" , "pipocas.tv" , "premiumst0re.blogspot.com" , "putlocker.com" , "sockshare.com" ,
"str3am.altervista.org" , "str3amtv.altervista.org" , "str3amtv.co.nr" , "vipracing.biz" ] ) ) {
a . filter ( "alert" ) ;
}
if ( a . domCmp ( [ "buzina.xyz" ] ) ) {
a . css ( "#adsframe { height: 151px; }" ) ;
a . ready ( function ( ) {
const elem = a . $ ( "iframe[src*='.php?hash=']" ) ;
if ( elem . length > 0 ) {
let parts = elem . attr ( "src" ) . split ( "/" ) ;
parts [ 2 ] = "arsopo.com" ;
elem . attr ( "src" , parts . join ( "/" ) ) ;
}
} ) ;
}
//Rules:C
if ( a . domCmp ( [ "canalplus.fr" ] ) ) {
let original ; //Will be set later
let currentVideoId = null ; //So we don't switch unles it's different
let videoElem ; //Current video player element, used to replace it when changing episode
const newFunc = function ( onglet , liste , page , pid , ztid , videoId , progid ) {
if ( videoId !== currentVideoId ) {
currentVideoId = videoId ;
videoSwitch ( videoId ) ;
}
original . apply ( a . win , arguments ) ;
} ;
const videoSwitch = function ( videoID ) {
videoElem . text ( "Loading..." ) ;
GM _xmlhttpRequest ( {
method : "GET" ,
url : "http://service.canal-plus.com/video/rest/getVideos/cplus/" +
videoID + "?format=json" ,
onload : function ( res ) {
try {
const response = JSON . parse ( res . responseText ) ;
const url = response . MEDIA . VIDEOS . HD ;
if ( url ) {
const tempElem = a . $ ( a . nativePlayer ( url + "?secret=pqzerjlsmdkjfoiuerhsdlfknaes" ) ) ;
videoElem . after ( tempElem ) . remove ( ) ;
videoElem = tempElem ;
} else {
throw "Media URL Not Found" ;
}
} catch ( err ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find media URL! " ) ;
}
} ,
onerror : function ( ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to load media JSON! " ) ;
}
} ) ;
} ;
a . ready ( ( ) => {
original = a . win . changeOngletColonneCentrale ;
a . win . changeOngletColonneCentrale = newFunc ;
videoElem = a . $ ( "#onePlayerHolder" ) ;
if ( currentVideoId = videoElem . data ( "video" ) ) {
videoSwitch ( currentVideoId ) ;
}
} ) ;
}
if ( a . domCmp ( [ "cbox.ws" ] ) ) {
a . readOnly ( "koddostu_com_adblock_yok" , true ) ;
}
if ( a . domCmp ( [ "cda.pl" ] ) ) {
a . readOnly ( "adblockV1" , true ) ;
}
if ( a . domCmp ( [ "citationmachine.net" ] ) ) {
a . cookie ( "sbm_cm_citations" , "0" ) ;
}
if ( a . domCmp ( [ "cityam.com" , "computerworlduk.com" , "techworld.com" , "v3.co.uk" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#r3z-wait" ) . remove ( ) ;
a . $ ( ".r3z-hide" ) . removeClass ( "r3z-hide" ) ;
a . win . _r3z = null ;
} ) ;
}
if ( a . domCmp ( [ "cleodesktop.com" ] ) ) {
a . bait ( "div" , "#myTestAd" ) ;
}
if ( a . domCmp ( [ "cloudwebcopy.com" ] ) ) {
a . filter ( "setTimeout" ) ;
}
if ( a . domCmp ( [ "clubedohardware.com.br" ] ) ) {
if ( a . win . location . host . includes ( "forum" ) ) {
a . css ( "#banner, script { height: 51px; }" ) ;
a . bait ( "div" , "#banner" ) ;
} else {
a . bait ( "div" , ".banner_topo" ) ;
}
a . ready ( function ( ) {
if ( a . win . location . host . includes ( "forum" ) ) {
a . win . addBlocking . hide ( ) ;
a . win . addBlocking . kill ( ) ;
} else {
a . doc . body . id = "" ;
a . $ ( ".adblock" ) . remove ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "cnbeta.com" ] ) ) {
a . readOnly ( "JB" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "comicallyincorrect.com" ] ) ) {
a . observe ( "insert" , ( node ) => {
if ( node && node . tagName === "DIV" && node . innerHTML && node . innerHTML . includes ( "Paid Content:" ) ) {
node . remove ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "comptoir-hardware.com" ] ) ) {
a . readOnly ( "adblock" , "non" ) ;
}
if ( a . domCmp ( [ "crackacc.com" , "fpabd.com" , "referencemega.com" ] ) ) {
a . cookie ( "_lbGatePassed" , "true" ) ;
}
if ( a . domCmp ( [ "cubeupload.com" ] ) ) {
a . filter ( "document.write" , a . matchMethod . string , "Please consider removing adblock to help us pay our bills" ) ;
}
if ( a . domCmp ( [ "cwtv.com" ] ) ) {
a . readOnly ( "wallConfig" , false ) ;
a . readOnly ( "CWTVIsAdBlocking" , undefined ) ;
}
//Rules:D
if ( a . domCmp ( [ [ "d3brid4y0u.info" , "dramapassion.com" , "easybillets.com" , "fileice.net" , "freeallmusic.info" ,
"nosteam.ro" , "online.ua" , "openrunner.com" , "osoarcade.com" , "putlocker.com" , "sockshare.com" , "spox.fr" ,
"tv3.co.nz" , "yooclick.com" , "yovoyages.com" ] ] ) ) {
a . bait ( "div" , "#tester" ) ;
}
if ( a . domCmp ( [ "dailybitcoins.org" ] ) ) {
a . ready ( function ( ) {
a . $ ( ".ad-img" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "dasolo.co" ] ) ) {
a . win . eval = function ( ) { } ;
a . noAccess ( "adblockblock" ) ;
a . bait ( "div" , "#loveyou" ) ;
a . readOnly ( "nocontext" , null ) ;
a . readOnly ( "mischandler" , null ) ;
a . readOnly ( "disableselect" , null ) ;
a . filter ( "document.addEventListener" , a . matchMethod . stringExact , "contextmenu" ) ;
}
if ( a . domCmp ( [ "dawn.com" ] ) ) {
a . generic . FuckAdBlock ( "DetectAdBlock" , "detectAdBlock" ) ;
}
if ( a . domCmp ( [ "dbplanet.net" ] ) ) {
a . cookie ( "newnoMoreAdsNow" , "1" ) ;
}
if ( a . domCmp ( [ "ddlfrench.org" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#dle-content .d-content" ) . removeClass ( ) ;
a . $ ( "#content" ) . attr ( "id" , "" ) ;
} ) ;
}
if ( a . domCmp ( [ "debrastagi.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#stp-main" ) . remove ( ) ;
a . $ ( "#stp-bg" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "debrid.us" , "debridfast.com" , "getdebrid.com" , "leecher.us" ] ) ) {
a . css ( ".myTestAd, .my24Ad, .nabil { height: 1px; }" ) ;
a . ready ( function ( ) {
a . $ ( "#simpleAd" ) . html ( ` <p style="display:none;">debridfast.com</p> ` ) ;
} )
}
if ( a . domCmp ( [ "debrideurstream.fr" ] ) ) {
a . css ( "#content div[id][align=center] { height: 12px; }" ) ;
}
if ( a . domCmp ( [ "debridnet.com" ] ) ) {
a . noAccess ( "_pop" ) ;
}
if ( a . domCmp ( [ "debridnet.com" , "livedebrid.com" ] ) ) {
a . css ( ".myTestAd2 { height: 5px; }" ) ;
a . bait ( "div" , ".myTestAd2" ) ;
}
if ( a . domCmp ( [ "demo-phoenix.com" , "dpstream.net" , "filmstreaming-hd.com" , "filmvf.net" ,
"gaara-fr.com" , "gaytube.com" , "gum-gum-streaming.com" , "hentaifr.net" , "hentaihaven.org" ,
"jeu.info" , "jeu.video" , "manga-news.com" , "mangas-fr.com" , "narutoshippudenvf.com" ,
"sofoot.com" , "thebadbuzz.com" , "tuxboard.com" , "xstory-fr.com" ] ) ) {
a . css ( "body {visibility: visible;}" ) ;
}
if ( a . domCmp ( [ "di.se" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#header_overlay" ) . remove ( ) ;
a . $ ( "#message_modal" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "diarioinformacion.com" ] ) ) {
a . readOnly ( "pr_okvalida" , true ) ;
}
if ( a . domCmp ( [ "discoveryrom.org" ] ) ) {
a . win . adsbygoogle = [ ] ;
}
if ( a . domCmp ( [ "dovathd.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( ".onp-sl-social-buttons-enabled" ) . remove ( ) ;
a . $ ( ".onp-sl-content" ) . show ( ) ;
} ) ;
}
if ( a . domCmp ( [ "dplay.com" , "dplay.dk" , "dplay.se" ] ) ) {
let date = new a . win . Date ( ) ;
date . setDate ( date . getDate ( ) + 365 ) ;
const timestamp = date . getTime ( ) . toString ( ) ;
const value = JSON . stringify ( {
"notificationSubmission" : "submitted" ,
"reportingExpiry" : timestamp ,
"notificationExpiry" : timestamp
} ) ;
a . cookie ( "dsc-adblock" , value ) ;
}
//Rules:E
if ( a . domCmp ( [ "e24.no" , "vg.no" ] ) ) {
a . css ( ".ad { display: none; }" ) ;
a . readOnly ( "__AB__" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "eami.in" ] ) ) {
a . always ( function ( ) {
a . cookie ( "ad_locked" , "1" ) ;
} ) ;
}
if ( a . domCmp ( [ "easyvideo.me" , "playbb.me" , "videowing.me" , "videozoo.me" ] ) ) {
a . ready ( function ( ) {
$ ( ".safeuploada-content" ) . css ( "background" , "transparent" ) ;
} ) ;
}
if ( a . domCmp ( [ "eb.dk" , "ekstrabladet.dk" ] ) ) {
a . noAccess ( "eb" ) ;
}
if ( a . domCmp ( [ "eclypsia.com" ] ) ) {
a . generic . FuckAdBlock ( "MggAbd" , "mggAbd" ) ;
}
if ( a . domCmp ( [ "elahmad.com" ] ) ) {
a . css ( "#adblock { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "elektroda.pl" ] ) ) {
a . filter ( "setTimeout" , a . matchMethod . string , "adBlockTest.offsetHeight" ) ;
}
if ( a . domCmp ( [ "emuparadise.me" ] ) ) {
a . always ( function ( ) {
a . $ ( "h2:contains('Bandwidth is expensive')" ) . parent ( ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "epiotrkow.pl" ] ) ) {
a . bait ( "div" , "#adboxx" ) ;
}
if ( a . domCmp ( [ "esmas.com" ] ) ) {
a . readOnly ( "opened_adbblock" , false ) ;
}
if ( a . domCmp ( [ "europe1.fr" ] ) ) {
a . generic . FuckAdBlock ( "FabInstance" , "fabInstance" ) ;
}
if ( a . domCmp ( [ "eurotransport.de" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "antiAdBlock" ) ;
}
if ( a . domCmp ( [ "eventhubs.com" ] ) ) {
a . bait ( "div" , "#blahyblaci1" ) ;
}
if ( a . domCmp ( [ "eventosppv.me" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#nf37" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "ewallstreeter.com" ] ) ) {
a . readOnly ( "OAS_rdl" , 1 ) ;
}
if ( a . domCmp ( [ "exrapidleech.info" ] ) ) {
a . filter ( "eval" ) ;
a . readOnly ( "PopAds" , "this is a string" ) ;
a . cookie ( "popcashpuCap" , "1" ) ;
a . cookie ( "popcashpu" , "1" ) ;
a . ready ( ( ) => {
a . $ ( ".alert-danger.lead:contains('block')" ) . remove ( ) ;
a . $ ( "p:contains('Please disable ads block')" ) . remove ( ) ;
a . $ ( "p:contains('Please turn on popup')" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "extratorrent.cc" , "extratorrent.com" ] ) ) {
a . cookie ( "ppu_delay" , "1" ) ;
a . cookie ( "ppu_main" , "1" ) ;
a . cookie ( "ppu_sub" , "1" ) ;
a . cookie ( "ppu_show_on" , "1" ) ;
}
//Rules:F
if ( a . domCmp ( [ "faqmozilla.org" , "gamespowerita.com" , "kingmaker.news" , "next-episode.net" ,
"receive-a-sms.com" , "ringmycellphone.com" , "thememypc.com" , "todayidol.com" , "wakeupcallme.com" ] ) ) {
a . always ( function ( ) {
a . win . google _jobrunner = { } ;
} ) ;
}
if ( a . domCmp ( [ "filecom.net" , "mwfiles.net" , "skippyfile.com" , "up-flow.org" , "upshare.org" ] ) ) {
a . bait ( "div" , "#add" ) ;
}
if ( a . domCmp ( [ "filecore.co.nz" ] ) ) {
a . css ( ".adsense { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "filespace.com" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "fAB" ) ;
}
if ( a . domCmp ( [ "filmy.to" , "histock.info" ] ) ) {
a . win . open = function ( ) {
return { closed : false } ;
} ;
}
if ( a . domCmp ( [ "filmyiseriale.net" ] ) ) {
a . ready ( function ( ) {
a . win . konik = 1 ;
} ) ;
}
if ( a . domCmp ( [ "finalservers.net" ] ) ) {
a . ready ( function ( ) {
a . win . videojs ( "video_1" ) . videoJsResolutionSwitcher ( ) ;
} ) ;
}
if ( a . domCmp ( [ "financialexpress.com" , "indianexpress.com" , "jansatta.com" ] ) ) {
a . readOnly ( "RunAds" , true ) ;
}
if ( a . domCmp ( [ "firstonetv.eu" ] ) ) {
a . readOnly ( "blocked" , function ( ) { } ) ;
a . readOnly ( "adFuckBlock" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "flashx.tv" ] ) ) {
a . filter ( "document.addEventListener" , a . matchMethod . RegExp , /^(mousedown|keydown|contextmenu)$/ ) ;
}
if ( a . domCmp ( [ "fmovies.is" , "fmovies.se" , "fmovies.to" , "thevideo.me" ] ) ) {
a . win . open = function ( ) { } ;
}
if ( a . domCmp ( [ "folha.uol.com.br" ] ) ) {
a . readOnly ( "paywall_access" , true ) ;
a . readOnly ( "folha_ads" , true ) ;
}
if ( a . domCmp ( [ "forbes.com" ] ) ) {
if ( a . win . location . pathname . includes ( "/welcome" ) ) {
a . cookie ( "welcomeAd" , "true" , 86400000 , "/" ) ;
a . cookie ( "dailyWelcomeCookie" , "true" , 86400000 , "/" ) ;
a . win . location = cookie ( "toUrl" ) || "http://www.forbes.com/" ;
}
}
if ( a . domCmp ( [ "forum.pac-rom.com" ] ) ) {
a . bait ( "div" , ".banner_ads" ) ;
}
if ( a . domCmp ( [ "fourchette-et-bikini.fr" , "meteocity.com" ] ) ) {
a . readOnly ( "adProtect" , 1 ) ;
}
if ( a . domCmp ( [ "fox.com.tr" ] ) ) {
a . readOnly ( "adblockDetector" , {
init : function ( ) { }
} ) ;
}
if ( a . domCmp ( [ "foxvalleyfoodie.com" ] ) ) {
a . patchHTML ( function ( html ) {
return html . replace ( /<script.*\/wp-includes\/js\/(?!jquery|comment|wp-embed).*<\/script>/g ,
"<script>console.error('Uncaught AdBlock Error: Admiral AdBlock detectors are not allowed on this " +
"device! ');<\/script>" ) ;
} ) ;
}
if ( a . domCmp ( [ "freebitcoins.nx.tc" , "getbitcoins.nx.tc" ] ) ) {
a . readOnly ( "ad_block_test" , function ( ) {
return false ;
} ) ;
}
if ( a . domCmp ( [ "freecoins4.me" ] ) ) {
a . readOnly ( "check" , function ( ) {
return false ;
} ) ;
}
if ( a . domCmp ( [ "freedom-ip.com" ] ) ) {
a . css ( ".pub_vertical ins, .pub_vertical div { height: 11px; }" ) ;
}
if ( a . domCmp ( [ "freegamehosting.nl" ] ) ) {
a . bait ( "div" , "#adtest" ) ;
}
if ( a . domCmp ( [ "freegameserverhost.com" ] ) ) {
a . css ( "#fab13 { height: 11px; }" ) ;
}
if ( a . domCmp ( [ "freepdf-books.com" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
if ( a . domCmp ( [ "freeskier.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#adb-not-enabled" ) . css ( "display" , "" ) ;
a . $ ( "#videoContainer" ) . css ( "display" , "" ) ;
} ) ;
}
if ( a . domCmp ( [ "freesportsbet.com" , "sportsplays.com" ] ) ) {
a . bait ( "div" , "#ad-tester" ) ;
}
if ( a . domCmp ( [ "freetvall.com" ] ) ) {
a . readOnly ( "clickNS" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "freezedownload.com" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . href . includes ( "freezedownload.com/download/" ) ) {
a . $ ( "body > div[id]" ) . remove ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "fullhdzevki.com" ] ) ) {
a . readOnly ( "check" , function ( ) { } ) ;
}
//Rules:G
if ( a . domCmp ( [ "gaana.com" ] ) ) {
const noop = function ( ) { } ;
const pType = {
_auds : "" , //all
isauds : false ,
lotamecall : false ,
itemInfo : [ ] ,
colombiaAdeURL : "" ,
deviceType : "" , //desktop
colombiaCookies : "" ,
privateMode : true ,
adIconInfo : [ ] ,
fns : { push : noop } ,
update : noop ,
colombiaAdRequest : noop ,
resetAdDivClass : noop ,
clear : noop ,
clearData : noop ,
notifyColombiaAd : noop ,
refresh : noop ,
refreshFBAd : noop ,
timeoutHandler : noop ,
load : noop ,
loadDataAd : noop ,
drawIconHtml : noop ,
loadDisplayAd : noop ,
jsonCallback : noop ,
getCB : noop ,
repllaceMacro : noop ,
getAdJSON : noop ,
fireImpression : noop ,
fireThirdPartyImp : noop ,
storeThirdPartyImprURL : noop ,
dataResponseFormat : noop ,
storeAdIcons : noop ,
checkDevice : noop ,
dfpLog : noop
} ;
let obj = function ( ) { } ;
obj . prototype = pType ;
a . readyOnly ( "colombia" , new obj ( ) ) ;
}
if ( a . domCmp ( [ "game-debate.com" ] ) ) {
a . readOnly ( "ad_block_test" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "gamepedia.com" ] ) ) {
a . on ( "load" , function ( ) {
a . $ ( "#atflb" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "gamer.com.tw" ] ) ) {
a . readOnly ( "AntiAd" , null ) ;
} ;
if ( a . domInc ( [ "gamereactor" ] ) ) {
a . cookie ( "countdownToAd" , "-1" ) ;
}
if ( a . domCmp ( [ "gametrailers.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#ad_blocking" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "gamezhero.com" ] ) ) {
a . readOnly ( "ads" , true ) ;
a . timewarp ( "setInterval" , a . matchMethod . string , "function (){var _0x" ) ;
}
if ( a . domCmp ( [ "gamingroom.tv" ] ) ) {
a . readOnly ( "adblock_detect" , function ( ) { } ) ;
a . readOnly ( "GR_adblock_hide_video" , function ( ) { } ) ;
a . readOnly ( "adblock_video_msg_start" , function ( ) { } ) ;
a . readOnly ( "adblock_video_msg_stop" , function ( ) { } ) ;
a . readOnly ( "disable_chat" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "gaybeeg.info" ] ) ) {
a . observe ( "insert" , function ( node ) {
if ( node . innerHTML && node . innerHTML . includes ( "AdBloker Detected" ) ) {
node . remove ( ) ;
}
} ) ;
a . ready ( function ( ) {
a . $ ( "script" ) . each ( function ( i , elem ) {
if ( ! elem || ! elem . innerHTML ) {
return ;
}
if ( a . sha256 ( elem . innerHTML ) ===
"b36b90f86ec7192c0942df3d504279967eb80dded90587a87010fdbbcc167923" ) {
a . win . eval ( elem . innerHTML ) ;
return ;
}
if ( elem . innerHTML . includes ( "/* Collapse Functions, version 2.0" ) ) {
const temp = elem . innerHTML . split ( "/* Collapse Functions, version 2.0" ) ;
if ( temp . length === 2 ) {
const hash = a . sha256 ( temp [ 1 ] ) ;
if ( hash ===
"382f3949955c262f392d50e681f373c50b779b7503a303b93a03070940532af7" ) {
a . win . eval ( elem . innerHTML ) ;
return ;
} else if ( a . config . debugMode ) {
a . out . warn ( "Archive related inline script does not match expected hash: " ) ;
a . out . warn ( temp [ 1 ] ) ;
a . out . warn ( "Hash: " + hash ) ;
}
}
}
if ( a . config . debugMode ) {
a . out . warn ( "This inline script is not executed: " )
a . out . warn ( elem . innerHTML ) ;
a . out . warn ( "Hash: " + a . sha256 ( elem . innerHTML ) ) ;
}
} )
a . $ ( ".download a.button" ) . each ( function ( i , el ) {
a . $ ( el ) . removeClass ( "locked" ) . attr ( "href" , a . $ ( el ) . data ( "href" ) )
. removeAttr ( "data-href" ) ;
} ) ;
} ) ;
}
if ( a . domCmp ( [ "gearsuite.com" , "insidegov.com" , "mooseroots.com" ] ) ) {
a . css ( "html,body { overflow-y: scroll; } .BOX-wrap { display: none; }" ) ;
}
if ( a . domCmp ( [ "gelbooru.com" ] ) ) {
if ( a . win . location . pathname === "/" ) {
a . on ( "load" , function ( ) {
a . $ ( "div" ) . each ( function ( ) {
if ( a . $ ( this ) . text ( ) === "Have you first tried disabling your AdBlock?" ) {
a . $ ( this ) . empty ( ) ;
} else {
a . config . debugMode && a . out . log ( a . $ ( this ) . text ( ) ) ;
}
} ) ;
} ) ;
} else {
a . noAccess ( "abvertDar" ) ;
}
}
if ( a . domCmp ( [ "generatupremium.biz" ] ) ) {
a . cookie ( "genera" , "false" ) ;
}
if ( a . domCmp ( [ "gentside.com" ] ) ) {
a . readOnly ( "adblockPopup" , {
"IS_BLOCKED" : false ,
"init" : function ( ) { } ,
"removeAdblockPopup" : function ( ) { } ,
} ) ;
}
if ( a . domCmp ( [ "ghame.ru" ] ) ) {
a . $ ( "<p class='adsbygoogle' style='display:none;'>hi</p>" ) . prependTo ( "html" ) ;
}
if ( a . domCmp ( [ "globeslot.com" ] ) ) {
a . bait ( "div" , "#add" ) ;
a . bait ( "div" , "#add1" ) ;
}
if ( a . domCmp ( [ "goodcast.co" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname . startsWith ( "/stream.php" ) ) {
a . $ ( ".advertisement" ) . hide ( ) ;
a . $ ( ".adsky iframe" ) . attr ( "src" , "about:blank" ) ;
}
} ) ;
}
//Rules:H
if ( a . domCmp ( [ "haaretz.co.il" , "themarker.com" ] ) ) {
a . win . AdBlockUtil = { } ;
}
if ( a . domCmp ( [ "hackinformer.com" ] ) ) {
a . ready ( ( ) => {
a . $ ( ".special-message-wrapper:contains(your ad blocker)" ) . remove ( ) ;
} ) ;
}
if ( a . domInc ( [ "hackintosh" ] ) ) {
a . readOnly ( "eval" , function ( ) {
a . $ ( "#babasbmsgx" ) . remove ( ) ;
a . doc . body . style . setProperty ( "visibility" , "visible" , "important" ) ;
} ) ;
if ( a . domCmp ( [ "hackintosh.computer" ] , true ) ) {
a . noAccess ( "google_jobrunner" ) ;
}
}
if ( a . domCmp ( [ "hanime.tv" ] ) ) {
const _open = a . win . open ;
a . win . open = function ( ) {
_open . apply ( a . win , arguments ) ;
window . close ( ) ;
} ;
a . readOnly ( "BetterJsPop" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "happy-hack.ru" ] ) ) {
a . css ( "#blockblockF4 {visibility:invisible;display:none;} #blockblockF4 td {visibility:invisible;display:" +
"none;} #blockblockF4 td p {visibility:invisible;display:none;} #blockblockD3 {visibility:visible;display:block;}" ) ;
}
if ( a . domCmp ( [ "happytrips.com" , "mid-day.com" ] ) ) {
a . readOnly ( "canRun" , true ) ;
}
if ( a . domCmp ( [ "hellsmedia.com" , "leaguesecretary.com" , "teknogods.com" ] ) ) {
a . bait ( "div" , "#adpbtest" ) ;
}
if ( a . domCmp ( [ "hentai.to" ] ) ) {
a . css ( "#hentaito123 { height: 11px; }" ) ;
}
if ( a . domCmp ( [ "hentaihaven.org" ] ) ) {
a . noAccess ( "desktop_variants" ) ;
}
if ( a . domCmp ( [ "homerun.re" , "strikeout.co" , "strikeout.me" , "vipapp.me" , "vipbox.biz" , "vipbox.co" , "vipbox.eu" ,
"vipbox.nu" , "vipbox.so" , "vipbox.sx" , "vipbox.tv" , "vipboxsa.co" , "vipboxtv.co" , "vipleague.ch" , "vipleague.co" ,
"vipleague.is" , "vipleague.me" , "vipleague.mobi" , "vipleague.se" , "vipleague.sx" , "vipleague.tv" , "vipleague.tv" ,
"vipleague.ws" ] ) ) {
a . readOnly ( "iExist" , true ) ;
a . cookie ( "xclsvip" , "1" ) ;
a . css ( ".vip_052x003 { height: 250px; }" ) ;
a . css ( ".vip_09x827 { height: 26px; }" ) ;
a . css ( "#overlay { display: none; }" ) ;
}
if ( a . domCmp ( [ "hotslogs.com" ] ) ) {
a . win . MonkeyBroker = { } ;
a . noAccess ( "MonkeyBroker.regSlotsMap" ) ;
}
if ( a . domCmp ( [ "hqq.tv" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname === "/player/embed_player.php" ) {
a . $ ( "form[id^='form-']" ) . submit ( ) ;
}
} ) ;
}
//Rules:I
if ( a . domCmp ( [ "idlelivelink.blogspot.com" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
a . ready ( ( ) => {
a . doc . body . oncontextmenu = null ;
a . doc . body . onkeydown = null ;
a . doc . body . onmousedown = null ;
} ) ;
}
if ( a . domCmp ( [ "imageraider.com" ] ) ) {
a . bait ( "div" , "#myGContainer" ) ;
}
if ( a . domCmp ( [ "ilive.to" , "streamlive.to" ] ) ) {
a . on ( "load" , function ( ) {
if ( a . win . location . pathname . toLowerCase ( ) . startsWith ( "/embedplayer.php" ) ) {
a . win . setTimeout ( function ( ) {
a . win . removeOverlayHTML ( ) ;
} , 1000 ) ;
}
} ) ;
}
if ( a . domCmp ( [ "independent.co.uk" ] ) ) {
a . cookie ( "adblock_detected" , "ignored" ) ;
}
if ( a . domCmp ( [ "infojobs.com.br" ] ) ) {
a . win . webUI = { } ;
a . win . webUI . Utils = { } ;
a . defineProperty ( "webUI.Utils.StopAdBlock" , {
configurable : false ,
set : function ( ) { } ,
get : function ( ) {
return function ( ) { } ;
}
} ) ;
}
if ( a . domCmp ( [ "inn.co.il" ] ) ) {
a . win . TRC = { } ;
a . win . TRC . blocker = {
states : {
ABP _DETECTION _DISABLED : - 2 ,
ABP _NOT _DETECTED : 0 ,
ABP _DETECTED : 1
} ,
createBlockDetectionDiv : function ( ) {
return a . doc . createElement ( "div" ) ;
} ,
isBlockDetectedOnDiv : function ( ) {
return 0 ;
} ,
isBlockDetectedOnClassNames : function ( ) {
return 0 ;
} ,
getBlockedState : function ( ) {
return 0 ;
}
} ;
}
if ( a . domCmp ( [ "interfans.org" ] ) ) {
a . css ( ".ad_global_header { height: 1px; display: none; }" ) ;
}
if ( a . domCmp ( [ "is.fi" , "viasatsport.fi" ] ) ) {
a . readOnly ( "Sabdetect_load" , false ) ;
if ( a . domCmp ( [ "viasatsport.fi" ] , true ) ) {
a . config . allowGeneric = false ;
}
}
if ( a . domCmp ( [ "italiatv.org" ] ) ) {
a . bait ( "div" , "#fab13" ) ;
}
//Rules:J
if ( a . domCmp ( [ "jagranjunction.com" ] ) ) {
a . readOnly ( "canRunAds" , true ) ;
a . readOnly ( "isAdsDisplayed" , true ) ;
}
if ( a . domCmp ( [ "jc-mp.com" ] ) ) {
a . css ( ".adsense {width: 1px; height: 1px; visibility: hidden; display: block; position: absolute;}" ) ;
}
if ( a . domCmp ( [ "jkanime.net" ] ) ) {
a . bait ( "div" , "#reco" ) ;
}
//Rules:K
if ( a . domCmp ( [ "keezmovies.com" , "extremetube.com" , "mofosex.com" , "spankwire.com" ] ) ) {
a . cookie ( "abClosed" , "true" ) ;
a . cookie ( "hide_ad_msg" , "1" ) ;
}
if ( a . domCmp ( [ "kissanime.com" , "kissanime.ru" , "kissanime.to" ] ) ) {
a . css ( "iframe[id^='adsIfrme'], .divCloseBut { display:none; }" ) ;
a . ready ( function ( ) {
const divContentVideo = a . doc . querySelector ( "#divContentVideo" ) ;
if ( a . win . DoDetect2 ) {
a . win . DoDetect2 = null ;
a . win . CheckAdImage = null ;
} else if ( divContentVideo ) {
const divDownload = a . doc . querySelector ( "#divDownload" ) . cloneNode ( true ) ;
a . win . setTimeout ( function ( ) {
divContentVideo . innerHTML = "" ;
a . win . DoHideFake ( ) ;
divContentVideo . appendChild ( divDownload ) ;
a . $ ( "iframe[id^='adsIfrme'], .divCloseBut" ) . remove ( ) ;
} , 5500 ) ;
}
} ) ;
}
if ( a . domCmp ( [ "kisscartoon.me" , "kisscartoon.se" ] ) ) {
a . readOnly ( "xaZlE" , function ( ) { } ) ;
a . ready ( function ( ) {
a . $ ( "iframe[id^='adsIfrme']" ) . remove ( ) ;
} ) ;
}
if ( a . domInc ( [ "knowlet3389.blogspot" ] ) ) {
a . filter ( "setTimeout" , a . matchMethod . string , '$("#gAds").height()' ) ;
}
if ( a . domCmp ( [ "koscian.net" ] ) ) {
a . ready ( function ( ) {
a . $ ( ".ban" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "kozaczek.pl" , "zeberka.pl" ] ) ) {
a . cookie ( "ablc" , "1" ) ;
a . cookie ( "cookie_policy" , "1" ) ;
}
if ( a . domCmp ( [ "kuchniaplus.pl" , "miniminiplus.pl" , "tvn.pl" , "tvn24.pl" , "tvnstyle.pl" , "tvnturbo.pl" ] ) ) {
const homePages = [ "http://www.tvn.pl/" , "http://www.tvnstyle.pl/" , "http://www.tvnturbo.pl/" ] ;
if ( ! homePages . includes ( a . doc . location . href ) ) {
a . on ( "load" , function ( ) {
a . $ ( ".videoPlayer" ) . parent ( ) . after ( a . nativePlayer ( a . $ ( ".videoPlayer" ) . data ( "src" ) ) ) . remove ( ) ;
} ) ;
}
}
if ( a . domCmp ( [ "kodilive.eu" ] ) ) {
a . css ( ".Ad { height: 5px; }" ) ;
}
//Rules:L
if ( a . domCmp ( [ "lachainemeteo.com" ] ) ) {
a . readOnly ( "js_loaded" , true ) ;
}
if ( a . domCmp ( [ "lesechos.com" , "lesechos.fr" ] ) ) {
a . readOnly ( "checkAdBlock" , function ( ) { } ) ;
a . readOnly ( "paywall_adblock_article" , function ( ) { } ) ;
a . readOnly ( "call_Ad" , 1 ) ;
}
if ( a . domCmp ( [ "leveldown.fr" ] ) ) {
a . bait ( "div" , "#adblock" ) ;
a . bait ( "div" , "#adblocktest" ) ;
}
if ( a . domCmp ( [ "lg-firmware-rom.com" ] ) ) {
a . readOnly ( "killads" , true ) ;
}
if ( a . domCmp ( [ "libertaddigital.com" ] ) ) {
a . readOnly ( "ad_already_played" , true ) ;
a . readOnly ( "puedeMostrarAds" , true ) ;
}
if ( a . domCmp ( [ "link.tl" ] ) ) {
a . css ( ".adblock { height:1px; }" ) ;
a . readOnly ( "adblocker" , false ) ;
}
if ( a . domCmp ( [ "linkneverdie.com" ] ) ) {
a . readOnly ( "eval" , function ( ) {
a . $ ( "div" ) . each ( function ( ) {
if ( this . id . length === 30 ) {
this . remove ( ) ;
}
} ) ;
} ) ;
a . ready ( function ( ) {
a . $ ( ".SC_TBlock" ) . each ( function ( ) {
if ( a . $ ( this ) . text ( ) === "loading..." ) {
this . remove ( ) ;
}
} ) ;
a . $ ( "#wrapper" ) . show ( ) ;
} ) ;
}
if ( a . domCmp ( [ "linternaute.com" ] ) ) {
let val ;
a . defineProperty ( "OO" , {
configurable : false ,
set : function ( arg ) {
val = arg ;
} ,
get : function ( ) {
val && ( val . AAB = null ) ;
return val ;
}
} ) ;
}
if ( a . domCmp ( [ "litv.tv" ] ) ) {
a . bait ( "div" , ".player_mask" ) ;
}
if ( a . domCmp ( [ "livemint.com" ] ) ) {
a . readOnly ( "canRun1" , true ) ;
}
if ( a . domCmp ( [ "lol.moa.tw" ] ) ) {
a . ready ( function ( ) {
a . win . MoaObj = a . win . MoaObj || { } ;
a . win . MoaObj . ad = a . win . MoaObj . ad || { } ;
a . win . MoaObj . ad . hasAdblock = function ( ) {
return false ;
} ;
a . win . MoaObj . ad . checkABP = function ( ) {
return false ;
} ;
} ) ;
}
if ( a . domCmp ( [ "luxyad.com" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname === "/Information.php" ) {
const href = location . href ;
a . redirect ( href . substr ( href . indexOf ( "url=" ) + 4 , href . length ) ) ;
}
} ) ;
}
//Rules:M
if ( a . domCmp ( [ "mac4ever.com" ] ) ) {
a . readOnly ( "coquinou" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "manga9.com" , "mangabee.co" ] ) ) {
a . css ( ".adblock { height: 31px; }" ) ;
}
if ( a . domCmp ( [ "mangabird.com" ] ) ) {
a . css ( ".afs_ads { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "mangahost.com" ] ) ) {
a . readOnly ( "testDisplay" , false ) ;
}
if ( a . domCmp ( [ "mangamint.com" ] ) ) {
a . css ( ".ad728 { height: 31px; }" ) ;
}
if ( a . domCmp ( [ "mangas.zlx.com.br" , "mangasproject.com.br" , "mangasproject.net.br" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "mangasLeitorSlider" ) ;
}
if ( a . domCmp ( [ "mariage-franco-marocain.net" ] ) ) {
a . css ( "#my_ad_div {height: 1px;}" ) ;
}
if ( a . domCmp ( [ "maxdebrideur.com" ] ) ) {
a . css ( ".clear + div[id] { height: 12px; }" ) ;
}
if ( a . domCmp ( [ "mega-debrid.eu" ] ) ) {
a . on ( "load" , function ( ) {
const elem = a . $ ( ".realbutton" ) [ 0 ] ;
elem . setAttribute ( "onclick" , "" ) ;
elem . setAttribute ( "type" , "submit" ) ;
} ) ;
}
if ( a . domCmp ( [ "megogo.net" ] ) ) {
a . readOnly ( "adBlock" , false ) ;
a . readOnly ( "showAdBlockMessage" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "mexashare.com" ] ) ) {
a . readOnly ( "BetterJsPop" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "micast.tv" ] ) ) {
a . cookie ( "vid_main" , "true" ) ;
a . cookie ( "vid_sub" , "true" ) ;
a . on ( "load" , function ( ) {
if ( a . win . removeOverlayHTML ) {
a . win . removeOverlayHTML ( ) ;
}
} )
}
if ( a . domCmp ( [ "mil.ink" ] ) ) {
a . bait ( "div" , "#ads_div" ) ;
}
if ( a . domCmp ( [ "mma-core.com" ] ) ) {
a . noAccess ( "displayAdBlockedVideo" ) ;
}
if ( a . domCmp ( [ "mobile-tracker-free.com" ] ) ) {
a . css ( "#myAds { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "money.pl" , "parenting.pl" , "sportowefakty.wp.pl" , "tech.wp.pl" ] , true ) ) {
let mid ; //Media ID of next video
let midArray1 = [ ] ; //Media IDs method 1
let midArray2 = [ ] ; //Media IDs method 2
let url = null ; //URL of the next video
let replaceCounter = 0 ; //The number of video players that are replaced
let loadCounter = 0 ; //The index of next item to load
let networkBusy = false ; //A flag to prevent sending a new request before the first one is done
let networkErrorCounter = 0 ; //Will stop sending request if this is over 5
let isInBackground = false ; //A flag to prevent excessive CPU usage when the tab is in background
let containerMatcher = ".wp-player-outer, .player__container, .wp-player, .embed-container" ;
const main = function ( ) {
if ( isInBackground ) {
return ;
}
a . config . debugMode && a . out . log ( midArray1 , midArray2 ) ;
try {
if ( a . win . WP . player . list . length > midArray1 . length ) {
let thisMid = a . win . WP . player . list [ midArray1 . length ] . p . url ;
if ( thisMid ) {
thisMid = thisMid . split ( "=" ) [ 1 ] ;
}
if ( thisMid ) {
midArray1 . push ( thisMid ) ;
}
}
} catch ( err ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find media ID with method 1! " ) ;
}
if ( a . $ ( containerMatcher ) . length > 0 ) {
const elem = a . $ ( containerMatcher ) . first ( ) . find ( ".titlecont a.title" ) ;
let thisMid = elem . attr ( "href" ) ;
if ( thisMid ) {
thisMid = thisMid . match ( /mid[=,]([0-9]+)/ ) [ 1 ] . toString ( ) ;
elem . remove ( ) ;
}
if ( thisMid ) {
midArray2 . push ( thisMid ) ;
}
}
if ( loadCounter === replaceCounter ) {
if ( networkBusy || networkErrorCounter > 5 ) {
return ;
}
let mid ;
let midArray = ( midArray1 . length > midArray2 . length ) ? midArray1 : midArray2 ;
if ( midArray . length > loadCounter ) {
mid = midArray [ loadCounter ] ;
} else {
return ;
}
networkBusy = true ;
GM _xmlhttpRequest ( {
method : "GET" ,
url : "http://wp.tv/player/mid," + mid + ",embed.json" ,
onload : function ( res ) {
try {
const response = JSON . parse ( res . responseText ) ;
for ( let i = 0 ; i < response . clip . url . length ; i ++ ) {
let item = response . clip . url [ i ] ;
if ( item . quality === "HQ" && item . type . startsWith ( "mp4" ) ) {
url = item . url ;
break ;
}
}
if ( ! url ) {
throw "Media URL Not Found" ;
}
loadCounter ++ ;
networkErrorCounter = 0 ;
} catch ( err ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find media URL! " ) ;
networkErrorCounter += 1 ;
}
networkBusy = false ;
} ,
onerror : function ( ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to load media JSON! " ) ;
networkErrorCounter += 0.5 ;
networkBusy = false ;
}
} ) ;
} else {
if ( a . $ ( containerMatcher ) . length > 0 ) {
if ( a . config . debugMode ) {
a . out . log ( "Replacing player... " ) ;
a . out . log ( a . $ ( containerMatcher ) [ 0 ] ) ;
}
a . $ ( containerMatcher ) . first ( ) . after ( a . nativePlayer ( url ) ) . remove ( ) ;
url = null ;
replaceCounter ++ ;
}
}
} ;
a . win . setInterval ( main , 1000 ) ;
a . on ( "focus" , function ( ) {
isInBackground = false ;
} ) ;
a . on ( "blur" , function ( ) {
isInBackground = true ;
} ) ;
}
if ( a . domCmp ( [ "monnsutogatya.com" ] ) ) {
a . ready ( function ( ) {
a . css ( "#site-box {display:block;}" ) ;
a . $ ( "#for-ad-blocker" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "mrtzcmp3.net" ] ) ) {
a . css ( ".rtm_ad { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "mtlblog.com" ] ) ) {
a . readOnly ( "puabs" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "mufa.de" ] ) ) {
a . css ( "#leaderboard { height: 5px; }" ) ;
a . css ( "#large-rectangle { height: 5px; }" ) ;
a . css ( "#ad-header-468x60 { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "multiup.eu" , "multiup.org" ] ) ) {
a . cookie ( "visit" , "1" ) ;
a . readOnly ( "hi" , function ( ) { } ) ;
a . ready ( function ( ) {
a . $ ( ".alert" ) . each ( function ( ) {
if ( a . $ ( this ) . text ( ) . includes ( "Tired of ads ? Remove them" ) ) {
a . $ ( this ) . remove ( ) ;
}
} ) ;
const elem = a . $ ( "#M130814ScriptRootC54591" ) ;
elem . text ( ) . includes ( "Loading..." ) && elem . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "mybank.pl" , "rapidgrab.pl" ] ) ) {
a . filter ( "addEventListener" , a . matchMethod . string , ".nextFunction()}" ) ;
}
//Rules:N
if ( a . domInc ( [ "nana10" ] ) ) {
a . css ( "#advert-tracker { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "narkive.com" ] ) ) {
a . readOnly ( "adblock_status" , function ( ) {
return false ;
} ) ;
}
if ( a . domCmp ( [ "naruto-mx.net" , "onepiece-mx.net" , "scan-mx.com" ] ) ) {
a . readOnly ( "ad_block_test" , function ( ) { } ) ;
a . ready ( function ( ) {
a . $ ( "#yop" ) . attr ( "id" , "" ) ;
} ) ;
}
if ( a . domCmp ( [ "nbc.com" ] ) ) {
a . noAccess ( "mps" ) ;
}
if ( a . domCmp ( [ "ndtv.com" ] ) ) {
a . readOnly ( "___p__p" , 1 ) ;
a . readOnly ( "getNoTopLatestNews" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "new-skys.net" ] ) ) {
a . noAccess ( "alert" ) ;
}
if ( a . domCmp ( [ "newstatesman.com" ] ) ) {
a . cookie ( "donationPopup" , "hide" ) ;
}
if ( a . domCmp ( [ "newyorker.com" ] ) ) {
a . generic . FuckAdBlock ( "SniffAdBlock" , "sniffAdBlock" ) ;
}
if ( a . domCmp ( [ "nicematin.com" ] ) ) {
a . noAccess ( "checkAds" ) ;
}
if ( a . domCmp ( [ "notre-planete.info" ] ) ) {
a . readOnly ( "pubpop" , function ( ) { } ) ;
}
//Rules:O
if ( a . domCmp ( [ "oneadfaucet.com" ] ) ) {
a . css ( "#test { height: 250px; }" ) ;
a . bait ( "div" , "#test" ) ;
}
if ( a . domCmp ( [ "onemanga2.com" ] ) ) {
a . css ( ".afs_ads { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "oneplaylist.eu.pn" ] ) ) {
a . readOnly ( "makePopunder" , false ) ;
}
if ( a . domCmp ( [ "onmeda.de" ] ) ) {
a . readOnly ( "$ADP" , true ) ;
a . readOnly ( "sas_callAd" , function ( ) { } ) ;
a . readOnly ( "sas_callAds" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "onvasortir.com" ] ) ) {
a . readOnly ( "JeBloque" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "openload.co" , "openload.io" , "openload.tv" ] ) ) {
a . readOnly ( "adblock" , false ) ;
a . readOnly ( "adblock2" , false ) ;
a . readOnly ( "popAdsLoaded" , true ) ;
}
if ( a . domCmp ( [ "ouo.io" ] ) ) {
a . win . localStorage . setItem ( "snapLastPopAt" , ( new a . win . Date ( ) ) . getTime ( ) ) ;
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
//Rules:P
if ( a . domCmp ( [ "paidverts.com" ] ) ) {
a . bait ( "div" , ".afs_ads" ) ;
}
if ( a . domCmp ( [ "pastebin.com" ] ) ) {
a . readOnly ( "abdd" , "" ) ;
}
if ( a . domCmp ( [ "pasted.co" , "tny.cz" ] ) ) {
a . cookie ( "__.popunderCap" , "1" ) ;
a . cookie ( "__.popunder" , "1" ) ;
}
if ( a . domCmp ( [ "pcgames-download.net" ] ) ) {
a . always ( function ( ) {
a . cookie ( "noAdblockNiceMessage" , "1" ) ;
a . win . mgCanLoad30547 = true ;
} ) ;
}
if ( a . domCmp ( [ "picload.org" ] ) ) {
a . cookie ( "pl_adblocker" , "false" ) ;
a . ready ( function ( ) {
a . win . ads _loaded = true ;
a . win . imageAds = false ;
a . $ ( "div[oncontextmenu='return false;']" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "pinkrod.com" , "wetplace.com" ] ) ) {
a . readOnly ( "getAd" , function ( ) { } ) ;
a . readOnly ( "getUtm" , function ( ) { } ) ;
}
if ( a . domInc ( [ "pinoy1tv" ] ) ) {
a . readOnly ( "allowads" , 1 ) ;
}
if ( a . domCmp ( [ "pipocas.tv" ] ) ) {
a . cookie ( "popup_user_login" , "yes" ) ;
}
if ( a . domInc ( [ "planetatvonlinehd.blogspot" ] ) || a . domCmp ( [ "planetatvonlinehd.com" ] ) ) {
a . css ( ".adsantilok { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "play.bandit.se" , "play.lugnafavoriter.com" , "play.radio1.se" , "play.rixfm.se" ] ) ) {
a . on ( "load" , function ( ) {
a . win . setTimeout ( function ( ) {
a . win . player _load _live ( a . win . stream _id ) ;
} , 1000 ) ;
} ) ;
}
if ( a . domCmp ( [ "play.tv3.lt" , "tv3play.tv3.ee" , "tvplay.skaties.lv" , "viafree.dk" , "viafree.no" , "viafree.se" ] )
&& a . config . debugMode ) {
const handler = function ( ) {
const elem = a . $ ( "#video-player" ) ;
if ( elem . length === 0 ) {
a . win . setTimeout ( handler , 1000 ) ;
return ;
}
let videoID = a . win . vfAvodpConfig . videoId ;
if ( ! videoID ) {
a . win . setTimeout ( handler , 1000 ) ;
return ;
}
const proxy = "http://www.sagkjeder.no/p/browse.php?u=" ;
GM _xmlhttpRequest ( {
method : "GET" ,
url : proxy + "http://playapi.mtgx.tv/v3/videos/stream/" + videoID ,
onload : function ( result ) {
a . out . info ( "Response received: " ) ;
a . out . info ( result . responseText ) ;
parser ( result . responseText ) ;
}
} ) ;
} ;
const parser = function ( data ) {
let streams ;
try {
const parsedData = JSON . parse ( data ) ;
streams = parsedData . streams
} catch ( err ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find video URL! " ) ;
return ;
}
let sources = [ ] , types = [ ] ;
if ( streams . high && streams . high !== "" ) {
sources . push ( streams . high ) ;
types . push ( "video/mp4" ) ;
} else if ( streams . hls && streams . hls !== "" ) {
sources . push ( streams . hls ) ;
types . push ( "application/x-mpegURL" ) ;
} else if ( streams . medium && streams . medium !== "" ) {
sources . push ( streams . medium ) ;
types . push ( streams . medium . startsWith ( "rtmp" ) ? "rtmp/mp4" : "application/f4m+xml" ) ;
} else {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find video URL! " ) ;
return ;
}
a . out . info ( "Potential media URLs: " ) ;
a . out . info ( [ streams . high , streams . hls , streams . medium ] ) ;
a . out . info ( "Used media URL: " ) ;
a . out . info ( sources ) ;
a . videoJS . init ( a . videoJS . plugins . hls ) ;
const height = a . $ ( "#video-player" ) . height ( ) ;
const width = a . $ ( "#video-player" ) . width ( ) ;
a . $ ( "#video-player" ) . after ( a . videoJS ( sources , types , width , height ) ) . remove ( ) ;
handler ( ) ;
} ;
handler ( ) ;
}
if ( a . domCmp ( [ "player.pl" ] ) ) {
//@pragma-keepline Based on solution from Anti-Adblock Killer
//@pragma-keepline License: https://github.com/reek/anti-adblock-killer/blob/master/LICENSE
a . on ( "load" , function ( ) {
let elem ;
if ( a . $ ( "header.detailImage" ) . length > 0 ) {
elem = a . $ ( "header.detailImage" ) ;
} else {
return ;
}
const parts = a . doc . location . href . split ( /[.,]/ ) ;
const id = parts [ parts . length - 2 ] ;
const params = {
platform : "ConnectedTV" ,
terminal : "Panasonic" ,
format : "json" ,
authKey : "064fda5ab26dc1dd936f5c6e84b7d3c2" ,
v : "3.1" ,
m : "getItem" ,
id : id
} ;
const api = "https://api.tvnplayer.pl/api/?" + a . serialize ( params ) ;
const proxy = "http://www.proxy.xmc.pl/index.php?hl=3e5&q=" ;
const requestURL = ( a . cookie ( "tvn_location2" ) === "1" ) ? api : proxy +
a . win . encodeURIComponent ( api ) ;
GM _xmlhttpRequest ( {
method : "GET" ,
url : requestURL ,
onload : function ( result ) {
let url ;
try {
let data = JSON . parse ( result . responseText ) ;
let vidSources = data . item . videos . main . video _content ;
if ( vidSources [ 1 ] . url ) {
elem . html ( "" ) . append ( a . nativePlayer ( vidSources [ 1 ] . url ) ) ;
a . $ ( "video" ) . css ( "max-height" , "540px" ) ;
} else if ( vidSources [ 0 ] . src ) {
a . config . debugMode && a . out . error ( "uBlock Protector will not replace this video player " +
"because it is DRM prtected. " ) ;
}
} catch ( err ) {
a . config . debugMode && a . out . error ( "uBlock Protector failed to find media URL! " ) ;
return ;
}
}
} ) ;
} ) ;
}
if ( a . domCmp ( [ "plej.tv" ] ) ) {
a . css ( ".advert_box { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "pornve.com" ] ) ) {
a . readOnly ( "adxjwupdate" , 1 ) ;
}
if ( a . domCmp ( [ "preemlinks.com" ] ) ) {
a . css ( "#divads { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "pregen.net" ] ) ) {
a . cookie ( "pgn" , "1" ) ;
}
if ( a . domCmp ( [ "primeshare.tv" ] ) ) {
a . bait ( "div" , "#adblock" ) ;
}
if ( a . domCmp ( [ "privateinsta.com" ] ) ) {
a . ready ( function ( ) {
a . win . dont _scroll = false ;
a . $ ( "#overlay_div" ) . remove ( ) ;
a . $ ( "#overlay_main_div" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "pro-ddl.ws" , "pro-sport.ws" , "pro-tect.ws" , "pro-zik.ws" ] ) ) {
a . cookie ( "visitedf" , "true" ) ;
a . cookie ( "visitedh" , "true" ) ;
}
if ( a . domCmp ( [ "programme-tv.net" , "voici.fr" ] ) ) {
a . bait ( "div" , "#sas_script2" ) ;
}
if ( a . domCmp ( [ "prototurk.com" ] ) ) {
a . css ( "#reklam { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "psarips.com" ] ) ) {
a . bait ( "div" , "#advert" ) ;
a . noAccess ( "open" ) ;
}
if ( a . domCmp ( [ "pxstream.tv" ] ) ) {
a . on ( "load" , function ( ) {
if ( a . win . location . pathname . startsWith ( "/embedrouter.php" ) ) {
a . win . setTimeout ( function ( ) {
a . win . closeAd ( ) ;
} , 1000 ) ;
}
} ) ;
}
//Rules:Q
if ( a . domCmp ( [ "qnimate.com" ] ) ) {
a . readOnly ( "adBlockDetected" , function ( ) { } ) ;
}
//Rules:R
if ( a . domCmp ( [ "rapid8.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "div.backk + #blcokMzg" ) . remove ( ) ;
a . $ ( "div.backk" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "ratemyprofessors.com" ] ) ) {
a . readOnly ( "adBlocker" , false ) ;
a . filter ( "addEventListener" , a . matchMethod . RegExp , /^resize$/i ) ;
}
if ( a . domCmp ( [ "razercrypt.com" ] ) ) {
a . css ( "#test { height: 250px; }" ) ;
a . bait ( "div" , "#test" ) ;
}
if ( a . domCmp ( [ "receive-sms-online.info" ] ) ) {
a . filter ( "addEventListener" , a . matchMethod . stringExact , ` function (b){return"undefined"!=typeof n&& ` +
` n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0} ` ) ;
}
if ( a . domCmp ( [ "richonrails.com" ] ) ) {
a . ready ( function ( ) {
const adsByGoogleHtml = ` "<ins+id="aswift_0_expand"+style="display:inline-table;border:none;height:90px; ` +
` margin:0;padding:0;position:relative;visibility:visible;width:750px;background-color:transparent"><ins+id="aswi ` +
` ft_0_anchor"+style="display:block;border:none;height:90px;margin:0;padding:0;position:relative;visibility:visib ` +
` le;width:750px;background-color:transparent"><iframe+marginwidth="0"+marginheight="0"+vspace="0"+hspace="0"+all ` +
` owtransparency="true"+scrolling="no"+allowfullscreen="true"+onload="var+i=this.id,s=window.google_iframe_oncopy ` +
` ,H=s&&s.handlers,h=H&&H[i],w=this.contentWindow,d;try{d=w.document}catch(e){}if(h&&d&am ` +
` p;&(!d.body||!d.body.firstChild)){if(h.call){setTimeout(h,0)}else+if(h.match){try{h=s.upd(h,i)}catch(e){}w. ` +
` location.replace(h)}}"+id="aswift_0"+name="aswift_0"+style="left:0;position:absolute;top:0;"+width="750"+frameb ` +
` order="0"+height="90"></iframe></ins></ins>" ` ;
a . $ . ajax ( {
url : a . $ ( ".article-content" ) . data ( "url" ) ,
dataType : "script" ,
method : "post" ,
data : {
html : adsByGoogleHtml
} ,
success : function ( result ) {
const exec = result . replace ( "$('.article-content')" , "$('.article-content-2')" ) ;
a . win . eval ( exec ) ;
}
} ) ;
a . $ ( ".article-content" ) . after ( ` <div class="article-content-2"></div> ` ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "rmprepusb.com" ] ) ) {
a . cookie ( "jot_viewer" , "3" ) ;
}
if ( a . domCmp ( [ "rockfile.eu" ] ) ) {
a . ready ( function ( ) {
a . $ ( "<iframe>" ) . attr ( "src" , "about:blank" ) . css ( "visibility" , "hidden" ) . appendTo ( "body" ) ;
} ) ;
}
if ( a . domCmp ( [ "rtl.de" ] ) ) {
a . ready ( function ( ) {
a . $ ( "div[data-widget='video']" ) . each ( function ( ) {
const url = a . $ ( this ) . data ( "playerLayerCfg" ) . videoinfo . mp4url ;
a . $ ( this ) . after ( a . nativePlayer ( url ) ) ;
a . $ ( this ) . remove ( ) ;
} ) ;
} ) ;
}
//Rules:S
if ( a . domCmp ( [ "sandiegouniontribune.com" ] ) ) {
const token = a . win . setInterval ( function ( ) {
if ( a . $ ( "#reg-overlay" ) . length ) {
a . $ ( "#reg-overlay" ) . remove ( )
a . $ ( "<style> html[data-dss-meterup], [data-dss-meterup] body { o" +
"verflow: scroll !important; } </style>" ) . appendTo ( "head" ) ;
a . win . clearInterval ( token ) ;
}
} , 1000 ) ;
a . filter ( "addEventListener" , a . matchMethod . stringExact , "scroll" ) ;
}
if ( a . domCmp ( [ "sapib.ca" ] ) ) {
a . readOnly ( "Abd_Detector" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "satoshiempire.com" ] ) ) {
a . css ( "#test { height: 250px; }" ) ;
a . bait ( "div" , "#test" ) ;
}
if ( a . domCmp ( [ "sawlive.tv" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname . toLowerCase ( ) . startsWith ( "/embed/watch/" ) ) {
a . win . display = false ;
a . win . closeMyAd ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "sc2casts.com" ] ) ) {
a . readOnly ( "scriptfailed" , function ( ) { } ) ;
a . filter ( "setTimeout" ) ;
a . win . _gaq = { push : function ( ) { } }
a . readOnly ( "showdialog" , function ( ) { } ) ;
a . readOnly ( "showPopup2" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "securenetsystems.net" ] ) ) {
a . readOnly ( "iExist" , true ) ;
}
if ( a . domCmp ( [ "sharecast.to" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname . startsWith ( "/embed.php" ) ) {
const token = a . win . setInterval ( function ( ) {
a . cookie ( "vid_main" , "true" ) ;
a . cookie ( "vid_sub" , "2" ) ;
a . cookie ( "vid_delay" , "true" ) ;
} , 100 ) ;
a . win . setTimeout ( function ( ) {
a . win . clearInterval ( token ) ;
} , 5000 ) ;
a . $ ( "#table1" ) . remove ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "shink.in" ] ) ) {
a . readOnly ( "RunAds" , true ) ;
a . win . open = function ( ) { } ;
a . readOnly ( "jsPopunder" , function ( ) { } ) ;
const _createElement = a . doc . createElement ;
a . doc . createElement = function ( name ) {
switch ( name . toLowerCase ( ) ) {
case "a" :
return null ;
case "iframe" :
let elem = _createElement . apply ( a . doc , arguments ) ;
return elem ;
default :
return _createElement . apply ( a . doc , arguments ) ;
}
} ;
if ( a . win . location . pathname . startsWith ( "/go/" ) ) {
a . ready ( ( ) => {
const link = a . doc . getElementById ( "btn-main" ) ;
const i = link . href . lastIndexOf ( "http" ) ;
const url = link . href . substr ( i ) ;
a . redirect ( url ) ;
} ) ;
}
}
if ( a . domCmp ( [ "showsport-tv.com" ] ) ) {
a . ready ( function ( ) {
if ( a . win . location . pathname . startsWith ( "/ch.php" ) ) {
a . $ ( "#advertisement, .advertisement" ) . remove ( ) ;
}
} ) ;
}
if ( a . domCmp ( [ "sidereel.com" ] ) ) {
a . protectFunc ( ) ;
a . filter ( "setTimeout" , a . matchMethod . RegExp , /function\ \_0x[a-z0-9]{4,8}\(/ ) ;
}
if ( a . domCmp ( [ "simply-debrid.com" ] ) ) {
a . win . adsbygoogle = { } ;
a . win . adsbygoogle . loaded = true ;
}
if ( a . domCmp ( [ "skiplimite.tv" ] ) ) {
a . css ( "div.addthis_native_toolbox + div[id] { height: 12px; }" ) ;
}
if ( a . domInc ( [ "slideplayer" ] ) ) {
a . on ( "load" , function ( ) {
a . win . force _remove _ads = true ;
const slide _id = a . win . get _current _slide _id ( ) ;
const slide _srv = a . doc . getElementById ( "player_frame" ) . src . split ( "/" ) [ 3 ] ;
const time = 86400 + a . win . Math . floor ( a . win . Date . now ( ) / 1000 ) ;
const secret = a . win . encodeURIComponent ( a . win . strtr ( a . win . MD5 . base64 ( "secret_preved slideplayer never solved " +
time + slide _id + ".ppt" ) , "+/" , "- " ) ) ;
const url = "http://player.slideplayer.org/download/" + slide _srv + "/" + slide _id + "/" + secret + "/" +
time + "/" + slide _id + ".ppt" ;
let links = a . doc . querySelectorAll ( "a.download_link" ) ;
for ( let i = 0 ; i < links . length ; i ++ ) {
let events = a . win . $ . _data ( links [ i ] ) . events . click ;
events . splice ( 0 , events . length ) ;
links [ i ] . href = url ;
}
} ) ;
}
if ( a . domCmp ( [ "snsw.us" ] ) ) {
a . css ( "#ad_1 { height: 1px; }" ) ;
}
if ( a . domCmp ( [ "sports.fr" ] ) ) {
a . generic . FuckAdBlock ( "FabInstance" , "fabInstance" ) ;
}
if ( a . domCmp ( [ "stream4free.eu" ] ) ) {
a . bait ( "div" , "#jpayday" ) ;
a . readOnly ( "jpayday_alert" , 1 ) ;
}
if ( a . domCmp ( [ "superanimes.com" ] ) ) {
a . bait ( "div" , "#bannerLoja" ) ;
}
//Rules:T
if ( a . domCmp ( [ "temp-mail.org" ] ) ) {
a . readOnly ( "checkadBlock" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "tf2center.com" ] ) ) {
a . filter ( "setInterval" , a . matchMethod . string , '"/adblock"' ) ;
a . filter ( "setTimeout" , a . matchMethod . stringExact , "function (){B(F+1)}" ) ;
}
if ( a . domCmp ( [ "tg007.net" ] ) ) {
a . bait ( "div" , "#gads" ) ;
a . $ ( "#gads" ) . hide ( ) ;
}
if ( a . domCmp ( [ "tgo-tv.com" ] ) ) {
a . css ( "#adb, #bannerad1, .load_stream { display: none; }" ) ;
a . bait ( "div" , "#tester" ) ;
a . on ( "load" , function ( ) {
a . win . threshold = 1000 ;
a . $ ( ".chat_frame" ) . remove ( ) ;
} )
}
if ( a . domCmp ( [ "thebatavian.com" ] ) ) {
a . readOnly ( "broadstreet" , true ) ;
}
if ( a . domCmp ( [ "thechive.com" ] ) ) {
a . readOnly ( "stephaneDetector" , {
hook : function ( cb ) {
cb ( false ) ;
} ,
init : function ( ) { } ,
broadcastResult : function ( ) { }
} ) ;
}
if ( a . domCmp ( [ "theinquirer.net" ] ) ) {
a . readOnly ( "_r3z" , true ) ;
}
if ( a . domCmp ( [ "themeslide.com" ] ) ) {
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
if ( a . domCmp ( [ "thepcspy.com" ] ) ) {
a . css ( ".myTestAd { height: 1px; }" ) ;
a . css ( ".blocked { display: none; }" ) ;
a . ready ( function ( ) {
a . $ ( ".blocked" ) . remove ( ) ;
} )
}
if ( a . domCmp ( [ "thesimsresource.com" ] ) ) {
a . readOnly ( "gadsize" , true ) ;
a . readOnly ( "iHaveLoadedAds" , true ) ;
}
if ( a . domCmp ( [ "theweatherspace.com" ] ) ) {
a . bait ( "div" , "#ab-bl-advertisement" ) ;
}
if ( a . domCmp ( [ "thomas-n-ruth.com" ] ) ) {
a . css ( ".Google { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "titulky.com" ] ) ) {
a . generic . FuckAdBlock ( "FADB" , "fADB" ) ;
}
if ( a . domCmp ( [ "topserialy.sk" ] ) ) {
a . generic . FuckAdBlock ( a . uid ( ) , "sratNaVas" ) ;
}
if ( a . domCmp ( [ "topzone.lt" ] ) ) {
a . css ( ".forumAd { height: 1px; display: none; }" ) ;
}
if ( a . domCmp ( [ "torrent-tv.ru" ] ) ) {
a . readOnly ( "c_Oo_Advert_Shown" , true ) ;
}
if ( a . domCmp ( [ "translatica.pl" ] ) ) {
a . readOnly ( "adblock" , false ) ;
}
if ( a . domCmp ( [ "turkanime.tv" ] ) ) {
a . always ( function ( ) {
a . win . adblockblock = function ( ) { } ;
a . win . BlokKontrol = { } ;
} ) ;
}
if ( a . domCmp ( [ "turkdown.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "#duyuru" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "tvregionalna24.pl" ] ) ) {
let text = [ ] ;
a . readOnly ( "videojs" , function ( a , b , func ) {
let temp = "(" + func . toString ( ) . match ( /var _ended=(.*);var _skipButton/ ) [ 1 ] + ")();" ;
temp = temp . replace ( "player.dispose();" , "" ) ;
text . push ( temp ) ;
} ) ;
a . on ( "load" , function replace ( ) {
if ( text . length > 0 && a . $ ( ".vjs-poster" ) . length > 0 ) {
for ( let i = 0 ; i < text . length ; i ++ ) {
a . win . eval ( text [ i ] ) ;
}
} else {
a . win . setTimeout ( replace , 1000 ) ;
}
} ) ;
}
if ( a . domCmp ( [ "tweaktown.com" ] ) ) {
a . on ( "load" , function ( ) {
a . css ( "html, body { overflow: scroll; }" ) ;
const blockScreenRemover = function ( ) {
if ( a . $ ( "body" ) . children ( "div" ) . last ( ) . text ( ) . indexOf ( "Ads slowing you down?" ) > - 1 ) {
a . $ ( "body" ) . children ( "div" ) . last ( ) . remove ( ) ;
a . $ ( "body" ) . children ( "div" ) . last ( ) . remove ( ) ;
} else {
a . win . setTimeout ( blockScreenRemover , 500 ) ;
}
} ;
a . win . setTimeout ( blockScreenRemover , 500 ) ;
} ) ;
}
//Rules:U
if ( a . domCmp ( [ "undeniable.info" ] ) ) {
a . bait ( "div" , "#testadblock" ) ;
}
if ( a . domCmp ( [ "up-4ever.com" ] ) ) {
a . filter ( "setTimeout" , a . matchMethod . string , "$('#adblock_detected').val(1);" ) ;
a . css ( "#hiddensection { display: block; }" ) ;
a . ready ( function ( ) {
a . $ ( "#hiddensection" ) . show ( ) ;
a . $ ( "#hiddensection2" ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "urlchecker.net" ] ) ) {
a . css ( "#adchecker { height: 20px; }" ) ;
}
if ( a . domCmp ( [ "urle.co" ] ) ) {
a . filter ( "setTimeout" , a . matchMethod . string , "captchaCheckAdblockUser();" ) ;
a . filter ( "eval" ) ;
a . timewarp ( "setInterval" , a . matchMethod . stringExact , "1000" ) ;
}
if ( a . domCmp ( [ "usapoliticstoday.com" ] ) ) {
a . filter ( "eval" ) ;
}
if ( a . domCmp ( [ "userscloud.com" ] ) ) {
a . on ( "load" , function ( ) {
a . $ ( "#dl_link" ) . show ( ) ;
a . $ ( "#adblock_msg" ) . remove ( ) ;
} ) ;
}
//Rules:V
if ( a . domCmp ( [ "vgunetwork.com" ] ) ) {
a . ready ( function ( ) {
a . cookie ( "stopIt" , "1" ) ;
a . $ ( "#some_ad_block_key_close" ) . click ( )
} ) ;
}
if ( a . domCmp ( [ "videowood.tv" ] ) ) {
a . filter ( "open" ) ;
a . win . config = { } ;
a . readOnly ( "adb_remind" , false ) ;
}
if ( a . domCmp ( [ "vidlox.tv" ] ) ) {
a . readOnly ( "xRds" , false ) ;
a . readOnly ( "cRAds" , true ) ;
a . readOnly ( "adb" , 0 ) ;
}
if ( a . domCmp ( [ "vivo.sx" ] ) ) {
a . on ( "load" , function aa ( ) {
a . $ ( "#alert-throttle" ) . remove ( ) ;
a . $ ( "button#access" ) . removeAttr ( "id" ) . removeAttr ( "disabled" ) . html ( "Continue To Video" ) ;
a . win . setTimeout ( function ( ) {
a . $ ( "input[name='throttle']" ) . remove ( ) ;
} , 1000 ) ;
} ) ;
}
if ( a . domCmp ( [ "ville-ideale.com" ] ) ) {
a . readOnly ( "execsp" , function ( ) { } ) ;
}
//Rules:W
if ( a . domCmp ( [ "wakanim.tv" ] ) ) {
a . css ( "#detector { display: none; }" ) ;
a . css ( "#nopub { display: block; }" ) ;
}
if ( a . domCmp ( [ "watcharab.com" ] ) ) {
a . css ( "#adblock { height: 5px; }" ) ;
}
if ( a . domCmp ( [ "webqc.org" ] ) ) {
a . filter ( "setTimeout" ) ;
}
if ( a . domCmp ( [ "whiskypreise.com" , "whiskyprices.co.uk" , "whiskyprijzen.com" , "whiskyprix.fr" ] ) ) {
a . readOnly ( "OA_show" , true ) ;
}
if ( a . domCmp ( [ "whosampled.com" ] ) ) {
a . readOnly ( "showAdBlockerOverlay" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "wired.com" ] ) ) {
a . readOnly ( "google_onload_fired" , true ) ;
}
if ( a . domCmp ( [ "workupload.com" ] ) ) {
a . always ( function ( ) {
a . css ( ".adBlock, .adsbygoogle, #sad { height: 11px; }" ) ;
} ) ;
}
if ( a . domCmp ( [ "wowhead.com" ] ) ) {
a . ready ( function ( ) {
a . $ ( "div[id^='ad-']" ) . parent ( ) . parent ( ) . parent ( ) . remove ( ) ;
} ) ;
}
if ( a . domCmp ( [ "wstream.video" ] ) ) {
a . css ( "#adiv { height:4px; }" ) ;
}
if ( a . domCmp ( [ "wtfbit.ch" ] ) ) {
a . readOnly ( "writeHTMLasJS" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "wtkplay.pl" ] ) ) {
a . readOnly ( "can_run_ads" , true ) ;
}
//Rules:X
if ( a . domCmp ( [ "xnxx.com" ] ) ) {
a . cookie ( "wpn-popupunder" , "1" ) ;
a . readOnly ( "openpop" , function ( ) { } ) ;
}
//Rules:Y
if ( a . domCmp ( [ "yellowbridge.com" ] ) ) {
a . readOnly ( "finalizePage" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "yes.fm" ] ) ) {
a . readOnly ( "com_adswizz_synchro_initialize" , function ( ) { } ) ;
}
if ( a . domCmp ( [ "youporn.com" , "youporngay.com" ] ) ) {
a . cookie ( "adblock_message" , "closed" ) ;
}
//Rules:Z
if ( a . domCmp ( [ "zap.in" ] ) ) {
let val ;
a . defineProperty ( "zapVM" , {
configurable : false ,
set : function ( arg ) {
val = arg ;
} ,
get : function ( ) {
if ( val . verify ) {
val . verify = ( function ( ) {
callAPI (
"VerifyZapClick" ,
{
linkRef : val . linkRef ( ) ,
linkClickRef : $ ( "#LinkClickRef" ) [ 0 ] . value ,
recaptchaResponse : val . recaptchaResponse ( )
} ,
"Verify" ,
"Verifying" ,
function ( response ) {
if ( response . result ) {
a . redirect ( response . zapURL ) ;
} else {
showMessageModal ( "Verify failed" , response . resultHtml , response . result ) ;
}
} ,
null ,
function ( ) {
grecaptcha . reset ( ) ;
}
) ;
} ) . bind ( val ) ;
}
return val ;
}
} ) ;
}
if ( a . domCmp ( [ "zoomtv.me" ] ) ) {
a . readOnly ( "iaxpEnabled" , true ) ;
}
if ( a . domCmp ( [ "zrabatowani.pl" ] ) ) {
a . cookie ( "adblockAlert" , "yes" ) ;
}
//Generic
a . generic ( ) ;