M3u8

解析 或 破解 vip影视 的时候,使用的 《在线播放器》 和 《在线VIP解析接口》 和 《第三方影视野鸡网站》 全局通用 拦截和过滤 (解析资源/采集资源) 的 插播广告切片

// ==UserScript==
// @name M3u8
// @description 解析 或 破解 vip影视 的时候,使用的 《在线播放器》 和 《在线VIP解析接口》 和 《第三方影视野鸡网站》 全局通用 拦截和过滤 (解析资源/采集资源) 的 插播广告切片
// @version 20250227
// @author 江小白
// @match https://v.68sou.com/
// @include /\/\?id=[a-zA-Z\d]+?$/
// @include /\/[pP]lay(?:\/|\?id=\d)/
// @include /(?:lay|ideo).*?\.html/
// @include /\.m3u8(?:\?(?!.+?&)|$)/
// @include /^https?:\/\/(?:movie\.douban\.com\/subject|m\.douban\.com\/movie)\//
// @include /^https?:\/\/.+?(?<!(?:refer(?:rer)?|ori(?:gin)?))[&#=\?]https?(?::\/\/|:\\\/\\\/|%3A%2F%2F)/
// @include /^https?:\/\/(?!.+?https?(?::\/\/|:\\\/\\\/|%3A%2F%2F)).+?[\?&](?:url|rul)=(?!http).{5,}/
// @include /^https?:\/\/[^\/]+?\/(?:play|share)\/[a-z0-9]+?\/?\s*?$/
// @include /^https?:\/\/[^\/]+?\/vod(?:\/[^\/]+?(?:\/\d[^\/]+?\d)?\.html|detail\/\d[^\/]+?\d\.html)/
// @include /^https?:\/\/(?!.+?https?(?::\/\/|:\\\/\\\/|%3A%2F%2F)).+?\/(?:index\.php\/vod\/detail\/id\/\d+?|p\/\d[^\.]+?\d)\.html/
// @exclude /^https?:\/\/(?:[^\/]+?\.)?(?:(?:ggpht|qpic|gstatic|[yg]timg|youtu|google|cloudflare)|(?:roajsdl|vvvdj|bing|jd|tmall|taobao|meizu|asus|nike|vmall|fliggy|adidas|gome|\w*?suning|liangxinyao|xiaomiyoupin|mmstat|\w*?video\w*?\.qq)\.)/
// @exclude /^https?:\/\/(?:.+?\]|(?:[^\/]+?\/(?!api)){1,}\w+?\?\w*?id=.+?(?<!&key=.+?)[&#=\?]https?(?::\/\/|:\\\/\\\/|%3A%2F%2F)|(?:[^\/]+?\/(?:proxyhttp|[a-zA-Z]*?kv\?)|.+?\.\w+?\/\d+?)$)/
// @exclude /(?:^https?:\/\/(?!.+?https?(?::\/\/|:\\\/\\\/|%3A%2F%2F)).+?\.(?:ts|vob|3gp|rmvb|flac|[fh]lv|og[gv]|m(?:3u8|p[34]|kv|4a|ov|pg|idi|peg)|w(?:[am]v|ma|ebm)|a(?:ac|pe|vi|lac))|\.(?:js(?:on)?|rb|swf|png|xml|bmp|pac|gif|apk|exe|zip|txt|aspx|docx?|jpe?g|p(?:y|df|ng)|i(?:co|dx|mage)|r(?:ss|ar|[0-9]{2,2})|s(?:h|vg|rt|ub)|(?:c|le)ss|w(?:ebp|off2)))(?:#|\?|\\|&|$)|\/0\/(?:\d+?_){1,}\d+?\/0$/
// @run-at document-start
// @namespace https://greasyfork.org/users/769699
// ==/UserScript==

(function() {
    try {
        if (typeof location['m3u8去插播广告'] === 'undefined') {
            try {
                Object.defineProperty(location, 'm3u8去插播广告', {
                    value: 'm3u8去插播广告',
                    writable: false,
                    enumerable: false,
                    configurable: false
                });
            } catch (e) {}
            let m3u8wz, wzm3u8, mp4wz, flvwz, tswz, playsharewz, urlFromArgBy, ggbmd, shouldStopExecution, shouldStopExecutionbf, 打印开关, spbfurl, ggtspd, gggzdp, gggzpd, ggsjgg, ggzlhx, ggljbmd, ggljdmb, hhzz, bhhzz, dypd, m3u8gglj, m3u8ggljdypd, m3u8bflj;
            m3u8gglj = '';
            m3u8bflj = '';
            hhzz = '[\\n\\r\\u0085\\u2028\\u2029]';
            bhhzz = '[^\\n\\r\\u0085\\u2028\\u2029]';
            wzm3u8 = /\.m3u8(?:\?(?!.+?&)|$)/i;
            m3u8wz = /\.(?:m3u8|png|css)(?:#|\?|\\|&|$)|(?<!thread|forum|read)\.php(?!(?:[a-z0-9\/]|\?\w+?=.+?\.(?:m(?:p4|kv)|flv|ts)(?:#|\?|\\|&|$)))|\/(?!.+?\.m(?:3u8|p4)(?:#|\?|\\|&|$)).+?(?<![a-z0-9])m(?:3u8|p4)(?![a-z0-9])/i;
            mp4wz = /\.m(?:p4|kv)(?:#|\?|\\|&|$)|^https?:\/\/(?:[^\/]+?\.)?pstatp.+?\/obj\/[^\.]+?$|type=video_mp4&(?!.+\.[a-z]{2,5}(?:#|\?|\\|&|$))|\.php\?\w+?=.+?\.mp4/i;
            flvwz = /\.flv(?:#|\?|\\|&|$)/i;
            tswz = /\.ts(?:#|\?|\\|&|$)/i;
            playsharewz = /^https?:\/\/[^\/]+?\/{1,}(?:play|share)\/{1,}[a-zA-Z0-9]+?(?:\/{1,})?$/i;
            dypd = /^\s*?(?:0{1,}|(?<!开\s*?)关(?:\s*?[闭掉])?)\s*?$/;
            打印开关 = '关';
            ggsjgg = '4|20';
            ggzlhx = 'ts|png|jpe?g|txt';
            ggljbmd = /&[a-z]*?(?:sign|token|version)=/i;
            ggbmd = /(?:\.php|\_(?:ts|mp4)\/.+?\.m3u8)(?:#|\?|\\|&|$)/i;
            ggljdmb = new RegExp('\\.(?:' + ggzlhx + ')' + hhzz + '+?#EXTINF','i');
            shouldStopExecution = false;
            shouldStopExecutionbf = false;
            try {
                if (!shouldStopExecution || !shouldStopExecutionbf) {
                    /*以下是 M3U8 插播广告 过滤核心代码 不懂勿动*/
                    const tyad0 = '#EXTINF'
                      , tyad1 = tyad0 + '\\s*?:\\s*?'
                      , tyad2 = '#EXT-X-DISCONTINUITY'
                      , tyad3 = tyad2 + hhzz
                      , tyad4 = '(?:' + ggzlhx + ')'
                      , tyad5 = '\\.' + tyad4
                      , tyad6 = tyad5 + hhzz + '+'
                      , tyad7 = '#EXT-X-ENDLIST'
                      , tyad8 = '(?:[a-z\\d]+?(?:\\s*?[\\_\\-]\\s*?)?)?\\d+?'
                      , tyad9 = '#EXT-X-TARGETDURATION'
                      , tyad10 = new RegExp('^\\s*?(?:(?!.*?0{3,})[a-z\\d]+?|' + tyad8 + ')\\s*?$','i')
                      , tyad11 = new RegExp('^' + tyad0,'i')
                      , tyad12 = new RegExp('^\\s*?' + tyad1,'i')
                      , tyad13 = '[\\S\\s]+?'
                      , tyada = bhhzz + '+?' + tyad6
                      , tyadb = tyad1 + '\\d+?(?:\\.\\d+?)?\\s*?,' + hhzz + '+?'
                      , tyadc = tyad3 + '+'
                      , tyadd = tyadc + '?' + tyadb
                      , tyade = tyada + '?[\\s\\S]*?' + tyadc
                      , tyadf = '(?<=' + tyad9 + '\\s*?:\\s*?'
                      , tyadg = ')(?:\\.0{1,})?\\s*?,'
                      , tyadh = '(?:#EXT-X-[^:]+?:\\s*?'
                      , tyadi = tyad1 + '\\d+?\\.\\d+?'
                      , tyad100 = ggsjgg + tyadg
                      , tyad101 = hhzz + '+?' + tyadh + bhhzz
                      , tyad102 = tyad1 + '(?:' + tyad100 + hhzz
                      , tyad103 = tyad101 + '+?' + hhzz
                      , tyad104 = tyad1 + '\\d+?(?:\\.\\d+?)?,'
                      , tyad105 = 'https?:\\\/\\\/'
                      , tyad106 = '+?\\\/\\d+?_\\w{1,10}\\.ts'
                      , tyad107 = new RegExp('^((?:' + bhhzz + '+?|\\s*?))(?=0{3}\\d+?' + tyad5 + ')','i')
                      , tyad108 = '[a-z\\d]{10,}0{2}\\d+?\\.'
                      , tyad109 = '(?:(?=' + tyad7 + ')|' + tyad3 + ')'
                      , tyad1010 = '^\\s*?#EXTM3U\\s*?'
                      , tyad1011 = hhzz + '+?' + bhhzz + '+?'
                      , tyad1012 = tyad1011 + hhzz + '+?'
                      , tyad1013 = tyad104 + tyad1012 + ')'
                      , tyad1014 = tyad3 + '+?'
                      , tyad1015 = tyad104 + hhzz + '+?'
                      , tyad1016 = tyad6 + '?'
                      , tyad1017 = bhhzz + '+?' + hhzz + '+?'
                      , tyad1018 = '0{3}'
                      , tyad1019 = tyad1011 + hhzz + '+?'
                      , tyad1020 = tyad104 + tyad1019
                      , tyad1021 = '#EXT-X-KEY\\s*?:\\s*?METHOD\\s*?='
                      , tyad1022 = bhhzz + '+?' + tyad5
                      , tyad1023 = '(?<=' + hhzz + '+)' + tyad1022
                      , tyad1024 = tyad105 + bhhzz
                      , tyad1025 = tyad1022 + hhzz + '+?'
                      , tyad1026 = '(?<=' + hhzz + '+)' + tyad1014 + tyad1
                      , tyad1027 = hhzz + '+?' + tyad105
                      , tyad1028 = tyad1027 + tyad1017
                      , tyad1029 = tyad1011 + tyad1016
                      , tyad1030 = tyad1015 + tyad1024 + tyad106 + hhzz
                      , tyad1031 = tyad1010 + hhzz + '+?'
                      , tyad1032 = tyad1031 + '(?:#EXT-X-' + tyad1017 + '){1,}('
                      , tyad1033 = tyad1011 + '(?<!' + tyad1018 + bhhzz + '+?)'
                      , tyad1034 = tyad1033 + hhzz + '+?'
                      , tyad1035 = tyad1033 + tyad5 + hhzz + '+?'
                      , tyad1036 = tyadb + tyad1025
                      , tyad1037 = tyad1028 + '(?:' + tyad1
                      , tyad1038 = hhzz + '+?' + tyad1024 + '+?' + hhzz + '+?'
                      , tyad1039 = tyadb + tyad1024 + '+?'
                      , tyad1040 = tyad1029 + tyad1
                      , tyad1041 = tyad1 + '\\d+?(?:\\.0{1,})?,'
                      , tyad1042 = '(?:' + tyad1041 + tyad1038 + ')'
                      , tyad1043 = tyadi + '\\s*?,' + hhzz
                      , tyad1044 = '+?[a-z\\d]+?' + tyad6 + '?'
                      , tyad1045 = tyad1043 + tyad1044 + '){'
                      , tyad1046 = '\\s*?,' + hhzz + tyad1044
                      , tyad1047 = '(?=#EXT-X-)'
                      , tyad1048 = '){0,}'
                      , tyad1049 = tyad1048 + tyad1 + '\\d+?\\.3{3,}\\s*?,'
                      , tyad1050 = tyad1046 + '(?:' + tyad1043 + tyad1044 + tyad1048 + ')'
                      , tyad1051 = new RegExp(tyad1010 + tyad13 + tyad5 + '(?:\\?' + bhhzz + '+?)?' + hhzz + '+?' + tyad1 + tyad13 + tyad7 + '\\s*?$','i')
                      , itemts = new RegExp(tyad5,'i')
                      , itemm3u8 = new RegExp(tyad1010 + '#EXT-X-','i')
                      , itemsdpgza = tyad1026 + '(?<!0)(3)\\.\\1(?:((?<!0)\\d)\\2){2,}\\d+?,' + tyad1028 + '(?:' + tyad104 + tyad1028 + tyad1048 + tyad109
                      , itemspdgza = '(?:' + tyad1015 + '[a-z\\d]{10,}0{2}\\d+?' + tyad1016 + '){5,}'
                      , itemstygza = '(?<=(?:' + tyad1015 + tyad108 + tyad4 + hhzz + '+?){1,})' + tyad1014 + '(?:' + tyad1015 + '(?!' + tyad108 + tyad4 + ')' + tyada + '?){1,}' + tyad109
                      , itemstygza1 = '(?<=' + tyad1020 + ')' + tyad1014 + tyadb + tyad1017 + tyad1 + '3\\.3{3,}\\s*?,' + tyad1034 + '(?:' + tyadb + tyad1017 + tyad1049 + tyad1034 + tyad109
                      , itemstygza2 = new RegExp(tyad1032 + tyadb + '(\\\/' + bhhzz + '+?\\\/)[^\\\/]+?' + tyad1016 + '(?:' + tyadb + '\\2[^\\\/]+?' + tyad1016 + '){3,})' + tyad1014 + '#EXT-X-KEY\\s*?:\\s*?METHOD=NONE' + hhzz + '+?' + tyad1039 + tyad1016,'i')
                      , itemstygza3 = new RegExp(tyad1039 + tyad6,'igm')
                      , itemstygza4 = new RegExp(tyad1032 + '?:' + tyadb + '(?<!' + tyad105 + ')[a-z0-9\\\/]+?' + tyad6 + '?){3,}' + tyad1014 + '(?:' + tyad1039 + tyad6 + '){3,}','i')
                      , itemstygza5 = new RegExp('(?<=(?<=' + hhzz + '+)' + tyad1014 + tyadi + tyad1018 + tyad1050 + tyad2 + '(?:' + hhzz + '+?' + tyad1045 + '1,}(?:' + tyadi + '3{5}' + tyad1050 + '{2,}' + tyad1047,'gi')
                      , itemstygza6 = new RegExp('(?<=' + hhzz + '+)' + tyad1014 + '(?:#EXT-X-' + bhhzz + '+' + hhzz + '+){1,}(?=(?:' + tyad7 + '|' + tyad1 + '\\d))','gim')
                      , itemstygza7 = new RegExp('(?<=' + tyadb + tyad1017 + ')(?:#EXT-X-(?!(?:DISCONTINUITY|ENDLIST))' + tyad1017 + '){1,}(?=(?:' + tyad2 + '|#EXT-X-|' + tyad1 + '\\d))','gim')
                      , itemsPaichu = [/*动态排除指定资源 正规则表达式,以达到智能删除插播广告的效果*/
                    new RegExp(tyad1031 + '(?![\\S\\s]*?(?:' + tyad1015 + '[a-z\\d]{10,}0{2}\\d+?' + tyad1016 + '){2,})[\\S\\s]*?' + tyad1014 + '(?:' + tyad1015 + '(?:[a-z]+?\\d+?|\\d+?[a-z]+?){10,}' + tyad1016 + '){2,}','i')]
                      , itemsHandle = [{
                        reUrl: wzm3u8,
                        reAds: [new RegExp(itemsdpgza,'gim'), new RegExp(itemstygza,'gim'), new RegExp(itemstygza1,'gim'), new RegExp('(?<=' + tyad1031 + '(?:#EXT-X-(?!KEY)' + tyad1017 + '){1,})(?:' + tyad1021 + tyad1017 + '(?:' + tyad1014 + ')?){1,}(?=' + tyad1021 + ')','gim'), /*动态拼接采集资源 正规则表达式,以达到智能删除插播广告的效果*/
                        new RegExp(tyad1026 + '((?<!0)\\d\\.([1-9])(?!\\2)\\d{4,5}(?<!\\2)\\2),' + tyad1037 + '\\1,' + tyad1028 + '){2,6}' + tyad109,'gim'), new RegExp(tyad1014 + tyad1036 + tyad1 + '3\\.3{3,}\\s*?,' + tyad1035 + '(?:' + tyad1036 + tyad1049 + tyad1035 + '(?:' + tyad1036 + tyad1048 + tyad109,'gim'), new RegExp('(?<=' + tyad1030 + '+?(?:' + tyad1014 + tyad1048 + ')' + tyad1014 + '(?:' + tyad104 + hhzz + tyad1024 + '+?\\\/\\w{50,}\\.ts' + hhzz + '+?){1,}' + tyad1014 + '(?=' + tyad1030 + ')','gim'), new RegExp(tyadf + '(?:' + tyad100 + '?' + bhhzz + '+?' + tyad103 + '+?' + tyad1048 + ')' + tyad102 + '+?' + bhhzz + '+?-' + bhhzz + '+?\\d' + tyad1016 + '(?=' + tyad1 + ')','gim'), new RegExp(tyadf + bhhzz + '+?' + tyad103 + '+' + tyad1048 + ')(?:' + tyad1014 + ')?' + tyad102 + '+?[a-z\\d]+?0{4,}' + tyad1016 + '[\\s\\S]+?' + hhzz + '+[a-z\\d]+?0{2,}\\d' + tyad1016 + '(?<![\\s\\S]+?10' + tyad5 + '\\n*?[\\s\\S]*?' + hhzz + '+)(?=(?:' + tyad3 + '+|' + tyad1 + '\\d+(?:\\.\\d+)?\\s*?,' + hhzz + '+?[a-z\\d]+?10' + tyad1016 + '))','gi'), ],
                    }]
                      , itemsHandleby = [/*播放黑木耳采集资源的时候,额外增加该数组规则,避免其他的误杀*/
                    {
                        reUrl: /^https?:\/\/(?:[^\/]+?\.)?(?:hmr|heimuer)/i,
                        reAds: [new RegExp('(\\n' + tyad2 + ')\\n.+\\n.+\\1','i'), new RegExp('(\\n' + tyad2 + ')(\\n.+\\n).+\\2.+\\2.+(\\2.+)?\\1','gi'), new RegExp('(?<=' + tyad1014 + ')' + tyad1039 + tyad5 + tyad1017 + tyad1047,'gim'), new RegExp(tyad1026 + '((?<!0)\\d\\.(?!0)\\d{4,5}[1-9]),' + tyad1037 + '\\1,' + tyad1028 + '){2,6}' + tyad109,'gim'), new RegExp(tyad1026 + '(\\d+?(?:\\.(?!0{1,},)\\d+?)?),' + tyad1037 + '\\1,' + tyad1028 + '){1,}' + tyad109,'gim'), ]
                    }, /*播放华为采集资源的时候,额外增加该数组规则,避免其他资源误杀*/
                    {
                        reUrl: /^https?:\/\/(?:[^\/]+?\.)?nikanba/i,
                        reAds: [new RegExp('(?<=' + tyad2 + ')' + hhzz + '+?' + tyad1 + '10,' + tyad1027 + tyada + '?' + tyad2 + '(?=' + hhzz + ')','gim'), new RegExp(tyad1014 + tyad1 + '2,' + tyad1040 + '3,' + tyad1040 + '1,' + tyad1029 + '(?:' + tyad104 + tyad1011 + tyad6 + '?' + tyad1048 + tyad3 + '+','gim'), ]
                    }, ];
                    const logysa = '%c[江小白-'
                      , logysb = '-已经发现] ✂\n%c对比'
                      , logysc = '-已经发现] ✂\n%c已经生效的广告正则:\n%c'
                      , logysd = "的广告正则:\n%c"
                      , logyse = '\n%c已经删除的广告内容:\n'
                      , logysf = 'border-left:5px solid #A0B;color:#A0B;padding:3px'
                      , logysg = 'color:blue;'
                      , logysh = 'color:red;'
                      , logysi = 'color:black;'
                      , logysj = '广告标识'
                      , logysk = '额外删除-具体内容] ✂%c'
                      , logysl = '时间差异-具体内容] ✂\n%c'
                      , logysm = '长度差异-具体内容] ✂\n%c'
                      , logysn = '长短差异-具体内容] ✂\n%c'
                      , logyso = '时间标识';
                    /*以上是 M3U8 插播广告 过滤核心代码 不懂勿动*/
                    const urlFromArg = arg=>typeof arg === 'string' ? arg : arg instanceof Request ? arg.url : String(arg);
                    const matchM3u = url=>{
                        try {
                            if (wzm3u8.test(url) && m3u8wz.test(url) && !mp4wz.test(url) && !flvwz.test(url) && !tswz.test(url) && !playsharewz.test(url)) {
                                spbfurl = url;
                                const matchedItem = itemsHandle.find(item=>item.reUrl.test(url) && m3u8wz.test(url) && !mp4wz.test(url) && !flvwz.test(url) && !tswz.test(url) && !playsharewz.test(url) && !ggbmd.test(url));
                                itemsHandleby.forEach(byItem=>byItem.reUrl.test(url) && m3u8wz.test(url) && byItem.reAds.forEach(newReAd=>matchedItem.reAds.find(ad=>ad.source === newReAd.source && ad.flags === newReAd.flags) || matchedItem.reAds.push(newReAd)));
                                return matchedItem;
                            } else {
                                return null;
                            }
                        } catch (e) {
                            return null;
                        }
                    }
                    ;
                    const M3umatch = text=>{
                        try {
                            if (!text || !itemts.test(text) || !itemm3u8.test(text)) {
                                return true;
                            } else {
                                return false;
                            }
                        } catch (e) {
                            return false;
                        }
                    }
                    ;
                    const M3umatchu3M = (array,regExp)=>{
                        return array.some(function(item) {
                            return item.toString() === regExp.toString();
                        });
                    }
                    ;
                    const m3u8text = (text)=>{
                        try {
                            const regex = /^[a-z\d]{20,}/i;
                            const lines = text.split('\n');
                            let count = 0;
                            for (let line of lines) {
                                const trimmedLine = line.trim();
                                if (itemts.test(trimmedLine)) {
                                    const match = trimmedLine.match(itemts);
                                    if (match) {
                                        const extension = match[0];
                                        const fileName = trimmedLine.slice(0, -extension.length);
                                        if (!regex.test(fileName)) {
                                            return false;
                                        }
                                    }
                                }
                                if (/0{2,}\d+$/.test(trimmedLine)) {
                                    count++;
                                    if (count >= 20) {
                                        return false;
                                    }
                                }
                            }
                            return true;
                        } catch (e) {
                            return false;
                        }
                    }
                    ;
                    const endlist = (text)=>{
                        try {
                            if (!itemm3u8.test(text)) {
                                return text;
                            } else {
                                if (ggljbmd.test(text)) {
                                    return text;
                                } else {
                                    if (!new RegExp(tyad5,'i').test(text)) {
                                        return text;
                                    } else {
                                        const lines = text.trim().split('\n');
                                        const lastLine = lines[lines.length - 1];
                                        if (lastLine.trim() !== tyad7) {
                                            lines.push(tyad7);
                                        }
                                        return lines.join('\n');
                                    }
                                }
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const deleteAbnormalTs = (text,jxbgza,jxbgzb,jxbgzc,jxbgzd,jxbgze)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            if (ggljdmb.test(text)) {
                                                if (new RegExp(tyad1023,'i').test(text)) {
                                                    if (!new RegExp(tyad5 + '\\?','i').test(text)) {
                                                        if (new RegExp(tyad5 + hhzz,'i').test(text)) {
                                                            if (!jxbgzd) {
                                                                jxbgzd = new RegExp('^\\s*?' + tyad8 + '\\s*?$','i');
                                                            } else if (jxbgzd == '空') {
                                                                jxbgzd = /^\s*?空\s*?$/;
                                                            }
                                                            try {
                                                                const rgtya = tyad1015
                                                                  , rgtyb = jxbgza + tyad1016
                                                                  , regex = '(?<=' + rgtya + ')(' + jxbgzb + ')(?=' + rgtyb + ')'
                                                                  , regexx = new RegExp(regex,'gi')
                                                                  , tsPaths = text.match(new RegExp('(?:(?<=' + tyad1015 + '))?' + bhhzz + '+?(?=' + tyad1016 + ')','gi'))
                                                                  , matches = text.match(regexx)
                                                                  , paths = {};
                                                                if (!jxbgze || jxbgze == '空' || (Number.isInteger(Number(jxbgze)) && tsPaths && tsPaths.length < jxbgze)) {
                                                                    for (let i = 0; i < matches.length; i++) {
                                                                        const path = matches[i];
                                                                        if (!paths[path]) {
                                                                            paths[path] = [];
                                                                        }
                                                                        paths[path].push(path);
                                                                    }
                                                                    let maxCount = 0
                                                                      , maxPath = '';
                                                                    for (const path in paths) {
                                                                        if (paths[path].length > maxCount) {
                                                                            maxCount = paths[path].length;
                                                                            maxPath = path;
                                                                        }
                                                                    }
                                                                    if (maxCount > matches.length * 0.66 && Object.keys(paths).length < matches.length * 0.66) {
                                                                        let deleteCount = 0;
                                                                        for (const path in paths) {
                                                                            if (path !== maxPath) {
                                                                                deleteCount += paths[path].length;
                                                                            }
                                                                        }
                                                                        if (deleteCount <= maxCount) {
                                                                            for (const path in paths) {
                                                                                if (path !== maxPath) {
                                                                                    paths[path].forEach(p=>{
                                                                                        /*console.log("排除测试:\n"+p);*/
                                                                                        if (!jxbgzd.test(p)) {
                                                                                            text = text.replace(new RegExp(rgtya + p + rgtyb,'gi'), (match)=>{
                                                                                                if (!dypd.test(打印开关)) {
                                                                                                    try {
                                                                                                        console.log(logysa + "广告资源" + logysb + jxbgzc + logysd + regexx + logyse + "%c" + match.replace(new RegExp(tyad1023,'gi'), tsLink=>{
                                                                                                            if (!tsLink.startsWith('http')) {
                                                                                                                if (m3u8gglj) {
                                                                                                                    return new URL(tsLink,m3u8gglj).href;
                                                                                                                } else {
                                                                                                                    return tsLink;
                                                                                                                }
                                                                                                            } else {
                                                                                                                return tsLink;
                                                                                                            }
                                                                                                        }
                                                                                                        ), logysf, logysg, logysh, logysg, logysi);
                                                                                                    } catch (e) {
                                                                                                        try {
                                                                                                            console.log(logysa + "广告资源" + logysb + jxbgzc + logysd + regexx + logyse + "%c" + match, logysf, logysg, logysh, logysg, logysi);
                                                                                                        } catch (e) {}
                                                                                                    }
                                                                                                }
                                                                                                return '';
                                                                                            }
                                                                                            );
                                                                                        }
                                                                                    }
                                                                                    );
                                                                                }
                                                                            }
                                                                        } else {
                                                                            return text;
                                                                        }
                                                                    }
                                                                }
                                                            } catch (e) {}
                                                        }
                                                    }
                                                }
                                                return endlist(text);
                                            } else {
                                                return text;
                                            }
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const durationtaragt = (text)=>{
                        try {
                            if (!itemm3u8.test(text)) {
                                return text;
                            } else {
                                const lines = text.split('\n');
                                const outputLines = [];
                                let extinfCount = 0;
                                let tsCount = 0;
                                let lastExtinf = null;
                                for (let i = 0; i < lines.length; i++) {
                                    const line = lines[i].trim();
                                    if (tyad12.test(line)) {
                                        const durationPart = line.split(',', 1)[0].replace(tyad12, '').trim();
                                        if (!isNaN(durationPart) && durationPart.trim() !== '') {
                                            extinfCount++;
                                            lastExtinf = line;
                                        } else {
                                            lastExtinf = null;
                                        }
                                    } else if (itemts.test(line)) {
                                        tsCount++;
                                        if (lastExtinf) {
                                            outputLines.push(lastExtinf);
                                            outputLines.push(line);
                                            lastExtinf = null;
                                        } else {
                                            outputLines.push(line);
                                        }
                                    } else if (line) {
                                        outputLines.push(line);
                                    }
                                }
                                if (extinfCount > tsCount) {
                                    const finalLines = [];
                                    let shouldKeepTs = false;
                                    for (let i = 0; i < outputLines.length; i++) {
                                        const line = outputLines[i];
                                        if (tyad12.test(line)) {
                                            shouldKeepTs = true;
                                            finalLines.push(line);
                                        } else if (itemts.test(line)) {
                                            if (shouldKeepTs) {
                                                finalLines.push(line);
                                                shouldKeepTs = false;
                                            }
                                        } else {
                                            finalLines.push(line);
                                        }
                                    }
                                    return finalLines.join('\n').trim();
                                } else {
                                    return outputLines.join('\n').trim();
                                }
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const taragtduration = (text)=>{
                        try {
                            if (!itemm3u8.test(text)) {
                                return text;
                            } else {
                                var lines = text.split('\n');
                                var maxDuration = 0;
                                var minDuration = Infinity;
                                var targetDurationLineIndex = -1;
                                var originalTargetDuration = 0;
                                for (var i = 0; i < lines.length; i++) {
                                    if (lines[i].match(tyad12)) {
                                        var duration = parseFloat(lines[i].split(',')[0].split(':')[1]);
                                        if (duration > maxDuration) {
                                            maxDuration = duration;
                                        }
                                        if (duration < minDuration) {
                                            minDuration = duration;
                                        }
                                    } else if (lines[i].match(new RegExp('^\\s*?' + tyad9 + '\\s*?:','i'))) {
                                        targetDurationLineIndex = i;
                                        originalTargetDuration = parseInt(lines[i].split(':')[1], 10);
                                    }
                                }
                                if (targetDurationLineIndex === -1) {
                                    return text;
                                } else {
                                    var newTargetDuration;
                                    if (maxDuration === minDuration) {
                                        var multiplier = maxDuration < 10 ? 1.5 : 1.23;
                                        newTargetDuration = Math.ceil(maxDuration * multiplier);
                                    } else {
                                        newTargetDuration = Math.ceil(maxDuration + minDuration);
                                    }
                                    if (newTargetDuration === originalTargetDuration) {
                                        var multiplier = maxDuration < 10 ? 1.5 : 1.23;
                                        newTargetDuration = Math.ceil(maxDuration * multiplier);
                                    }
                                    if (newTargetDuration === originalTargetDuration) {
                                        var multiplier = originalTargetDuration < 10 ? 1.5 : 1.23;
                                        newTargetDuration = Math.ceil(originalTargetDuration * multiplier);
                                    }
                                    if (newTargetDuration !== originalTargetDuration) {
                                        lines[targetDurationLineIndex] = tyad9 + ':' + newTargetDuration;
                                        try {
                                            if (!dypd.test(打印开关)) {
                                                console.log(logysa + logyso + "-已经发现] ✂" + '已经把《' + tyad9 + '》数值从原来的值<' + originalTargetDuration + '>修改成<' + newTargetDuration + '>', logysf);
                                            }
                                        } catch (e) {}
                                        return lines.join('\n');
                                    } else {
                                        return text;
                                    }
                                }
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const pruner = (text,item)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            try {
                                                if ((!(new RegExp(itemsdpgza,'i').test(text) && ggljdmb.test(text))) && !new RegExp(tyad1014 + tyad1021,'i').test(text)) {
                                                    gggzdp = true;
                                                } else {
                                                    try {
                                                        itemsHandle.forEach(item=>{
                                                            item.reAds = item.reAds.filter(re=>re.source !== itemsdpgza);
                                                        }
                                                        );
                                                    } catch (e) {}
                                                    gggzdp = false;
                                                }
                                            } catch (e) {
                                                gggzdp = false;
                                            }
                                            if (ggljdmb.test(text) || !!gggzdp) {
                                                try {
                                                    if (!gggzpd) {
                                                        gggzpd = true;
                                                        try {
                                                            if (new RegExp(itemspdgza,'i').test(text) && new RegExp(itemstygza1,'i').test(text)) {
                                                                itemsHandle.forEach(item=>{
                                                                    item.reAds = item.reAds.filter(re=>re.source !== itemstygza1);
                                                                }
                                                                );
                                                            }
                                                        } catch (e) {}
                                                        try {
                                                            if (!(new RegExp(itemspdgza,'i').test(text) && new RegExp(itemstygza,'i').test(text))) {
                                                                itemsHandle.forEach(item=>{
                                                                    item.reAds = item.reAds.filter(re=>re.source !== itemstygza);
                                                                }
                                                                );
                                                            }
                                                        } catch (e) {}
                                                        if (!dypd.test(打印开关)) {
                                                            console.table(itemsPaichu);
                                                            console.table(itemsHandle);
                                                        }
                                                        console.log("播放链接:" + spbfurl);
                                                    }
                                                } catch (e) {}
                                                let modifiedText;
                                                try {
                                                    if (itemsPaichu.some(regex=>regex.test(text))) {
                                                        try {
                                                            if (!M3umatchu3M(itemsHandle[0].reAds, itemstygza5)) {
                                                                itemsHandle[0].reAds.push(itemstygza5);
                                                            }
                                                        } catch (e) {}
                                                        modifiedText = text;
                                                    } else {
                                                        if (new RegExp(tyadb + bhhzz + '+?\\.(?:' + ggzlhx + ')\\?' + tyad1017,'i').test(text)) {
                                                            modifiedText = text;
                                                        } else {
                                                            if (m3u8text(text)) {
                                                                modifiedText = text;
                                                            } else {
                                                                try {
                                                                    if (text.match(itemstygza2)) {
                                                                        const matchessc = text.match(itemstygza3);
                                                                        if (matchessc) {
                                                                            try {
                                                                                if (!dypd.test(打印开关)) {
                                                                                    console.log(logysa + "资源广告" + logysc + itemstygza3 + logyse, logysf, logysg, logysh, logysg);
                                                                                    matchessc.forEach(match=>{
                                                                                        console.log(match);
                                                                                    }
                                                                                    );
                                                                                }
                                                                            } catch (e) {}
                                                                            modifiedText = text.replace(itemstygza3, '');
                                                                        } else {
                                                                            modifiedText = deleteAbnormalTs(text, '[^\\.]+?', '(?:' + bhhzz + '+\\\/|\\b)', '路径');
                                                                        }
                                                                    } else {
                                                                        modifiedText = deleteAbnormalTs(text, '[^\\.]+?', '(?:' + bhhzz + '+\\\/|\\b)', '路径');
                                                                    }
                                                                } catch (e) {
                                                                    modifiedText = text;
                                                                }
                                                                try {
                                                                    if (!text.match(itemstygza4)) {
                                                                        modifiedText = deleteAbnormalTs(modifiedText, '(?:\\d+?|[a-z]+?)', '\\w+?(?:[^\\d]\\d{2})?', '名称', tyad10);
                                                                    }
                                                                } catch (e) {}
                                                                try {
                                                                    modifiedText = deleteAbnormalTs(modifiedText, '\\d+?', '\\w+(?=\\d{3})', '名称', '空', 100);
                                                                } catch (e) {}
                                                                try {
                                                                    modifiedText = deleteAbnormalTs(modifiedText, '\\d+?', '\\w+(?=\\d{4})', '名称', '空');
                                                                } catch (e) {}
                                                                try {
                                                                    modifiedText = deleteAbnormalTs(modifiedText, '\\d+?', '[^0]\\d+[^0]0{2,}\\d0', '名称', /(?<=[^0]0{3,})\d+$/);
                                                                } catch (e) {}
                                                            }
                                                        }
                                                    }
                                                } catch (e) {
                                                    modifiedText = text;
                                                }
                                                for (const reAd of item.reAds) {
                                                    const matches = modifiedText.match(reAd);
                                                    if (matches) {
                                                        matches.forEach(match=>{
                                                            try {
                                                                if (!dypd.test(打印开关)) {
                                                                    try {
                                                                        console.log(logysa + "资源广告" + logysc + reAd + logyse + "%c" + match.replace(new RegExp(tyad1023,'gi'), tsLink=>{
                                                                            if (!tsLink.startsWith('http')) {
                                                                                if (m3u8gglj) {
                                                                                    return new URL(tsLink,m3u8gglj).href;
                                                                                } else {
                                                                                    return tsLink;
                                                                                }
                                                                            } else {
                                                                                return tsLink;
                                                                            }
                                                                        }
                                                                        ), logysf, logysg, logysh, logysg, logysi);
                                                                    } catch (e) {
                                                                        try {
                                                                            if (!dypd.test(打印开关)) {
                                                                                console.log(logysa + "资源广告" + logysc + reAd + logyse + "%c" + match, logysf, logysg, logysh, logysg, logysi);
                                                                            }
                                                                        } catch (e) {}
                                                                    }
                                                                }
                                                            } catch (e) {}
                                                        }
                                                        );
                                                    }
                                                    modifiedText = modifiedText.replace(reAd, "");
                                                }
                                                if (modifiedText.length < text.length) {
                                                    return endlist(modifiedText);
                                                } else {
                                                    return text;
                                                }
                                            } else {
                                                return text;
                                            }
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const removeprunerm3u8a = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            let deletedContent = '';
                                            text = text.replace(itemstygza6, (match)=>{
                                                deletedContent += match + '\n';
                                                return '';
                                            }
                                            );
                                            try {
                                                if (deletedContent.trim() !== '') {
                                                    if (!dypd.test(打印开关)) {
                                                        console.log(logysa + logysk + deletedContent, logysf, logysi);
                                                    }
                                                }
                                            } catch (e) {}
                                            return endlist(text);
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const removeprunerm3u8b = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            let deletedContent = '';
                                            let addedMatches = new Set();
                                            text = text.replace(itemstygza7, (match)=>{
                                                match = match.trim();
                                                if (!addedMatches.has(match) && match !== '') {
                                                    deletedContent += match + '\n';
                                                    addedMatches.add(match);
                                                }
                                                return '';
                                            }
                                            );
                                            try {
                                                if (deletedContent.trim() !== '') {
                                                    if (!dypd.test(打印开关)) {
                                                        console.log(logysa + logysk + deletedContent, logysf, logysi);
                                                    }
                                                }
                                            } catch (e) {}
                                            return endlist(text);
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const removeprunerm3u8c = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            const lines = text.split('\n');
                                            const extinfLines = lines.filter(line=>tyad11.test(line));
                                            const extinfValues = extinfLines.map(line=>parseFloat(line.split(':')[1].split(',')[0]));
                                            const valueCounts = extinfValues.reduce((acc,value)=>{
                                                acc[value] = (acc[value] || 0) + 1;
                                                return acc;
                                            }
                                            , {});
                                            const maxCount = Math.max(...Object.values(valueCounts));
                                            const maxValue = Object.keys(valueCounts).find(key=>valueCounts[key] === maxCount);
                                            const maxValueRatio = maxCount / extinfValues.length;
                                            let deletedLines = [];
                                            if (maxValueRatio > 0.987) {
                                                const newLines = [];
                                                let skipNextTs = false;
                                                for (let i = 0; i < lines.length; i++) {
                                                    if (tyad11.test(lines[i])) {
                                                        if (firstExtinf) {
                                                            firstExtinf = false;
                                                            newLines.push(lines[i]);
                                                            skipNextTs = false;
                                                        } else if (i === lines.length - 1 || !tyad11.test(lines[i + 1])) {
                                                            lastExtinf = true;
                                                            newLines.push(lines[i]);
                                                            skipNextTs = false;
                                                        } else {
                                                            const value = parseFloat(lines[i].split(':')[1].split(',')[0]);
                                                            if (value != maxValue) {
                                                                deletedLines.push(lines[i], lines[i + 1]);
                                                                skipNextTs = true;
                                                            } else {
                                                                newLines.push(lines[i]);
                                                                skipNextTs = false;
                                                            }
                                                        }
                                                    } else if (skipNextTs) {
                                                        skipNextTs = false;
                                                    } else {
                                                        newLines.push(lines[i]);
                                                    }
                                                }
                                                if (deleteCount > maxValueRatio * extinfValues.length) {
                                                    return text;
                                                } else {
                                                    text = endlist(newLines.join('\n'));
                                                }
                                            }
                                            try {
                                                if (deletedLines.length > 0) {
                                                    if (!dypd.test(打印开关)) {
                                                        console.log(logysa + logysl + deletedLines.map(line=>{
                                                            return line.replace(new RegExp(tyad1022,'gi'), tsLink=>{
                                                                if (!tsLink.startsWith('http')) {
                                                                    if (m3u8gglj) {
                                                                        return new URL(tsLink,m3u8gglj).href;
                                                                    } else {
                                                                        return tsLink;
                                                                    }
                                                                } else {
                                                                    return tsLink;
                                                                }
                                                            }
                                                            );
                                                        }
                                                        ).join('\n'), logysf, logysi);
                                                    }
                                                }
                                            } catch (e) {}
                                            return text;
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const removeprunerm3u8d = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            const lines = text.split('\n');
                                            const urlLengths = [];
                                            const urlsWithIndex = [];
                                            lines.forEach((line,index)=>{
                                                const match = line.match(new RegExp(tyad5 + '\\s*?$','i'));
                                                if (match) {
                                                    urlsWithIndex.push({
                                                        url: line,
                                                        index
                                                    });
                                                    urlLengths.push(line.length);
                                                }
                                            }
                                            );
                                            const lengthCounts = urlLengths.reduce((acc,length)=>{
                                                acc[length] = (acc[length] || 0) + 1;
                                                return acc;
                                            }
                                            , {});
                                            const total = urlLengths.length;
                                            let dominantLength = null;
                                            for (const length in lengthCounts) {
                                                if (lengthCounts[length] / total >= 0.789) {
                                                    dominantLength = parseInt(length);
                                                    break;
                                                }
                                            }
                                            let deletedUrls = [];
                                            if (dominantLength !== null) {
                                                urlsWithIndex.forEach(({url, index})=>{
                                                    if (url.length !== dominantLength) {
                                                        deletedUrls.push(url);
                                                    }
                                                }
                                                );
                                                if (deletedUrls.length > lengthCounts[dominantLength]) {
                                                    return text;
                                                } else {
                                                    deletedUrls.forEach((url)=>{
                                                        const {index} = urlsWithIndex.find(u=>u.url === url);
                                                        if (index >= 0) {
                                                            lines.splice(index, 1);
                                                            if (index - 1 >= 0 && !new RegExp(tyad7,'i').test(lines[index - 1])) {
                                                                lines.splice(index - 1, 1);
                                                            }
                                                        }
                                                    }
                                                    );
                                                }
                                            }
                                            if (deletedUrls.length > 0) {
                                                if (!dypd.test(打印开关)) {
                                                    console.log(logysa + logysm + deletedUrls.map(line=>{
                                                        return line.replace(new RegExp(tyad1022,'gi'), tsLink=>{
                                                            if (!tsLink.startsWith('http')) {
                                                                if (m3u8gglj) {
                                                                    return new URL(tsLink,m3u8gglj).href;
                                                                } else {
                                                                    return tsLink;
                                                                }
                                                            } else {
                                                                return tsLink;
                                                            }
                                                        }
                                                        );
                                                    }
                                                    ).join('\n'), logysf, logysi);
                                                }
                                            }
                                            return endlist(lines.join('\n'));
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text
                        }
                    }
                    ;
                    const removeprunerm3u8e = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            const lines = text.split('\n');
                                            const matchedLines = [];
                                            const allLines = lines.map((line,index)=>({
                                                line,
                                                index
                                            }));
                                            allLines.forEach(item=>{
                                                const match = item.line.match(tyad107);
                                                if (match) {
                                                    matchedLines.push({
                                                        ...item,
                                                        matchedGroup: match[1]
                                                    });
                                                }
                                            }
                                            );
                                            if (matchedLines.length === 0) {
                                                return text;
                                            } else {
                                                const matchedGroupCounts = {};
                                                matchedLines.forEach(item=>{
                                                    matchedGroupCounts[item.matchedGroup] = (matchedGroupCounts[item.matchedGroup] || 0) + 1;
                                                }
                                                );
                                                const minCount = Math.min(...Object.values(matchedGroupCounts));
                                                const lessFrequentMatchedGroups = Object.keys(matchedGroupCounts).filter(group=>matchedGroupCounts[group] === minCount);
                                                let filteredMatchedGroups = lessFrequentMatchedGroups.map(group=>{
                                                    const lastSlashIndex = group.lastIndexOf('/');
                                                    if (lastSlashIndex !== -1) {
                                                        group = group.substring(0, lastSlashIndex + 1);
                                                    }
                                                    if (!group.match(/^https?:\/\//) && !group.startsWith('/')) {
                                                        return null;
                                                    }
                                                    return group;
                                                }
                                                ).filter(group=>group !== null);
                                                const totalMatched = matchedLines.length;
                                                let dominantMatchedGroup;
                                                for (const matchedGroup in matchedGroupCounts) {
                                                    if (matchedGroupCounts[matchedGroup] / totalMatched > 0.66) {
                                                        dominantMatchedGroup = matchedGroup;
                                                        break;
                                                    }
                                                }
                                                if (!dominantMatchedGroup) {
                                                    return text;
                                                } else {
                                                    let diffCount = 0;
                                                    for (let i = allLines.length - 1; i >= 0; i--) {
                                                        if (allLines[i].line.startsWith(tyad0)) {
                                                            const nextLine = allLines[i + 1]?.line;
                                                            const match = nextLine?.match(tyad107);
                                                            if (!match || match[1] !== dominantMatchedGroup) {
                                                                diffCount++;
                                                            }
                                                        }
                                                    }
                                                    if (diffCount / totalMatched > 0.66) {
                                                        return text;
                                                    } else {
                                                        const deletedLines = [];
                                                        if (filteredMatchedGroups.length > 0) {
                                                            for (let i = allLines.length - 1; i >= 0; i--) {
                                                                if (allLines[i].line.startsWith(tyad0)) {
                                                                    const nextLine = allLines[i + 1]?.line;
                                                                    const cleanedNextLine = nextLine.replace(new RegExp(tyad5 + '.*?$','i'), '');
                                                                    if (!tyad10.test(cleanedNextLine)) {
                                                                        const isFilteredMatched = filteredMatchedGroups.some(group=>nextLine.startsWith(group));
                                                                        if (isFilteredMatched) {
                                                                            deletedLines.push(allLines[i + 1].line);
                                                                            deletedLines.push(allLines[i].line);
                                                                            allLines.splice(i, 2);
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        } else {
                                                            for (let i = allLines.length - 1; i >= 0; i--) {
                                                                if (allLines[i].line.startsWith(tyad0)) {
                                                                    const nextLine = allLines[i + 1]?.line;
                                                                    const cleanedNextLine = nextLine.replace(new RegExp(tyad5 + '.*?$','i'), '');
                                                                    const match = nextLine?.match(tyad107);
                                                                    if (!match || match[1] !== dominantMatchedGroup) {
                                                                        if (!tyad10.test(cleanedNextLine)) {
                                                                            deletedLines.push(allLines[i + 1].line);
                                                                            deletedLines.push(allLines[i].line);
                                                                            allLines.splice(i, 2);
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                        const tsToDeleteCount = deletedLines.length / 2;
                                                        if (tsToDeleteCount > totalMatched) {
                                                            return text;
                                                        } else {
                                                            try {
                                                                if (deletedLines.length > 0) {
                                                                    try {
                                                                        if (!dypd.test(打印开关)) {
                                                                            console.log(logysa + logysn + deletedLines.reverse().map(line=>{
                                                                                return line.replace(new RegExp(tyad1022,'gi'), tsLink=>{
                                                                                    if (!tsLink.startsWith('http')) {
                                                                                        if (m3u8gglj) {
                                                                                            return new URL(tsLink,m3u8gglj).href;
                                                                                        } else {
                                                                                            return tsLink;
                                                                                        }
                                                                                    } else {
                                                                                        return tsLink;
                                                                                    }
                                                                                }
                                                                                );
                                                                            }
                                                                            ).join('\n'), logysf, logysi);
                                                                        }
                                                                    } catch (e) {}
                                                                }
                                                            } catch (e) {}
                                                            return endlist(allLines.map(item=>item.line).join('\n'));
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    const prunerm3u8 = (text)=>{
                        try {
                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                if (text) {
                                    if (!itemm3u8.test(text)) {
                                        return text;
                                    } else {
                                        if (ggljbmd.test(text)) {
                                            shouldStopExecution = true;
                                            return text;
                                        } else {
                                            if (!shouldStopExecution || !shouldStopExecutionbf) {
                                                const lines = text.split('\n');
                                                const keyCount = lines.filter(line=>new RegExp(tyad1021,'i').test(line)).length;
                                                if (keyCount >= 2) {
                                                    return text;
                                                } else {
                                                    let discontinuityCount = 0;
                                                    const filteredLines = lines.filter(line=>{
                                                        if (new RegExp(tyad2,'i').test(line)) {
                                                            discontinuityCount++;
                                                            return false;
                                                        }
                                                        return true;
                                                    }
                                                    );
                                                    try {
                                                        if (!dypd.test(打印开关)) {
                                                            if (discontinuityCount > 1) {
                                                                console.log(logysa + logysj + "-已经发现] ✂" + '已删除《' + discontinuityCount + '》个' + tyad2 + logysj, logysf);
                                                            }
                                                        }
                                                    } catch (e) {}
                                                    return endlist(removeprunerm3u8a(filteredLines.join('\n')));
                                                }
                                            } else {
                                                return text;
                                            }
                                        }
                                    }
                                } else {
                                    return text;
                                }
                            } else {
                                return text;
                            }
                        } catch (e) {
                            return text;
                        }
                    }
                    ;
                    function isValidM3U8Url(url) {
                        return (wzm3u8.test(url) && m3u8wz.test(url) && !mp4wz.test(url) && !flvwz.test(url) && !tswz.test(url) && !playsharewz.test(url));
                    }
                    ;function processText(textin, item) {
                        try {
                            if (shouldStopExecution || shouldStopExecutionbf) {
                                return textin;
                            } else {
                                if (!shouldStopExecution || !shouldStopExecutionbf) {
                                    let textout = pruner(textin, item);
                                    try {
                                        textout = prunerm3u8(textout);
                                    } catch (e) {}
                                    try {
                                        textout = removeprunerm3u8e(textout);
                                    } catch (e) {}
                                    try {
                                        textout = removeprunerm3u8b(textout);
                                    } catch (e) {}
                                    try {
                                        textout = removeprunerm3u8c(textout);
                                    } catch (e) {}
                                    try {
                                        textout = removeprunerm3u8d(textout);
                                    } catch (e) {}
                                    try {
                                        textout = durationtaragt(textout);
                                    } catch (e) {}
                                    try {
                                        textout = taragtduration(textout);
                                    } catch (e) {}
                                    try {
                                        textout = endlist(textout);
                                    } catch (e) {}
                                    /*console.log("测试广告:\n"+textout);*/
                                    return textout;
                                } else {
                                    return textout;
                                }
                            }
                            {
                                return textout;
                            }
                        } catch (e) {
                            return textout;
                        }
                    }
                    ;function interceptRequest(target, thisArg, args, isFetch=false) {
                        try {
                            if (shouldStopExecution && shouldStopExecutionbf) {
                                removeInterceptors();
                                return Reflect.apply(target, thisArg, args);
                            } else {
                                const urlFromArgBy = urlFromArg(isFetch ? args[0] : args[1]);
                                const item = matchM3u(urlFromArgBy);
                                if (item) {
                                    if (ggljbmd.test(urlFromArgBy)) {
                                        shouldStopExecution = true;
                                        shouldStopExecutionbf = true;
                                        removeInterceptors();
                                        return Reflect.apply(target, thisArg, args);
                                    } else {
                                        m3u8gglj = urlFromArgBy;
                                        try {
                                            if (isValidM3U8Url(m3u8gglj)) {
                                                m3u8bflj = m3u8gglj;
                                            }
                                        } catch (e) {}
                                        if (isFetch) {
                                            return realFetch(...args).then(realResponse=>realResponse.text().then(textin=>{
                                                try {
                                                    if (M3umatch(textin)) {
                                                        return Reflect.apply(target, thisArg, args);
                                                    } else {
                                                        if (!new RegExp(tyad5,'i').test(textin)) {
                                                            return Reflect.apply(target, thisArg, args);
                                                        } else {
                                                            if (!tyad1051.test(textin)) {
                                                                return Reflect.apply(target, thisArg, args);
                                                            } else {
                                                                const textout = processText(textin, item);
                                                                if (M3umatch(textout)) {
                                                                    return Reflect.apply(target, thisArg, args);
                                                                } else {
                                                                    if (textout !== textin) {
                                                                        shouldStopExecution = true;
                                                                        shouldStopExecutionbf = true;
                                                                        removeInterceptors();
                                                                        return new Response(textout,{
                                                                            status: realResponse.status,
                                                                            statusText: realResponse.statusText,
                                                                            headers: realResponse.headers
                                                                        });
                                                                    } else {
                                                                        return Reflect.apply(target, thisArg, args);
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                } catch (e) {
                                                    return Reflect.apply(target, thisArg, args);
                                                }
                                            }
                                            ));
                                        } else {
                                            thisArg.addEventListener('readystatechange', function handler() {
                                                try {
                                                    if (thisArg.readyState !== 4) {
                                                        return;
                                                    } else {
                                                        const type = thisArg.responseType;
                                                        if (type !== '' && type !== 'text') {
                                                            return;
                                                        } else {
                                                            try {
                                                                thisArg.removeEventListener('readystatechange', handler);
                                                            } catch (e) {}
                                                            const textin = thisArg.responseText;
                                                            if (M3umatch(textin)) {
                                                                return;
                                                            } else {
                                                                if (!new RegExp(tyad5,'i').test(textin)) {
                                                                    return;
                                                                } else {
                                                                    if (!tyad1051.test(textin)) {
                                                                        return;
                                                                    } else {
                                                                        const textout = processText(textin, item);
                                                                        if (M3umatch(textout)) {
                                                                            return;
                                                                        } else {
                                                                            if (textout !== textin) {
                                                                                shouldStopExecution = true;
                                                                                shouldStopExecutionbf = true;
                                                                                removeInterceptors();
                                                                                Reflect.defineProperty(thisArg, 'response', {
                                                                                    value: textout
                                                                                });
                                                                                Reflect.defineProperty(thisArg, 'responseText', {
                                                                                    value: textout
                                                                                });
                                                                            } else {
                                                                                return;
                                                                            }
                                                                        }
                                                                    }
                                                                }
                                                            }
                                                        }
                                                    }
                                                } catch (e) {
                                                    return;
                                                }
                                            });
                                            return Reflect.apply(target, thisArg, args);
                                        }
                                    }
                                } else {
                                    shouldStopExecution = true;
                                    shouldStopExecutionbf = true;
                                    removeInterceptors();
                                    return Reflect.apply(target, thisArg, args);
                                }
                            }
                        } catch (e) {
                            shouldStopExecution = true;
                            shouldStopExecutionbf = true;
                            removeInterceptors();
                            return Reflect.apply(target, thisArg, args);
                        }
                    }
                    ;function removeInterceptors() {
                        try {
                            self.fetch = realFetch;
                            self.XMLHttpRequest.prototype.open = realOpen;
                        } catch (e) {}
                    }
                    ;const realFetch = self.fetch;
                    self.fetch = new Proxy(realFetch,{
                        apply: (target,thisArg,args)=>{
                            try {
                                if (shouldStopExecution && shouldStopExecutionbf) {
                                    removeInterceptors();
                                    return Reflect.apply(target, thisArg, args);
                                } else {
                                    return interceptRequest(target, thisArg, args, true);
                                }
                            } catch (e) {
                                removeInterceptors();
                                return Reflect.apply(target, thisArg, args);
                            }
                        }
                    });
                    const realOpen = self.XMLHttpRequest.prototype.open;
                    self.XMLHttpRequest.prototype.open = new Proxy(realOpen,{
                        apply: (target,thisArg,args)=>{
                            try {
                                if (shouldStopExecution && shouldStopExecutionbf) {
                                    removeInterceptors();
                                    return Reflect.apply(target, thisArg, args);
                                } else {
                                    return interceptRequest(target, thisArg, args, false);
                                }
                            } catch (e) {
                                removeInterceptors();
                                return Reflect.apply(target, thisArg, args);
                            }
                        }
                    });
                }
            } catch (e) {}
        }
    } catch (e) {}
}
)();