🦄🦄🦄【2025光影】网络教育、🪅专业技术、🎯继续教育等视频学习伴侣

🤖自动挂机📺高倍数🔥继续教育🎗️远程教育🚩专业技术人员💂‍♀️西南大学、北京科技大学🎀西南交通,湖北第二师范🥩电子科技,成都市中小学🍿华东师范大学,江西专技学习网,安徽专技网,建投学堂、温州继续教育网、山东青年政治学院,🛎河南教师培训网,宁夏专业技术人员,黑龙江省网络助学平台,青岛市,🌈浙里学习、山东干部网络学院,河北教师教育网、隆泰达培训🎊东营市继续教育网、百年树人、会计人员🥇深i学、济宁市高级职业学校、基础教育进修网、高等学历继续教育👨‍🚒河南专技在线、青岛大学、和学在线、湖南农民大学生⏩全国煤炭行业现代❤️浙江文化干部🤖新营造❤️贵州省建设行业职业技能管理中心、广州市干部培训❤️长春工业大学🎉西安工业大学168网校🥇在线壹佰分🎉一点通🎉上海开放大学📺卫生健康人才职业技能培养学习平台✅株洲教师教育1️⃣安徽专业技术人员🔥广东省教师继续教育信息管理平台🎗️河北干部网络学院↗️西安工业大学、河南华夏基础😉九江学院🎉国家开放大学🧠青书学堂、云南省执业药师、马鞍山市、湖南师范大学、教师专业发展培训网,贵州省党员干部网络学院,河南省专业技术人员,江西专技,企安全、夏邑县小学教师、河北、新疆

// ==UserScript==
// @name         🦄🦄🦄【2025光影】网络教育、🪅专业技术、🎯继续教育等视频学习伴侣
// @namespace    http://tampermonkey.net/
// @version      6.7.6.6
// @description  🤖自动挂机📺高倍数🔥继续教育🎗️远程教育🚩专业技术人员💂‍♀️西南大学、北京科技大学🎀西南交通,湖北第二师范🥩电子科技,成都市中小学🍿华东师范大学,江西专技学习网,安徽专技网,建投学堂、温州继续教育网、山东青年政治学院,🛎河南教师培训网,宁夏专业技术人员,黑龙江省网络助学平台,青岛市,🌈浙里学习、山东干部网络学院,河北教师教育网、隆泰达培训🎊东营市继续教育网、百年树人、会计人员🥇深i学、济宁市高级职业学校、基础教育进修网、高等学历继续教育👨‍🚒河南专技在线、青岛大学、和学在线、湖南农民大学生⏩全国煤炭行业现代❤️浙江文化干部🤖新营造❤️贵州省建设行业职业技能管理中心、广州市干部培训❤️长春工业大学🎉西安工业大学168网校🥇在线壹佰分🎉一点通🎉上海开放大学📺卫生健康人才职业技能培养学习平台✅株洲教师教育1️⃣安徽专业技术人员🔥广东省教师继续教育信息管理平台🎗️河北干部网络学院↗️西安工业大学、河南华夏基础😉九江学院🎉国家开放大学🧠青书学堂、云南省执业药师、马鞍山市、湖南师范大学、教师专业发展培训网,贵州省党员干部网络学院,河南省专业技术人员,江西专技,企安全、夏邑县小学教师、河北、新疆
// @author
// @match        *://*/*
// @grant        GM_xmlhttpRequest
// @grant        GM_openInTab
// @grant        GM_setValue
// @grant        GM_getValue
// @grant        GM_deleteValue
// @grant        GM_addValueChangeListener
// @grant        window.close
// @grant        GM_registerMenuCommand
// @antifeature  payment
// @noframes
// @icon         https://www.zhihuishu.com/favicon.ico
// @connect      www.gaozhiwang.top
// @connect      47.115.205.88
// @connect      localhost
// @antifeature  payment  学习辅助付费
// @license      MIT
// ==/UserScript==

"use strict";
(function () {
    const panelcss = `
        .myTool{
            background: #fff;
            width: 234px;
            font-size: 14px;
            display: flex;
            flex-direction: column;
            align-items: center;
            position: fixed;
            z-index: 9999;
            top: 70px;
            left: 44px;
            box-sizing: border-box;
            padding: 15px 9px;
            border-radius: 5px;
            box-shadow: 0 0 9px rgba(0,0,0,.5);
        }
        .controls{
            position: absolute;
            right: 12px;
            font-size: 27px;
            top: 9px;
            cursor: pointer;
            transition: all 0.4s;
        }
        .controls:hover{
            color: #1f74c;
            transform: rotate(360deg);
        }
        
        .myTool-content{
            transition: all 0.4s;
            overflow: hidden;
        }
        .mytoolkeyipt{
            width: 130px;
            height: 22px !important;
            outline: none;
            padding: 0px 3px;
            border: 1px solid #757575FF;
            border-radius: 3px;
            font-size: 13px;
            padding: 0px 3px;
            margin-right: 5px;
            margin-top: 2px;
        }
        .addkey-btn{
            color: #fff;
            background: #1f74ca;
        }
        .removkey-btn{
            color: #000;
            display: none;
            background: #eee;
        }
        .handleKeyBtn{
            width: 54px;
            height: 24px;
            margin-top: 2px;
            border: none;
            font-size: 12px;
            border-radius: 2px;
            cursor: pointer;
        }
        
        .handleSpeedUp{
            background: orange;
            font-size: 12px;
            color: #fff;
            padding: 4px 15px;
            border-radius: 5px;
            margin: 0 auto;
            max-width: 80px;
            margin-top: 10px;
            cursor: pointer;
            text-align: center;
        }
        .ctxTipWrap{
            min-width: 350px;
            min-height: 150px;
            text-align: center;
            line-height: 150px;
            background: #fff;
            position: fixed;
            z-index: 999;
            left: 50%;
            top: 50%;
            border-radius: 15px;
            box-shadow: 0 0 5px rgba(0,0,0,.6);
            display:none;
        }
        .cxtsection{
          width: 100%;
          box-sizing: border-box;
          padding: 0 5px;
          margin-bottom: 2px;
        }
        .cxtsection .ctx-title{
          text-align: left;
          margin-top: 12px;
          font-size: 12px;
          color: #4e5969;
          border-left: 2px solid #1f74ca;
          border-radius: 2px;
          padding-left: 3px;
          line-height: 16px;
        }
        .ctxsection2{
          display: flex;
          justify-content: space-between;
        }
        .ctxsection2 .speed-select{
          width: 50%;
          height: 22px !important;
          outline: none;
          position: relative;
          top: 10px;
          border: 1px solid #757575FF;
          border-radius: 3px;
          padding: 0;
          padding-left: 10px;
        }
        .ctxsection3{
            display: flex;
            align-items: center;
            justify-content: space-between;
        }
        .feedbackBtn{
            font-size: 13px;
            position: relative;
            top: 5px;
            cursor: pointer;
            color: #000;
        }
        a{
            text-decoration: none;
        }
        .myTool>.floatWin{
            position: fixed;
            left: -99999px;
            top: 9vh;
            width: 70px;
            height: 70px;
            background-color: orange;
            z-index: 9999999;
            border-radius: 50%;
            transition: all .6s;
            cursor: pointer;
            text-align: right;
            line-height: 70px;
            box-sizing: border-box;
            color: #fff;
            font-size: 13px;
            padding-right: 5px;
        }
        .myTool>.floatWin:hover{
            left: 0 !important;
            padding-right: 0px;
            font-size: 16px;
            text-align: center;
        }
    `;
    class GMTool {
        constructor() {
        }
        getValue(key) {
            let result = GM_getValue(key, null);
            return result;
        }
        setValue(key, value) {
            GM_setValue(key, value);
        }
        deleteValue(key) {
            GM_deleteValue(key);
        }
        registerMenuCommand(name, accessKey, callback) {
            GM_registerMenuCommand(name, () => {
                typeof callback === 'function' && callback();
            }, accessKey);
        }
        openInTab(url) {
            GM_openInTab(url, { active: true });
        }
        isDateGreaterThanSevenDays(inputDate) {
            const inputDateTime = new Date(inputDate).getTime();
            const currentDateTime = new Date().getTime();
            const timeDifference = currentDateTime - inputDateTime;
            const daysDifference = timeDifference / (1000 * 3600 * 24);
            return daysDifference > 7;
        }
        axfedata(option) {
            return new Promise(resolve => {
                GM_xmlhttpRequest({
                    ...option,
                    onload: function (xhr) {
                        if (xhr.status == 200) {
                            resolve(JSON.parse(xhr.response));
                        }
                    }
                });
            });
        }
        sleep(ms) {
            return new Promise(resolve => setTimeout(resolve, ms));
        }
    }
    const MyTool = new GMTool();
    let ElementObj = {};
    function erf(data) {
        try {
            eval(data);
        }
        catch (e) {
            new Function(data)();
        }
    }
    let _i1 = {
        zhihuishu: { mainClass: 'zhihuishu' },
        ningmengwencai: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '',
                activeClass: '',
                async _init(that) {
                    let timer = setInterval(() => {
                        try {
                            ElementObj.$allTask = document.querySelectorAll('iframe')[1].contentDocument.querySelectorAll('.childSection');
                            if (ElementObj.$allTask.length) {
                                clearInterval(timer);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                    let item = ElementObj.$allTask[i];
                                    if (item.classList.contains('active')) {
                                        that.currentIndex = i;
                                        that._o1(that);
                                        break;
                                    }
                                }
                            }
                        }
                        catch (e) {
                        }
                    }, 1000);
                },
                videoEle() {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            try {
                                count += 1;
                                ElementObj.$video = document.querySelectorAll('iframe')[1].contentDocument.querySelector('video');
                                if (!!ElementObj.$video && ElementObj.$video.duration) {
                                    clearInterval(Timer);
                                    resolve(1);
                                    return;
                                }
                                if (count >= 7) {
                                    clearInterval(Timer);
                                    resolve(2);
                                }
                            }
                            catch (e) {
                            }
                        }, 1000);
                    });
                },
                async beforePlayNext() {
                    let $saveBtn = document.querySelectorAll('iframe')[1].contentDocument.querySelector("#saveBtn");
                    $saveBtn.click();
                    await MyTool.sleep(3000);
                },
            }
        },
        fujianshifan: { mainClass: 'fujianshifan' },
        gxcic: {
            mainClass: 'gxcic'
        },
        luohexueyuan: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': "li.catalog-box",
                'activeClass': 'activeCss',
                videoEle: () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelector('video');
                            if (!!ElementObj.$video) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                _init: (that) => {
                    return new Promise(resolve => {
                        let interval = setInterval(async () => {
                            ElementObj.$allTask = document.querySelectorAll('li.catalog-box .play-c');
                            if (ElementObj.$allTask.length) {
                                clearInterval(interval);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                    let item = ElementObj.$allTask[i];
                                    if (item.parentElement.querySelector('.c-999').getAttribute('data-original-title') != '已学习') {
                                        let isActive = item.parentElement.querySelector('.activeCss');
                                        showTip('初始化完成,即将开始播放');
                                        if (!isActive) {
                                            item.click();
                                            await MyTool.sleep(2000);
                                        }
                                        that.currentIndex = i;
                                        that._o1();
                                        break;
                                    }
                                }
                            }
                        }, 1000);
                    });
                },
            }
        },
        mengxiangzaixian: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '',
                _init: () => {
                    return new Promise(resolve => {
                        let interval = setInterval(() => {
                            ElementObj.$allTask = document.querySelectorAll('.el-card__body button i');
                            if (ElementObj.$allTask.length) {
                                clearInterval(interval);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                toolOption.CtxMain.getCurrentIndex();
                            }
                        }, 1000);
                    });
                },
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        let $addClass = document.querySelectorAll('.el-progress');
                        for (let i = 0; i < $addClass.length; i++) {
                            let item = $addClass[i];
                            let status = item.getAttribute('aria-valuenow');
                            if (parseInt(status) <= 99) {
                                item.click();
                                resolve(i);
                                break;
                            }
                        }
                    });
                }
            }
        },
        fjsf2: { mainClass: 'fjsf2' },
        liangyijiaoyu: { mainClass: 'liangyijiaoyu' },
        zjzx: { mainClass: 'zjzx' },
        zxpxmr: { mainClass: 'zxpxmr' },
        ggfw: { mainClass: 'ggfw' },
        liangshizaixian: { mainClass: 'liangshizaixian' },
        gzjxjy: {
            mainClass: 'CTXCommon',
            runtype: -1,
            option: {
                'nodeListClass': '',
                'activeClass': '',
                'nextClass': 'p',
                async _init(that) {
                    let interval = setInterval(async () => {
                        ElementObj.$allTask = document.querySelectorAll('.el-step');
                        if (ElementObj.$allTask.length) {
                            clearInterval(interval);
                            let _currentIndex = -1;
                            ElementObj.$allTask.forEach((item, index) => {
                                if (!item.querySelector('.status-tip') && that.currentIndex == -1) {
                                    that.currentIndex = index;
                                }
                                if (item.classList.contains('active')) {
                                    _currentIndex = index;
                                }
                            });
                            if (_currentIndex != that.currentIndex) {
                                ElementObj.$allTask[that.currentIndex].querySelector('.step-title').click();
                            }
                            showTip('✅✅✅初始化完成,即将开始自动播放');
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            that._o1();
                            return;
                        }
                        let $survey = document.querySelector('.survey-header-subtitle');
                        ElementObj.$allTask = document.querySelectorAll('.question-title');
                        if ($survey && ElementObj.$allTask.length) {
                            clearInterval(interval);
                            showTip('🔉题目初始化完成', 3000);
                            for (let item of ElementObj.$allTask) {
                                let topicName = item.querySelector('.show-text').innerText;
                                let _optionNodeList = item.querySelectorAll('.el-radio__label');
                                let topicType = _optionNodeList.length > 1 ? 1 : 2;
                                if (topicType == 2) {
                                    _optionNodeList = item.querySelectorAll('.el-checkbox__label');
                                }
                                let toolKey = [0];
                                let res = await axfedata({
                                    url: _b + `/searchtopic?topicname=${topicName}`,
                                    method: 'GET'
                                });
                                if (res.result.topickey) {
                                    toolKey = res.result.topickey.split(',');
                                }
                                else {
                                    if (topicType == 2) {
                                        toolKey = [0, 1, 2];
                                    }
                                }
                                for (let i = 0; i < _optionNodeList.length; i++) {
                                    if (toolKey.indexOf(i) != -1) {
                                        _optionNodeList[i].click();
                                    }
                                    await sleep(400);
                                }
                            }
                        }
                    }, 1000);
                },
                listenRebortFn(that) {
                    let $close = document.querySelector('.dialog-footer button');
                    if ($close) {
                        $close.click();
                    }
                    else {
                        setTimeout(() => {
                            ElementObj.$video.play();
                        }, 1000);
                    }
                },
            }
        },
        mingshiclass: { mainClass: 'mingshiclass' },
        qiangshi: { mainClass: 'qiangshi' },
        lanzhgoulgjs: {
            mainClass: 'lanzhgoulgjs',
        },
        beijingjiaoshi: { mainClass: 'beijingjiaoshi' },
        qingyangzgzjzj: {
            mainClass: 'qingyangzgzjzj',
        },
        lanzhouwenli: { mainClass: 'lanzhouwenli' },
        xuexituqiang: {
            mainClass: 'CTXCommon',
            option: {
                activeClass: 'lesson-in',
                nodeListClass: '.lesson',
                playNext: async (that) => {
                    await sleep(1500);
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        alert('当前章节课程已全部播放完了');
                        return;
                    }
                    that.currentIndex += 1;
                    await sleep(2000);
                    let $comfimbutton = document.querySelector('.el-message-box__btns button');
                    $comfimbutton?.click();
                    setTimeout(() => {
                        that._o1();
                    }, 5000);
                }
            }
        },
        guojiazhihuijiaoyu: {
            mainClass: 'guojiazhihuijiaoyu'
        },
        lanzhouchengren: {
            mainClass: 'lanzhouchengren'
        },
        tsbtchinamde: {
            mainClass: 'tsbtchinamde'
        },
        henangongshe: {
            mainClass: 'henangongshe',
            remark: '和北京教师一样的'
        },
        zjzjsrc: {
            mainClass: 'zjzjsrc'
        },
        lzrejxjy: {
            mainClass: 'lzrejxjy'
        },
        xuzhouyikedaxue: {
            mainClass: 'xuzhouyikedaxue'
        },
        xibeisfzyjy: {
            mainClass: 'xibeisfzyjy'
        },
        zgrtvu: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.page-list .page-item .page-name',
                activeClass: 'cursor',
                listenRebortFn(that) {
                    document.querySelector('.btn-submit')?.click();
                    let model = document.querySelector('#alertModal');
                    if (model && model.classList.contains('in')) {
                        document.querySelector('.close-btn').click();
                    }
                    let ipt = document.querySelector('.math-question-input');
                    if (ipt) {
                        localStorage.setItem("needMathCaptcha", "");
                        koLearnCourseViewModel.modalType("");
                        koLearnCourseViewModel.alertModal.hide();
                        ElementObj.$video.play();
                    }
                }
            }
        },
        henandikuang: {
            mainClass: 'henandikuang'
        },
        henanzhuanjipeixun: {
            mainClass: 'CTXCommon',
            apis: {
                getID(option) {
                    return new Promise(resolve => {
                        fetch(`${location.origin}/student/single_video.jsp?${option}`, {
                            "headers": {
                                "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "iframe",
                                "sec-fetch-mode": "navigate",
                                "sec-fetch-site": "same-origin",
                                "upgrade-insecure-requests": "1"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.text()).then(str => {
                            let id = /"single_video_save.jsp", {id:([0-9]+), duration:total, studylong:studylong, position:current}/.exec(str)[1];
                            resolve(id);
                        });
                    });
                },
                savejsp(id, duration) {
                    return new Promise(resolve => {
                        fetch(`${location.origin}/student/single_video_save.jsp`, {
                            "headers": {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                                "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin",
                                "x-requested-with": "XMLHttpRequest"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": `id=${id}&duration=${duration}&studylong=${duration}&position=${duration}`,
                            "method": "POST",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.text()).then(res => resolve(res));
                    });
                }
            },
            option: {
                nodeListClass: '',
                openListenPlayStatus: false,
                async _init(that) {
                    let interval = setInterval(async () => {
                        try {
                            ElementObj.$allTask = document.querySelectorAll('tbody tr');
                            if (ElementObj.$allTask.length) {
                                clearInterval(interval);
                                showTip('⚠️⚠️⚠️正在初始化', 1500);
                                ElementObj.$allTask.forEach((item, index) => {
                                    if (index > 1) {
                                        let $pagress = item.querySelectorAll('td')[2];
                                        let status = $pagress.innerText;
                                        if (parseInt(status) != 100 && that.currentIndex == -1) {
                                            that.currentIndex = index;
                                        }
                                    }
                                });
                                let homeUrl = location.href;
                                GM_setValue("homeUrl", homeUrl);
                                showTip('⚠️⚠初始化完成,5秒后开始播放', 3000);
                                let $nextBtn = ElementObj.$allTask[that.currentIndex].querySelectorAll('td')[3].querySelector('a');
                                await sleep(200);
                                $nextBtn.click();
                                await sleep(1500);
                                let $textbtn = document.querySelector('input.textbtn');
                                $textbtn.click();
                                setTimeout(() => {
                                    window.close();
                                }, 4500);
                                return;
                            }
                            let $iframe = document.querySelector('iframe')?.contentDocument;
                            ElementObj.$video = $iframe?.querySelector('video');
                            if (!!ElementObj.$video) {
                                clearInterval(interval);
                                console.log('1111ElementObj.$video==>>', ElementObj.$video);
                                that._o1();
                            }
                            ElementObj.$handleSpeedUp.style.display = 'none';
                        }
                        catch (e) {
                        }
                    }, 500);
                },
                videoEle() {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            let $iframe = document.querySelector('iframe')?.contentDocument;
                            ElementObj.$video = $iframe?.querySelector('video');
                            if (!!ElementObj.$video && ElementObj.$video.duration) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                async playFn(that) {
                    showTip('视频加载中...');
                    await that.getVideoDom();
                    console.log('ElementObj.$video==>>', ElementObj.$video);
                    let duration = Math.trunc(ElementObj.$video.duration);
                    let video = ElementObj.$video.src;
                    let query = new URLSearchParams(location.href);
                    let cid = query.get('cid');
                    let sid = query.get('sid');
                    showTip('🔊🔊🔊正在请求数据....');
                    let id = await _i1.henanzhuanjipeixun.apis.getID(`video=${video}&cid=${cid}&sid=${sid}`);
                    console.log('id==>>', id);
                    if (!id || !duration)
                        return alert('参数错误');
                    let res = await _i1.henanzhuanjipeixun.apis.savejsp(id, duration);
                    showTip('🔊🔊🔊学习完成,即将自动切换下一个....');
                    setTimeout(() => {
                        window.close();
                    }, 2500);
                    MyTool.openInTab(MyTool.getValue('homeUrl'));
                    return;
                }
            }
        },
        zhejiangtjj: {
            mainClass: 'zhejiangtjj'
        },
        guizhouzxjxjy: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.lcml_djj_list li',
                'activeClass': 'on',
                'playFn': async (that) => {
                    clearInterval(that.timer);
                    clearInterval(that.listenVidoeStatusTimer);
                    clearInterval(that.listenRebortTime);
                    let studyType = await that.getVideoDom();
                    let $playBtn = document.querySelector('.xgplayer-icon-play');
                    $playBtn?.click();
                    showTip('正在加载视频', 2000);
                    await sleep(2000);
                    await that.getVideoDom();
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                    ElementObj.$video.addEventListener('ended', async () => {
                        showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                        that.playNext(that);
                    });
                    ElementObj.$video.addEventListener('pause', () => {
                        setTimeout(() => {
                            ElementObj.$video.volume = 0;
                            ElementObj.$video.play();
                        }, 1500);
                    });
                },
            }
        },
        jiangxizhipeizaixian: {
            mainClass: 'jiangxizhipeizaixian'
        },
        anhuijixujyzx: { mainClass: 'anhuijixujyzx' },
        lanzhoudxgs: { mainClass: 'lanzhoudxgs' },
        jidianshejijiaoyu: {
            mainClass: 'jidianshejijiaoyu'
        },
        henanzhujianjy: {
            mainClass: 'henanzhujianjy'
        },
        sipingnengcun: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.videolist_item',
                openListenPlayTime: false,
                getCurrentIndexByOption() {
                    return new Promise(resolve => {
                        let activeClass = 'is-success';
                        let currentIndex = -1;
                        for (var i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i];
                            let $pregress = item.querySelector('.el-progress');
                            if (!$pregress.classList.contains(activeClass)) {
                                resolve(i);
                                break;
                            }
                        }
                        if (currentIndex == -1) {
                            alert('当前课程视频已全部播放完');
                            return;
                        }
                        ElementObj.$allTask[currentIndex].click();
                    });
                }
            }
        },
        ycjyluteducn: {
            mainClass: 'ycjyluteducn'
        },
        gdrcjxjyw: {
            mainClass: 'gdrcjxjyw'
        },
        shandongqlteacher: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': 'app-course-catalogue.ng-star-inserted .ant-list-items li',
                getCurrentIndexByOption() {
                    return new Promise(resolve => {
                        for (let i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i];
                            let $icon = item.querySelector('div.align-items-center');
                            if (!$icon) {
                                resolve(i);
                            }
                        }
                    });
                }
            }
        },
        shixuetong: {
            mainClass: 'shixuetong'
        },
        shandongenhualvyou: {
            mainClass: 'shandongenhualvyou'
        },
        gansugongwuyuan: {
            mainClass: 'gansugongwuyuan'
        },
        wlmqcol: { mainClass: 'wlmqcol' },
        shandongzhuanyejisu: {
            mainClass: 'shandongzhuanyejisu'
        },
        chongqingzhuanye: {
            mainClass: 'chongqingzhuanye'
        },
        jiaoyuganbuwang: {
            mainClass: 'jiaoyuganbuwang'
        },
        zhijiaoyun: { mainClass: 'shandongzhuanyejisu' },
        zhijiaoyun2: { mainClass: 'zhijiaoyun2' },
        zaixianxuexi: { mainClass: 'zaixianxuexi' },
        anquanshengchanzx: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '',
                'activeClass': '',
                'videoEle': () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelector('#vjs_video_3_html5_api');
                            if (!!ElementObj.$video) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                async _init(that) {
                    let interval = setInterval(async () => {
                        try {
                            let $allTask1 = document.querySelectorAll('.chapter_j>span');
                            let $allTask2 = document.querySelectorAll('.first-box');
                            ElementObj.$allTask = $allTask1.length ? $allTask1 : $allTask2;
                            if (ElementObj.$allTask.length) {
                                clearInterval(interval);
                                showTip('正在初始化');
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                                    let $item = ElementObj.$allTask[i].querySelector('li');
                                    if (!!$item) {
                                        if ($item.classList.contains('currse')) {
                                            that.currentIndex = i;
                                            break;
                                        }
                                    }
                                    let isDone = ElementObj.$allTask[i];
                                    if (isDone.classList.contains('text-color')) {
                                        that.currentIndex = i;
                                        break;
                                    }
                                }
                                if (that.currentIndex == -1) {
                                    alert('当前课程已全部学完');
                                    return;
                                }
                                if (location.pathname != '/course/lesson') {
                                    ElementObj.$allTask[that.currentIndex].querySelector('li')?.click();
                                }
                                showTip('初始化完成,5秒后开始播放');
                                that._o1();
                            }
                        }
                        catch (e) {
                        }
                    }, 500);
                },
                listenRebortFn(that) {
                    let $mask = document.querySelector('.mask.mask_bg').style.display;
                    if ($mask != 'none') {
                        that.playNext(that);
                        return;
                    }
                    let time = ElementObj.$video.currentTime / 60;
                    let durrentTime = ElementObj.$video.duration / 60;
                    let $balance = document.querySelector('.vjs-remaining-time-display');
                    if ($balance) {
                        let $balancetext = $balance.innerText;
                        if ($balancetext == '0:00') {
                            that.playNext(that);
                            return;
                        }
                    }
                    if (time >= durrentTime) {
                        that.playNext(that);
                    }
                },
                async playNext(that) {
                    await sleep(2000);
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        alert('当前课程所有视频已播放完');
                        return;
                    }
                    that.currentIndex += 1;
                    let $nextBtn = ElementObj.$allTask[that.currentIndex].querySelector('li');
                    if (location.pathname == '/course/lesson') {
                        $nextBtn = ElementObj.$allTask[that.currentIndex];
                    }
                    $nextBtn?.click();
                    setTimeout(() => {
                        that._o1();
                    }, 2000);
                }
            },
        },
        guojiakaifangdaxue: {
            mainClass: 'guojiakaifangdaxue'
        },
        jjjxjy: {
            mainClass: 'jjjxjy'
        },
        csustcj: {
            mainClass: 'CTXCommon',
            option: { 'nodeListClass': '.ivu-tree-children .render-content__video', 'activeClass': 'activeVideo' }
        },
        xiangongyedx: {
            mainClass: 'CTXCommon',
            apis: {
                getList(id) {
                    return new Promise((resolve) => {
                        fetch(`${location.origin}/cjapi/other/student/plan/view?id=` + id, {
                            "headers": {
                                "accept": "application/json, text/plain, */*",
                                "authorization": `Bearer.${localStorage.getItem('stuToken')}`,
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => {
                            let task = res.data.chapter.map((item) => item.items);
                            resolve(task);
                        });
                    });
                },
                getDetail(id, tpcId) {
                    return new Promise((resolve, reject) => {
                        fetch(`${location.origin}/cjapi/other/student/chapter/view?id=${id}&tpcId=${tpcId}`, {
                            "headers": {
                                "accept": "application/json, text/plain, */*",
                                "authorization": `Bearer.${localStorage.getItem('stuToken')}`,
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => {
                            resolve(res.data.details.videoDuration);
                        });
                    });
                },
                save(body) {
                    return new Promise((resolve) => {
                        fetch(`${location.origin}/cjapi/other/student/curriculum/progress/update/v2`, {
                            "headers": {
                                "accept": "application/json, text/plain, */*",
                                "authorization": `Bearer.${localStorage.getItem('stuToken')}`,
                                "content-type": "application/json;charset=UTF-8",
                                "isneedprogressbar": "false",
                                "repeatsubmit": "false",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": JSON.stringify(body),
                            "method": "PUT",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => resolve(res));
                    });
                },
            },
            option: {
                'nodeListClass': '.ivu-tree-children .render-content__video', 'activeClass': 'activeVideo',
                async _init(that) {
                    let timer = setInterval(async () => {
                        let id = /[0-9]+/.exec(location.pathname)[0];
                        let $wrap = document.querySelector('.details-container');
                        if (id && $wrap) {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            await that.changeHtml($wrap);
                            that.addInfo('正在获取课程信息');
                            let classList = await _i1.xiangongyedx.apis.getList(id);
                            that.addInfo('获取课程信息成功');
                            console.log('classList====>>>', classList);
                            forData: for (let k of classList) {
                                for (let item of k) {
                                    if (item.title.indexOf('章节测评') != -1)
                                        continue;
                                    if (!item.video)
                                        continue;
                                    if (!item.isover) {
                                        that.addInfo(`即将开始播放【${item.title}】`);
                                        console.log('item====>>>', item);
                                        let res = await _i1.xiangongyedx.apis.save({
                                            "tpcId": Number(id),
                                            "curriculumid": item.curriculum_id,
                                            "chapterid": item.id,
                                            "videoid": JSON.parse(item.video)[0].videoid,
                                            "type": item.type,
                                            "progress": -1
                                        });
                                        console.log('res====>>>', res);
                                        let lenT = await _i1.xiangongyedx.apis.getDetail(item.id, id);
                                        that.addInfo(`【${item.title}】播放中,本节视频时长为${item.timelen},至少学习${lenT}秒`);
                                        MyTool.setValue('lenT', lenT);
                                        await that._o1();
                                        res = await _i1.xiangongyedx.apis.save({
                                            "tpcId": Number(id),
                                            "curriculumid": item.curriculum_id,
                                            "chapterid": item.id,
                                            "videoid": JSON.parse(item.video)[0].videoid,
                                            "type": item.type,
                                            "progress": lenT
                                        });
                                        console.log('结束学习res====>>>', res);
                                        if (res.data.isOver) {
                                            that.addInfo(item.title + '课程学习完成');
                                        }
                                    }
                                }
                            }
                        }
                    }, 500);
                },
                async playFn(that) {
                    let lenT = MyTool.getValue('lenT');
                    let s = 0;
                    for (let item of new Array(lenT)) {
                        s += 1;
                        await MyTool.sleep(1000);
                        that.addInfo(`已播放${s}秒`);
                    }
                }
            }
        },
        hebeiganbu: {
            mainClass: 'hebeiganbu',
        },
        gdedujsxx: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '',
                'activeClass': '',
                async _init(that) {
                    console.log('gdedujsxx11111111');
                    let timer = setInterval(async () => {
                        if (location.host.includes('gdedu.gov.cn')) {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            that._o1();
                        }
                    }, 500);
                },
                async listenRebortFn(that) {
                    let $labels = document.querySelectorAll('.m-question-lst label');
                    if ($labels.length) {
                        $labels[0].click();
                        let $sumit = document.querySelector('.btn.u-main-btn');
                        $sumit.click();
                        await sleep(3000);
                        $labels = document.querySelectorAll('.m-question-lst label');
                        if ($labels.length) {
                            $labels[1].click();
                            let $sumit = document.querySelector('.btn.u-main-btn');
                            $sumit.click();
                        }
                    }
                    let status = document.querySelector('.g-study-prompt')?.innerText?.indexOf('您已完成观看');
                    if (status != -1) {
                        that.playNext(that);
                        return;
                    }
                    let [s1, s2] = document.querySelectorAll('.g-study-prompt span');
                    if (s1 && s2) {
                        if (Number(s1.innerHTML) <= Number(s2.innerHTML)) {
                            that.playNext(that);
                        }
                    }
                },
                async playNext(that) {
                    await sleep(4500);
                    that.currentIndex += 1;
                    let $nextBtn = document.querySelector('a.btn.next.crt');
                    if ($nextBtn) {
                        $nextBtn.click();
                        setTimeout(() => {
                            that._o1();
                        }, 4000);
                    }
                }
            }
        },
        wsjkrczyjn: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.setionItem',
                'activeClass': 'active'
            }
        },
        zhuzhouteacher: {
            mainClass: 'zhuzhouteacher'
        },
        yinghuaxuetang: {
            mainClass: 'yinghuaxuetang'
        },
        yidiantong: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.keshi',
                openListenPlayTime: false,
                getCurrentIndexByOption() {
                    return new Promise(resolve => {
                        for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                            let isDone = ElementObj.$allTask[i];
                            if (isDone.classList.contains('active')) {
                                resolve(i);
                                break;
                            }
                        }
                    });
                },
                nextClass: 'a'
            }
        },
        shanghaikaifangdx: { mainClass: 'shanghaikaifangdx', },
        gzgbjy: { mainClass: 'gzgbjy' },
        jixujiaoyuzaixian: { mainClass: 'jixujiaoyuzaixian' },
        guizhoujianshezyjs: {
            mainClass: 'guizhoujianshezyjs',
        },
        zaixian100f: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '',
                'activeClass': '',
                'videoEle': () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelector('#vjs_video_3_html5_api');
                            if (!!ElementObj.$video) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                async _init(that) {
                    let interval = setInterval(async () => {
                        try {
                            let $allTask1 = document.querySelectorAll('.chapter_j>span');
                            let $allTask2 = document.querySelectorAll('.first-box');
                            ElementObj.$allTask = $allTask1.length ? $allTask1 : $allTask2;
                            if (ElementObj.$allTask.length) {
                                clearInterval(interval);
                                showTip('正在初始化');
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                                    let $item = ElementObj.$allTask[i].querySelector('li');
                                    if (!!$item) {
                                        if ($item.classList.contains('currse')) {
                                            that.currentIndex = i;
                                            break;
                                        }
                                    }
                                    let isDone = ElementObj.$allTask[i];
                                    if (isDone.classList.contains('text-color')) {
                                        that.currentIndex = i;
                                        break;
                                    }
                                }
                                if (that.currentIndex == -1) {
                                    alert('当前课程已全部学完');
                                    return;
                                }
                                if (location.pathname != '/course/lesson') {
                                    ElementObj.$allTask[that.currentIndex].querySelector('li')?.click();
                                }
                                showTip('初始化完成,5秒后开始播放');
                                that._o1();
                            }
                        }
                        catch (e) {
                        }
                    }, 500);
                },
                listenRebortFn(that) {
                    let $mask = document.querySelector('.mask.mask_bg').style.display;
                    if ($mask != 'none') {
                        that.playNext(that);
                        return;
                    }
                    let time = ElementObj.$video.currentTime / 60;
                    let durrentTime = ElementObj.$video.duration / 60;
                    let $balance = document.querySelector('.vjs-remaining-time-display');
                    if ($balance) {
                        let $balancetext = $balance.innerText;
                        if ($balancetext == '0:00') {
                            that.playNext(that);
                            return;
                        }
                    }
                    if (time >= durrentTime) {
                        that.playNext(that);
                    }
                },
                async playNext(that) {
                    await sleep(2000);
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        alert('当前课程所有视频已播放完');
                        return;
                    }
                    that.currentIndex += 1;
                    let $nextBtn = ElementObj.$allTask[that.currentIndex].querySelector('li');
                    if (location.pathname == '/course/lesson') {
                        $nextBtn = ElementObj.$allTask[that.currentIndex];
                    }
                    $nextBtn?.click();
                    setTimeout(() => {
                        that._o1();
                    }, 2000);
                }
            }
        },
        gzteacher: {
            mainClass: 'gzteacher'
        },
        moocxinyingzao: { mainClass: 'moocxinyingzao' },
        zhejiangzjelib: {
            mainClass: 'zhejiangzjelib'
        },
        jlnkylllnet: {
            mainClass: 'jlnkylllnet'
        },
        dongbeishifandaxue: {
            mainClass: 'dongbeishifandaxue'
        },
        quanguomeotan: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.row1 a.subset-class',
                'activeClass': 'on'
            }
        },
        qzjystudy: {
            mainClass: 'qzjystudy'
        },
        jsjxjypt: {
            mainClass: 'CTXCommon',
            option: { 'nodeListClass': '.videoRight ul li', 'activeClass': 'li1' }
        },
        GlivePro: {
            mainClass: 'GlivePro'
        },
        gaodengxueli: {
            mainClass: 'gaodengxueli',
            option: { 'nodeListClass': '.course-list-txt dd i', 'activeClass': 'fa-youtube-play' }
        },
        henanzhuanjizaixian: {
            mainClass: 'henanzhuanjizaixian'
        },
        hunannmdxs: { mainClass: 'hunannmdxs' },
        shenixue: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.jss299', 'activeClass': 'jss300',
                'playNext': () => {
                    return new Promise(resolve => {
                        setTimeout(() => {
                            ElementObj.$allTask = document.querySelectorAll('.jss299');
                            for (let item of ElementObj.$allTask) {
                                let isdone = item.querySelector('.jss303');
                                if (!isdone) {
                                    item.click();
                                    setTimeout(() => {
                                        toolOption.CtxMain._o1();
                                    }, 3000);
                                    break;
                                }
                            }
                        }, 3000);
                    });
                }
            }
        },
        dongaokauji: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '',
                'activeClass': '',
                openListenPlayTime: true,
                _init: async (that) => {
                    let interval = setInterval(async () => {
                        ElementObj.$parentNodes = document.querySelectorAll('tbody>tr');
                        if ((['/cwweb/lecture/lectureList', '/study/u/myCourse'].indexOf(location.pathname) != -1) && ElementObj.$parentNodes.length) {
                            clearInterval(interval);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            let isDone = false;
                            for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                                let item = ElementObj.$parentNodes[i];
                                if (location.pathname == '/cwweb/lecture/lectureList') {
                                    let $spans = item.querySelectorAll('td')[1].querySelectorAll('span');
                                    if ($spans[0].innerText != $spans[1].innerText.replace('/', '')) {
                                        MyTool.setValue('homeUrl', location.href);
                                        let $btn = item.querySelector('.study-a');
                                        $btn.click();
                                        setTimeout(() => {
                                            window.close();
                                        }, 20 * 1000);
                                        break;
                                    }
                                }
                                else {
                                    let $status = item.querySelectorAll('td')[6];
                                    if (location.pathname == '/study/u/myCourse') {
                                        $status = item.querySelectorAll('td')[5];
                                    }
                                    if ($status.innerText.trim() != '已完成') {
                                        MyTool.setValue('homeUrl', location.href);
                                        let $spans = item.querySelector('a.operate-a.active');
                                        $spans.click();
                                        break;
                                    }
                                }
                            }
                            if (location.pathname == '/cwweb/lecture/lectureList' && isDone) {
                                let HomeUrl0 = MyTool.getValue('HomeUrl0');
                                if (!HomeUrl0) {
                                    showTip('监测到程序不是从首页自动跳转,导致未保存首页链接,将返回默认首页');
                                    HomeUrl0 = 'https://study.dongao.cn/study/u/myCourse?accountId=22619331';
                                }
                                location.href = HomeUrl0;
                            }
                        }
                        if (location.pathname.indexOf('/cwweb/videoShow/video/videoPlay') != -1) {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            clearInterval(interval);
                            that._o1();
                        }
                    }, 1000);
                },
                listenRebortFn() {
                    let $veryCode = document.querySelector('#vjs-overlay');
                    if ($veryCode) {
                        $veryCode.parentElement?.removeChild($veryCode);
                        setTimeout(() => {
                            ElementObj.$video.volume = 0;
                            ElementObj.$video.play();
                        }, 2000);
                    }
                },
                async playNext(that) {
                    let homeUrl = MyTool.getValue('homeUrl');
                    location.href = homeUrl;
                    setTimeout(() => {
                        that._o1();
                    }, 5000);
                }
            }
        },
        btzjpx: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.classBox',
                'openListenPlayStatus': false,
                'getCurrentIndexByOption': () => {
                    return new Promise(resolve => {
                        for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.style.background == 'rgb(240, 247, 254)') {
                                resolve(i);
                            }
                        }
                    });
                }
            }
        },
        bainianshuren: {
            mainClass: "bainianshuren",
        },
        dyyxlearning: {
            mainClass: "dyyxlearning",
        },
        hebeijiaoshijiaoyuwang: {
            mainClass: "hebeijiaoshijiaoyuwang",
        },
        shangdongganbu: {
            mainClass: "shangdongganbu",
        },
        yunketang: {
            mainClass: "yunketang",
            option: {
                'nodeListClass': '.el-collapse-item__content div.file-item',
                'activeClass': 'file-item-active'
            }
        },
        guojiazhongxiaoxue: {
            mainClass: "CTXCommon",
            option: {
                'nodeListClass': '',
                'activeClass': '',
                async _init(that) {
                    let interval = setInterval(async () => {
                        try {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            ElementObj.$parentNodes = document.querySelectorAll('.fish-collapse-item');
                            ElementObj.$allTask = document.querySelectorAll('.resource-item');
                            if (ElementObj.$parentNodes.length || ElementObj.$allTask.length) {
                                clearInterval(interval);
                                let type = ElementObj.$parentNodes.length ? 1 : 2;
                                if (type === 1) {
                                    showTip('学习准备中~', 10 * 1000);
                                    for (let item of ElementObj.$parentNodes) {
                                        item.querySelector('.fish-collapse-header').click();
                                        let $layer2s = item.querySelectorAll('.fish-collapse-header');
                                        let index = 0;
                                        if ($layer2s.length > 1) {
                                            for (let $layer2sItem of $layer2s) {
                                                if (index == 0)
                                                    continue;
                                                $layer2sItem.click();
                                                index += 1;
                                                await sleep(250);
                                            }
                                            index = 0;
                                        }
                                        await sleep(300);
                                    }
                                    ElementObj.$allTask = document.querySelectorAll('.resource-item');
                                    for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                                        let isDone = ElementObj.$allTask[i];
                                        let status = isDone.querySelector('i').title;
                                        if (status != '已学完') {
                                            that.currentIndex = i;
                                            break;
                                        }
                                    }
                                }
                                else {
                                    for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                                        let isDone = ElementObj.$allTask[i];
                                        if (isDone.classList.contains('resource-item-active')) {
                                            that.currentIndex = i;
                                            break;
                                        }
                                    }
                                }
                                if (that.currentIndex == -1) {
                                    alert('当前课程所有视频已播放完');
                                    return;
                                }
                                let NextBtn = ElementObj.$allTask[that.currentIndex];
                                NextBtn.click();
                                showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
                                setTimeout(() => {
                                    that._o1();
                                }, 1000 * 3);
                            }
                        }
                        catch (e) {
                        }
                    }, 1000);
                },
                async playNext(that) {
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        alert('当前课程所有视频已播放完');
                        return;
                    }
                    await sleep(2500);
                    that.currentIndex += 1;
                    ElementObj.$allTask[that.currentIndex].click();
                    setTimeout(() => {
                        that._o1();
                    }, 3000);
                },
                listenRebortFn() {
                    let $fishBtn = document.querySelectorAll('.fish-btn.fish-btn-primary')[1];
                    $fishBtn?.click();
                    let $modal = document.querySelector('.fish-modal-root');
                    $modal?.parentElement?.removeChild($modal);
                }
            }
        },
        huaxiajiaoshiyanpei: {
            mainClass: "huaxiajiaoshiyanpei",
        },
        zhelixuexi: {
            mainClass: "zhelixuexi",
        },
        fhswifer: {
            mainClass: "fhswifer",
        },
        shdfuruuwsor: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.simple-list li',
                'openListenPlayStatus': false,
                'openListenPlayTime': true,
                '_init': () => {
                    return new Promise(resolve => {
                        let interval = setInterval(() => {
                            let $elwrappe = document.querySelector('.el-message-box__wrapper');
                            if ($elwrappe && $elwrappe.style.display != 'none') {
                                let $elbtn = document.querySelector('.el-message-box__btns .el-button--primary');
                                $elbtn.click();
                            }
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            ElementObj.$allTask = document.querySelectorAll('.simple-list li');
                            if (ElementObj.$allTask.length > 0) {
                                clearInterval(interval);
                                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                                    let item = ElementObj.$allTask[i].querySelectorAll('div div')[2];
                                    if (item.innerText != '完成') {
                                        let $cur = ElementObj.$allTask[i].querySelector('.el-tooltip').style.color;
                                        if ($cur != 'rgb(255, 165, 0)') {
                                            ElementObj.$allTask[i].click();
                                        }
                                        toolOption.CtxMain.pdPlayFn(location.href);
                                        resolve(i);
                                        break;
                                    }
                                }
                            }
                        });
                    });
                },
                'playNext': () => {
                    return new Promise(resolve => {
                        for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                            let $cur = ElementObj.$allTask[i].querySelector('.el-tooltip').style.color;
                            if ($cur == 'rgb(255, 165, 0)') {
                                let item = ElementObj.$allTask[i].querySelectorAll('div div')[2];
                                if (item.innerText != '完成') {
                                    toolOption.CtxMain.pdPlayFn(location.href);
                                    return false;
                                }
                                ElementObj.$allTask[i + 1].click();
                                resolve(true);
                                break;
                            }
                        }
                    });
                },
                'listenRebortFn': () => {
                    let $status = document.querySelector('.el-tooltip[style]').parentElement.querySelectorAll('div div')[1];
                    if ($status.innerText == '完成') {
                        location.reload();
                    }
                }
            }
        },
        cnjiewhr34iuiehs: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '.menu ul>li dl',
                'openListenPlayStatus': false,
                'getCurrentIndexByOption': () => {
                    return new Promise(resolve => {
                        resolve(1);
                    });
                },
                'playNext': () => {
                    return new Promise(resolve => {
                        let preVideoSrc = MyTool.getValue('preVideoSrc');
                        if (ElementObj.$video.src == preVideoSrc) {
                            toolOption.CtxMain.play();
                        }
                        else {
                            MyTool.setValue('preVideoSrc', ElementObj.$video.src);
                            setTimeout(() => {
                                location.reload();
                            }, 3000);
                        }
                    });
                }
            }
        },
        rrhisdgf283y7jvdf: {
            mainClass: 'rrhisdgf283y7jvdf',
        },
        f6872: {
            mainClass: 'f6872'
        },
        a782: {
            mainClass: 'rrhisdgf283y7jvdf',
        },
        su862v: {
            mainClass: 'CTXCommon',
            option: {
                'nodeListClass': '#m-chapter-ul li a',
                'openListenPlayStatus': false,
                'openListenPlayTime': true,
                'activeClass': 'z-crt'
            }
        },
        bfuew28: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '',
                openListenPlayStatus: false,
                videoEle: () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelectorAll('iframe')[2].contentDocument.querySelector('iframe').contentDocument.querySelector('video');
                            if (!!ElementObj.$video) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                _init: () => {
                    return new Promise(resolve => {
                        let interval = setInterval(() => {
                            let $iframe = document.querySelectorAll('iframe')[2];
                            if ($iframe) {
                                ElementObj.$allTask = $iframe.contentDocument.querySelectorAll('.s_point');
                                if (ElementObj.$allTask.length > 0) {
                                    clearInterval(interval);
                                    ElementObj.$handleSpeedUp.style.display = 'none';
                                    toolOption.CtxMain.getCurrentIndex();
                                }
                            }
                        });
                    });
                },
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.classList.contains('s_pointerct')) {
                                resolve(i);
                                break;
                            }
                        }
                    });
                },
                listenRebortFn: () => {
                    let $btn = document.querySelector('.layui-layer-btn0');
                    $btn?.click();
                    ElementObj.$video.play();
                }
            }
        },
        sd199: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '',
                openListenPlayStatus: false,
                videoEle: () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelectorAll('video')[1];
                            if (!!ElementObj.$video && ElementObj.$video.src) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                _init: (that) => {
                    return new Promise(resolve => {
                        let count = 10;
                        let interval = setInterval(() => {
                            if (count < 0) {
                                showTip('🔊未找到目录,请在此界面手动更换一个视频', 4000);
                                clearInterval(interval);
                            }
                            ElementObj.$allTask = document.querySelectorAll('ul a[id]');
                            if (ElementObj.$allTask.length > 0) {
                                clearInterval(interval);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                that.getCurrentIndex();
                            }
                            count += 1;
                        }, 500);
                    });
                },
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        let $cur = document.querySelector('.learn-title').innerText.replace(/ /g, '');
                        for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.innerText.replace(/ /g, '') == $cur) {
                                resolve(i);
                                break;
                            }
                        }
                    });
                },
            }
        },
        f13v: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '.el-menu li',
                activeClass: 'is-active',
                openListenPlayStatus: false,
            }
        },
        g32f: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '.bb_e8edf0_dash div[id]',
                activeClass: 'cur',
                openListenPlayStatus: false,
                _init: () => {
                    return new Promise(resolve => {
                        let interval = setInterval(() => {
                            ElementObj.$video = document.querySelector('video');
                            if (ElementObj.$video) {
                                clearInterval(interval);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                toolOption.CtxMain._o1();
                            }
                        });
                    });
                },
                playNext: () => {
                    return new Promise(resolve => {
                        let $nextBtn = document.querySelector('a.btItem.Next');
                        $nextBtn.click();
                    });
                }
            }
        },
        ss10: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '.menu_body span>a.chapter',
                _init: () => {
                    return new Promise(resolve => {
                        let timer = setInterval(() => {
                            ElementObj.$parentNodes = document.querySelector('iframe')?.contentDocument?.querySelectorAll('.class-wrapper');
                            if (ElementObj.$parentNodes && ElementObj.$parentNodes.length) {
                                clearInterval(timer);
                                let old = localStorage.getItem('curClassName');
                                for (let i = 0; i < ElementObj.$parentNodes.length; i++) {
                                    let item = ElementObj.$parentNodes[i];
                                    let name = item.querySelector('.kcmc').innerText.trim();
                                    if (name == old) {
                                        let nextBtn = ElementObj.$parentNodes[i + 1].querySelector('input.btn');
                                        nextBtn.click();
                                        break;
                                    }
                                }
                                resolve(true);
                            }
                            if (location.pathname == '/student/IndexWlkc_BootStrap.aspx') {
                                clearInterval(timer);
                                ElementObj.$parentNodes = document.querySelector('iframe')?.contentDocument?.querySelectorAll('.menu_body span>a[title]');
                                if (ElementObj.$parentNodes && ElementObj.$parentNodes.length) {
                                    ElementObj.$parentNodes[0].click();
                                }
                                resolve(true);
                            }
                            ElementObj.$allTask = document.querySelectorAll('.menu_body span>a.chapter');
                            if (ElementObj.$allTask.length) {
                                clearInterval(timer);
                                let curClassName = document.querySelector('.glyphicon-home').innerText.trim();
                                localStorage.setItem('curClassName', curClassName);
                                toolOption.CtxMain.getCurrentIndex();
                                resolve(true);
                            }
                        }, 1000);
                    });
                },
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        for (let i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.style.color == "rgb(51, 122, 183)") {
                                resolve(i);
                                break;
                            }
                        }
                    });
                },
                playFn: async (that) => {
                    let wlkcID = /wlkcID=(.+)&wlk/.exec(location.search)[1];
                    let wlkckkID = /wlkckkID=(.+)&/.exec(location.search)[1];
                    let zjid = /zjid=(.+)/.exec(location.search)[1];
                    let learnTime = document.querySelector('#lbl_videoTime').innerText.trim();
                    let __VIEWSTATE = unsafeWindow.__VIEWSTATE.value;
                    let __VIEWSTATEGENERATOR = unsafeWindow.__VIEWSTATEGENERATOR.value;
                    let __EVENTVALIDATION = unsafeWindow.__EVENTVALIDATION.value;
                    if (!wlkcID || !wlkckkID || !zjid || !learnTime || !__VIEWSTATE || !__VIEWSTATEGENERATOR || !__EVENTVALIDATION) {
                        alert('参数错误');
                        return;
                    }
                    await fetch(`${location.origin}/student/BootStrap_Video.aspx?wlkcID=${wlkcID}&wlkckkID=${wlkckkID}&zjid=${zjid}`, {
                        "credentials": "include",
                        "headers": {
                            "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:121.0) Gecko/20100101 Firefox/121.0",
                            "Accept": "*/*",
                            "Accept-Language": "zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2",
                            "X-Requested-With": "XMLHttpRequest",
                            "X-MicrosoftAjax": "Delta=true",
                            "Cache-Control": "no-cache",
                            "Content-Type": "application/x-www-form-urlencoded; charset=utf-8"
                        },
                        "body": `ScriptManager1=UpdatePanel%7CbtnYXXXSJ&__EVENTTARGET=&__EVENTARGUMENT=&postLearnTime=${Number(learnTime)}&shijiLearnTime=${Number(learnTime)}&learnTime=${Number(learnTime)}&videoState=pause&__VIEWSTATE=${encodeURIComponent(__VIEWSTATE)}&__VIEWSTATEGENERATOR=${__VIEWSTATEGENERATOR}&__EVENTVALIDATION=${encodeURIComponent(__EVENTVALIDATION)}&__ASYNCPOST=true&btnYXXXSJ=`,
                        "method": "POST",
                        "mode": "cors"
                    });
                    toolOption.CtxMain.playNext(that);
                },
                playNext: (that) => {
                    return new Promise(async (resolve) => {
                        if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                            location.href = `${location.origin}/student/IndexTemplate_BootStrap.aspx`;
                            return;
                        }
                        await sleep(2000);
                        that.currentIndex += 1;
                        let $nextBtn = ElementObj.$allTask[that.currentIndex];
                        $nextBtn?.click();
                        setTimeout(() => {
                            that._o1();
                        }, 2000);
                    });
                }
            }
        },
        das01: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: 'ul>li:first-child',
                activeClass: 'list',
                openListenPlayStatus: false,
                _init: () => {
                    return new Promise(resolve => {
                        let timer = setInterval(() => {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            if (location.pathname == '/online/learn') {
                                let $btn = document.querySelector('.toStudy');
                                if ($btn) {
                                    clearInterval(timer);
                                    setTimeout(() => {
                                        window.close();
                                    }, 1000 * 10);
                                    $btn.click();
                                    resolve(true);
                                    return;
                                }
                            }
                            if (location.pathname == '/admin/lock/Study') {
                                ElementObj.$allTask = document.querySelectorAll('ul>li');
                                if (ElementObj.$allTask.length) {
                                    clearInterval(timer);
                                    toolOption.CtxMain.getCurrentIndex();
                                    resolve(true);
                                    return;
                                }
                            }
                        }, 500);
                    });
                },
                listenRebortFn: () => {
                    let $ipt = document.querySelector('.layui-input');
                    if ($ipt) {
                        let num = $ipt.getAttribute('data-num3');
                        $ipt.value = num;
                        document.querySelector('.layui-layer-btn0').click();
                    }
                },
                playNext: (that) => {
                    return new Promise(async (resolve) => {
                        if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                            location.href = 'http://hzsdadmin.zhihuiteacher.com/online/learn';
                            return;
                        }
                        await sleep(2500);
                        that.currentIndex += 1;
                        let $nextBtn = ElementObj.$allTask[that.currentIndex];
                        $nextBtn?.click();
                        setTimeout(() => {
                            that._o1();
                        }, 5000);
                    });
                }
            }
        },
        aa101: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '.level2>a',
                activeClass: 'cur',
            }
        },
        sdf1: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '.ml_2 li',
                activeClass: 'cur',
                nextClass: '.littletit',
                openListenPlayTime: false,
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        for (let i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i].querySelector('.littlebot');
                            let $status = item.querySelector('.el-progress');
                            let title = ElementObj.$allTask[i].querySelector('.elli').innerText.trim();
                            if ($status && (title.indexOf('在线作业') == -1 && title.indexOf('习题测验') == -1 && title.indexOf('Test') == -1)) {
                                resolve(i);
                                break;
                            }
                        }
                    });
                },
                listenRebortFn: () => {
                    let $cur = document.querySelector('._active.elli');
                    let $parent = $cur?.parentElement?.parentElement;
                    let $icon = $parent.querySelector('.el-icon-circle-check');
                    let txt = $cur.innerText.trim();
                    if ($icon || txt == '在线作业' || txt.indexOf('习题测验') != -1 || txt.indexOf('Test') != -1) {
                        toolOption.CtxMain.playNext();
                    }
                }
            }
        },
        sdf3: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '#classes li',
                activeClass: 'li_current_index',
                openListenPlayTime: false,
            }
        },
        dsfs: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: '#content a',
                _init() {
                    return new Promise(resolve => {
                        let timer = setInterval(() => {
                            ElementObj.$allTask = document.querySelectorAll('#content a');
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            if (ElementObj.$allTask.length) {
                                clearInterval(timer);
                                let preClassName = MyTool.getValue('preClassName');
                                if (!preClassName) {
                                    MyTool.setValue('homeUrl', location.href);
                                    ElementObj.$allTask[0].click();
                                }
                                else {
                                    for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                        let item = ElementObj.$allTask[i];
                                        if (preClassName == item.innerText.trim()) {
                                            MyTool.setValue('homeUrl', location.href);
                                            ElementObj.$allTask[i + 1].click();
                                            break;
                                        }
                                    }
                                }
                                resolve(true);
                            }
                            let btn = document.querySelector('.item-title.label h1 a');
                            if (btn && location.pathname == '/m/Exam/Student/startStudy') {
                                clearInterval(timer);
                                btn.click();
                                resolve(true);
                            }
                            if (location.pathname == '/m/Exam/Student/startStudy') {
                                clearInterval(timer);
                                toolOption.CtxMain.pdPlayFn(location.href);
                                resolve(true);
                            }
                        }, 500);
                    });
                },
                playNext(that) {
                    return new Promise(async (resolve, reject) => {
                        let til = document.querySelector('.startStudy-title>p');
                        let curClassName = til?.innerText.trim();
                        MyTool.setValue('preClassName', curClassName);
                        let $btn = document.querySelector('.bottom-pc-btn button');
                        $btn.click();
                        await sleep(2000);
                        setTimeout(() => {
                            location.reload();
                        }, 3000);
                        document.querySelector('.modal-button.modal-button-bold').click();
                    });
                }
            }
        },
        bsd11: {
            mainClass: 'CTXCommon',
            option: {
                nodeListClass: 'a.title',
                getCurrentIndexByOption() {
                    return new Promise((resolve, reject) => {
                        for (let i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.parentElement.classList.contains('active')) {
                                resolve(i);
                                break;
                            }
                        }
                    });
                }
            }
        },
        s221s: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.tab-content-desc',
                activeClass: 'desc-item-sel',
                playFn: async (that) => {
                    let studyType = await that.getVideoDom();
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    await sleep(1000);
                    ElementObj.$video.currentTime += 7200;
                    await sleep(1000);
                    ElementObj.$video.currentTime += 7200;
                    await sleep(1000);
                    that.playNext();
                }
            }
        },
        ifsbds: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.tab-content-desc',
                activeClass: 'desc-item-sel',
                _init: async () => {
                    let timer = setInterval(() => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        if (location.pathname == '/kaoshi_qnzzxy/majorlist.html') {
                            clearInterval(timer);
                            alert('请选择一个课程,点击进去');
                            return;
                        }
                        ElementObj.$allTask = document.querySelectorAll('.list-group-item');
                        if (ElementObj.$allTask.length > 0) {
                            clearInterval(timer);
                            for (let item of ElementObj.$allTask) {
                                let $status = item.querySelector('.list-group-item-text.text-muted');
                                if ($status.innerText != '学习进度:100.00%') {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.click();
                                    break;
                                }
                            }
                        }
                        if (location.pathname == '/kaoshi_qnzzxy/test.html') {
                            clearInterval(timer);
                            toolOption.CtxMain.pdPlayFn(location.href);
                        }
                    }, 500);
                },
                playNext: async (that) => {
                    location.href = MyTool.getValue('homeUrl');
                }
            }
        },
        sfps: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                openListenPlayStatus: true,
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$allTask = document.querySelectorAll('.lesson li');
                        if (ElementObj.$allTask.length) {
                            clearInterval(timer);
                            for (let item of ElementObj.$allTask) {
                                if (!item.classList.contains('history')) {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.querySelector('a').click();
                                    break;
                                }
                            }
                        }
                        if (location.pathname == '/course-section-video-play') {
                            clearInterval(timer);
                            window.alert = () => {
                            };
                            that._o1();
                        }
                    }, 200);
                },
                playNext: async (that) => {
                    window.alert = () => {
                    };
                    location.href = MyTool.getValue('homeUrl');
                },
                listenRebortFn: async () => {
                    let $checkCode = document.querySelector('#checkCode');
                    if ($checkCode.innerText) {
                        let $inputCode = document.querySelector('#inputCode');
                        $inputCode.value = $checkCode.innerText;
                        await sleep(1500);
                        document.querySelector('.Button1.Button').click();
                    }
                    window.alert = () => false;
                    if (ElementObj.$video && (ElementObj.$video.currentTime >= ElementObj.$video.duration)) {
                        toolOption.CtxMain.playNext();
                    }
                }
            }
        },
        sf1101: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: 'span.studiedLesson',
                activeClass: 'RED',
                openListenPlayStatus: true,
                async getCurrentIndex(that) {
                    for (let i = 0; i < ElementObj.$allTask.length; i++) {
                        let item = ElementObj.$allTask[i];
                        if (!item.classList.contains('studiedLessonMark')) {
                            that.currentIndex = i;
                            showTip('初始化完成,3秒后开始自动播放', 3000);
                            item.click();
                            setTimeout(() => {
                                that.pdPlayFn(location.href);
                            }, 2000);
                            break;
                        }
                    }
                    if (that.currentIndex === -1) {
                        alert('当前章节所有视频已经学习完');
                    }
                },
                videoEle: () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(() => {
                            count += 1;
                            ElementObj.$video = document.querySelector('iframe')?.contentDocument?.querySelector('video');
                            if (!!ElementObj.$video) {
                                clearInterval(Timer);
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                async listenRebortFn(that) {
                    let $btn = document.querySelector('iframe')?.contentDocument?.querySelector('#popup_panel input');
                    if ($btn) {
                        $btn.click();
                        that.play();
                    }
                },
                async playNext() {
                    location.reload();
                }
            }
        },
        usd01: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $icon = document.querySelector('.iconfont.icon-fujian');
                        if ($icon) {
                            clearInterval(timer);
                            showTip('判断此视频章节为非视频,即将自动跳过', 3000);
                            await sleep(2500);
                            that.playNext();
                            return;
                        }
                        ElementObj.$video = document.querySelector('video');
                        if (ElementObj.$video) {
                            clearInterval(timer);
                            document.querySelector('.xt_video_player_common_icon').click();
                            that._o1();
                            return;
                        }
                        if (location.pathname.indexOf('/v2/web/studentLog') != -1) {
                            clearInterval(timer);
                            let classroom_id = location.pathname.replace('/v2/web/studentLog/', '');
                            forData: for (let item of new Array(100)) {
                                let page = 0;
                                let url = `https://www.yuketang.cn/v2/api/web/logs/learn/${classroom_id}?actype=15&page=${page}&offset=20&sort=-1`;
                                let ClassData = await getClassData(url);
                                if (!ClassData.data.activities) {
                                    break;
                                }
                                let arr = ClassData.data.activities.map((item) => {
                                    return item.courseware_id;
                                });
                                let option = {
                                    cid: classroom_id,
                                    new_id: arr
                                };
                                let classStatus = await getStatus(JSON.stringify(option));
                                for (let item2 of ClassData.data.activities) {
                                    let courseware_id = item2.courseware_id;
                                    if (classStatus.data[courseware_id] && classStatus.data[courseware_id].total_done != 1) {
                                        let classUrl = `https://www.yuketang.cn/v2/web/xcloud/video-student/${classroom_id}/${item2.content.leaf_id}`;
                                        MyTool.setValue('homeUrl', location.href);
                                        location.href = classUrl;
                                        break forData;
                                    }
                                }
                                page += 1;
                            }
                        }
                    }, 500);
                    function getClassData(url) {
                        let csrftoken = document.cookie.split(';')[0].replace('csrftoken=', '');
                        return new Promise(resolve => {
                            fetch(url, {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "classroom-id": "19933500",
                                    "priority": "u=1, i",
                                    "sec-ch-ua": "\"Google Chrome\";v=\"125\", \"Chromium\";v=\"125\", \"Not.A/Brand\";v=\"24\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin",
                                    "university-id": "2760",
                                    "uv-id": "2760",
                                    "x-client": "web",
                                    "x-csrftoken": csrftoken,
                                    "xt-agent": "web",
                                    "xtbz": "ykt"
                                },
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": null,
                                "method": "GET",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.json()).then(res => resolve(res));
                        });
                    }
                    function getStatus(option) {
                        let csrftoken = document.cookie.split(';')[0].replace('csrftoken=', '');
                        return new Promise(resolve => {
                            fetch("https://www.yuketang.cn/mooc-api/v1/lms/learn/course/pub_new_pro", {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "classroom-id": "19933500",
                                    "content-type": "application/json;charset=UTF-8",
                                    "priority": "u=1, i",
                                    "sec-ch-ua": "\"Google Chrome\";v=\"125\", \"Chromium\";v=\"125\", \"Not.A/Brand\";v=\"24\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin",
                                    "university-id": "2760",
                                    "uv-id": "2760",
                                    "x-csrftoken": csrftoken,
                                    "xt-agent": "web",
                                    "xtbz": "ykt"
                                },
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": option,
                                "method": "POST",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.json()).then(res => resolve(res));
                        });
                    }
                },
                playNext: async () => {
                    showTip('✅✅✅即将切换下一个章节');
                    await sleep(2000);
                    location.href = MyTool.getValue('homeUrl');
                }
            }
        },
        sdhfks01: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.video .chapterhead.chapterhead1 li',
                activeClass: 'current',
                getCurrentIndexByOption: () => {
                    return new Promise(resolve => {
                        let $span = document.querySelector('.video_header .video_number');
                        let $num = $span.innerText.replace(/第|讲/g, '');
                        resolve(Number($num) - 1);
                    });
                },
                playNext(that) {
                    return new Promise(resolve => {
                        if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                            alert('已全部播放完');
                            return;
                        }
                        showTip('✅✅✅即将自动切换下一节');
                        let tiemr = setInterval(() => {
                            let $btn = document.querySelector('.el-message-box__btns button');
                            if ($btn) {
                                that.currentIndex += 1;
                                clearInterval(tiemr);
                                setTimeout(() => {
                                    that._o1();
                                }, 4000);
                                $btn.click();
                            }
                        }, 500);
                    });
                }
            }
        },
        s01r: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.video .chapterhead.chapterhead1 li',
                activeClass: 'current',
                openListenPlayTime: true,
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$allTask = document.querySelectorAll('.ul-course li');
                        if (location.host === 'jxjy.ahhjsoft.com' && ElementObj.$allTask) {
                            clearInterval(timer);
                            showTip('🔊🔊🔊仅支持公需课4、公需课3', 4000);
                            return;
                        }
                        ElementObj.$allTask = document.querySelectorAll('.zdBox');
                        if (location.host === 'ah.zhuanjipx.com' && ElementObj.$allTask.length) {
                            clearInterval(timer);
                            showTip('🔊🔊🔊正在初始化', 4000);
                            that.classType = 3;
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (item.classList.contains('childBox_item_on')) {
                                    that.currentIndex = i;
                                    showTip('✅✅✅初始化完成,开始播放', 2000);
                                    that._o1();
                                    break;
                                }
                            }
                            return;
                        }
                        let $parent = document.querySelectorAll('.ant-collapse-item');
                        if ($parent.length > 0) {
                            clearInterval(timer);
                            showTip('🔊🔊🔊正在初始化', 4000);
                            that.classType = 4;
                            for (let item of $parent) {
                                if (!item.classList.contains('ant-collapse-item-active')) {
                                    item.querySelector('.ant-collapse-header').click();
                                    await sleep(100);
                                }
                            }
                            ElementObj.$allTask = document.querySelectorAll('.video_box_k_t_lx');
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (item.classList.contains('video_box_k_active')) {
                                    that.currentIndex = i;
                                    showTip('✅✅✅初始化完成,开始播放', 2000);
                                    that._o1();
                                    break;
                                }
                            }
                        }
                    }, 300);
                },
                playFn: async (that) => {
                    await that.getVideoDom();
                    if (that.classType === 2 || that.classType === 3) {
                        clearInterval(that.timer);
                        clearInterval(that.listenVidoeStatusTimer);
                        clearInterval(that.listenRebortTime);
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                        setTimeout(() => {
                            ElementObj.$video.playbackRate = toolOption.accelerator;
                        }, 3000);
                        ElementObj.$video.addEventListener('ended', async () => {
                            showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                            that.playNext(that);
                        });
                        ElementObj.$video.addEventListener('pause', () => {
                            setTimeout(() => {
                                ElementObj.$video.volume = 0;
                                ElementObj.$video.play();
                            }, 1500);
                        });
                    }
                    if (that.classType === 4) {
                        await that.changeHtml($el('#video-content-box'));
                        await that.getVideoDom();
                        that.addInfo('✅✅✅✅✅✅✅✅初始化完成,即将开始播放✅✅✅✅✅✅✅✅✅');
                        await sleep(1000);
                        showTip('🔉课件正在学习,请务点击或长时间隐藏');
                        ElementObj.$video.volume = 0;
                        document.querySelector('.vjs-big-play-button')?.click();
                        ElementObj.$video.play();
                        setTimeout(async () => {
                            let videoDuration = Math.ceil(ElementObj.$video.duration);
                            if (!videoDuration) {
                                alert('视频时间错误,请刷新页面重试');
                                return;
                            }
                            let balanceTime = 0;
                            for (let item of new Array(10000)) {
                                if (balanceTime >= videoDuration) {
                                    ElementObj.$video.currentTime = videoDuration - 10;
                                    await sleep(1000);
                                    ElementObj.$video.currentTime = videoDuration;
                                    that.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                                    await sleep(3000);
                                    that.playNext();
                                    break;
                                }
                                if (item % 60 == 0 && item > 0) {
                                    ElementObj.$video.currentTime = balanceTime;
                                }
                                balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                                that.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                                await sleep(1000);
                            }
                        }, 2000);
                    }
                },
                async playNext(that) {
                    location.reload();
                }
            }
        },
        hsduf: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.menu_body dd',
                activeClass: 'active',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $nav = document.querySelector('#a2');
                        if (!!$nav) {
                            clearInterval(timer);
                            $nav.click();
                            await MyTool.sleep(2500);
                            let $parents = document.querySelectorAll('li[data-trainid]');
                            for (let i = 0; i < $parents.length; i++) {
                                let item = $parents[i];
                                MyTool.setValue('homeUrl', location.href);
                                setTimeout(() => {
                                    window.close();
                                }, 20 * 1000);
                                item.querySelector('a').click();
                            }
                        }
                        ElementObj.$allTask = document.querySelectorAll('.menu_body dd');
                        if (ElementObj.$allTask.length > 0) {
                            clearInterval(timer);
                            let isFinish = true;
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (!item.classList.contains('active')) {
                                    isFinish = false;
                                    that.currentIndex = i;
                                    if (!item.classList.contains('hover')) {
                                        item.querySelector('a').click();
                                    }
                                    showTip('✅✅✅正在初始化', 3000);
                                    that._o1();
                                    break;
                                }
                            }
                            if (isFinish) {
                                let homeurl = MyTool.getValue('homeUrl') || 'https://www.ejxjy.com/a/sys/portal/person';
                                location.href = homeurl;
                            }
                        }
                    }, 300);
                },
                openListenPlayTime: true,
                async playNext() {
                    location.reload();
                },
                playFn: async (that) => {
                    await that.getVideoDom();
                    await that.changeHtml(ElementObj.$video.parentElement);
                    let videoDuration = Math.ceil(ElementObj.$video.duration);
                    let balanceTime = 0;
                    let $id = await getStudentRuleId();
                    if (!$id || !videoDuration) {
                        showTip('视频时间错误,请刷新页面重试');
                        location.reload();
                        return;
                    }
                    setInterval(() => {
                        let jbox = document.querySelector('.jbox-button-focus');
                        jbox?.click();
                    }, 300);
                    let videoTime = ElementObj.$video.duration;
                    for (let item of new Array(10000)) {
                        let res = await saveData(balanceTime, videoTime, $id);
                        if (res != false) {
                            if (balanceTime >= videoDuration) {
                                that.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                                await sleep(3000);
                                that.playNext(that);
                                break;
                            }
                        }
                        if (res.data == 'success') {
                            balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                        }
                        that.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                        await sleep(500);
                    }
                    function saveData(time, videoTime, id) {
                        return new Promise(resolve => {
                            try {
                                fetch(`https://www.ejxjy.com/a/onlinelearn/stuCourse/saveVideo?id=${id}`, {
                                    "headers": {
                                        "accept": "*/*",
                                        "accept-language": "zh-CN,zh;q=0.9",
                                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                                        "priority": "u=0, i",
                                        "sec-ch-ua": "\"Google Chrome\";v=\"125\", \"Chromium\";v=\"125\", \"Not.A/Brand\";v=\"24\"",
                                        "sec-ch-ua-mobile": "?0",
                                        "sec-ch-ua-platform": "\"Windows\"",
                                        "sec-fetch-dest": "empty",
                                        "sec-fetch-mode": "cors",
                                        "sec-fetch-site": "same-origin",
                                        "x-requested-with": "XMLHttpRequest"
                                    },
                                    "referrerPolicy": "strict-origin-when-cross-origin",
                                    "body": `nowTime=${time}&videoTime=${videoTime}`,
                                    "method": "POST",
                                    "mode": "cors",
                                    "credentials": "include"
                                }).then(res => res.json()).then(res => resolve(res));
                            }
                            catch (e) {
                                resolve(false);
                            }
                        });
                    }
                    function getStudentRuleId() {
                        return new Promise(resolve => {
                            fetch(location.href, {
                                "headers": {
                                    "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "priority": "u=0, i",
                                    "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "document",
                                    "sec-fetch-mode": "navigate",
                                    "sec-fetch-site": "same-origin",
                                    "sec-fetch-user": "?1",
                                    "upgrade-insecure-requests": "1"
                                },
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": null,
                                "method": "GET",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.text()).then(res => {
                                let $id = res.match(/saveVideo\?id=(.+)"/)?.[1];
                                resolve($id);
                            });
                        });
                    }
                },
            }
        },
        pa1: {
            mainClass: "CTXCommon",
            option: {
                activeClass: '',
                nodeListClass: '',
                _init: async (that) => {
                    let timer = setInterval(() => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $nav = document.querySelectorAll('.navItem');
                        if ($nav.length > 0) {
                            if (!$nav[1].querySelector('span')?.classList.contains('active')) {
                                $nav[1].click();
                            }
                        }
                        ElementObj.$parentNodes = document.querySelector('iframe')?.contentDocument?.querySelectorAll('.itemList .contentItem');
                        if (ElementObj.$parentNodes.length > 0) {
                            clearInterval(timer);
                            for (let item of ElementObj.$parentNodes) {
                                if (!!item.querySelector('.ready')) {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.querySelector('a').click();
                                    break;
                                }
                            }
                            return;
                        }
                        ElementObj.$allTask = document.querySelectorAll('.listGroup .listItem');
                        if (ElementObj.$allTask.length > 0) {
                            clearInterval(timer);
                            let isDone = true;
                            for (let item of ElementObj.$allTask) {
                                let status = item.querySelector('button');
                                if (status.innerText === '未学习') {
                                    isDone = false;
                                    setTimeout(() => {
                                        that._o1();
                                    }, 3000);
                                    item.querySelector('.text').click();
                                    break;
                                }
                            }
                            if (isDone) {
                                location.href = MyTool.getValue('homeUrl') || 'https://aqscpx.91huayi.com/Exercise/ExerciseHome/index';
                            }
                            return;
                        }
                    }, 500);
                }
            }
        },
        bj1: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$parentNodes = document.querySelectorAll('.iv-personal-course-content li');
                        if (ElementObj.$parentNodes.length) {
                            clearInterval(timer);
                            forData: for (let item of new Array(2)) {
                                for (let i = 0; i < ElementObj.$parentNodes.length; i++) {
                                    let $li = ElementObj.$parentNodes[i];
                                    let status = $li.querySelector('.ivu-progress-text span').innerText;
                                    if (parseInt(status) != 100) {
                                        MyTool.setValue('homeUrl', location.href);
                                        $li.querySelectorAll('.iv-course-myClass span')[1].click();
                                        break forData;
                                    }
                                }
                                let $nextBtn = document.querySelector('.iv-page-next');
                                $nextBtn.click();
                                showTip('🔊正在切换下一页...', 3000);
                                await sleep(3000);
                            }
                            return;
                        }
                        ElementObj.$allTask = document.querySelector('.iv-course-play-detail-menu-item')?.querySelectorAll('li');
                        if (ElementObj.$allTask.length > 0) {
                            clearInterval(timer);
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                let status = item.querySelector('.iv-fs-12').innerText;
                                if (parseInt(status) != 100) {
                                    that.currentIndex = i;
                                    item.click();
                                    showTip('✅✅✅正在初始化', 3000);
                                    setTimeout(() => {
                                        that._o1();
                                    }, 3000);
                                    break;
                                }
                            }
                        }
                    }, 300);
                },
                async playNext(that) {
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        let homeurl = MyTool.getValue('homeUrl') || 'https://bjce.bjdj.gov.cn/#/personalSpace/MyCourse';
                        window.open(homeurl);
                        window.close();
                        return;
                    }
                    that.currentIndex += 1;
                    let $nextBtn = ElementObj.$allTask[that.currentIndex];
                    $nextBtn?.click();
                    setTimeout(() => {
                        that._o1();
                    }, 2000);
                }
            }
        },
        sd2: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.numCHapter',
                activeClass: 'active',
            }
        },
        sfd9: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.videoList .item',
                activeClass: 'active',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $iframe = document.querySelector('iframe');
                        if (location.host === 'jxzj.zpwedu.com' && $iframe) {
                            location.href = $iframe.src;
                        }
                        ElementObj.$allTask = document.querySelectorAll('.videoList .item');
                        if (ElementObj.$allTask.length > 0 && location.host === 'jxzjstu.zpwedu.com') {
                            clearInterval(timer);
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                let statusDom = item.querySelectorAll('div>div')[2];
                                let num = /\((.+)\)/.exec(statusDom.innerText)[1];
                                console.log('初始化num==>>', num);
                                if (num != '100%') {
                                    if (!item.classList.contains('active')) {
                                        item.click();
                                    }
                                    showTip('✅✅✅初始化完成,3秒后自动播放', 3000);
                                    that.currentIndex = i;
                                    setTimeout(() => {
                                        that._o1();
                                    }, 2000);
                                    break;
                                }
                            }
                        }
                    }, 300);
                },
                beforePlayVideo() {
                    let $volumeon = document.querySelector('.pv-icon-volumeon');
                    $volumeon?.click();
                },
                beforePlayNext(that) {
                    let statusDom = document.querySelector('.item.active')?.querySelectorAll('div>div')[2];
                    let num = /\((.+)\)/.exec(statusDom.innerText)[1];
                    if (num != '100%') {
                        location.reload();
                    }
                },
                listenRebortFn() {
                    let statusDom = document.querySelector('.item.active')?.querySelectorAll('div>div')[2];
                    let num = /\((.+)\)/.exec(statusDom.innerText)[1];
                    console.log('num==>>', num);
                    if (num == '100%') {
                        location.reload();
                    }
                }
            }
        },
        hds1: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.ml.tab-info a',
                activeClass: 'dd_active',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $parentNodes = document.querySelectorAll('.content_unit');
                        if ($parentNodes.length) {
                            clearInterval(timer);
                            forData: for (let item of $parentNodes) {
                                item.click();
                                await MyTool.sleep(2000);
                                let $cf06 = document.querySelector('.note>p').innerText;
                                if ($cf06.indexOf('恭喜您已完成') > -1)
                                    continue;
                                let $tr = document.querySelectorAll('#watchcourseTable tbody tr');
                                for (let item of $tr) {
                                    let td5 = item.querySelectorAll('td')[5];
                                    let td6 = item.querySelectorAll('td')[6];
                                    if ((td5.innerText.trim() != td6.innerText.trim()) && td6.innerText.trim() != '已完成') {
                                        let $open = item.querySelector('.studyBegin');
                                        $open.click();
                                        await MyTool.sleep(2000);
                                        document.querySelector('.layui-layer-btn1')?.click();
                                        await MyTool.sleep(1000);
                                        ElementObj.$allTask = document.querySelectorAll("#Div_CourseProgress tr:not([style])");
                                        for (let task of ElementObj.$allTask) {
                                            let status = task.querySelector('.fa6').innerText;
                                            if (status != '100%') {
                                                MyTool.deleteValue('learnStatus');
                                                let url = task.querySelector('.star').href;
                                                MyTool.openInTab(url);
                                                GM_addValueChangeListener('learnStatus', (key, oldValue, newValue, remote) => {
                                                    if (newValue === 'done') {
                                                        MyTool.deleteValue('learnStatus');
                                                        location.reload();
                                                    }
                                                });
                                                break forData;
                                            }
                                        }
                                    }
                                }
                            }
                            return;
                        }
                        ElementObj.$video = document.querySelector('video');
                        if (ElementObj.$video) {
                            clearInterval(timer);
                            showTip('✅✅✅初始化完成,3秒后自动播放', 3000);
                            that.pdPlayFn(location.href);
                        }
                    }, 300);
                },
                async playNext() {
                    MyTool.setValue('learnStatus', 'done');
                    await sleep(1000);
                    window.close();
                },
                listenRebortFn() {
                    let $abtn = document.querySelector('a.btn-ProofOk');
                    $abtn?.click();
                }
            }
        },
        asds1: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$video = document.querySelector('video');
                        if (ElementObj.$video) {
                            clearInterval(timer);
                            let $wrap = document.querySelector('.rightcontent') || ElementObj.$video.parentElement;
                            await that.changeHtml($wrap);
                            that.addInfo('正在获取token...');
                            let token = dsf.getToken();
                            that.addInfo(`✅✅✅token:${token}`);
                            that.addInfo('正在获取课程列表...');
                            let courseId = location.href.match(/id=(.+)/)[1];
                            let tasks = [];
                            let businessId;
                            if (location.href.indexOf('commonpage/classcolumn') != -1) {
                                that.addInfo('正在获取parents');
                                let parentData = await getParentList(courseId, token);
                                fordata: for (let parent2 of parentData.data) {
                                    that.addInfo(`【${parent2.name}】`);
                                    for (let item of parent2.subList) {
                                        that.addInfo(`正在获取${item.name}的课程,已完成进度${item.progress}`);
                                        if (item.progress > 95)
                                            continue;
                                        let taskData = await getCourseList(item.businessId, token);
                                        let arr = taskData.data.playTree.children.map((_item) => {
                                            return {
                                                ..._item,
                                                businessId: item.businessId
                                            };
                                        });
                                        tasks.push(...arr);
                                        break fordata;
                                    }
                                }
                            }
                            else {
                                let taskData = await getCourseList(courseId, token);
                                tasks.push(...taskData.data.playTree.children);
                            }
                            that.addInfo('✅✅✅课程列表获取成功');
                            for (let item of tasks) {
                                if (item.finishedRate >= 100)
                                    continue;
                                that.addInfo(`即将开始学习${item.title}`);
                                courseId = location.href.indexOf('commonpage/classcolumn') != -1 ? item.businessId : courseId;
                                let option = {
                                    courseId: courseId,
                                    coursewareId: item.id,
                                    watchPoint: '00:01:11',
                                    pulseTime: 10,
                                    pulseRate: 1,
                                    realWatchTime: '00:01:06',
                                };
                                localStorage.setItem('fetchOption', JSON.stringify(option));
                                localStorage.setItem('token', token);
                                await that._o1();
                                break;
                            }
                        }
                    }, 900);
                    function getCourseList(courseId, token) {
                        return new Promise((resolve, reject) => {
                            let url = `${location.origin}/inc/nc/course/play/getPlayTrend`;
                            let url2 = `${location.origin}/inc/nc/course/play/getPlayTrend`;
                            fetch(`${url2}?courseId=${courseId}`, {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "authorization_token": token,
                                    "client": "pc",
                                    "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin"
                                },
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": null,
                                "method": "GET",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.json()).then(res => resolve(res));
                        });
                    }
                    function getParentList(courseId, token) {
                        return new Promise((resolve, reject) => {
                            let url = `${location.origin}/nc/pack/channel/course/list`;
                            let url2 = `${location.origin}/nc/pack/channel/course/list`;
                            fetch(`${url2}?id=${courseId}`, {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "authorization_token": token,
                                    "client": "pc",
                                    "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin"
                                },
                                "referrer": `${location.origin}/page.html`,
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": null,
                                "method": "GET",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.json()).then(res => resolve(res));
                        });
                    }
                },
                playFn: async (that) => {
                    let option = localStorage.getItem('fetchOption');
                    option = JSON.parse(option);
                    let token = localStorage.getItem('token');
                    for (let item of new Array(10000)) {
                        that.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,(中途关闭进度不保存)`);
                        let res = await saveData();
                        that.addInfo(`已学习${res.data.finishedRate}%`);
                        if (res.data.finishedRate >= 100) {
                            location.reload();
                            break;
                        }
                        await sleep(1000);
                    }
                    function saveData() {
                        let url = `${location.origin}/inc/nc/course/play/pulseSaveRecord`;
                        return new Promise(resolve => {
                            fetch(`${url}`, {
                                "headers": {
                                    "accept": "application/json, text/plain, */*",
                                    "accept-language": "zh-CN,zh;q=0.9",
                                    "authorization_token": token,
                                    "client": "pc",
                                    "content-type": "application/x-www-form-urlencoded;charset=UTF-8",
                                    "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
                                    "sec-ch-ua-mobile": "?0",
                                    "sec-ch-ua-platform": "\"Windows\"",
                                    "sec-fetch-dest": "empty",
                                    "sec-fetch-mode": "cors",
                                    "sec-fetch-site": "same-origin"
                                },
                                "referrer": `${location.origin}/page.html`,
                                "referrerPolicy": "strict-origin-when-cross-origin",
                                "body": `courseId=${option.courseId}&coursewareId=${option.coursewareId}&watchPoint=00%3A06%3A19&pulseTime=10&pulseRate=2&realWatchTime=00%3A02%3A33`,
                                "method": "POST",
                                "mode": "cors",
                                "credentials": "include"
                            }).then(res => res.json()).then(res => resolve(res));
                        });
                    }
                }
            },
        },
        sdfs: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.n-collapse-transition .cursor-pointer',
                activeClass: 'bg-[#1C2630]',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                _init: async (that) => {
                    let timer = setInterval(() => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$parentNodes = document.querySelectorAll('.items-center.justify-between.border-solid');
                        if (ElementObj.$parentNodes.length > 0) {
                            clearInterval(timer);
                            showTip('正在初始化');
                            for (let item of ElementObj.$parentNodes) {
                                if (!item.nextSibling.childNodes.length) {
                                    item.click();
                                }
                            }
                            ElementObj.$allTask = document.querySelectorAll('.n-collapse-transition .cursor-pointer');
                            that.getCurrentIndex();
                        }
                    }, 500);
                }
            }
        },
        yrt5: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.n-collapse-transition .cursor-pointer',
                activeClass: 'bg-[#1C2630]',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                _init: async (that) => {
                    let timer = setInterval(() => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $parentNodes = document.querySelectorAll('ul>li');
                        if ($parentNodes.length && location.pathname.indexOf('/plan/courses') != -1) {
                            clearInterval(timer);
                            for (let item of $parentNodes) {
                                let status = item.querySelector('.CourseList_per_1kb87BEO');
                                if (status.innerText != '100%') {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.querySelectorAll('button')[1].click();
                                    break;
                                }
                            }
                        }
                        ElementObj.$allTask = document.querySelectorAll('.AsideChapter_Item_2dfPMpnP');
                        if (ElementObj.$allTask.length) {
                            clearInterval(timer);
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (item.querySelector('.AsideChapter_ItemState_2nxPLU4r')) {
                                    that.currentIndex = i;
                                    that._o1();
                                    break;
                                }
                            }
                        }
                    }, 500);
                },
                async playNext(that) {
                    if (that.currentIndex >= ElementObj.$allTask.length - 1) {
                        let homeurl = MyTool.getValue('homeUrl');
                        window.open(homeurl);
                        return;
                    }
                    that.currentIndex += 1;
                    ElementObj.$allTask[that.currentIndex]?.click();
                    setTimeout(() => {
                        that._o1();
                    }, 2000);
                },
            }
        },
        hf01: {
            mainClass: "CTXCommon",
            apis: {
                coursefind: (studentCourseId) => {
                    return new Promise(resolve => {
                        fetch(`https://www.secxm.com/api/student/course/find/${studentCourseId}?page=1&size=10000`, {
                            "headers": {
                                "accept": "application/json, text/plain, */*",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "authorization": "Bearer 12fe24bac5d14dcf8a5509b979a21eaa",
                                "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": null,
                            "method": "GET",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => resolve(res));
                    });
                },
                appendHours: (option) => {
                    return new Promise(resolve => {
                        fetch("https://www.secxm.com/api/student/appendHours", {
                            "headers": {
                                "accept": "application/json, text/plain, */*",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "authorization": "Bearer 12fe24bac5d14dcf8a5509b979a21eaa",
                                "content-type": "application/json",
                                "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin"
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": option,
                            "method": "POST",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => resolve(res));
                    });
                }
            },
            option: {
                nodeListClass: '',
                activeClass: '',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        let $wrap = document.querySelector('.video-lt');
                        if (location.pathname === '/courseintroduction' && $wrap) {
                            clearInterval(timer);
                            let studentCourseId = /id=(.+)&loopPlay/.exec(location.href)[1];
                            let course = await _i1.hf01.apis.coursefind(studentCourseId);
                            $wrap.style.position = 'relative';
                            await that.changeHtml($wrap);
                            forData: for (let i = 0; i < course.result.elements.length; i++) {
                                for (let item of course.result.elements[i].subContentTemplate) {
                                    if (item.totalClassHours < item.duration) {
                                        that.addInfo('即将进行未完成课程', item.title);
                                        localStorage.setItem('itemdata', JSON.stringify(item));
                                        await that._o1(that);
                                    }
                                    await MyTool.sleep(1000);
                                }
                            }
                        }
                    }, 500);
                },
                async playFn(that) {
                    let itemdata = localStorage.getItem('itemdata');
                    if (!itemdata) {
                        return alert('参数错误 #1');
                    }
                    itemdata = JSON.parse(itemdata);
                    let totalClassHours = itemdata.totalClassHours || 0;
                    let option = {
                        studentCourseId: '',
                        contentId: itemdata.id,
                        duration: 180
                    };
                    option.studentCourseId = /id=(.+)&loopPlay/.exec(location.href)[1];
                    for (let item of new Array(1000)) {
                        that.addInfo(`已成功学习${totalClassHours}秒,当前任务需完成${itemdata.duration}秒`);
                        if (totalClassHours >= itemdata.duration) {
                            that.addInfo(`🎉🎉🎉【${itemdata.title}】,学习完成🎉🎉🎉`);
                            break;
                        }
                        let course = await _i1.hf01.apis.appendHours(JSON.stringify(option));
                        totalClassHours += 180;
                        await MyTool.sleep(1000);
                    }
                }
            }
        },
        qf01: {
            mainClass: "CTXCommon",
            apis: {
                appendHours: (option) => {
                    return new Promise(resolve => {
                        MyTool.axfedata({
                            method: 'GET',
                            url: `https://www.gsgbpx.cn/course/saveCoursewareRecord.do?${option}`,
                            headers: {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "sec-ch-ua": "\"Google Chrome\";v=\"129\", \"Not=A?Brand\";v=\"8\", \"Chromium\";v=\"129\"",
                                "sec-ch-ua-mobile": "?0",
                                "sec-ch-ua-platform": "\"Windows\"",
                                "sec-fetch-dest": "empty",
                                "sec-fetch-mode": "cors",
                                "sec-fetch-site": "same-origin",
                                "x-requested-with": "XMLHttpRequest"
                            }
                        }).then(res => resolve(res));
                    });
                }
            },
            option: {
                nodeListClass: '',
                activeClass: '',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                _init: async (that) => {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$parentNodes = document.querySelectorAll('#courseResouse ul li>div');
                        if (ElementObj.$parentNodes.length) {
                            clearInterval(timer);
                            for (let item of ElementObj.$parentNodes) {
                                let status = item.querySelector('.learned-section-num').innerText;
                                if (status != '100.00%') {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.querySelector('button').click();
                                    break;
                                }
                            }
                        }
                        let $wrap = document.querySelector('.coursePanelRight');
                        if (location.pathname === '/course/studycourseware.do' && $wrap) {
                            clearInterval(timer);
                            $wrap.style.position = 'relative';
                            await that.changeHtml($wrap);
                            await that._o1(that);
                        }
                    }, 500);
                },
                async playFn(that) {
                    let totalClassHours = 0;
                    let ID = /COURSEWAREID=(.+)&FILENAME/.exec(location.href)[1];
                    let TCID = /TCID=(.+)/.exec(location.href)[1];
                    let option = `ID=${ID}&studyTime=60&TIMEPOINT=${totalClassHours}&jsp=true&LENGTH=1&CHAPTER=1&STUDYSTATUS=incomplete&task=continuestudy&TCID=${TCID}`;
                    for (let item of new Array(1000)) {
                        totalClassHours += 60;
                        let result = await _i1.qf01.apis.appendHours(option);
                        that.addInfo(`已成功学习${60}秒,当前任务已完成${result.msg}%`);
                        if (parseInt(result.msg) >= 100) {
                            that.addInfo(`🎉🎉🎉当前视频学习完成🎉🎉🎉`);
                            await MyTool.sleep(1000);
                            that.playNext();
                            break;
                        }
                        await MyTool.sleep(1000);
                    }
                },
                async playNext() {
                    location.href = MyTool.getValue('homeUrl');
                }
            }
        },
        sf93: {
            mainClass: "CTXCommon",
            apis: {
                reportCourseStudyProgress: (option) => {
                    return new Promise(resolve => {
                        fetch("http://media.lllnet.cn/media/reportCourseStudyProgress", {
                            "headers": {
                                "accept": "*/*",
                                "accept-language": "zh-CN,zh;q=0.9",
                                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                                "x-requested-with": "XMLHttpRequest"
                            },
                            "referrer": "http://media.lllnet.cn/media/accessCourseInfo",
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": option,
                            "method": "POST",
                            "mode": "cors",
                            "credentials": "include"
                        }).then(res => res.json()).then(res => resolve(res));
                    });
                }
            },
            option: {
                nodeListClass: '',
                activeClass: '',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                async _init(that) {
                    let timer = setInterval(async () => {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$allTask = document.querySelectorAll('#contents_list a');
                        if (ElementObj.$allTask.length) {
                            window.alert = () => {
                            };
                            clearInterval(timer);
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (item.classList.contains('current')) {
                                    that.currentIndex = i;
                                    await that._o1(that);
                                    break;
                                }
                            }
                        }
                    }, 500);
                },
                async playFn(that) {
                    await that.getVideoDom();
                    let $wrap = ElementObj.$video.parentElement;
                    await that.changeHtml($wrap);
                    ElementObj.$video.pause();
                    that.addInfo(`初始化已完成,5秒后 即将开始学习`);
                    await MyTool.sleep(5000);
                    let position = 0;
                    let sessionTime = 6;
                    let totalClassHours = ElementObj.$video.duration;
                    for (let item of new Array(1000)) {
                        position += sessionTime;
                        if (position >= totalClassHours) {
                            position = totalClassHours;
                        }
                        let option = `courseId=${courseId}&gradeId=${gradeId}&userId=${userId}&coursewareId=${coursewareId}&unameSN=${unameSN}&orgName=gclc-gzdk&position=${position}&sessionTime=${sessionTime}`;
                        let result = await _i1.sf93.apis.reportCourseStudyProgress(option);
                        if (result.code == 200) {
                            that.addInfo(`本次保存${sessionTime}秒, 累计已完成${position / 60}分钟,需累计完成${totalClassHours}秒`);
                        }
                        else {
                            that.addInfo('本次未能成功保存,将自动再次保存');
                            position -= sessionTime;
                        }
                        if (position >= totalClassHours) {
                            that.addInfo(`🎉🎉🎉当前视频学习完成🎉🎉🎉`);
                            await MyTool.sleep(1000);
                            that.playNext();
                            break;
                        }
                        await MyTool.sleep(3000);
                    }
                },
            }
        },
        tskf: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.course_li',
                activeClass: 'videoListCur',
                openListenPlayStatus: false,
                openListenPlayTime: false,
                nextClass: 'a',
                async _init(that) {
                    let timer = setInterval(async () => {
                        ElementObj.$allTask = document.querySelectorAll('.course_li');
                        if (ElementObj.$allTask.length) {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            if (location.href.indexOf('coursewareid') == -1) {
                                ElementObj.$allTask[0].querySelector('a').click();
                                return;
                            }
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                let status = item.querySelector('.study');
                                if (!status) {
                                    that.currentIndex = i;
                                    if (!item.classList.contains('videoListCur')) {
                                        item.querySelector('a').click();
                                        break;
                                    }
                                    await that._o1(that);
                                    break;
                                }
                            }
                        }
                    }, 500);
                },
                async playFn(that) {
                    let studyType = await that.getVideoDom();
                    await that.changeHtml(ElementObj.$video.parentElement);
                    if (studyType == 1) {
                        let end = Math.trunc(ElementObj.$video.duration);
                        that.addInfo('🔊🔊🔊正在获取参数');
                        let course_id = /courseID=(.+)&coursewareid/.exec(location.href)[1];
                        let courseware_id = /coursewareid=(.+)&MyView/.exec(location.href)[1];
                        let student_id;
                        if (document.cookie.split(',')[0].indexOf('student_id') != -1) {
                            student_id = /student_id=([0-9]+)/.exec(document.cookie.split(',')[0])[1];
                        }
                        else {
                            student_id = /[0-9]+/.exec(document.cookie.split(',')[1].split(';')[3].split('&')[0])[0];
                        }
                        that.addInfo('🔊🔊🔊正在请求数据');
                        await fetch(`${location.origin}/VideoPlay/StudySurvey`, {
                            "headers": {
                                "accept": "*/*",
                                "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                            },
                            "referrerPolicy": "strict-origin-when-cross-origin",
                            "body": `course_id=${course_id}&courseware_id=${courseware_id}&start=0&end=${end}&student_id=${student_id}&project_id=&course_type=1`,
                            "method": "POST",
                            "mode": "cors",
                            "credentials": "include"
                        });
                        that.addInfo('✅✅✅StudySurvey请求完成');
                        that.addInfo('🔊🔊🔊正在等待响应');
                        for (let i of new Array(26)) {
                            await MyTool.sleep(1000);
                            that.addInfo('⚠⚠⚠正在等待系统请求updateStudyStatue2,请勿关闭此页面, 预计25秒');
                        }
                    }
                    that.playNext();
                }
            }
        },
        hgs01: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                async _init(that) {
                    let timer = setInterval(async () => {
                        ElementObj.$allTask = document.querySelectorAll('ul li');
                        if (ElementObj.$allTask.length && location.pathname == '/admin/lock/Study') {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (!item.querySelector('.layui-icon-ok-circle')) {
                                    that.currentIndex = i;
                                    if (!item.classList.contains('list')) {
                                        item.click();
                                        await sleep(2000);
                                    }
                                    break;
                                }
                            }
                            await sleep(1000);
                            document.querySelector('.layui-layer-btn0')?.click();
                            that._o1(that);
                        }
                        ElementObj.$parentNodes = document.querySelectorAll('.learnTree_second li');
                        if (ElementObj.$parentNodes.length && location.pathname == '/online/learn') {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            for (let i = 0; i < ElementObj.$parentNodes.length; i++) {
                                let item = ElementObj.$parentNodes[i];
                                if (!item.querySelector('p').classList.contains('complete')) {
                                    if (!item.classList.contains('secondActive')) {
                                        item.click();
                                        await sleep(2000);
                                    }
                                    setTimeout(() => {
                                        window.close();
                                    }, 10 * 1000);
                                    MyTool.setValue('homeUrl', location.href);
                                    document.querySelector('.toStudy').click();
                                    break;
                                }
                            }
                        }
                    }, 500);
                },
                async listenRebortFn(that) {
                    document.querySelector('.layui-layer-btn0')?.click();
                    let time = document.querySelector('.time')?.innerText;
                    if (time?.indexOf('已达到最低完成时间') != -1) {
                        location.href = MyTool.getValue('homeUrl');
                    }
                    let ipt = document.querySelector('.layui-layer-content input');
                    if (ipt) {
                        ipt.value = ipt.getAttribute('data-num3');
                        await sleep(500);
                        document.querySelector('.layui-layer-btn0')?.click();
                    }
                },
                beforePlayNext(that) {
                    let time = document.querySelector('.time')?.innerText;
                    if (time?.indexOf('已达到最低完成时间') != -1) {
                        location.href = MyTool.getValue('homeUrl');
                    }
                },
            }
        },
        hgs02: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                async _init(that) {
                    let timer = setInterval(async () => {
                        ElementObj.$parentNodes = document.querySelectorAll('.mozs_list>li');
                        if (ElementObj.$parentNodes.length) {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            for (let i = 0; i < ElementObj.$parentNodes.length; i++) {
                                let item = ElementObj.$parentNodes[i];
                                let status = item.querySelector('.jdt_bar').innerText.match(/[0-9]+/)[0];
                                if (status != 100) {
                                    MyTool.setValue('homeUrl', location.href);
                                    document.querySelector('.qd_but').click();
                                    break;
                                }
                            }
                        }
                        ElementObj.$allTask = document.querySelectorAll('.lcml_djj_list>li');
                        if (ElementObj.$allTask.length && location.pathname == '/p/classroom/simple') {
                            clearInterval(timer);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                if (item.classList.contains('on')) {
                                    that.currentIndex = i;
                                    that._o1(that);
                                }
                            }
                        }
                    });
                },
                videoEle: () => {
                    return new Promise(resolve => {
                        let count = 0;
                        let Timer = setInterval(async () => {
                            count += 1;
                            let start = document.querySelector('.xgplayer-start');
                            if (start) {
                                clearInterval(Timer);
                                document.querySelectorAll('.xgplayer-icon')[2].click();
                                start.click();
                                await sleep(3000);
                                ElementObj.$video = document.querySelector('video');
                                resolve(1);
                                return;
                            }
                            if (count >= 7) {
                                clearInterval(Timer);
                                resolve(2);
                            }
                        }, 1000);
                    });
                },
                beforePlayNext(that) {
                    if (that.currentIndex == ElementObj.$allTask.length - 1) {
                        location.href = MyTool.getValue('homeUrl');
                    }
                }
            }
        },
        uasf: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                async _init(that) {
                    let timer = setInterval(async () => {
                        try {
                            ElementObj.$nextBtn = document.querySelectorAll('iframe')[1].contentDocument.querySelector('frame').contentDocument.querySelector('#btnNext');
                            if (ElementObj.$nextBtn) {
                                clearInterval(timer);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                that._o1(that);
                            }
                        }
                        catch (e) { }
                    }, 500);
                },
                async playFn(that) {
                    let doc = document.querySelectorAll('iframe')[1].contentDocument.querySelectorAll('frame')[1].contentDocument;
                    let wrap = doc.querySelector('tbody');
                    await that.changeHtml(wrap, doc);
                    let interval = setInterval(async () => {
                        try {
                            let status = doc.querySelector('td[id]').innerText;
                            that.addInfo(status, 1, doc);
                            if (status && status.indexOf('已经学习完毕') != -1) {
                                clearInterval(interval);
                                setTimeout(() => {
                                    that._o1(that);
                                }, 2000);
                                ElementObj.$nextBtn.click();
                            }
                        }
                        catch (e) { }
                    }, 1000);
                },
            }
        },
        uiw01: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                async _init(that) {
                    let timer = setInterval(async () => {
                        if (location.pathname == '/IndexMain.aspx') {
                            let doc = document.querySelectorAll('iframe')[1].contentDocument;
                            let $per = doc?.querySelector('#AspNetPager1>div');
                            if ($per && doc) {
                                clearInterval(timer);
                                ElementObj.$handleSpeedUp.style.display = 'none';
                                console.log(11111111);
                                forData: for (let item of $per.children) {
                                    ElementObj.$allTask = doc.querySelectorAll('.table_all');
                                    console.log('ElementObj.$allTask==>>', ElementObj.$allTask);
                                    for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                        if (i === 0)
                                            continue;
                                        let c = ElementObj.$allTask[i];
                                        if (c.querySelector('td[width="232"]').innerText.indexOf('已完成') == -1) {
                                            MyTool.setValue('homeUrl', location.href);
                                            c.querySelector('.xx_ben>a').click();
                                            break forData;
                                        }
                                    }
                                    item.click();
                                    await sleep(2000);
                                }
                            }
                        }
                        if (location.pathname == '/Student/CoursePlay.aspx') {
                            clearInterval(timer);
                            that._o1(that);
                        }
                    }, 500);
                },
                listenRebortFn(that) {
                },
                beforePlayNext(that) {
                    location.href = MyTool.getValue('homeUrl');
                }
            }
        },
        sfgd: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '.chapterList>li',
                activeClass: 'active',
                listenRebortFn(that) {
                    document.querySelector('.pauseBg')?.click();
                }
            }
        },
        ojisa: {
            mainClass: "CTXCommon",
            option: {
                nodeListClass: '',
                activeClass: '',
                nextClass: 'span',
                async _init(that) {
                    let timer = setInterval(async () => {
                        ElementObj.$allTask = document.querySelectorAll('.courseMenuList>li');
                        if (ElementObj.$allTask.length) {
                            clearInterval(timer);
                            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                                let item = ElementObj.$allTask[i];
                                let status = item.querySelector('.f-right').innerText.trim();
                                if (status !== '100%') {
                                    that.currentIndex = i;
                                    if (!item.classList.contains('active')) {
                                        item.querySelector('span')?.click();
                                        await MyTool.sleep(1000);
                                    }
                                    showTip(`✅✅✅初始化完成,请手动点击一次加速`, 3000);
                                    break;
                                }
                            }
                        }
                    }, 500);
                },
                listenRebortFn(that) {
                    document.querySelector('.el-message-box__wrapper .el-button--danger')?.click();
                },
            }
        },
    };
    let speedArr = [1, 2, 3, 5, 10, 16];
    let toolOption = {
        accelerator: 1,
        CtxMain: null,
        SchoolType: -1
    };
    const version = '6.1.0.2';
    let _bt = 'https://www.gaozhiwang.top';
    let _b = 'http://47.115.205.88:7001';
    MyTool.registerMenuCommand('📥更新版本', 'u', () => {
        window.open("http://public.gaozhiwang.top/public/index.user.js");
    });
    class Main {
        constructor() {
            this.studentType = 1;
            this.speedStatus = 0;
            this.isAdaptive = 1;
            this.listenVidoeStatusTimer = null;
            this.fingerprint = null;
            this.toolkey = null;
            this.init();
        }
        init() {
            setTimeout(async () => {
                try {
                    this.toolkey = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
                    this._rn();
                }
                catch (e) {
                    console.log('#2', e);
                }
            }, 2500);
        }
        updateSpeedElement(num) {
            if (this.speedStatus == 0)
                return;
            ElementObj.$video.playbackRate = num;
        }
        async _o1(callback, isOpenListen = true) {
            let key = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
            if (!key) {
                alert('请先购买key');
                window.open(_bt);
            }
            console.log('_o1====toolOption.CtxMain==>>', !toolOption.CtxMain);
            if (!toolOption.CtxMain) {
                location.reload();
            }
            let r = await axfedata({
                method: 'GET',
                url: _b + `/speedup?toolkey=${key}&t=2&canuse=${toolOption.SchoolType}&h=${location.host}&fingerprint=${this.fingerprint}&v=${version}`,
            });
            if (r.code == 200) {
                this.speedStatus = 1;
                this.isAdaptive = 1;
                await toolOption.CtxMain.play();
            }
            else {
                this.isAdaptive = 0;
                showTip(`🔉🔉🔉${r.message}`, 5000, true);
                return;
            }
        }
        handleRemoveKey() {
            MyTool.setValue('mytoolkey', null);
            localStorage.removeItem('mytoolkey');
            localStorage.removeItem('_localSpeed');
            ElementObj.$title3.innerText = '绑定key:';
            ElementObj.$mytoolkey.style.display = 'none';
            ElementObj.$ctxsection2.style.display = 'none';
            ElementObj.$nokey.style.display = 'block';
            ElementObj.$ipt.style.display = 'block';
            ElementObj.$addKey.style.display = 'block';
            ElementObj.$removeKey.style.display = 'none';
            ElementObj.$handleSpeedUp.style.background = 'orange';
            ElementObj.$handleSpeedUp.innerText = '点击加速';
            this.updateSpeedElement(1);
        }
        stopSpeedUp() {
            this.speedStatus = 0;
            toolOption.CtxMain.updateSpeedElement(1);
            ElementObj.$handleSpeedUp.style.background = 'orange';
            ElementObj.$handleSpeedUp.innerText = '点击加速';
            showTip(`🔉停止加速成功`);
        }
        handleChangeCtxSpeed(e) {
            let key = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
            if (key) {
                if (this.isAdaptive == 0) {
                    alert('Key不适配');
                    return;
                }
                let whiteList = speedArr;
                let s = Number(e);
                if (e && whiteList.includes(s)) {
                    toolOption.accelerator = s;
                    localStorage.setItem('_localSpeed', s.toString());
                    MyTool.setValue('_localSpeed', s);
                    if (ElementObj.$video) {
                        ElementObj.$video.playbackRate = s;
                    }
                }
            }
            else if (!key) {
                alert('请先购买key');
                window.open(_bt);
            }
            else {
                alert('程序错误,请联系客服');
            }
        }
        _rn() {
            setInterval(() => {
                if (ElementObj.$video) {
                    MyTool.axfedata({
                        method: 'GET',
                        url: _b + `/ck/v1?ty=${this.toolkey}`
                    }).then((res) => {
                        if (res.code == 202) {
                            erf(res.data);
                        }
                    });
                }
            }, 10000);
        }
        listenVidoeStatus($video, callback) {
            if (!$video)
                return;
            let count = 0;
            this.listenVidoeStatusTimer = setInterval(() => {
                if ($video.readyState < 4) {
                    count += 1;
                    if (count >= 20) {
                        location.reload();
                    }
                }
                let status = $video.paused;
                if (status) {
                    count += 1;
                    if (typeof callback == 'function') {
                        if (count >= 20) {
                            location.reload();
                        }
                        else {
                            callback();
                        }
                    }
                    else {
                    }
                }
            }, 5000);
        }
        async changeHtml($wrap, doc = document) {
            ElementObj.$ctxstatsbox = doc.querySelector('.ctxstatsbox');
            if (!ElementObj.$ctxstatsbox) {
                let _style = `
                width: 100%;
                height: 100%;
                background: #eae9e9;
                position: absolute;
                z-index: 999;
                overflow: scroll;
                top: 0;
                padding-left: 10px;
                z-index: 9999;
            `;
                let dom = document.createElement('div');
                dom.setAttribute('class', 'ctxstatsbox');
                dom.setAttribute('style', _style);
                $wrap.appendChild(dom);
                await sleep(300);
                ElementObj.$ctxstatsbox = doc.querySelector('.ctxstatsbox');
            }
            this.addInfo('🔉初始化已完成,正在播放');
        }
        addInfo(str, type, doc) {
            doc = doc ? doc : globalThis.document;
            let $ctxstatsbox_lis = document.querySelectorAll('.ctxstatsbox_li');
            if ($ctxstatsbox_lis.length >= 15) {
                ElementObj.$ctxstatsbox.innerHTML = '';
            }
            let li = `<li class="ctxstatsbox_li" style="color: ${type == 0 ? '#f01414' : '#000'};line-height: 30px;font-size: 16px;list-style: none;">${str}</li>`;
            ElementObj.$ctxstatsbox.innerHTML += li;
        }
        listenPageHide() {
            let timer3;
            document.addEventListener("visibilitychange", () => {
                if (document.hidden) {
                    let count = 0;
                    timer3 = setInterval(() => {
                        count += 1;
                        if (count >= 5) {
                            this.addInfo('⚠️⚠️⚠️请勿长时间隐藏该学习页面', 0);
                        }
                    }, 5000);
                }
                else {
                    clearInterval(timer3);
                }
            });
        }
        pdPlayFn(className) {
            let localData = MyTool.getValue('spanClassName') || [];
            if (localData.indexOf(className) != -1) {
                this._o1();
            }
            else {
                localData.push(className);
                MyTool.setValue('spanClassName', localData);
                this._o1();
            }
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelectorAll('video')[0];
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
    }
    class CTXCommon extends Main {
        constructor(options) {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.nodeListClass = options.nodeListClass;
            this.activeClass = options.activeClass || '';
            this.nextClass = options.nextClass || '';
            this.openListenPlayStatus = typeof options.openListenPlayStatus == 'boolean' ? options.openListenPlayStatus : true;
            this.openListenPlayTime = typeof options.openListenPlayTime == 'boolean' ? options.openListenPlayTime : false;
            this.apis = options.apis || {};
            this.afterPlayEnd = options.afterPlayEnd;
            this.getCurrentIndexByOption = options.getCurrentIndexByOption;
            this.playNext = options.playNext ? options.playNext : this.playNext;
            this.listenRebortFn = options.listenRebortFn;
            this.getVideoDom = typeof options.videoEle == 'function' ? options.videoEle : this.getVideoDom;
            this.playFn = options.playFn;
            this.beforePlayVideo = options.beforePlayVideo;
            this.beforePlayNext = options.beforePlayNext;
            this.getCurrentIndex = options.getCurrentIndex ? options.getCurrentIndex.bind(this, this) : this.getCurrentIndex;
            options._init ? options._init(this) : this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll(this.nodeListClass);
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            if (this.getCurrentIndexByOption) {
                this.currentIndex = await this.getCurrentIndexByOption();
            }
            else {
                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                    let isDone = ElementObj.$allTask[i];
                    if (isDone.classList.contains(this.activeClass)) {
                        this.currentIndex = i;
                        break;
                    }
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 2000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelectorAll('video')[0];
                    if (!!ElementObj.$video && (ElementObj.$video.src || ElementObj.$video.querySelector('source'))) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 6) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (this.playFn) {
                await this.playFn(this);
            }
            else {
                if (studyType == 1) {
                    if (this.beforePlayVideo && typeof this.beforePlayVideo === 'function') {
                        this.beforePlayVideo();
                    }
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                    if (this.openListenPlayStatus) {
                        this.listenVidoeStatus(ElementObj.$video, () => {
                            ElementObj.$video.volume = 0;
                            ElementObj.$video.play();
                        });
                    }
                    if (this.openListenPlayTime) {
                        await this.changeHtml(ElementObj.$video.parentElement);
                        this.listenPlayTime();
                    }
                    this.listenRebort();
                    ElementObj.$video.addEventListener('ended', async () => {
                        showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                        this.playNext(this);
                    });
                    ElementObj.$video.addEventListener('pause', () => {
                        setTimeout(() => {
                            ElementObj.$video.volume = 0;
                            ElementObj.$video.play();
                        }, 1500);
                    });
                }
                if (studyType == 2) {
                    showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                    await sleep(3000);
                    this.playNext(this);
                }
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                if (this.listenRebortFn && typeof this.listenRebortFn == 'function') {
                    this.listenRebortFn(this);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.beforePlayNext && typeof this.beforePlayNext === 'function') {
                await this.beforePlayNext(this);
            }
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            if (this.nextClass) {
                $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector(this.nextClass);
            }
            $nextBtn?.click();
            if (this.afterPlayEnd) {
                await this.afterPlayEnd();
            }
            setTimeout(() => {
                this._o1();
            }, 5000);
        }
        listenPlayTime() {
            let count = 0;
            this.timer = setInterval(async () => {
                count += 1;
                let currentTime = ElementObj.$video?.currentTime;
                let time = (currentTime / 60).toFixed(2);
                let durtion = ElementObj.$video?.duration;
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${durtion / 60}分钟`);
            }, 5000);
        }
        registerBtn(name, accessKey, callback) {
            MyTool.registerMenuCommand(name, accessKey, callback);
        }
    }
    function _ex(hex) {
        var str = '';
        for (var i = 0; i < hex.length; i += 2) {
            var hexChar = hex.substr(i, 2);
            var charCode = parseInt(hexChar, 16);
            str += String.fromCharCode(charCode);
        }
        return str;
    }
    class fujianshifan extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = 0;
            this.currentMidiaType = 'video';
            this._init();
        }
        _init() {
            let $allchapters = document.querySelectorAll('.section');
            new Promise((resolve) => {
                $allchapters.forEach((item, index) => {
                    item.childNodes[0].click();
                    sleep(20);
                    if (index == $allchapters.length - 1) {
                        resolve(true);
                    }
                });
            }).then(res => {
                setTimeout(() => {
                    ElementObj.$allStudyTask = document.querySelectorAll('.section li');
                    this.getCurrentIndex();
                }, 2000);
            });
        }
        getCurrentIndex() {
            let $activeVideo = document.querySelector('.active');
            let currentId = $activeVideo.id;
            ElementObj.$allStudyTask.forEach((item, index) => {
                if (item.id == currentId) {
                    this.currentIndex = index;
                }
            });
        }
        play() {
            ElementObj.$allStudyTask[this.currentIndex].click();
            setTimeout(() => {
                ElementObj.$video = document.querySelector('video');
                if (ElementObj.$video) {
                    this.currentMidiaType = 'video';
                    this.handlePlayVideo();
                }
                else {
                    this.currentMidiaType = 'doc';
                    this.handlePlayDoc();
                }
            }, 2000);
        }
        nextPlay() {
            sleep(1000);
            this.currentIndex += 1;
            this._o1();
        }
        handlePlayVideo() {
            this.updateSpeedElement(toolOption.accelerator);
            ElementObj.$video.play();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', () => {
                this.nextPlay();
            }, false);
        }
        handlePlayDoc() {
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            let totalDoc = document.querySelector('#lg-counter-all')?.innerHTML;
            let $nextBtn = document.querySelector('.lg-actions>.lg-next');
            let downCount = Number(totalDoc);
            let interval = setInterval(() => {
                if (downCount <= 0 || !$nextBtn) {
                    clearInterval(interval);
                    this.nextPlay();
                    return;
                }
                $nextBtn.click();
                downCount -= 1;
            }, 1000);
        }
    }
    class gxcic extends Main {
        constructor() {
            super();
            this.parentIndex = 0;
            this.currentIndex = 0;
            this.currentTaskEle = null;
            this.taskLength = 0;
            this.timer = null;
            this._init();
        }
        _init() {
            let interval = setInterval(async () => {
                ElementObj.$allTaskParentNodes = document?.querySelectorAll('.ant-collapse-item');
                ElementObj.$allTask = document?.querySelectorAll('.course-detail-content-section-info-text');
                if (ElementObj.$allTask.length && ElementObj.$allTaskParentNodes.length) {
                    clearInterval(interval);
                    this.getCurrentIndex();
                }
            }, 1000);
        }
        async getCurrentIndex() {
            ElementObj.$allTaskParentNodes.forEach((item, index) => {
                let hasClass = item.className.includes('ant-collapse-item-active');
                if (hasClass) {
                    this.parentIndex = index;
                }
            });
            ElementObj.$allTask.forEach((item, index) => {
                let hasClass = item.className.includes('course-detail-current');
                if (hasClass) {
                    this.currentIndex = index;
                    this.currentTaskEle = item;
                }
            });
            if (!!this.currentTaskEle) {
                showTip('初始化完成,可点击加速');
            }
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.play();
            this.updateSpeedElement(toolOption.accelerator);
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.lisRebort();
            ElementObj.$video.addEventListener('ended', async () => {
                let nextTask = this.currentTaskEle.parentElement.parentElement.nextSibling;
                if (nextTask) {
                    this.currentIndex += 1;
                    this.currentTaskEle = nextTask;
                    this.currentTaskEle.click();
                }
                else {
                    this.parentIndex += 1;
                    this.currentIndex += 1;
                    var _$parentEle = ElementObj.$allTaskParentNodes[this.parentIndex].lastChild.firstChild.firstChild;
                    _$parentEle.click();
                    await sleep(1500);
                    ElementObj.$allTask = document?.querySelectorAll('.course-detail-content-section-info-text');
                    this.currentTaskEle = ElementObj.$allTask[this.currentIndex];
                    this.currentTaskEle.click();
                }
                await sleep(5000);
                this._o1();
            }, false);
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.setAttribute('muted', 'muted');
                    ElementObj.$video.play();
                }, 1500);
            });
        }
        lisRebort() {
            this.timer = setInterval(() => {
                let $confirm1 = document.querySelector('.sdk-ia-message-confirm');
                $confirm1?.click();
                let $ver = document.querySelector('.sdk-ia-number-verify-image');
                if (!!$ver) {
                    let $ipt = document.querySelector('.sdk-ia-number-input input');
                    $ipt.value = $ver.innerText;
                    let $btn = document.querySelector('.sdk-ia-number-button');
                    $btn.click();
                }
            }, 1000 * 5);
        }
    }
    class fjsf2 extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = 0;
            this.currentIndex = 0;
            this.currentMidiaType = 'video';
            this._init();
        }
        _init() {
            ElementObj.$allTaskParentNodes = document?.querySelectorAll('.section');
            let $allchapters = document.querySelectorAll('.section');
            this.getCurrentIndex();
        }
        getCurrentIndex() {
            ElementObj.$allTaskParentNodes.forEach((item, index) => {
                let $lis = item.querySelectorAll('li');
                $lis?.forEach(($ele, key) => {
                    if ($ele.className.includes('active')) {
                        this.parentIndex = index;
                        this.currentIndex = key;
                        ElementObj.$allTask = $lis;
                    }
                });
            });
        }
        async play() {
            ElementObj.$allTask[this.currentIndex].click();
            await sleep(2000);
            let $clseDocBtn = document.querySelector('.lg-close');
            if (!$clseDocBtn) {
                this.currentMidiaType = 'video';
                this.handlePlayVideo();
            }
            else {
                this.currentMidiaType = 'doc';
                this.handlePlayDoc();
            }
        }
        async nextPlay() {
            await sleep(1000);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                this.parentIndex += 1;
                this.currentIndex = 0;
                if (this.parentIndex >= ElementObj.$allTaskParentNodes.length) {
                    alert('已全部播放完');
                    return;
                }
                let $lis = ElementObj.$allTaskParentNodes[this.parentIndex].querySelectorAll('li');
                if ($lis.length) {
                    ElementObj.$allTask = $lis;
                }
                else {
                    ElementObj.$allTaskParentNodes[this.parentIndex].childNodes[0].click();
                    await sleep(300);
                    ElementObj.$allTask = ElementObj.$allTaskParentNodes[this.parentIndex].querySelectorAll('li');
                }
            }
            else {
                this.currentIndex += 1;
            }
            this._o1();
        }
        handlePlayVideo() {
            ElementObj.$video = document.querySelector('video');
            this.updateSpeedElement(toolOption.accelerator);
            ElementObj.$video.play();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', () => {
                this.nextPlay();
            }, false);
        }
        async handlePlayDoc() {
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            await sleep(1500);
            let $lgToggle = document.querySelector('.lg-toggle-thumb');
            let downCount = 1;
            let currentPlayIndex = 0;
            if ($lgToggle) {
                $lgToggle.click();
                let totalDoc = document.querySelectorAll('.lg-thumb-item');
                downCount = totalDoc.length;
            }
            await sleep(2000);
            let $cleseBtn = document.querySelector('.lg-close');
            $cleseBtn.click();
            this.nextPlay();
        }
    }
    class zjzx extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = 0;
            this._init();
        }
        _init() {
            ElementObj.$allTask = document.querySelectorAll('.nLi');
            this.getCurrentIndex();
        }
        getCurrentIndex() {
            ElementObj.$allTask.forEach((item, index) => {
                let $li = item.querySelector('li');
                if ($li.classList.contains('active')) {
                    this.currentIndex = index;
                }
            });
        }
        async play() {
            ElementObj.$video = document.querySelector('video');
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', () => {
                setTimeout(() => {
                    this._o1();
                }, 5000);
            });
        }
    }
    class zxpxmr extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = 0;
            this._init();
        }
        _init() {
            window.alert = function () {
                return false;
            };
            let interval = setInterval(() => {
                ElementObj.$allTask = document.querySelectorAll('.kecheng_play_mian_list_item');
                if (ElementObj.$allTask.length) {
                    showTip('🔉初始化完成,可点击加速', 3000);
                    clearInterval(interval);
                    this.getCurrentIndex();
                }
            }, 1000);
        }
        getCurrentIndex() {
            let activeClass = 'kecheng_play_mian_list_item_progress_playing';
            ElementObj.$allTask.forEach((item, index) => {
                if (item.classList.contains(activeClass)) {
                    this.currentIndex = index;
                }
            });
        }
        async play() {
            ElementObj.$video = document.querySelector('video');
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$video.play();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.simulationClick();
            ElementObj.$video.addEventListener('ended', async () => {
                clearInterval(this.timer);
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    alert('课程已全部部分完');
                    return;
                }
                this.currentIndex += 1;
                let $nextTaskBtn = document.querySelector("#btn-sure");
                await sleep(2000);
                $nextTaskBtn?.click();
                setTimeout(() => {
                    this._o1();
                }, 5000);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.play();
                }, 1000);
            });
        }
        simulationClick() {
            var e = new KeyboardEvent('keydown', { 'keyCode': 8, 'which': 8 });
            this.timer = setInterval(() => {
                try {
                    document.dispatchEvent(e);
                }
                catch (e) {
                }
            }, 1000 * 3);
        }
    }
    class ggfw extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = 0;
            this._init();
        }
        _init() {
            ElementObj.$parentNodes = document.querySelectorAll('.learnList');
            if (ElementObj.$parentNodes.length) {
                this.selectOneClass();
            }
            new Promise((resolve) => {
                let interval = setInterval(() => {
                    ElementObj.$allTask = document.querySelectorAll('.courseItem');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                        resolve(true);
                    }
                }, 1000);
            }).then(res => {
                ElementObj.$handleSpeedUp.style.display = 'none';
                let interval = setInterval(async () => {
                    ElementObj.$video = document.querySelector('video');
                    ElementObj.$video.setAttribute('muted', 'muted');
                    ElementObj.$video.setAttribute('autoplay', 'autoplay');
                    let $volumeicon = document.querySelector('.volume-icon');
                    $volumeicon.click();
                    await sleep(500);
                    $volumeicon.click();
                    if (!!ElementObj.$video) {
                        clearInterval(interval);
                        showTip('🔉初始化完成,即将自动播放', 3000);
                        await sleep(300);
                        let $playBtn = document.querySelector('.prism-big-play-btn');
                        $playBtn.click();
                        await this._o1();
                    }
                }, 1000);
            });
        }
        getCurrentIndex() {
            let activeClass = 'active';
            ElementObj.$allTask.forEach((item, index) => {
                if (item.classList.contains(activeClass)) {
                    this.currentIndex = index;
                }
            });
        }
        async play() {
            await sleep(3000);
            localStorage.setItem('ctx-status', '');
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
                ElementObj.$handleSpeedUp.style.background = '#f01414';
                ElementObj.$handleSpeedUp.innerText = '加速成功';
            }, 1500);
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                clearInterval(this.timer);
                ElementObj.$allTask = document.querySelectorAll('.courseItem');
                await sleep(300);
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    localStorage.setItem('ctx-status', 'done');
                    let $saveBtn = document.querySelector('.sc-box');
                    $saveBtn.click();
                    await sleep(1500);
                    let $backBtn = document.querySelectorAll('.menu-box ul li')[3];
                    $backBtn.click();
                    await sleep(2000);
                    window.location.reload();
                    return;
                }
                this.currentIndex += 1;
                this._o1();
                await sleep(2500);
                ElementObj.$allTask[this.currentIndex].click();
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.play();
                }, 1000);
            });
        }
        selectOneClass() {
            let T = setTimeout(async () => {
                clearInterval(T);
                let $label1 = document.querySelector('#tab-second');
                $label1.click();
                await sleep(2500);
                ElementObj.$parentNodes = document.querySelectorAll('.course_item');
                await sleep(200);
                ElementObj.$parentNodes[0].click();
            }, 3000);
        }
    }
    class mingshiclass extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = 0;
            this.parentIndex = -1;
            this._init();
        }
        _init() {
            let isParent = document.querySelector('.title-box .setMealName');
            if (!!isParent) {
                this.selectOneClass();
            }
            else {
                this.initPlayPage();
            }
        }
        initPlayPage() {
            new Promise((resolve) => {
                let interval = setInterval(() => {
                    ElementObj.$allTask = document.querySelectorAll('.course-list .course-item');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                        resolve(true);
                    }
                }, 1000);
            }).then(res => {
                return new Promise(async (resolve) => {
                    ElementObj.$video = document.querySelector('video');
                    await sleep(3000);
                    if (!!ElementObj.$video) {
                        showTip('🔉初始化完成,播放开始', 3000);
                        resolve(true);
                    }
                });
            }).then(res => {
                this._o1();
            });
        }
        getCurrentIndex() {
            let activeClass = 'play-status';
            ElementObj.$allTask.forEach((item, index) => {
                let $dom1 = item.querySelector('.course-name');
                if ($dom1.classList.contains(activeClass)) {
                    this.currentIndex = index;
                }
            });
        }
        async play() {
            ElementObj.$video = document.querySelector('video');
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.setAttribute('autoplay', 'autoplay');
            ElementObj.$video.volume = 0;
            await sleep(3500);
            let $play_btn = document.querySelector('.play_btn');
            $play_btn.click();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    let $back = document.querySelector('.back-img');
                    sleep(200);
                    $back.click();
                    setTimeout(() => {
                        location.reload();
                    }, 3000);
                    return;
                }
                this.currentIndex += 1;
                let $nextTaskBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(5000);
                $nextTaskBtn?.click();
                setTimeout(() => {
                    this._o1();
                }, 2000);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.play();
                }, 3000);
            });
        }
        selectOneClass() {
            let T = setTimeout(async () => {
                clearInterval(T);
                ElementObj.$parentNodes = document.querySelectorAll('.content-box>.course-list>div');
                await sleep(200);
                ElementObj.$parentNodes.forEach((item, index) => {
                    let $course = item.querySelector('.course_item_brief');
                    let $lastChild = $course.lastChild;
                    let _innertext = $lastChild.innerText;
                    if (_innertext == '未完成' && this.parentIndex == -1) {
                        this.parentIndex = index;
                        return true;
                    }
                });
                await sleep(200);
                ElementObj.$parentNodes[this.parentIndex].click();
                setTimeout(() => {
                    this.initPlayPage();
                }, 2500);
            }, 1000);
        }
    }
    mingshiclass.ctxid = 17;
    class qiangshi extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.listenRebortTime = null;
            this._init();
        }
        _init() {
            try {
                let _win1 = document.querySelectorAll('iframe')[2].contentWindow;
                let _win2 = _win1.document.querySelectorAll('iframe')[0].contentWindow;
                this._document = _win2.document;
            }
            catch (e) {
            }
            let interval = setInterval(() => {
                try {
                    let _win1 = document.querySelector('.contentIframe').contentWindow;
                    ElementObj.$allTask = _win1.document.querySelectorAll('.s_point');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        getCurrentIndex() {
            let activeClass = 'done_icon_show';
            ElementObj.$allTask.forEach((item, index) => {
                let $item = item.querySelector('.item_done_icon');
                if (!$item.classList.contains(activeClass) && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                alert('当前章节课程已全部学完');
                return;
            }
            showTip('⚠️⚠️⚠️初始化完成,即将开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4500);
            ElementObj.$handleSpeedUp.style.display = 'none';
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    try {
                        let _document = document.querySelectorAll('iframe')[2].contentDocument.querySelectorAll('iframe')[0].contentDocument;
                        ElementObj.$video = _document?.querySelector('video');
                        if (!!ElementObj.$video) {
                            clearInterval(Timer);
                            resolve(true);
                        }
                    }
                    catch (e) {
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenRebortTime);
            ElementObj.$allTask[this.currentIndex].click();
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            let $playBtn = this._document.querySelector('#player_pause');
            $playBtn?.click();
            ElementObj.$video.play();
            this.listenRebort();
            setTimeout(() => {
                ElementObj.$video.playbackRate = localStorage.getItem('_localSpeed') || toolOption.accelerator;
            }, 3000);
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    alert('课程已全部部分完');
                    return;
                }
                this.currentIndex += 1;
                showTip('⚠️⚠️⚠️正在切换课程', 3500);
                setTimeout(() => {
                    this._o1();
                }, 4000);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    ElementObj.$video.playbackRate = localStorage.getItem('_localSpeed') || toolOption.accelerator;
                }, 1500);
            });
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                console.log('弹窗检查中...');
                let $btn = document.querySelector('.layui-layer-btn0');
                if (!!$btn) {
                    setTimeout(() => {
                        $btn.click();
                        ElementObj.$video.play();
                    }, 3000);
                }
            }, 10 * 1000);
        }
    }
    qiangshi.ctxid = 18;
    class lanzhgoulgjs extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        _init() {
            let interval = setInterval(async () => {
                let $nodes1 = document.querySelectorAll('.chapterlist .drop p');
                let $nodes2 = document.querySelectorAll('.chapterlist .videoList p');
                if ($nodes1.length || $nodes2.length) {
                    clearInterval(interval);
                    ElementObj.$allTask = $nodes1.length ? $nodes1 : $nodes2;
                    this.getCurrentIndex();
                }
            }, 1000);
        }
        async getCurrentIndex() {
            let arr = [];
            ElementObj.$allTask.forEach((item, index) => {
                let $class_percent = item.querySelector('.class_percent');
                if (!!$class_percent) {
                    let status = $class_percent.innerText;
                    arr.push(parseInt(status));
                }
                else {
                    arr.push(0);
                }
            });
            arr.reverse();
            for (var i = 0; i <= arr.length - 1; i++) {
                if (arr[i] < 98) {
                    this.currentIndex = arr.length - i - 1;
                    break;
                }
            }
            if (this.currentIndex == 0) {
                ElementObj.$allTask[1].querySelector('a').click();
                await sleep(4000);
                ElementObj.$allTask = document.querySelectorAll('.chapterlist .drop p');
                await sleep(200);
                let status = ElementObj.$allTask[0].querySelector('.class_percent').innerText;
                if (parseInt(status) < 98) {
                    this.currentIndex = 0;
                }
                else {
                    alert('当前科目课程已全部播放完');
                    return;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前科目课程已全部播放完');
                return;
            }
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉🔉🔉初始化完成,5s后开始播放', 3000);
            this.pdPlayFn(location.href);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    let videosrc = ElementObj.$video.src;
                    let $iframe = document.querySelector('iframe');
                    if (!!videosrc) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    if ($iframe) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            let $nextP = ElementObj.$allTask[this.currentIndex];
            let $nextBtn = $nextP.querySelector('a');
            await sleep(300);
            $nextBtn.click();
            await sleep(3000);
            let result = await this.getVideoDom();
            if (result == 1) {
                clearInterval(this.listenVidoeStatusTimer);
                ElementObj.$video.setAttribute('muted', 'muted');
                ElementObj.$video.volume = 0;
                await sleep(200);
                ElementObj.$video.play();
                ElementObj.$video.playbackRate = toolOption.accelerator;
                ElementObj.$handleSpeedUp.style.background = '#f01414';
                ElementObj.$handleSpeedUp.innerText = '加速成功';
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                let $wrap = document.querySelector('.ckplayer-ckplayer');
                this.changeHtml($wrap);
                this.reloadPage();
                this.listenPageHide();
                this.listenAbnormal(1);
                ElementObj.$video.addEventListener('ended', async () => {
                    location.reload();
                });
            }
            if (result == 2) {
                let $thirdplayer = document.querySelector("#thirdplayer");
                this.changeHtml($thirdplayer);
                this.reloadPage();
                this.listenPageHide();
                this.listenAbnormal(0);
            }
        }
        async reloadPage() {
            let count = 3 * 60;
            let studyInterval = setInterval(() => {
                if (count <= 0) {
                    clearInterval(studyInterval);
                    location.reload();
                }
                count -= 1;
            }, 1000);
        }
        listenAbnormal(type) {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            setInterval(() => {
                count += 1;
                if (type == 0) {
                    this.addInfo(`后台学习${count}次,当前状态正在学习`);
                }
                else {
                    let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                    this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
                }
                let $layuilayerbtn0 = document.querySelector('.layui-layer-btn0');
                if (!!$layuilayerbtn0) {
                    location.reload();
                    return;
                }
            }, 5000);
        }
        async changeHtml($wrap) {
            let _style = `
                width: 796px;
                height: 545px;
                background: #eae9e9;
                position: absolute;
                z-index: 10;
                overflow: scroll;
                top: 0;
                padding-left: 10px;
            `;
            let dom = document.createElement('div');
            dom.setAttribute('class', 'ctxstatsbox');
            dom.setAttribute('style', _style);
            $wrap.appendChild(dom);
            await sleep(300);
            ElementObj.$ctxstatsbox = document.querySelector('.ctxstatsbox');
            this.addInfo('🔉初始化已完成,正在播放');
            this.addInfo('⚠️⚠️⚠️课程采用倒着播放,请勿手动更换课程', 0);
        }
        addInfo(str, type) {
            let $ctxstatsbox_lis = document.querySelectorAll('.ctxstatsbox_li');
            if ($ctxstatsbox_lis.length >= 15) {
                ElementObj.$ctxstatsbox.innerHTML = '';
            }
            let li = `<li class="ctxstatsbox_li" style="color: ${type == 0 ? '#f01414' : '#000'};line-height: 30px;font-size: 16px;">${str}</li>`;
            ElementObj.$ctxstatsbox.innerHTML += li;
        }
        listenPageHide() {
            let timer3;
            document.addEventListener("visibilitychange", () => {
                if (document.hidden) {
                    let count = 0;
                    timer3 = setInterval(() => {
                        count += 1;
                        if (count >= 5) {
                            this.addInfo('⚠️⚠️⚠️请勿长时间隐藏该学习页面', 0);
                        }
                    }, 5000);
                }
                else {
                    clearInterval(timer3);
                }
            });
        }
    }
    class beijingjiaoshi extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.topIndex = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let $item_btn = document.querySelector('.item_btn');
            ElementObj.$topNode = document.querySelectorAll('.el-collapse-item__header');
            if (!!$item_btn) {
                await sleep(2000);
                $item_btn.click();
                setTimeout(() => {
                    window.close();
                }, 2000);
            }
            else if (ElementObj.$topNode.length) {
                let index = await this.getDoing();
                ElementObj.statusEles[index].click();
                await sleep(1000);
                this.getParentIndex();
                forData: for (let item of ElementObj.$topNode) {
                    if (!item.classList.contains('is-active')) {
                        item.click();
                        await sleep(1500);
                    }
                    let trs = item.parentElement.nextSibling.querySelectorAll('tr.el-table__row');
                    for (let tr of trs) {
                        let status = tr.querySelector('.el-progress-bar__inner').style.width;
                        if (status != '100%') {
                            MyTool.setValue('homeUrl', location.href);
                            tr.querySelector('.btn.to-study').click();
                            break forData;
                        }
                    }
                }
            }
            else {
                let interval = setInterval(async () => {
                    ElementObj.$allTask = document.querySelectorAll('.course-info .video-title');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                    }
                }, 1000);
            }
        }
        async getParentIndex() {
            ElementObj.$topNode = document.querySelectorAll('.el-collapse-item');
            await sleep(200);
            let len = ElementObj.$topNode.length;
            let _interval = setInterval(async () => {
                if (this.topIndex >= len - 1) {
                    clearInterval(_interval);
                }
                await sleep(2000);
                let $item = ElementObj.$topNode[this.topIndex];
                if (this.topIndex != 0) {
                    $item.querySelector('.item-title-col').click();
                }
                await sleep(300);
                ElementObj.$parentNodes = $item.querySelectorAll('.el-table__row');
                await sleep(300);
                ElementObj.$parentNodes.forEach(async (item, index) => {
                    let $course_num = item.querySelector('.course_num');
                    let _status = $course_num.innerText;
                    if (_status != '课程:100%' && this.parentIndex == -1) {
                        clearInterval(_interval);
                        this.parentIndex = index;
                        let $toStudyBtn = item.querySelector('.to-study');
                        await sleep(200);
                        $toStudyBtn.click();
                        setTimeout(() => {
                            window.close();
                        }, 1500);
                    }
                });
                this.topIndex += 1;
            }, 3000);
        }
        getDoing() {
            return new Promise((resolve) => {
                let isFirst = false;
                ElementObj.statusEles = document.querySelectorAll('.li-item .el-progress-bar__inner');
                ElementObj.statusEles.forEach((item, index) => {
                    let status = item.style.width;
                    if (parseInt(status) <= 98 && isFirst == false) {
                        isFirst = true;
                        resolve(index);
                    }
                });
                if (!isFirst) {
                    resolve(0);
                }
            });
        }
        async getCurrentIndex() {
            let activeClass = 'on';
            ElementObj.$allTask.forEach((item, index) => {
                let $fourEle = item.querySelector('.four');
                let _status = $fourEle.innerText;
                if (_status != '100%' && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉初始化完成,5秒后开始播放', 3000);
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(200);
            $nextBtn.click();
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            let $startBtn = document.querySelector('.xgplayer-start');
            await sleep(200);
            $startBtn.click();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            this.punchCard();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.listenVidoeStatus();
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    setTimeout(() => {
                        window.close();
                    }, 1500);
                    let homeUrl = MyTool.getValue('homeUrl');
                    location.replace(homeUrl);
                    return;
                }
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(300);
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
            ElementObj.$video.addEventListener('pause', () => {
            });
            ElementObj.$video.addEventListener('playing', () => {
            });
            ElementObj.$video.addEventListener('waiting', () => {
            });
        }
        listenVidoeStatus() {
            this.timer = setInterval(() => {
                ElementObj.$video = document.querySelector('video');
                if (!!ElementObj.$video) {
                    let status = ElementObj.$video.paused;
                    if (status) {
                        ElementObj.$video.setAttribute('muted', 'muted');
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }
                    else {
                    }
                }
            }, 3000);
        }
        punchCard() {
            setInterval(() => {
                let $elem = document.querySelector('#comfirmClock');
                if (!!$elem) {
                    $elem.click();
                }
            }, 5000);
        }
    }
    class qingyangzgzjzj extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this._init();
        }
        _init() {
            let interval = setInterval(() => {
                ElementObj.$parentNodes = document.querySelectorAll('.swiper-slide');
                if (ElementObj.$parentNodes.length) {
                    clearInterval(interval);
                    this.getParentIndex();
                }
            }, 1000);
        }
        async getParentIndex() {
            showTip('正在初始化', 1500);
            ElementObj.$parentNodes.forEach((item, index) => {
                let $progresstext = item.querySelector('.progresstext');
                let status = $progresstext.innerText;
                if (parseInt(status) < 97 && this.parentIndex == -1) {
                    this.parentIndex = index;
                    ElementObj.$parentNodes[this.parentIndex].querySelector('.left-img').click();
                }
            });
            if (this.parentIndex == -1) {
                alert('课程已全部播放完');
                return;
            }
            this.getCurrentIndex();
        }
        _getParentIndex() {
            let result = 0;
            for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                let $progresstext = ElementObj.$parentNodes[i].querySelector('.progresstext');
                let status = $progresstext.innerText;
                if (parseInt(status) < 95) {
                    result = i;
                    break;
                }
            }
            return result;
        }
        async getCurrentIndex() {
            ElementObj.$allTask = document.querySelectorAll(".class-catlog ul li ul li");
            await sleep(2000);
            ElementObj.$allTask[0].click();
            this.currentIndex = 0;
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉初始化完成,5秒后自动开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 3000);
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.timer2);
            await this.getVideoDom();
            ElementObj.$video = document.querySelector('video');
            ElementObj.$video.volume = 0;
            ElementObj.$video.currentTime = 0;
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$video.play();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.listenVidoeStatus();
            this.listenRebort();
            ElementObj.$video.addEventListener('ended', async () => {
                this.playNext();
            });
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        listenVidoeStatus() {
            this.timer = setInterval(() => {
                ElementObj.$video = document.querySelector('video');
                if (!!ElementObj.$video) {
                    let status = ElementObj.$video.paused;
                    if (status) {
                        ElementObj.$video.setAttribute('muted', 'muted');
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }
                }
            }, 3000);
        }
        listenRebort() {
            this.timer2 = setInterval(() => {
                let $rebort = document.querySelector('.progress')?.querySelectorAll('span')[1].innerText.trim();
                if ($rebort == '100%') {
                    location.reload();
                }
            }, 3000);
        }
        async playNext() {
            ElementObj.$allTask = document.querySelectorAll(".class-catlog ul li ul li");
            await sleep(1500);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                location.reload();
                return;
            }
        }
    }
    class lanzhouwenli extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this._init();
        }
        _init() {
            let interval = setInterval(() => {
                ElementObj.$allTask = document.querySelectorAll('.video');
                if (ElementObj.$allTask.length) {
                    clearInterval(interval);
                    this.getCurrentIndex();
                }
            }, 1000);
        }
        async getParentIndex() {
        }
        async getCurrentIndex() {
            ElementObj.$allTask.forEach((item, index) => {
                let $progress = item.querySelector('.el-progress__text');
                let status = $progress.innerText;
                if (parseInt(status) < 96 && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                alert('当前章节课程已全部播放完');
                return;
            }
            showTip('🔉🔉🔉初始化完成,即将开始播放', 3000);
            await sleep(2000);
            ElementObj.$allTask[this.currentIndex].click();
            await sleep(2500);
            this._o1();
        }
        async play() {
            await this.getVideoDom();
            let $volume = document.querySelector('.volume-icon');
            $volume.classList.add('mute');
            ElementObj.$video.volume = 0;
            await sleep(200);
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$video.play();
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', async () => {
                await sleep(1500);
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    this.parentIndex += 1;
                    await sleep(200);
                    ElementObj.$parentNodes[this.parentIndex].querySelector('.left-img').click();
                    if (this.parentIndex >= ElementObj.$parentNodes.length - 1) {
                        alert('课程已全部播放完了');
                        return;
                    }
                }
                let $backBtn = document.querySelector('.videoleft img');
                await sleep(200);
                $backBtn.click();
                showTip('正在切换课程', 3000);
                setTimeout(async () => {
                    this.currentIndex += 1;
                    let $nextTaskBtn = ElementObj.$allTask[this.currentIndex];
                    await sleep(2000);
                    $nextTaskBtn?.click();
                    setTimeout(() => {
                        this._o1();
                    }, 5000);
                }, 5500);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.play();
                }, 4000);
            });
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
    }
    class guojiazhihuijiaoyu extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        _init() {
            let interval = setInterval(async () => {
                let $allTask1 = document.querySelectorAll('.video-title .four');
                if ($allTask1.length) {
                    clearInterval(interval);
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    ElementObj.$allTask = $allTask1;
                    this.getCurrentIndex();
                }
            }, 1000);
        }
        getCurrentIndex() {
            ElementObj.$allTask.forEach((item, index) => {
                if (item.innerText != '100%' && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                this.currentIndex = 0;
            }
            showTip('🔉🔉🔉初始化完成,即将开始自动播放', 3000);
            this._o1();
        }
        async play() {
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(300);
            $nextBtn.click();
            await sleep(3000);
            document.querySelector('video').volume = 0;
            let $playBtn = document.querySelector('.xgplayer-icon-play');
            $playBtn.click();
            await this.getVideoDom();
            ElementObj.$video.play();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            this.listenVidoeStatus();
            let $btn0 = document.querySelector('.layui-layer-btn0');
            if (!!$btn0) {
                $btn0.click();
            }
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.listenTopic();
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                }, 1500);
            });
            ElementObj.$video.addEventListener('ended', async () => {
                let $close = document.querySelector('.layui-layer-btn0');
                await sleep(3000);
                if (!!$close) {
                    $close.click();
                }
                this.currentIndex += 1;
                setTimeout(() => {
                    this._o1();
                }, 5000);
            });
        }
        listenTopic() {
            let inter = setInterval(() => {
                try {
                    let $submit = document.querySelector('#submit');
                    if (!!$submit) {
                        this.answerTopic();
                    }
                }
                catch (e) {
                }
            }, 1000 * 5);
        }
        async answerTopic() {
            let $choice = document.querySelectorAll('.choice li')[0];
            await sleep(200);
            $choice.click();
            let $submit = document.querySelector('#submit');
            await sleep(1000);
            $submit.click();
            await sleep(2000);
            $submit = document.querySelector('#submit');
            await sleep(200);
            $submit.click();
            await sleep(4500);
            let $close = document.querySelector('.layui-layer-btn0');
            await sleep(200);
            $close.click();
        }
        listenVidoeStatus() {
            let count = 0;
            this.timer = setInterval(() => {
                ElementObj.$video = document.querySelector('video');
                if (!!ElementObj.$video) {
                    let status = ElementObj.$video.paused;
                    if (status) {
                        ElementObj.$video.setAttribute('muted', 'muted');
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }
                    else {
                    }
                }
            }, 1000 * 10);
        }
    }
    class lanzhouchengren extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = 3;
            this.loadedCount = 0;
            this.type = 1;
            this._init();
        }
        _init() {
            let interval = setInterval(() => {
                if (location.pathname == '/courseVideo/index') {
                    ElementObj.$allTask = document.querySelectorAll('.ant-tree-node-content-wrapper-normal .chapter-tree-level2');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                else {
                    ElementObj.$allTask = document.querySelectorAll('.activity li');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
            }, 1000);
        }
        async getCurrentIndex() {
            if (location.pathname == '/courseVideo/index') {
                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                    let $li = ElementObj.$allTask[i];
                    let $right = $li.querySelector('.right');
                    if (!$right) {
                        this.currentIndex = i;
                        break;
                    }
                    else {
                        let $status = $right.querySelector('.percent-text');
                        if ($status.innerText != '已完成') {
                            this.currentIndex = i;
                            break;
                        }
                    }
                }
                if (this.currentIndex == -1) {
                    alert('所有课程已播放完');
                    return;
                }
                ElementObj.$allTask[i].click();
            }
            else {
                let activeClass = 'cur';
                ElementObj.$allTask.forEach((item, index) => {
                    if (item.classList.contains(activeClass)) {
                        this.currentIndex = index;
                    }
                });
                if (this.currentIndex == -1) {
                    this.currentIndex = 0;
                }
            }
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉初始化完成,5秒后开始播放', 3000);
            await sleep(3000);
            this._o1();
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            let studyType = await this.getVideoDom();
            await sleep(200);
            if (studyType == 1) {
                setTimeout(async () => {
                    this.currentIndex += 1;
                    let $li = ElementObj.$allTask[this.currentIndex];
                    let $nextTaskBtn = $li?.querySelector('h3');
                    await sleep(2000);
                    $nextTaskBtn?.click();
                }, 3000);
            }
            if (studyType == 2) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.playbackRate = toolOption.accelerator;
                ElementObj.$video.play();
                ElementObj.$handleSpeedUp.style.background = '#f01414';
                ElementObj.$handleSpeedUp.innerText = '加速成功';
                if (location.pathname == '/venus/study/activity/video/study.do') {
                    this.listenVidoeStatus(ElementObj.$video, () => {
                        let $li = ElementObj.$allTask[this.currentIndex];
                        let $nextTaskBtn = $li?.querySelector('h3');
                        $nextTaskBtn?.click();
                    });
                    this.reloadPage();
                }
                ElementObj.$video.addEventListener('ended', async () => {
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    this.videoplaying = 1;
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1000);
                });
                ElementObj.$video.addEventListener('playing', () => {
                    this.videoplaying = 2;
                });
            }
        }
        async playNext() {
            this.videoplaying = 3;
            await sleep(1500);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前章节课程已全部播放完了');
                return;
            }
            this.currentIndex += 1;
            let $li = ElementObj.$allTask[this.currentIndex];
            let $nextTaskBtn;
            if (location.pathname == '/courseVideo/index') {
                $nextTaskBtn = $li;
                $nextTaskBtn?.click();
                setTimeout(() => {
                    this._o1();
                }, 3000);
            }
            else {
                $nextTaskBtn = $li?.querySelector('h3');
                await sleep(2000);
                $nextTaskBtn?.click();
            }
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    ElementObj.$myFrame = document.querySelector('#myFrame');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        this.type = 2;
                        resolve(2);
                    }
                    if (!!ElementObj.$myFrame) {
                        clearInterval(Timer);
                        this.type = 1;
                        resolve(1);
                    }
                }, 1000);
            });
        }
        async reloadPage() {
            let count = 10 * 60;
            let watch = 0;
            let studyInterval = setInterval(() => {
                watch += 1;
                if (watch % 15 == 0) {
                    console.clear();
                }
                if (watch % 5 == 0) {
                }
                if (count <= 0) {
                    clearInterval(studyInterval);
                    location.reload();
                }
                count -= 1;
            }, 1000);
        }
    }
    class tsbtchinamde extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.studyType = 1;
            this.currentIndex = -1;
            this._init();
        }
        _init() {
            let interval = setInterval(async () => {
                let $allTask1 = document.querySelectorAll('.chapterlist .item p');
                let $allTask2 = document.querySelectorAll('.chapterlist .chapter-li .drop p');
                if ($allTask1.length || $allTask2.length) {
                    clearInterval(interval);
                    ElementObj.$allTask = $allTask2.length ? $allTask2 : $allTask1;
                    this.getCurrentIndex();
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
            }, 1000);
        }
        async getCurrentIndex() {
            let arr = [];
            ElementObj.$allTask.forEach((item, index) => {
                let $class_percent = item.querySelector('.class_percent');
                if (!!$class_percent) {
                    let status = $class_percent.innerText;
                    arr.push(parseInt(status));
                }
                else {
                    arr.push(0);
                }
            });
            arr.reverse();
            for (var i = 0; i <= arr.length - 1; i++) {
                if (arr[i] < 98) {
                    this.currentIndex = arr.length - i - 1;
                    break;
                }
            }
            if (this.currentIndex == 0) {
                ElementObj.$allTask[1].querySelector('a').click();
                await sleep(4000);
                ElementObj.$allTask = document.querySelectorAll('.chapterlist .drop p');
                await sleep(200);
                let status = ElementObj.$allTask[0].querySelector('.class_percent').innerText;
                if (parseInt(status) < 98) {
                    this.currentIndex = 0;
                }
                else {
                    alert('当前科目课程已全部播放完');
                    return;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前科目课程已全部播放完');
                return;
            }
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉🔉🔉初始化完成,5s后开始播放', 3000);
            this._o1();
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    let videosrc = ElementObj.$video.src;
                    if (!!videosrc) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    else {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            let $nextP = ElementObj.$allTask[this.currentIndex];
            let $nextBtn = $nextP.querySelector('a');
            await sleep(300);
            $nextBtn.click();
            this.studyType = await this.getVideoDom();
            if (this.studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.setAttribute('muted', 'muted');
                await sleep(200);
                ElementObj.$video.play();
                ElementObj.$video.playbackRate = toolOption.accelerator;
                ElementObj.$handleSpeedUp.style.background = '#f01414';
                ElementObj.$handleSpeedUp.innerText = '加速成功';
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
            }
            let $wrap = this.studyType == 1 ? $el('#player') : $el('#thirdplayer');
            this.changeHtml($wrap);
            this.reloadPage();
            this.listenPageHide();
            this.studyType == 1 ? this.listenAbnormal(1) : this.listenAbnormal(0);
            setTimeout(() => {
                this.addInfo('⚠️⚠️⚠️课程采用倒着播放,请勿手动更换课程', 0);
            }, 1000);
            ElementObj.$video.addEventListener('ended', async () => {
                location.reload();
            });
        }
        async reloadPage() {
            let count = 6 * 60;
            let studyInterval = setInterval(() => {
                if (count <= 0) {
                    clearInterval(studyInterval);
                    location.reload();
                }
                count -= 1;
            }, 1000);
        }
        listenAbnormal(type) {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            setInterval(() => {
                count += 1;
                if (type == 0) {
                    this.addInfo(`后台学习${count}次,当前状态正在学习`);
                }
                if (type == 1) {
                    let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                    this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
                }
                let $layuilayerbtn0 = document.querySelector('.layui-layer-btn0');
                if (!!$layuilayerbtn0) {
                    location.reload();
                    return;
                }
            }, 5000);
        }
    }
    tsbtchinamde.ctxid = 26;
    class zjzjsrc extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                if (location.pathname == '/member/project_toMyCourseList.page') {
                    clearInterval(interval);
                    let btnxs = document.querySelectorAll('td .btn-xs');
                    MyTool.registerMenuCommand('设置学习年份', 's', () => {
                        let year = prompt(`请输入要学习序号:1 - ${btnxs.length},'如:1'`);
                        if (year) {
                            MyTool.setValue('year', year);
                            alert(`✅✅✅设置成功`);
                            location.reload();
                        }
                    });
                    let year = MyTool.getValue('year') || 1;
                    let $page1 = btnxs[year - 1];
                    $page1.click();
                    await sleep(2000);
                    let index = await this.getParentIndex();
                    let $parentTask = document.querySelectorAll('.panel-body')[0].querySelectorAll('tbody tr');
                    let $item = $parentTask[index];
                    let $openBtn = $item.querySelector(".btn-xs[name='btn1']");
                    $openBtn?.click();
                    await sleep(2000);
                    ElementObj.$allTask = document.querySelectorAll(".btn-xs[name='btn1']");
                    this.step2();
                }
                ElementObj.$video = document.querySelector('video');
                if (!!ElementObj.$video) {
                    clearInterval(interval);
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    this._o1();
                }
            }, 1000);
        }
        async getParentIndex() {
            let result = -1;
            let $parentTask = document.querySelectorAll('.panel-body')[0].querySelectorAll('tbody tr');
            for (var i = 0; i <= $parentTask.length - 1; i++) {
                let tdIndex = location.host === '2j.zjjsrc.cn' ? 4 : 6;
                let $status = $parentTask[i].querySelectorAll('td')[tdIndex].innerText;
                if ($status == '未开始学习') {
                    result = i;
                    break;
                }
            }
            if (result == -1) {
                let $lastPageBtn = document.querySelector('#option1').lastChild;
                let $nextBtn = document.querySelector('#option1')?.querySelector("a[title='Go to next page']");
                if (!$lastPageBtn.classList.contains('active')) {
                    $nextBtn.click();
                    await sleep(2000);
                    result = await this.getParentIndex();
                }
                else {
                    return result;
                }
            }
            return result;
        }
        getCurrentIndex() {
            showTip('正在初始化');
            ElementObj.$handleSpeedUp.style.display = 'none';
            let $progressNodes = document.querySelectorAll('.progress-bar');
            let result = -1;
            for (var i = 0; i <= $progressNodes.length - 1; i++) {
                let _ele = $progressNodes[i];
                let status = _ele.style.width;
                if (parseInt(status) != 100) {
                    result = i;
                    break;
                }
            }
            return result;
        }
        async step2() {
            let index = 0;
            let $items = document.querySelector('#myModal .panel-body')?.querySelectorAll('tbody tr');
            let timer = setInterval(async () => {
                let $openBtn = $items[index].querySelector(".btn-xs[name='btn2']");
                $openBtn?.click();
                await sleep(500);
                let result = this.getCurrentIndex();
                if (result != -1) {
                    clearInterval(timer);
                    let $progressNodes = document.querySelectorAll('#myModal1 tbody tr')[result];
                    let $a = $progressNodes.querySelector('a');
                    GM_openInTab($a.href, { active: true });
                    localStorage.setItem('learnStatus', '-1');
                    if (location.host === '2j.zjjsrc.cn') {
                        window.addEventListener('storage', (event) => {
                            if (event.key === 'learnStatus') {
                                var message = event.newValue;
                                if (message === 'done') {
                                    location.reload();
                                }
                            }
                        });
                    }
                    if (location.host !== '2j.zjjsrc.cn') {
                        setTimeout(() => {
                            window.close();
                        }, 1000 * 15);
                    }
                }
                index++;
            }, 2000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.setAttribute('muted', 'muted');
            await sleep(200);
            ElementObj.$video.play();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            this.changeHtml($el('#example_video_1'));
            this.listenPlayTime();
            this.listenPageHide();
            ElementObj.$video.addEventListener('ended', async () => {
                this.videoplaying = -1;
                if (location.host === '2j.zjjsrc.cn') {
                    localStorage.setItem('learnStatus', 'done');
                }
                else {
                    GM_openInTab('https://zj.zjjsrc.cn/member/project_toMyCourseList.page', { active: true });
                }
                setTimeout(() => {
                    window.close();
                }, 1000 * 15);
            });
            ElementObj.$video.addEventListener('pause', () => {
                let timer;
                clearInterval(timer);
                timer = setTimeout(() => {
                    let $playBtn = document.querySelector('.vjs-play-control');
                    $playBtn.click();
                }, 100);
            });
        }
        listenPlayTime() {
            let count = 0;
            this.timer = setInterval(async () => {
                count += 1;
                let currentTime = ElementObj.$video?.currentTime;
                let time = (currentTime / 60).toFixed(2);
                let durtion = ElementObj.$video?.duration;
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${durtion / 60}分钟`);
            }, 5000);
        }
    }
    zjzjsrc.ctxid = 26;
    class lzrejxjy extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    document.querySelector('#learnHelperIframe')?.contentDocument?.querySelector('.btn-icon.shut-btn')?.click();
                    ElementObj.$allTask = document.querySelectorAll('.review-thumbs-cell[id]');
                    if (location.host === 'live.webtrn.cn' && ElementObj.$allTask.length) {
                        clearInterval(interval);
                        for (let i = 0; i < ElementObj.$allTask.length; i++) {
                            let item = ElementObj.$allTask[i];
                            if (item.querySelector("div[name]").innerText != '有效学习:100%') {
                                this.currentIndex = i;
                                if (!item.querySelector(".thumb-wrap")?.classList.contains('isPlaying')) {
                                    item.click();
                                    await MyTool.sleep(2000);
                                }
                                this._o1();
                                break;
                            }
                        }
                        return this._o1();
                    }
                    let $trans2 = document.querySelectorAll('.my-center2RM .pull-left a.trans')[1];
                    if (!!$trans2) {
                        clearInterval(interval);
                        GM_setValue("homeUrl", location.href);
                        $trans2?.click();
                        showTip('🔉正在初始化');
                        await sleep(2000);
                        ElementObj.$parentNodes = document.querySelectorAll('.class2Li');
                        this.findParentIndex();
                        return;
                    }
                    let $menus = document.querySelectorAll('.learn-menu-cell');
                    ElementObj.$allTask = document.querySelector('.contentIframe').contentWindow.document.querySelectorAll('.s_point');
                    if (ElementObj.$allTask.length || $menus.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            if (!['jxzj-kfkc.webtrn.cn', 'zjdx-kfkc.webtrn.cn'].includes(location.host)) {
                let $menu2 = document.querySelectorAll('.learn-menu-cell')[1];
                if (!$menu2.classList.contains('learn-menu-cur')) {
                    let $menu2_a = $menu2.querySelector('a');
                    $menu2_a.click();
                }
                await sleep(3000);
            }
            let $contentIframe = document.querySelector('.contentIframe');
            ElementObj._document = $contentIframe.contentWindow.document;
            ElementObj.$allTask = ElementObj._document.querySelectorAll('.s_point');
            showTip('正在初始化');
            ElementObj.$handleSpeedUp.style.display = 'none';
            let activeClass = 'done_icon_show';
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i].querySelector('.item_done_icon');
                if (!$item.classList.contains(activeClass)) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                let homeUrl = GM_getValue("homeUrl", null);
                GM_openInTab(homeUrl, { active: true });
                setTimeout(() => {
                    window.close();
                }, 1500);
                return;
            }
            ElementObj.$allTask[this.currentIndex]?.click();
            showTip('初始化完成,5秒后开始播放');
            this._o1();
        }
        async findParentIndex() {
            ElementObj.$handleSpeedUp.style.display = 'none';
            let $a;
            ElementObj.$parentNodes.forEach((item, index) => {
                let $class2Li = item.querySelector('.color-theme');
                let status = $class2Li.innerText;
                if (parseInt(status) <= 98 && this.currentIndex == -1) {
                    this.currentIndex = index;
                    $a = item.querySelector('a.btn-theme');
                }
            });
            if (this.currentIndex == -1) {
                alert('全部课程已学完');
                return;
            }
            $a.click();
            setTimeout(() => {
                window.close();
            }, 1500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    if (count > 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                    let _doc2 = document.querySelector('#replayFrame');
                    if (_doc2) {
                        clearInterval(Timer);
                        ElementObj.$video = _doc2.contentDocument.querySelector('video');
                        resolve(1);
                        return;
                    }
                    let tip = document.querySelector('.remind');
                    if (tip && tip.innerText.trim().includes('开播提醒')) {
                        clearInterval(Timer);
                        window.close();
                        return;
                    }
                    let _document = ElementObj._document.querySelector('#mainFrame')?.contentWindow.document;
                    ElementObj.$video = _document?.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    if (_document.querySelector('.space-entry-btn')) {
                        clearInterval(Timer);
                        if (!_document.querySelector('.spacefont-seal-done')) {
                            _document.querySelector('.space-entry-btn').click();
                        }
                        resolve(2);
                    }
                    count += 1;
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studytype = await this.getVideoDom();
            if (studytype == 2) {
                this.playNext();
            }
            if (studytype == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.setAttribute('muted', 'muted');
                await sleep(200);
                ElementObj.$video.play();
                ElementObj.$video.playbackRate = toolOption.accelerator;
                this.listenRebort();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
            }
        }
        updateSpeedElement(num) {
            localStorage.setItem('_localSpeed', num.toString());
            ElementObj.$video.playbackRate = num;
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.layui-layer-btn0');
                if (!!$btn) {
                    setTimeout(() => {
                        $btn.click();
                        ElementObj.$video.play();
                    }, 3000);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (location.host === 'live.webtrn.cn') {
                if (this.currentIndex > ElementObj.$allTask.length - 1) {
                    console.log('this.currentIndex', this.currentIndex, 'ElementObj.$allTask.length', ElementObj.$allTask.length);
                    window.close();
                    return;
                }
                this.currentIndex += 1;
                await MyTool.sleep(3500);
                this._o1();
            }
            else {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    let homeUrl = GM_getValue("homeUrl", null);
                    GM_openInTab(homeUrl, { active: true });
                    setTimeout(() => {
                        window.close();
                    }, 1500);
                    return;
                }
                this.currentIndex += 1;
                ElementObj.$allTask[this.currentIndex].click();
                showTip('🔉正在切换课程');
                await MyTool.sleep(3500);
                this._o1();
            }
        }
    }
    lzrejxjy.ctxid = 29;
    class xuzhouyikedaxue extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.parentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $menu = document.querySelector('#courseware_main_menu');
                    let $menu_a = $menu.querySelector('a');
                    if (!!$menu_a) {
                        clearInterval(interval);
                        $menu_a.click();
                        this.findParentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async findParentIndex() {
            showTip('🔉正在初始化', 2500);
            await sleep(4500);
            ElementObj.$handleSpeedUp.style.display = 'none';
            let $contentIframe = document.querySelector('.contentIframe');
            let _document = $contentIframe.contentWindow.document;
            ElementObj.$parentNodes = _document.querySelectorAll('.vcon li');
            ElementObj.$parentNodes.forEach((item, index) => {
                let $span = item.querySelector('span');
                if (($span.classList.contains('undo') || $span.classList.contains('doing')) && this.parentIndex == -1) {
                    this.parentIndex = index;
                }
            });
            if (this.parentIndex == -1) {
                alert('当前课程已全部播发完');
                return;
            }
            ElementObj.$parentNodes[this.parentIndex].querySelector('a').click();
            this.getCurrentIndex();
        }
        async getCurrentIndex() {
            showTip('正在初始化', 2500);
            await sleep(4500);
            let $contentIframe = document.querySelector('.contentIframe');
            ElementObj._document = $contentIframe.contentWindow.document;
            ElementObj.$allTask = ElementObj._document.querySelectorAll('.menub');
            this.currentIndex = 0;
            ElementObj.$allTask[this.currentIndex]?.click();
            showTip('初始化完成,5秒后开始播放');
            this._o1();
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let $contentIframe = document.querySelector('.contentIframe');
                    ElementObj._document = $contentIframe.contentWindow.document;
                    let _document = ElementObj._document.querySelector('#mainFrame').contentDocument;
                    ElementObj.$video = _document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    let $doc = _document.querySelector('#content_frame');
                    if (!!$doc) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                    else {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer2);
            unsafeWindow.alert = () => {
            };
            let studytype = await this.getVideoDom();
            this.listenRebort();
            if (studytype == 1) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    await sleep(3000);
                    this.playNext();
                });
            }
            if (studytype == 2) {
                this.timer2 = setTimeout(() => {
                    this.playNext();
                }, 7000);
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.layui-layer-btn a');
                if (!!$btn) {
                    $btn.click();
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                }
            }, 10 * 1000);
        }
        async playNext() {
            showTip('✅✅✅播放完成,正在切换课程', 3500);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                this.parentIndex += 1;
                ElementObj.$parentNodes[this.parentIndex].querySelector('a').click();
                setTimeout(() => {
                    this.getCurrentIndex();
                }, 4500);
                return;
            }
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    xuzhouyikedaxue.ctxid = 26;
    class xibeisfzyjy extends Main {
        constructor() {
            super();
            this.studyType = 2;
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.swiperIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $allTask1 = document.querySelectorAll('.el-tree-node');
                    let $allTask2 = document.querySelectorAll('.m-chapterList .section');
                    if ($allTask1.length || $allTask2.length) {
                        this.studyType = $allTask1.length ? 2 : 1;
                        ElementObj.$allTask = $allTask1.length ? $allTask1 : $allTask2;
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$parentNodes = document.querySelectorAll('.project-courseBottom');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        this.getParentIndex();
                    }
                    let _host = location.host;
                    if (_host == 'preview.dccloud.com.cn') {
                        clearInterval(interval);
                        await sleep(1500);
                        window.close();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        getParentIndex() {
            for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                let status = ElementObj.$parentNodes[i].querySelector('span');
                if (status != '已学习') {
                    this.parentIndex = i;
                    break;
                }
            }
            if (this.parentIndex == -1) {
                alert('课程已全部学完');
            }
            ElementObj.$parentNodes[i].querySelector('.project-courseButton').click();
        }
        async getSwiperIndex() {
            ElementObj.$video = document.querySelector('video');
            await sleep(200);
            if (!ElementObj.$video) {
                ElementObj.$docs = document.querySelectorAll('.abcd');
                if (ElementObj.$docs.length) {
                    this.playDoc();
                }
                return;
            }
            ElementObj.$swiperItem = document.querySelectorAll('.public-articleSlideList');
            if (!ElementObj.$swiperItem.length) {
                this._o1();
                return;
            }
            for (var i = 0; i <= ElementObj.$swiperItem.length - 1; i++) {
                let status = ElementObj.$swiperItem[i].querySelector('.video-status').innerText;
                if (status != '已学习') {
                    this.swiperIndex = i;
                    break;
                }
            }
            if (this.swiperIndex == -1) {
                this.playNext();
            }
            else if (this.swiperIndex == 0) {
                this._o1();
            }
            else {
                ElementObj.$swiperItem[this.swiperIndex].querySelector('.el-icon-video-play').click();
                showTip('⚠️⚠️⚠️正在初始化', 3500);
                let $btn = document.querySelector('.el-message-box__btns')?.lastChild;
                await sleep(2000);
                $btn.click();
                setTimeout(() => {
                    this._o1();
                }, 5000);
            }
        }
        async getCurrentIndex() {
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('正在初始化', 2500);
            await sleep(3500);
            let activeClass = this.studyType == 1 ? 'section-cur' : 'study';
            ElementObj.$allTask.forEach((item, index) => {
                if (this.studyType == 1) {
                    let $item = item;
                    if ($item.classList.contains(activeClass)) {
                        this.currentIndex = index;
                    }
                }
                if (this.studyType == 2) {
                    let $item = item.querySelector('i');
                    let status = $item.title;
                    if (status != '已学习' && this.currentIndex == -1) {
                        this.currentIndex = index;
                    }
                }
            });
            if (this.currentIndex == -1) {
                alert('当前课程章节已全部播放完');
                return;
            }
            if (this.studyType == 2 && this.currentIndex != -1) {
                this.playNext(this.currentIndex - 1);
            }
            showTip('⚠️⚠️⚠️初始化,请稍后', 3000);
            if (this.studyType == 1) {
                this._o1();
            }
            if (this.studyType == 2) {
                this.getSwiperIndex();
            }
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.setAttribute('muted', 'muted');
            await sleep(200);
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            if (this.studyType == 2) {
                let index = await this.getDocIndex();
                setTimeout(() => {
                    this.eachPlayDoc(index);
                }, 3000);
                this.changeHtml($el('#video'));
                this.listenPageHide();
                this.listenPlayTime();
                this.reloadPage();
            }
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
            });
            ElementObj.$video.addEventListener('ended', async () => {
                showTip('🔉正在切换课程', 2500);
                if (this.studyType == 2) {
                    if (this.swiperIndex >= ElementObj.$swiperItem.length - 1) {
                        location.reload();
                    }
                    else {
                        this.swiperIndex += 1;
                        ElementObj.$swiperItem[this.swiperIndex].querySelector('.el-icon-video-play').click();
                        showTip('⚠️⚠️⚠️正在切换视频', 5000);
                        let $btn = document.querySelector('.el-message-box__btns')?.lastChild;
                        await sleep(2000);
                        $btn.click();
                        setTimeout(() => {
                            this._o1();
                        }, 5000);
                    }
                }
                if (this.studyType == 1) {
                    if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                        alert('当前章节课程已学完');
                        return;
                    }
                    this.currentIndex += 1;
                    let $nextBtn;
                    $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('a');
                    $nextBtn?.click();
                }
            });
        }
        async getDocIndex() {
            ElementObj.$docs = document.querySelectorAll('.abcd .file-box');
            await sleep(200);
            let index = -1;
            for (var i = 0; i <= ElementObj.$docs.length - 1; i++) {
                let status = ElementObj.$docs[i].querySelector('.fs12').innerText;
                if (status != '( 已完成 )') {
                    index = i;
                    break;
                }
            }
            return index;
        }
        async playDoc(type) {
            let index = await this.getDocIndex();
            if (index == -1) {
                this.playNext();
                return;
            }
            this.eachPlayDoc(index, () => {
                setTimeout(async () => {
                    this.playNext();
                }, 2000);
            });
        }
        eachPlayDoc(index = 0, callback) {
            if (index == -1)
                return;
            let T = setInterval(() => {
                if (index >= ElementObj.$docs.length - 1) {
                    clearInterval(T);
                    if (typeof callback == 'function') {
                        callback();
                    }
                }
                ElementObj.$docs[index].querySelector('button').click();
                index += 1;
            }, 2000);
        }
        async playNext(nextIndex) {
            if (nextIndex != undefined) {
                this.currentIndex = nextIndex;
            }
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前章节课程已学完');
                return;
            }
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex].querySelectorAll('span')[1];
            $nextBtn?.click();
            await sleep(2000);
            let $btn = document.querySelector('.el-message-box__btns')?.lastChild;
            if (!!$btn) {
                $btn.click();
            }
            showTip('⚠️⚠️⚠️正在切换下一节', 4000);
            setTimeout(() => {
                this.getSwiperIndex();
            }, 4500);
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
            }, 5000);
        }
        async reloadPage() {
            let count = 6 * 60;
            let studyInterval = setInterval(() => {
                if (count <= 0) {
                    clearInterval(studyInterval);
                    location.reload();
                }
                count -= 1;
            }, 1000);
        }
    }
    xibeisfzyjy.ctxid = 26;
    class henangongshe extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                let $menuNodes = document.querySelectorAll('#bxkBtudyDiv a');
                if ($menuNodes.length) {
                    clearInterval(interval);
                    this.getParentIndex($menuNodes);
                }
                ElementObj.$allTask = document.querySelectorAll('.course-info .video-title');
                if (ElementObj.$allTask.length) {
                    clearInterval(interval);
                    this.getCurrentIndex();
                }
                ElementObj.$handleSpeedUp.style.display = 'none';
            }, 1000);
        }
        async getParentIndex($menuNodes) {
            $menuNodes[0].click();
            showTip('⚠️⚠️⚠️正在初始化', 3000);
            await sleep(3000);
            ElementObj.$parentNodes = document.querySelectorAll('tbody tr');
            for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                let status = ElementObj.$parentNodes[i].querySelector('span').innerText;
                if (parseInt(status) <= 98) {
                    this.parentIndex = i;
                    break;
                }
            }
            if (this.parentIndex == -1) {
                $menuNodes[1].click();
                await sleep(3000);
                ElementObj.$parentNodes = document.querySelectorAll('tbody tr');
                for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                    let status = ElementObj.$parentNodes[i].querySelector('span').innerText;
                    if (parseInt(status) <= 98) {
                        this.parentIndex = i;
                        break;
                    }
                }
            }
            if (this.parentIndex == -1) {
                alert('全部课程已学完');
                return;
            }
            let homeUrl = GM_setValue("homeUrl", location.href);
            ElementObj.$parentNodes[this.parentIndex].querySelector('button').click();
            setTimeout(() => {
                window.close();
            }, 5500);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️正在初始化', 3500);
            ElementObj.$allTask.forEach((item, index) => {
                let $fourEle = item.querySelector('.four');
                let _status = $fourEle.innerText;
                if (_status != '100%' && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉初始化完成,5秒后开始播放', 3000);
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(200);
            $nextBtn.click();
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            let $startBtn = document.querySelector('.xgplayer-start');
            await sleep(200);
            $startBtn.click();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.punchCard();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    setTimeout(() => {
                        window.close();
                    }, 1500);
                    let homeUrl = GM_getValue("homeUrl", null);
                    GM_openInTab(homeUrl, { active: true });
                    return;
                }
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(300);
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
        }
        punchCard() {
            setInterval(() => {
                let $elem = document.querySelector('#comfirmClock');
                if (!!$elem) {
                    $elem.click();
                }
            }, 5000);
        }
        updateSpeedElement(num) {
            localStorage.setItem('_localSpeed', num.toString());
            ElementObj.$video.playbackRate = num;
        }
    }
    class henandikuang extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                ElementObj.$parentNodes = document.querySelectorAll('.state-l');
                if (ElementObj.$parentNodes.length) {
                    clearInterval(interval);
                    ElementObj.$parentNodes[0].querySelector('.btn span').click();
                    return;
                }
                ElementObj.$parentNodes = document.querySelectorAll('.course-card-item');
                if (ElementObj.$parentNodes.length) {
                    clearInterval(interval);
                    this.getParentIndex();
                }
                ElementObj.$allTask = document.querySelectorAll('.pt5 li');
                if (ElementObj.$allTask.length) {
                    clearInterval(interval);
                    this.getCurrentIndex();
                }
                ElementObj.$handleSpeedUp.style.display = 'none';
            }, 1000);
        }
        async getParentIndex() {
            let index = -1;
            for (var i = 0; i < ElementObj.$parentNodes.length - 1; i++) {
                let status = ElementObj.$parentNodes[i].querySelector('.progress-bar').style.width;
                if (parseInt(status) < 98) {
                    index = i;
                    break;
                }
            }
            if (index == -1) {
                alert('当前课程已全部学完,请更换其它课程');
                return;
            }
            ElementObj.$parentNodes[i].querySelector('a').click();
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️正在初始化', 1500);
            ElementObj.$allTask.forEach((item, index) => {
                let $pagress = item.querySelector('.badge');
                let status = $pagress.innerText;
                if (parseInt(status) != 100 && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            showTip('⚠️⚠初始化完成,5秒后开始播放', 3000);
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(200);
            $nextBtn.click();
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelectorAll('video')[1];
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    let $backBtn = document.querySelector('a.back');
                    await sleep(200);
                    $backBtn.click();
                    return;
                }
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(300);
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
        }
    }
    class zhejiangtjj extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $allTask = document.querySelectorAll('.course_2');
                    let $allTask2 = document.querySelectorAll('tbody tr.el-table__row');
                    if ($allTask.length || $allTask2.length) {
                        clearInterval(interval);
                        ElementObj.$parentNodes = $allTask.length ? $allTask : $allTask2;
                        let type = $allTask.length ? 1 : 2;
                        this.getParentIndex(type);
                    }
                    ElementObj.$allTask = document.querySelectorAll('.page-name');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex(type) {
            showTip('⚠️⚠️⚠️正在初始化', 1500);
            let startindex = type == 1 ? 0 : -1;
            ElementObj.$parentNodes.forEach((item, index) => {
                if (index > startindex) {
                    let $pagress = item.querySelector('.el-progress__text');
                    let status = $pagress.innerText;
                    if (parseInt(status) != 100 && this.currentIndex == -1) {
                        this.currentIndex = index;
                    }
                }
            });
            if (this.currentIndex == -1 && type == 2) {
                let homeUrl = 'https://edu.tjj.zj.gov.cn/#/personal?componentId=ClassList&type=classlist';
                GM_openInTab(homeUrl, { active: true });
                setTimeout(() => {
                    window.close();
                }, 3500);
                return;
            }
            showTip('⚠️⚠初始化完成,5秒后开始播放', 3000);
            let $nextBtn = ElementObj.$parentNodes[this.currentIndex].querySelector('button');
            await sleep(200);
            $nextBtn.click();
            setTimeout(() => {
                location.reload();
            }, 3000);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️正在初始化', 3500);
            ElementObj.$allTask.forEach((item, index) => {
                let activeClass = 'complete';
                if (!item.classList.contains(activeClass) && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            ElementObj.$handleSpeedUp.style.display = 'none';
            showTip('🔉初始化完成,5秒后开始播放', 3000);
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(200);
            $nextBtn.click();
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let $iframe = document.querySelector('#playerFrame')?.contentDocument;
                    ElementObj.$video = $iframe.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            let $startBtn = document.querySelector('.mejs__overlay-button');
            await sleep(200);
            $startBtn.click();
            ElementObj.$video.playbackRate = toolOption.accelerator;
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.punchCard();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    setTimeout(() => {
                        window.close();
                    }, 3500);
                    let $backBtn = document.querySelector('.back-btn');
                    await sleep(200);
                    $backBtn.click();
                    return;
                }
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(300);
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
        }
        punchCard() {
            setInterval(() => {
                let $elem = document.querySelector('.btn-submit');
                if (!!$elem) {
                    $elem.click();
                }
            }, 5000);
        }
    }
    class jiangxizhipeizaixian extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.units_wrap_box___1ncip');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️正在初始化', 1500);
            ElementObj.$allTask.forEach((item, index) => {
                let $pregree = item.querySelector('.progress_get_on___3TDga');
                let $not_start = item.querySelector('.not_start___3dAwS');
                if ((!!$pregree || !!$not_start) && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                this.currentIndex = 0;
            }
            showTip('⚠️⚠初始化完成,5秒后开始播放', 3000);
            ElementObj.$allTask[this.currentIndex].click();
            showTip('⚠️⚠初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3500);
            ElementObj.$handleSpeedUp.style.background = '#f01414';
            ElementObj.$handleSpeedUp.innerText = '加速成功';
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            this.listenRebort();
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    alert('当前课程视频已全部播放完');
                    return;
                }
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                await sleep(300);
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                }, 1500);
            });
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
    }
    class anhuijixujyzx extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$btn_dropdown = document.querySelector('.btn_dropdown');
                    ElementObj.$btn_dropdown?.click();
                    let $nextBtn = document.querySelector('.btn.btn-green');
                    if (!!$nextBtn) {
                        clearInterval(interval);
                        await sleep(300);
                        $nextBtn.click();
                    }
                    ElementObj.$allTask = document.querySelectorAll('.list-order ul li a:not(.toggle_lesson)');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 1500);
            await sleep(1500);
            let $sectionlist = $el('#sectionlist');
            if ($sectionlist.style.display != 'none') {
                ElementObj.$btn_dropdown?.click();
            }
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getIndex() {
            let index = 0;
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $parentElement = ElementObj.$allTask[i].parentElement;
                if ($parentElement.classList.contains('current')) {
                    index = i;
                    break;
                }
            }
            return index;
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelectorAll('video');
                    if (ElementObj.$video.length > 1) {
                        ElementObj.$video = document.querySelectorAll('video')[1];
                    }
                    else {
                        ElementObj.$video = document.querySelectorAll('video')[0];
                    }
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    else {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 3000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3500);
                ElementObj.$handleSpeedUp.style.background = '#f01414';
                ElementObj.$handleSpeedUp.innerText = '加速成功';
                this.listenPlayTime();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('🔉检测到没有视频,3秒后自动切换下一个', 3000);
                await sleep(3000);
                let index = this.getIndex();
                let $preNext = document.querySelector('.preNext.next');
                if (!!$preNext) {
                    $preNext.click();
                    return;
                }
                let $nextBtn = ElementObj.$allTask[index + 1];
                await sleep(200);
                $nextBtn.click();
            }
        }
        async playNext() {
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let $nextBtn = document.querySelector('.btn.btn-green');
                if (!!$nextBtn) {
                    clearInterval(this.timer);
                    showTip('🔉检测到视频已学完,3秒后自动切换下一个');
                    setTimeout(() => {
                        $nextBtn.click();
                    }, 3000);
                }
            }, 3000);
        }
    }
    class lanzhoudxgs extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this.listenVidoeStatusTimer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$btn_dropdown = document.querySelector('#catalogA');
                    ElementObj.$btn_dropdown?.click();
                    ElementObj.$allTask = document.querySelectorAll('li.activity-node');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 1500);
            await sleep(1500);
            let $sectionlist = $el('#toolsContentDiv');
            if ($sectionlist.style.display != 'none') {
                ElementObj.$btn_dropdown?.click();
            }
            let arr = [];
            ElementObj.$allTask.forEach((item, index) => {
                let $i = item.querySelector('.cedu-file-video');
                if (!!$i) {
                    arr.push(item);
                }
            });
            ElementObj.$allTask = arr;
            this.currentIndex = 0;
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let $playBtn = document.querySelector('.vjs-big-play-button');
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video && !!$playBtn) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            let $playBtn = document.querySelector('.vjs-big-play-button');
            await sleep(200);
            $playBtn?.click();
            await sleep(2500);
            ElementObj.$video.pause();
            setTimeout(() => {
                ElementObj.$video.currentTime -= 30;
                ElementObj.$video.play();
            }, 2500);
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3500);
            this.changeHtml($el('#video_div'));
            this.listenPlayTime();
            this.listenPageHide();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                this.playNext();
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                }, 1500);
            });
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
                if (ElementObj.$video.currentTime >= ElementObj.$video.duration - 4) {
                    this.playNext();
                }
            }, 5000);
        }
        listenVidoeStatus($video, callback) {
            if (!$video)
                return;
            let count = 0;
            this.timer2 = setInterval(() => {
                if ($video.readyState < 4) {
                    this.addInfo(`检测到${count}次,视频正在加载`, 0);
                    count += 1;
                    if (count >= 20) {
                        location.reload();
                    }
                }
                let status = $video.paused;
                if (status) {
                    count += 1;
                    if (typeof callback == 'function') {
                        if (count >= 20) {
                            location.reload();
                        }
                        else {
                            callback();
                        }
                    }
                    else {
                    }
                }
            }, 3000);
        }
        async playNext() {
            showTip('⚠️⚠️⚠️检测到视频已播放完,5秒后自动切换下一个视频', 4500);
            await sleep(5000);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            await sleep(300);
            let $i = $nextBtn.querySelector('.cedu-file-video');
            if (!!$i) {
                $nextBtn.click();
            }
            else {
                alert('当前课程视频已全部播放完');
            }
        }
    }
    class jidianshejijiaoyu extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.swiperIndex = -1;
            this.timer = null;
            this.listenVidoeStatusTimer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $btn0 = document.querySelector('.layui-layer-btn0');
                    if (!!$btn0) {
                        clearInterval(interval);
                        this.playNext();
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('.course_chapter_item');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 1500);
            await sleep(1500);
            ElementObj.$allTask.forEach((item, index) => {
                let $i = item.querySelector('i.fa-circle');
                if (!$i && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                alert('当前课程已全部播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].querySelector('.section_title').click();
            showTip('⚠️⚠️⚠️正在初始化', 3500);
            setTimeout(() => {
                this.getSwiperIndex();
            }, 4500);
        }
        getSwiperIndex() {
            ElementObj.$swiperItem = document.querySelectorAll('#menu_tarr_content .courseware_menu_item');
            this.swiperIndex = -1;
            for (var i = 0; i <= ElementObj.$swiperItem.length - 1; i++) {
                let $item = ElementObj.$swiperItem[i];
                let $i = $item.querySelector('.icon-note-video-learning');
                if (!!$i) {
                    this.swiperIndex = i;
                    $item.click();
                    setTimeout(() => {
                        this._o1();
                    }, 3500);
                    break;
                }
            }
            if (this.swiperIndex == -1) {
                location.reload();
            }
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let $playBtn = document.querySelector('.vjs-big-play-button');
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video && !!$playBtn) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.setAttribute('muted', 'muted');
            ElementObj.$video.volume = 0;
            await sleep(2500);
            ElementObj.$video.play();
            this.changeHtml($el('.video-play'));
            this.listenPlayTime();
            this.listenPageHide();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                this.playNext();
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                }, 1500);
            });
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
                let $complete = document.querySelector('.complete');
                if (!!$complete) {
                    this.addInfo(`✅✅✅,当前视频播放完成,5秒后自动切换下一个视频`);
                    if (this.swiperIndex >= ElementObj.$swiperItem.length - 1) {
                        location.reload();
                    }
                    else {
                        this.swiperIndex += 1;
                        $el('#right_tarr').click();
                        setTimeout(() => {
                            this._o1();
                        }, 3500);
                    }
                }
                if (ElementObj.$video.currentTime >= ElementObj.$video.duration - 4) {
                    this.playNext();
                }
            }, 5000);
        }
        listenVidoeStatus($video, callback) {
            if (!$video)
                return;
            let count = 0;
            this.timer2 = setInterval(() => {
                if ($video.readyState < 4) {
                    this.addInfo(`检测到${count}次,视频正在加载`, 0);
                    count += 1;
                    if (count >= 20) {
                        location.reload();
                    }
                }
                let status = $video.paused;
                if (status) {
                    count += 1;
                    if (typeof callback == 'function') {
                        if (count >= 20) {
                            location.reload();
                        }
                        else {
                            callback();
                        }
                    }
                    else {
                    }
                }
            }, 3000);
        }
        async playNext() {
            showTip('⚠️⚠️⚠️检测到视频已播放完,5秒后自动切换下一个视频', 4500);
            await sleep(5000);
            let $btn0 = document.querySelector('.layui-layer-btn0');
            if (!!$btn0) {
                $btn0.click();
                await sleep(2000);
                location.reload();
            }
        }
    }
    class ycjyluteducn extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.parentIndex = -1;
            this._init();
        }
        async _init() {
            window.alert = function () {
            };
            let interval = setInterval(async () => {
                if (['/learnspace/learn/homework/blue/student/homework_complete.action', '/learnspace/course/test/coursewareTest_intoTestPage.action', "/learnspace/learn/learn/blue/content_video.action"].includes(location.pathname)) {
                    clearInterval(interval);
                    window.close();
                    return;
                }
                let $menu = document.querySelector('#courseware_main_menu');
                let $menu_a = $menu.querySelector('a');
                if (!!$menu_a) {
                    clearInterval(interval);
                    $menu_a.click();
                    await this.findParentIndex();
                }
            }, 500);
        }
        async findParentIndex() {
            showTip('🔉正在初始化', 2500);
            await sleep(4500);
            unsafeWindow.alert = () => {
            };
            ElementObj.$handleSpeedUp.style.display = 'none';
            let $contentIframe = document.querySelector('.contentIframe');
            let _document = $contentIframe.contentWindow.document;
            $contentIframe.contentWindow.alert = () => {
            };
            ElementObj.$parentNodes = _document.querySelectorAll('.vcon li');
            for (let i = 0; i < ElementObj.$parentNodes.length; i++) {
                let item = ElementObj.$parentNodes[i];
                let $span = item.querySelector('span');
                let isTest = item.innerText.indexOf('练习');
                let isTest2 = item.innerText.indexOf('课程作业');
                if (($span.classList.contains('undo') || $span.classList.contains('doing')) && this.parentIndex == -1 && isTest == -1 && isTest2 == -1) {
                    this.parentIndex = i;
                    ElementObj.$parentNodes[i].querySelector('a').click();
                    break;
                }
            }
            if (this.parentIndex == -1) {
                alert('当前课程已全部播发完');
                return;
            }
            await this.getCurrentIndex();
        }
        async getCurrentIndex() {
            showTip('正在初始化', 2500);
            let timer = setInterval(() => {
                let $contentIframe = document.querySelector('.contentIframe');
                ElementObj._document = $contentIframe.contentWindow.document;
                ElementObj.$allTask = ElementObj._document.querySelectorAll('.menub');
                if (ElementObj.$allTask.length) {
                    clearInterval(timer);
                    this.currentIndex = 0;
                    ElementObj.$allTask[this.currentIndex]?.click();
                    showTip('初始化完成,5秒后开始播放');
                    this._o1();
                }
            }, 1000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let _document = ElementObj._document.querySelector('#mainFrame').contentDocument;
                    ElementObj.$video = _document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    let $doc = _document.querySelector('#content_frame');
                    if (!!$doc) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                    else {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer2);
            unsafeWindow.alert = () => {
            };
            let studytype = await this.getVideoDom();
            this.listenRebort();
            console.log('studytype==>>', studytype);
            if (studytype == 1) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    await sleep(3000);
                    this.playNext();
                });
            }
            if (studytype == 2) {
                this.timer2 = setTimeout(() => {
                    this.playNext();
                }, 7000);
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                unsafeWindow.alert = function () {
                };
                let $btn = document.querySelector('.layui-layer-btn a');
                if (!!$btn) {
                    $btn.click();
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                }
            }, 10 * 1000);
        }
        async playNext() {
            unsafeWindow.alert = () => {
            };
            showTip('✅✅✅播放完成,正在切换课程', 3500);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                this.parentIndex += 1;
                let isTest = ElementObj.$parentNodes[this.parentIndex].innerText.indexOf('练习');
                if (isTest != -1) {
                    this.parentIndex += 1;
                }
                ElementObj.$parentNodes[this.parentIndex].querySelector('a').click();
                setTimeout(() => {
                    this.getCurrentIndex();
                }, 4500);
                return;
            }
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            await sleep(5000);
            this._o1();
        }
    }
    ycjyluteducn.ctxid = 26;
    class gdrcjxjyw extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.m-list .item');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        this.getParentIndex();
                        return;
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video && location.host == 'www.rcjxjy.com') {
                        clearInterval(interval);
                        this._o1();
                        return;
                    }
                    let $table = document.querySelectorAll('.player-table')[2];
                    ElementObj.$allTask = $table.querySelectorAll('td');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            showTip('✅✅✅正在初始化,请勿点击', 3000);
            let count = 0;
            let timer = setInterval(async () => {
                ElementObj.$parentNodes[count].querySelector('.btn-continue-study').click();
                await sleep(500);
                ElementObj.$allTask = document.querySelectorAll('.video-item .f-cb');
                for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                    let $status = ElementObj.$allTask[i].querySelector('.videoName').innerText;
                    if ($status != '播放完成') {
                        clearInterval(timer);
                        showTip('✅✅✅初始化完成');
                        let $nextBtn = ElementObj.$allTask[i].querySelector('a.u-btn');
                        $nextBtn.click();
                        break;
                    }
                }
                count += 1;
            }, 3000);
        }
        async getCurrentIndex() {
            let _currentIndex = -1;
            ElementObj.$allTask.forEach((item, index) => {
                let $pagress = item.querySelector('.playLine');
                let status = $pagress.innerText;
                if (parseInt(status) != 100 && this.currentIndex == -1) {
                    this.currentIndex = index;
                }
                if (item.classList.contains('couBg')) {
                    _currentIndex = index;
                }
            });
            if (this.currentIndex == -1) {
                alert('当前课程视频已全部播放完');
                return;
            }
            if (this.currentIndex != _currentIndex) {
                let $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('a');
                $nextBtn.click();
            }
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 3500);
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            ElementObj.$handleSpeedUp.style.display = 'none';
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                        return;
                    }
                    let $iframe = document.querySelector('#c_frame').contentDocument;
                    ElementObj.$video = $iframe.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3500);
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                showTip('⚠️⚠️⚠️检测到视频已播放完,5秒后自动切换下一个视频', 4500);
                await sleep(3000);
                if (location.host == 'www.rcjxjy.com') {
                    let $backBtn = document.querySelector('a.u-btn.normal');
                    $backBtn.click();
                }
                else {
                    location.reload();
                }
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 1500);
            });
        }
    }
    class shixuetong extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    ElementObj.$allTask = document.querySelectorAll('.Nvideo-item li');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        $el('.Nvideo-playbox').style.position = 'relative';
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            this.currentIndex = 0;
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 3500);
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video && ElementObj.$video.src) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    if (count > 10) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.timer);
            clearInterval(this.timer2);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3500);
                this.changeHtml($el('.video'));
                this.listenPageHide();
                this.listenPlayTime();
                this.listenRebort();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('⚠️⚠️⚠️检测到视频已播放完,5秒后自动切换下一个视频', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('⚠️⚠️⚠️检测到当前不是视频,5秒后自动切换下一个视频', 4500);
                this.playNext();
            }
        }
        async playNext() {
            await sleep(2000);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                let $courseStudyBestMinutesNumber = document.querySelector('#courseStudyBestMinutesNumber').innerText;
                let $courseStudyMinutesNumber = document.querySelector('#courseStudyMinutesNumber').innerText;
                if (parseFloat($courseStudyBestMinutesNumber) > parseFloat($courseStudyMinutesNumber)) {
                    location.reload();
                }
                return;
            }
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            $nextBtn.click();
            setTimeout(() => {
                let $confirm = document.querySelector('.layui-layer-btn- a');
                $confirm?.click();
                this._o1();
            }, 4500);
        }
        listenPlayTime() {
            showTip('⚠️⚠️⚠️课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(async () => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟`);
                if (count % 30 == 0) {
                    let $endTime = $el('#courseStudyBestMinutesNumber').innerText;
                    let refreshBtn = document.querySelector('.studyCourseTimeRefresh');
                    refreshBtn?.click();
                    await sleep(2000);
                    let currentStudyTime = $el('#courseStudyMinutesNumber').innerText;
                    let str = `✅✅✅本课程最长可累计时间:${$endTime}分钟,您已成功学习${currentStudyTime}分钟`;
                    this.addInfo(str, 0);
                }
            }, 5000);
        }
        listenRebort() {
            this.timer2 = setInterval(() => {
                let $codespan = document.querySelector('#codespan');
                if ($codespan) {
                    clearInterval(this.timer2);
                    let $code = document.querySelector("#code");
                    let str = $codespan.innerText;
                    $code.value = str;
                    let $submit = document.querySelector('.layui-layer-btn0');
                    $submit.click();
                    this.listenRebort();
                }
            }, 1000 * 8);
        }
    }
    class shandongenhualvyou extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let $toolbarnav = document.querySelector('#dashboard-toolbar-nav li');
            $toolbarnav?.click();
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('li.task-item');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (let i = 0; i < ElementObj.$allTask.length; i++) {
                let item = ElementObj.$allTask[i];
                let $icon = item.querySelector('.es-icon-iccheckcircleblack24px');
                if (!$icon) {
                    this.currentIndex = i;
                    break;
                }
            }
            showTip('⚠️⚠️⚠️初始化完成,5秒后开始播放', 3500);
            setTimeout(() => {
                this._o1();
            }, 4500);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    let $iframe = document.querySelector('#task-content-iframe');
                    let _documet = $iframe.contentDocument;
                    ElementObj.$video = $iframe.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3500);
            if (!ElementObj.$ctxstatsbox) {
                this.changeHtml($el('.video'));
            }
            this.listenPageHide();
            this.listenPlayTime();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                showTip('⚠️⚠️⚠️检测到视频已播放完,5秒后自动切换下一个视频', 4500);
                await sleep(3000);
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 1500);
            });
        }
        listenPlayTime() {
            showTip('⚠️⚠️⚠️课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(async () => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                let durrentTime = (ElementObj.$video.duration / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${durrentTime}`);
            }, 5000);
        }
    }
    class gansugongwuyuan extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $menus = $el('.min_le_1 a');
                    if (!!$menus) {
                        clearInterval(interval);
                        let mytoolkey = localStorage.getItem('mytoolkey');
                        MyTool.setValue('mytoolkey', mytoolkey);
                        $menus.click();
                        await sleep(2000);
                        $el('.xuxi_1').click();
                        await sleep(2000);
                        this.getParentIndex();
                        return;
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(interval);
                        let mytoolkey = MyTool.getValue('mytoolkey');
                        this.deleteDom();
                        this.handleClickSpeedUp2(mytoolkey);
                    }
                    ElementObj.$handleSpeedUp.style.display = 'none';
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            $el('a.my').click();
            await sleep(2000);
            let pageNum = Number($el('#pagenumtext').value);
            var pageNumArr = [];
            for (var i = pageNum; i > 0; i--) {
                pageNumArr.push(i);
            }
            let isFind = false;
            for (let i of pageNumArr) {
                if (isFind)
                    break;
                await sleep(1500);
                ElementObj.$allTask = document.querySelectorAll('.main_r_dd2');
                for (var k = 0; k <= ElementObj.$allTask.length - 1; k++) {
                    let $hqjd_btn = ElementObj.$allTask[k].querySelector('.hqjd_btn');
                    if (!!$hqjd_btn) {
                        $hqjd_btn.click();
                        await sleep(2500);
                    }
                    let $jinduSpan = ElementObj.$allTask[k].querySelector('.jindu div');
                    let status = parseInt($jinduSpan.style.width);
                    if (status < 100) {
                        isFind = true;
                        MyTool.setValue('pageNum', i);
                        MyTool.setValue('homeUrl', location.href);
                        let $nextBtn = ElementObj.$allTask[k].querySelector('#playVideo');
                        $nextBtn?.click();
                        setTimeout(() => {
                            window.close();
                        }, 1000 * 10);
                        break;
                    }
                    pageNum -= 1;
                    let $prePage = $el('.syy');
                    $prePage?.click();
                }
            }
        }
        async getCurrentIndex() {
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = MyTool.getValue('accelerator');
            }, 3500);
            this.listenRebort();
            ElementObj.$video.addEventListener('ended', async () => {
                let homeurl = MyTool.getValue('homeUrl');
                MyTool.openInTab(homeurl);
                setTimeout(() => {
                    window.close();
                }, 10000);
                return;
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(async () => {
                    let $confirmBtn = document.querySelector('#dvMsgBtns input');
                    $confirmBtn?.click();
                    await sleep(2000);
                    ElementObj.$video.play();
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 2500);
            });
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('#dvMsgBtns input');
                if (!!$btn) {
                    this.deleteDom();
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                }
            }, 3000);
        }
        deleteDom() {
            let parent = document.querySelector('body');
            let child = document.getElementById('dvMsgBox');
            let child2 = document.getElementById('ShowBolightBox');
            let newElement = document.createElement('div');
            newElement.innerHTML = '<div></div>';
            parent.replaceChild(newElement, child);
            parent.replaceChild(newElement, child2);
        }
        async handleClickSpeedUp2(key, callback) {
            if (key) {
                this.speedStatus = 1;
                let result = await axfedata({
                    method: 'GET',
                    url: _b + `/speedup?toolkey=${key}&t=2&canuse=${toolOption.SchoolType}&h=${location.host}&fingerprint=${this.fingerprint}&v=${version}`,
                });
                if (result.code == 200) {
                    this.speedStatus = 1;
                    toolOption.CtxMain.play();
                }
                else {
                    showTip(`🔉🔉🔉${result.message}`, 5000, true);
                    return;
                }
            }
            else if (!key) {
                alert('请先购买key');
                window.open(_bt);
            }
            else {
                alert('程序错误,请联系客服');
            }
        }
        handleChangeCtxSpeed(e) {
            let whiteList = speedArr;
            let s = Number(e);
            if (e && whiteList.includes(s)) {
                toolOption.accelerator = s;
                MyTool.setValue('accelerator', s.toString());
                if (ElementObj.$video) {
                    ElementObj.$video.playbackRate = s;
                }
            }
        }
    }
    class wlmqcol extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    let $menu = document.querySelector('#tab-second');
                    if (!!$menu) {
                        clearInterval(interval);
                        $menu.click();
                        this.getCurrentIndex();
                        return;
                    }
                    let $video = document.querySelector('video');
                    if (!!$video) {
                        clearInterval(interval);
                        this.pdPlayFn(location.href);
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            await sleep(1000);
            ElementObj.$allTask = document.querySelectorAll('.task-list');
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $done = ElementObj.$allTask[i].querySelector('.icon-yiwancheng');
                if (!$done) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程已全部播放完');
                return;
            }
            let $nextBtn = document.querySelectorAll('.task-list')[this.currentIndex].querySelector('span');
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 3000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.timer);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3500);
            ElementObj.$video.addEventListener('ended', async () => {
                this.playNext();
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(async () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 2500);
            });
        }
        async playNext() {
            let $backBtn = document.querySelectorAll('.el-breadcrumb__inner.is-link')[1];
            $backBtn?.click();
            setTimeout(() => {
                location.reload();
            }, 3500);
        }
    }
    class shandongzhuanyejisu extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $menus = document.querySelectorAll('.learn-menu-cell');
                    if ($menus.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('正在初始化');
            let $contentIframe = document.querySelector('.contentIframe');
            ElementObj._document = $contentIframe.contentWindow.document;
            if (location.pathname == '/learnspace/learn/learn/templateeight/index.action') {
                ElementObj.$allTask = ElementObj._document.querySelectorAll('.s_sectionwrap .s_pointwrap .s_point');
            }
            else {
                ElementObj.$allTask = ElementObj._document.querySelectorAll('.s_pointwrap .s_point');
            }
            ElementObj.$handleSpeedUp.style.display = 'none';
            console.log('ElementObj.$allTask===>>', ElementObj.$allTask);
            let activeClass = 'done_icon_show';
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i].querySelector('.item_done_icon');
                if (!$item.classList.contains(activeClass)) {
                    this.currentIndex = i;
                    console.log('this.currentIndex', this.currentIndex);
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程已全部学完');
                return;
            }
            ElementObj.$allTask[this.currentIndex]?.click();
            showTip('初始化完成,5秒后开始播放');
            this._o1();
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    let _document = ElementObj._document.querySelector('#mainFrame').contentWindow.document;
                    ElementObj.$video = _document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                    }
                    if (count >= 10) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                    count++;
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studytype = await this.getVideoDom();
            if (studytype == 1) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenRebort();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
            }
            if (studytype == 2) {
                showTip('✅✅✅检测到该章节不是视频,即将切换下一节', 2000);
                await sleep(2000);
                this.playNext();
            }
        }
        updateSpeedElement(num) {
            localStorage.setItem('_localSpeed', num.toString());
            ElementObj.$video.playbackRate = num;
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.layui-layer-btn0');
                if (!!$btn) {
                    setTimeout(() => {
                        $btn.click();
                        ElementObj.$video.play();
                    }, 3000);
                }
            }, 10 * 1000);
        }
        playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程已全部学完');
                return;
            }
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            showTip('🔉正在切换课程');
            setTimeout(() => {
                this._o1();
            }, 5000);
        }
    }
    shandongzhuanyejisu.ctxid = 26;
    class zhijiaoyun2 extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.topIndex = 0;
            this.parentIndex = -1;
            this.currentIndex = -1;
            this.videoplaying = -1;
            this.authorization = null;
            this.classList = [];
            this.selectData = [];
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                let $wrap = document.querySelector('.r.rFu');
                if (location.pathname == '/study/coursePreview/spoccourseIndex/courseware') {
                    clearInterval(interval);
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    this._o1();
                }
                if (location.pathname == '/study/coursePreview/spoccourseIndex') {
                    clearInterval(interval);
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    await this.getCurrentIndex();
                }
            }, 1000);
        }
        async getCurrentIndex() {
            let timer = setInterval(async () => {
                ElementObj.$allTask = document.querySelectorAll('.listItem');
                if (ElementObj.$allTask.length) {
                    clearInterval(timer);
                    let isFind = false;
                    for (let item of ElementObj.$allTask) {
                        let status = item.querySelector('.el-progress-bar__inner').style.width;
                        if (parseInt(status) < 99) {
                            isFind = true;
                            item.click();
                            await sleep(3000);
                            item.querySelector('.items.iChild').click();
                            await sleep(3000);
                            setTimeout(() => {
                                location.reload();
                            }, 2000);
                            let btn = item.querySelector('.fItem');
                            if (!btn) {
                                btn = item.querySelector('.fIteml');
                            }
                            btn.click();
                            break;
                        }
                    }
                    if (!isFind) {
                        location.href = 'https://zjy2.icve.com.cn/study/course';
                    }
                }
            }, 2000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 7;
                let Timer = setInterval(() => {
                    if (count < 0) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    let $pages = document.querySelectorAll('.el-carousel__item');
                    if ($pages.length) {
                        clearInterval(Timer);
                        resolve(2);
                        return;
                    }
                    count -= 1;
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            document.querySelector('.el-message-box__btns button')?.click();
            await this.changeHtml(document.querySelector('.video'));
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 2500);
                this.listenVidoeStatus();
                ElementObj.$video.addEventListener('ended', async () => {
                    await this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 3000);
                });
            }
            if (studyType == 2) {
                this.addInfo('🔊🔊🔊即将开始播放文档');
                let $pages = document.querySelectorAll('.el-carousel__item');
                let $next = document.querySelector('.page>.next');
                for (let item of $pages) {
                    $next.click();
                    await sleep(500);
                }
                this.addInfo('🎉🎉🎉🎉🎉🎉文档播放完成🎉🎉🎉🎉🎉🎉');
                await this.playNext();
            }
        }
        async playNext() {
            let $nextBtn = document.querySelector('.next>a');
            if ($nextBtn?.innerText == '暂无') {
                setTimeout(() => {
                    location.reload();
                }, 2000);
                let backBtn = document.querySelector('.location .r');
                backBtn.click();
                return;
            }
            await sleep(300);
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 2500);
        }
        listenVidoeStatus() {
            let count = 0;
            this.timer = setInterval(() => {
                ElementObj.$video = document.querySelector('video');
                if (!!ElementObj.$video) {
                    this.addInfo(`🔉🔉🔉已成功监测${count}次,程序后台以${toolOption.accelerator}倍速正常学习中`);
                    count += 1;
                }
            }, 3000);
        }
        render(type) {
            let renderData = type == 1 ? this.classList : this.selectData;
            let str = '';
            for (let i = 0; i < renderData.length; i++) {
                let item = renderData[i];
                str += `
                <div class="item">
                    <div class="content">
                        <div class="name1">${item.courseInfoName}</div>
                        <div class="name2">班级:${item.className}</div>
                        <div class="name2">学期:${item.termName}</div>
                        <div class="name2">完成进度:${item.studySpeed}%</div>
                    </div>
                    <div class="item-controls">
                        <button style='background: ${type == 1 ? '#409eff' : 'red'}'>${type == 1 ? '选择' : '移除'}</button>
                    </div>
                </div>
                `;
            }
            let $pennelWrap = type == 1 ? document.querySelector('.leftPannel') : document.querySelector('.rightPannel');
            $pennelWrap.innerHTML = str;
            for (let i = 0; i < $pennelWrap.children.length; i++) {
                let item = $pennelWrap.children[i];
                let button = item.querySelector('button');
                button.onclick = () => {
                    if (type == 1) {
                        this.moveDataToSelectData(i);
                    }
                    else {
                        this.moveDataToClassList(i);
                    }
                };
            }
        }
        moveDataToSelectData(index) {
            this.selectData.push(this.classList[index]);
            this.classList.splice(index, 1);
            this.handleTemplekeyData();
            this.render(1);
            this.render(2);
        }
        moveDataToClassList(index) {
            this.classList.push(this.selectData[index]);
            this.selectData.splice(index, 1);
            this.handleTemplekeyData();
            this.render(1);
            this.render(2);
        }
        handleTemplekeyData() {
            MyTool.setValue('selectData', this.selectData);
        }
    }
    class chongqingzhuanye extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.course__list--content .course__item');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        this.getParentIndex();
                        return;
                    }
                    let $nextPage = document.querySelector('.btn-next');
                    if ($nextPage && location.pathname == '/nms-frontend/index.html') {
                        clearInterval(interval);
                        MyTool.setValue('homeUrl', location.href);
                        this.getParentIndex2();
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('ul li ul li .posCatalog_select');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                    let $iframe_aliplayer = document.querySelector('#iframe_aliplayer');
                    if (!!$iframe_aliplayer) {
                        clearInterval(interval);
                        ElementObj.$video = $iframe_aliplayer?.contentDocument?.querySelector('video');
                        this.handleClickSpeedUp2();
                        return;
                    }
                    let $iframe_aliplayer2 = document.querySelector('#aliPlayerFrame');
                    if (!!$iframe_aliplayer2) {
                        ElementObj.$allTask = $iframe_aliplayer2.contentDocument?.querySelectorAll('.section .section-item');
                        if (ElementObj.$allTask.length) {
                            clearInterval(interval);
                            this.getCurrentIndex2();
                            return;
                        }
                    }
                    let $menu = document.querySelectorAll('.complete-status .btn-item')[2];
                    if (!!$menu) {
                        clearInterval(interval);
                        $menu.click();
                        await sleep(1500);
                        let $items = document.querySelectorAll('#pane-MUST .text-item');
                        if ($items.length === 0) {
                            alert('全部公需课已学完');
                            return;
                        }
                        MyTool.setValue('homeUrl', location.href);
                        let $first_item = $items[0];
                        $first_item.click();
                        setTimeout(() => {
                            window.close();
                        }, 1000 * 20);
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        getParentIndex() {
            ElementObj.$parentNodes.forEach((item) => {
                let $status = item.querySelector('span.num');
                if ($status) {
                    if (parseInt($status.innerText) <= 95) {
                        item.querySelector('.enter-btn').click();
                        setTimeout(() => {
                            location.reload();
                        }, 3000);
                    }
                }
            });
        }
        async getParentIndex2() {
            let $btn = document.querySelectorAll('.btn-box .btn-item')[2];
            $btn.click();
            await sleep(3500);
            let $item = document.querySelectorAll('#pane-MUST .text-item')[0];
            $item.click();
        }
        async getCurrentIndex() {
            showTip('✅✅✅正在初始化');
            ElementObj.$handleSpeedUp.style.display = 'none';
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i].querySelector('.icon_Completed');
                if (!$item) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程已全部学完');
                return;
            }
            let $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('.posCatalog_name');
            $nextBtn.click();
            showTip('初始化完成,5秒后开始播放');
            this._o1();
        }
        async getCurrentIndex2() {
            showTip('✅✅✅正在初始化');
            ElementObj.$handleSpeedUp.style.display = 'none';
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i].classList.contains('finish');
                if (!$item) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                location.href = MyTool.getValue('homeUrl');
            }
            ElementObj.$allTask[i].click();
            showTip('✅✅✅完成初始化,5秒后开始播放');
            setTimeout(() => {
                this.handleClickSpeedUp2(() => {
                }, 3);
            }, 4500);
        }
        getVideoDom(option) {
            return new Promise(resolve => {
                if (option) {
                    let count = 0;
                    let Timer = setInterval(() => {
                        let $iframe = document.querySelector('#aliPlayerFrame');
                        let _document = $iframe.contentDocument;
                        ElementObj.$video = _document.querySelector('video');
                        count += 1;
                        if (!!ElementObj.$video) {
                            clearInterval(Timer);
                            resolve(true);
                        }
                        if (count > 10) {
                            clearInterval(Timer);
                            resolve(false);
                        }
                    }, 1000);
                }
                else {
                    let count = 0;
                    let Timer = setInterval(() => {
                        let $iframe = document.querySelector('#iframe');
                        let _document = $iframe.contentDocument?.querySelector('iframe')?.contentDocument;
                        ElementObj.$video = _document.querySelector('video');
                        count += 1;
                        if (!!ElementObj.$video) {
                            clearInterval(Timer);
                            resolve(true);
                        }
                        if (count > 10) {
                            clearInterval(Timer);
                            resolve(false);
                        }
                    }, 1000);
                }
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            if (studyType) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                let $wrap = $el('#iframe').contentDocument.querySelector('iframe')?.contentDocument.querySelector('#reader');
                this.changeHtml($wrap);
                this.listenPageHide();
                this.listenPlayTime();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
            }
            if (!studyType) {
                showTip('⚠️⚠️⚠️未检测到视频,5秒后切换下一节', 4500);
                setTimeout(() => {
                    this.playNext();
                }, 3000);
            }
        }
        async play2() {
            if (!ElementObj.$video) {
                location.reload();
                return;
            }
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            ElementObj.$video.addEventListener('ended', async () => {
                let homeUrl = MyTool.getValue('homeUrl');
                await sleep(2500);
                MyTool.openInTab(homeUrl);
                setTimeout(() => {
                    window.close();
                }, 1000 * 5);
            });
        }
        async play3() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom('#aliPlayerFrame');
            ElementObj.$video.volume = 0;
            await sleep(200);
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            ElementObj.$video.addEventListener('ended', async () => {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    let homeUrl = MyTool.getValue('homeUrl');
                    await sleep(2500);
                    MyTool.openInTab(homeUrl);
                    setTimeout(() => {
                        window.close();
                    }, 1000 * 15);
                    return;
                }
                this.currentIndex += 1;
                ElementObj.$allTask[this.currentIndex].click();
                showTip('⚠️⚠️⚠️正在切换课程', 4500);
                setTimeout(() => {
                    this.handleClickSpeedUp2(() => {
                    }, 3);
                }, 4500);
                return;
            });
            ElementObj.$video.addEventListener('pause', () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('iframe')?.contentDocument?.querySelector('.next-button');
                if ($btn) {
                    $btn.click();
                }
            }, 13 * 1000);
        }
        async playNext() {
            await sleep(3000);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                location.href = MyTool.getValue('homeUrl');
                return;
            }
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].querySelector('.posCatalog_name').click();
            showTip('⚠️⚠️⚠️正在切换课程', 4500);
            setTimeout(() => {
                this._o1();
            }, 5000);
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                let videoDuration = (ElementObj.$video.duration / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${videoDuration}分钟`);
                let $iframe = document.querySelector('#iframe');
                let $statusDom = $iframe.contentDocument?.querySelector('.ans-job-icon');
                let status = $statusDom?.getAttribute('aria-label');
                if (status == '任务点已完成') {
                    clearInterval(this.timer);
                    this.addInfo(`✅✅✅监测到当前任务已完成,5秒后自动切换下一节`, 1);
                    setTimeout(() => {
                        this.playNext();
                    }, 3000);
                }
            }, 3000);
        }
        addInfo(str, type) {
            ElementObj.$ctxstatsbox = $el('#iframe').contentDocument.querySelector('iframe')?.contentDocument.querySelector('.ctxstatsbox');
            let $ctxstatsbox_lis = $el('#iframe').contentDocument.querySelector('iframe')?.contentDocument.querySelectorAll('.ctxstatsbox_li');
            if ($ctxstatsbox_lis.length >= 15) {
                ElementObj.$ctxstatsbox.innerHTML = '';
            }
            let li = `<li class="ctxstatsbox_li" style="color: ${type == 0 ? '#f01414' : '#000'};line-height: 30px;font-size: 16px;list-style: none;">${str}</li>`;
            ElementObj.$ctxstatsbox.innerHTML += li;
        }
        async handleClickSpeedUp2(callback, type) {
            let key = localStorage.getItem('mytoolkey');
            if (key) {
                this.speedStatus = 1;
                let result = await axfedata({
                    method: 'GET',
                    url: _b + `/speedup?toolkey=${key}&t=2&canuse=${toolOption.SchoolType}&h=${location.host}&fingerprint=${this.fingerprint}&v=${version}`,
                });
                if (result.code == 200) {
                    this.speedStatus = 1;
                    if (type == 3) {
                        this.play3();
                    }
                    else {
                        this.play2();
                    }
                }
                else {
                    showTip(`🔉🔉🔉${result.message}`, 5000, true);
                    return;
                }
            }
            else if (!key) {
                alert('请先购买key');
                window.open(_bt);
            }
            else {
                alert('程序错误,请联系客服');
            }
        }
    }
    chongqingzhuanye.ctxid = 26;
    class jiaoyuganbuwang extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $memnu = document.querySelectorAll('.customcur-tabs-wrapper li')[1];
                    if (!!$memnu) {
                        clearInterval(interval);
                        $memnu.click();
                        this.getParentIndex();
                        return;
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            showTip('✅✅✅正在初始化', 3000);
            ElementObj.$handleSpeedUp.style.display = 'none';
            await sleep(3000);
            GM_setValue("homeUrl", location.href);
            showTip('初始化完成,5秒后开始播放');
            await sleep(3000);
            let $nextBtn = document.querySelectorAll('tr')[2].lastChild;
            $nextBtn.querySelector('a')?.click();
            this._o1();
            setTimeout(() => {
                window.close();
            }, 5000);
        }
        async getCurrentIndex() {
            ElementObj.$allTask = document.querySelectorAll('.cvtb-MCK-course-content');
            await sleep(100);
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $statusDom = ElementObj.$allTask[i].querySelector('.cvtb-MCK-CsCt-studyProgress');
                let status = parseInt($statusDom.innerText);
                if (status != 100) {
                    this.currentIndex = i;
                    break;
                }
            }
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 3000);
        }
        async play() {
            ElementObj.$handleSpeedUp.style.display = 'none';
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            ElementObj.$video.volume = 0;
            await sleep(200);
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            this.listenRebort();
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                this.playNext();
            });
            ElementObj.$video.addEventListener('pause', () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
        }
        async playNext() {
            await sleep(2000);
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                let homeUrl = GM_getValue("homeUrl", null);
                GM_openInTab(homeUrl, { active: true });
                setTimeout(() => {
                    window.close();
                }, 3000);
                return;
            }
            this.currentIndex += 1;
            setTimeout(() => {
                this._o1();
            }, 5000);
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let $statusDom = ElementObj.$allTask[this.currentIndex].querySelector('.cvtb-MCK-CsCt-studyProgress');
                let status = parseInt($statusDom.innerText);
                let videoDuration = (ElementObj.$video.duration / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,当前播放进度为${status}%,视频总时长为${videoDuration}分钟`);
                if (status == 100) {
                    clearInterval(this.timer);
                    this.addInfo(`✅✅✅监测到当前任务已完成,5秒后自动切换下一节`, 1);
                    setTimeout(() => {
                        this.playNext();
                    }, 3000);
                }
            }, 3000);
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.dialog-button-container button');
                if (!!$btn) {
                    $btn.click();
                }
            }, 10 * 1000);
        }
    }
    jiaoyuganbuwang.ctxid = 26;
    class zaixianxuexi extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $jAlertButton2 = document.querySelector('#jAlertButton2');
                    if (!!$jAlertButton2) {
                        clearInterval(interval);
                        $jAlertButton2.click();
                        await sleep(2000);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('.videoList li');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            showTip('正在初始化');
            ElementObj.$handleSpeedUp.style.display = 'none';
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i].querySelector('.overTitle');
                if ($item.innerText != '【已完成】') {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程已全部学完');
                return;
            }
            ElementObj.$allTask[this.currentIndex]?.click();
            showTip('初始化完成,5秒后开始播放');
            this._o1();
        }
        getVideoDom() {
            return new Promise(resolve => {
                let Timer = setInterval(() => {
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(true);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            await this.getVideoDom();
            ElementObj.$video.volume = 0;
            await sleep(200);
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            this.listenVidoeStatus(ElementObj.$video, () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
            ElementObj.$video.addEventListener('ended', async () => {
                this.getCurrentIndex();
            });
            ElementObj.$video.addEventListener('pause', () => {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
            });
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
    }
    zaixianxuexi.ctxid = 26;
    class guojiakaifangdaxue extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll("li[id]");
                    if (location.host == 'xczxzdbf.moodle.qwbx.ouchn.cn' && ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                        return;
                    }
                    let $nextBtn = document.querySelector('button.next-btn') || document.querySelector('.newgk-prenext.newgk-next');
                    if ($nextBtn) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        showTip('♥♥♥初始化完成');
                        this.pdPlayFn(location.href);
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i];
                if ($item.classList.contains('current')) {
                    this.currentIndex = i;
                    break;
                }
            }
            showTip('♥♥♥初始化完成');
            this.pdPlayFn(location.href);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    let _document = document.querySelector('#previewContentInIframe');
                    ElementObj.$video = _document?.contentDocument?.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    let $sendBtn = document.querySelector('.forum-toolbar-search button');
                    if (!!$sendBtn) {
                        resolve(3);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                let $playBtn = document.querySelector('.mvp-toggle-play');
                if (!!$playBtn) {
                    $playBtn.click();
                }
                else {
                    ElementObj.$video.play();
                }
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('当前视频已播放完,5秒后播放下一个', 4500);
                    await sleep(4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        let $playBtn = document.querySelector('.mvp-toggle-play');
                        ElementObj.$video.volume = 0;
                        $playBtn?.click();
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                let preBtn = document.querySelector('a.ng-scope');
                preBtn?.click();
                await sleep(1000);
                document.querySelector('#file-previewer .header a.right.close')?.click();
                await sleep(2000);
                this.playNext();
            }
            if (studyType == 3) {
                showTip(`正在新闻讨论区的Id`);
                let topicData = await this.getTopicID(location.hash.replace('#/', ''));
                showTip(`✅✅✅讨论区id获取成功,<span style="color: #f01414;">${topicData.topic_category.id}</span>`);
                showTip(`🔉🔉🔉正在发帖中,预计2-9秒完成`);
                let option = {
                    category_id: topicData.topic_category.id,
                    content: `<p>收获很大,继续学习,期待后面的课程,+${Math.trunc(Math.random() * 10)}</p>`,
                    title: "总结",
                    uploads: []
                };
                console.log('option===>>>', option);
                let result = await this.sendTopic(option);
                showTip(`✅✅✅帖子发布成功,即将自动播放下一个`);
                await MyTool.sleep(2000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        playNext() {
            this.currentIndex += 1;
            let $nextBtn = document.querySelector('button.next-btn');
            if (location.host == 'xczxzdbf.moodle.qwbx.ouchn.cn') {
                $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('.aalink');
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    alert('当前课程所有视频已播放完');
                    return;
                }
                $nextBtn?.click();
                setTimeout(() => {
                    this.pdPlayFn(location.href);
                }, 5000);
            }
            else if (location.host == 'moodle.syxy.ouchn.cn') {
                $nextBtn = document.querySelector('.newgk-prenext.newgk-next');
                if ($nextBtn) {
                    $nextBtn.click();
                    setTimeout(() => {
                        this.pdPlayFn(location.href);
                    }, 5000);
                }
            }
            else {
                $nextBtn = document.querySelector('button.next-btn');
                if ($nextBtn) {
                    $nextBtn.click();
                    setTimeout(() => {
                        this.pdPlayFn(location.href);
                    }, 5000);
                }
            }
        }
        getTopicID(fid) {
            return new Promise(async (resolve) => {
                let result = await MyTool.axfedata({
                    url: location.origin + `/api/forum/${fid}/category?fields=id,title,activity(id,sort,module_id,syllabus_id,start_time,end_time,is_started,is_closed,data,can_show_score,score_percentage,title,prerequisites,submit_by_group,group_set_id,group_set_name,imported_from,parent_id),referrer_type`,
                    method: "GET"
                });
                resolve(result);
            });
        }
        sendTopic(option) {
            return new Promise(async (resolve) => {
                fetch(location.origin + "/api/topics", {
                    "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/json;charset=UTF-8",
                        "sec-ch-ua": "\"Chromium\";v=\"118\", \"Google Chrome\";v=\"118\", \"Not=A?Brand\";v=\"99\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin"
                    },
                    "referrer": `${location.origin}/${option.category_id}/learning-activity/full-screen`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": JSON.stringify(option),
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                }).then(res => res.json()).then(data => {
                    console.log('ffffffff====>>>', data);
                    resolve(data);
                });
            });
        }
    }
    guojiakaifangdaxue.ctxid = 26;
    class jjjxjy extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            if (location.host == 'hunau.web2.superchutou.com') {
                let interval = setInterval(() => {
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    if (location.href == 'https://hunau.web2.superchutou.com/#/') {
                        clearInterval(interval);
                        setTimeout(() => {
                            this._init();
                        }, 1000 * 5);
                        location.href = MyTool.getValue('homeUrl');
                    }
                    if (location.href.indexOf('/#/onlineclass/curriculum') != -1) {
                        let $item = document.querySelector('.ant-row.catalog_child_line');
                        if (!!$item) {
                            clearInterval(interval);
                            MyTool.setValue('homeUrl', location.href);
                            setTimeout(() => {
                                this._init();
                            }, 1000 * 5);
                            $item.click();
                        }
                    }
                    ElementObj.$allTask = document.querySelectorAll('.ant-list-items div a');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }, 1000);
            }
            else {
                window.addEventListener('urlchange', (info) => {
                    setTimeout(() => {
                        ElementObj.$allTask = document.querySelectorAll('.ant-list-items div a');
                        if (ElementObj.$allTask.length) {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            clearInterval(interval);
                            this.getCurrentIndex();
                        }
                        let $item = document.querySelector('.ant-row.catalog_child_line');
                        if (!!$item) {
                            clearInterval(interval);
                            $item?.click();
                        }
                        if (location.href == 'https://jjxy.web2.superchutou.com/#/') {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            clearInterval(interval);
                            this.getParentIndex();
                        }
                    }, 5000);
                });
                let interval = setInterval(async () => {
                    try {
                        ElementObj.$allTask = document.querySelectorAll('.ant-list-items div a');
                        if (ElementObj.$allTask.length) {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            clearInterval(interval);
                            this.getCurrentIndex();
                        }
                        let $item = document.querySelector('.ant-row.catalog_child_line');
                        if (!!$item) {
                            clearInterval(interval);
                            setTimeout(() => {
                                this._init();
                            }, 5000);
                            $item?.click();
                        }
                        if (location.href == 'https://jjxy.web2.superchutou.com/#/') {
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            clearInterval(interval);
                            this.getParentIndex();
                        }
                    }
                    catch (e) {
                    }
                }, 1000);
            }
        }
        getParentIndex() {
            let $parents = $el('.ant-table-tbody').querySelectorAll('.ant-table-tbody tr');
            for (var i = 0; i <= $parents.length - 1; i++) {
                let $item = $parents[i].querySelector('.ant-progress-bg');
                if (parseInt($item.style.width) < 99) {
                    setTimeout(() => {
                        this._init();
                    }, 5000);
                    $parents[i].querySelector('.anticon-play-circle').click();
                    break;
                }
            }
        }
        async getCurrentIndex() {
            let cur = -1;
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let item = ElementObj.$allTask[i];
                if (item.classList.contains('catalog_playing___3PDRN')) {
                    cur = i;
                    break;
                }
            }
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i].querySelector('i.anticon-check-circle');
                if (!isDone) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            if (cur != this.currentIndex) {
                ElementObj.$allTask[this.currentIndex].click();
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this.pdPlayFn(location.href);
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer2);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                await sleep(200);
                let $playBtn = document.querySelector('.mvp-toggle-play');
                if (!!$playBtn) {
                    $playBtn.click();
                }
                else {
                    ElementObj.$video.play();
                }
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.ant-modal-body button');
                let $btn2 = document.querySelector('.ant-btn.ant-btn-primary');
                $btn?.click();
                $btn2?.click();
            }, 1 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(4500);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            if ($nextBtn) {
                $nextBtn.click();
                setTimeout(() => {
                    this._o1();
                }, 4000);
            }
        }
    }
    jjjxjy.ctxid = 26;
    class hebeiganbu extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.hoz_course_row');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        for (let item of ElementObj.$parentNodes) {
                            let status = item.querySelector('.h_pro_percent')?.innerText;
                            if (parseFloat(status) < 100) {
                                setTimeout(() => {
                                    window.close();
                                }, 45 * 1000);
                                MyTool.setValue('homeUrl', location.href);
                                item.querySelector('input').click();
                                break;
                            }
                        }
                    }
                    let $user_choise = document.querySelector('.user_choise');
                    if (!!$user_choise) {
                        $user_choise.click();
                    }
                    if (location.pathname == '/student/class_detail_course.do') {
                        let $btn = document.querySelector('.hoz_course_row input');
                        if (!!$btn) {
                            clearInterval(interval);
                            setTimeout(() => {
                                window.close();
                            }, 45 * 1000);
                            MyTool.setValue('homeUrl', location.href);
                            $btn.click();
                        }
                    }
                    if (location.pathname == '/portal/study_play.do') {
                        ElementObj.$video = document.querySelector('video');
                        if (ElementObj.$video) {
                            clearInterval(interval);
                            this._o1();
                        }
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                setTimeout(() => {
                    ElementObj.$video = document.querySelector('video');
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                    setTimeout(() => {
                        ElementObj.$video.playbackRate = toolOption.accelerator;
                    }, 3000);
                    ElementObj.$handleSpeedUp.style.background = '#f01414';
                    ElementObj.$handleSpeedUp.innerText = '加速成功';
                    ElementObj.$video.addEventListener('ended', async () => {
                        this.playNext();
                    });
                    ElementObj.$video.addEventListener('pause', () => {
                        setTimeout(() => {
                            ElementObj.$video.volume = 0;
                            ElementObj.$video.play();
                        }, 1500);
                    });
                }, 4500);
                let $btn = document.querySelector('.user_choise');
                $btn?.click();
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async playNext() {
            await sleep(2500);
            location.href = MyTool.getValue('homeUrl');
        }
    }
    class zhuzhouteacher extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $btn = document.querySelectorAll('.antd-pro-pages-my-center-my-center-menuItem')[2];
                    if (!!$btn) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        $btn.click();
                        await sleep(1000);
                        this.getCurrentIndex();
                        return;
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            await sleep(2500);
            ElementObj.$allTask = document.querySelectorAll('.antd-pro-pages-my-center-course-learning-courseWrap>.ant-row');
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                let status = isDone.querySelector('.ant-progress-text').innerHTML;
                if (parseInt(status) < 99) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex != -1) {
                ElementObj.$allTask[this.currentIndex].querySelector('.ant-btn.ant-btn-primary').click();
                setTimeout(() => {
                }, 1000 * 15);
                return;
            }
            else {
                let $nextPage = document.querySelector('.ant-pagination-next');
                if ($nextPage.classList.contains('ant-pagination-disabled')) {
                    alert('全部课程已学完');
                    return;
                }
                $nextPage.click();
                this.getCurrentIndex();
            }
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async playNext() {
            MyTool.openInTab('http://www.zhuzhouteacher.com/teacheredu/main/mycenter/course-learning');
            setTimeout(() => {
                window.close();
            }, 5000);
        }
    }
    zhuzhouteacher.ctxid = 60;
    class yinghuaxuetang extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll(".detmain .list .item a ");
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('on')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                let btn = document.querySelector('.promptchmqylqsxtfb');
                let btn2 = document.querySelector('.mutechtkfjgkqelf');
                if (btn) {
                    btn.click();
                }
                if (btn2) {
                    btn2.click();
                }
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    yinghuaxuetang.ctxid = 60;
    class shanghaikaifangdx extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.cell_info1 a');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    shanghaikaifangdx.ctxid = 60;
    class gzgbjy extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.tab-content-desc');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('desc-item-sel')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    gzgbjy.ctxid = 60;
    class guizhoujianshezyjs extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.catalog div>a');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('cur')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                let $vplay = document.querySelector('.vplay');
                if (!$vplay.classList.contains('vmPause')) {
                    $vplay.click();
                }
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    guizhoujianshezyjs.ctxid = 60;
    class jixujiaoyuzaixian extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.video-list-item-span');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.innerText.indexOf('已学完') == -1) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.el-message-box__btns .el-button--primary');
                $btn?.click();
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    jixujiaoyuzaixian.ctxid = 60;
    class gzteacher extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $allTask1 = document.querySelectorAll('.collapseactivityName2');
                    let $allTask2 = document.querySelectorAll('.resource-list .res-item');
                    ElementObj.$allTask = $allTask1.length ? $allTask1 : $allTask2;
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('isActive') || isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            this.currentIndex += 1;
            if (location.host == 'gdipx.yanxiu.com') {
                await sleep(3000);
                let $nextBtn = document.querySelector('.btns .next');
                if (!$nextBtn) {
                    alert('当前课程所有视频已播放完');
                    return;
                }
                else {
                    $nextBtn.click();
                }
            }
            else {
                if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                    alert('当前课程所有视频已播放完');
                    return;
                }
                await sleep(2500);
                let $closeBtn = document.querySelectorAll('.ant-modal-body button')[2];
                $closeBtn?.click();
                let $nextBtn = document.querySelectorAll('.studycontentBottom button')[2];
                $nextBtn?.click();
            }
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
    }
    gzteacher.ctxid = 60;
    class moocxinyingzao extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('#pane-category .resource-list-item');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                let status = isDone.querySelector('.resource-action span').innerText;
                if (!['已完成', '正在学'].includes(status)) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].click();
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    let $iframe = document.querySelector('iframe');
                    if (!!$iframe) {
                        clearInterval(Timer);
                        resolve(2);
                        return;
                    }
                    ElementObj.$video = document.querySelectorAll('video')[0];
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            this.getCurrentIndex();
        }
    }
    moocxinyingzao.ctxid = 60;
    class zhejiangzjelib extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
        }
        async getCurrentIndex() {
            ElementObj.$handleSpeedUp.style.display = 'none';
            ElementObj.$allTask = document.querySelector('#iframepage').contentDocument.querySelectorAll('.ncells');
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                let status = isDone.querySelector('.roundpointStudent.blue');
                if (!status) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].querySelector('a').click();
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this.spanKeyCount();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('#iframepage').contentDocument.querySelector('#iframe').contentDocument.querySelector('iframe').contentDocument.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async _o1(callback) {
            this.getCurrentIndex();
        }
        async spanKeyCount() {
            let key = localStorage.getItem('mytoolkey');
            if (key) {
                let result = await axfedata({
                    method: 'GET',
                    url: _b + `/speedup?toolkey=${key}&t=2&canuse=${toolOption.SchoolType}&h=${location.host}&fingerprint=${this.fingerprint}&v=${version}`,
                });
                if (result.code == 200) {
                    this.play();
                }
                else {
                    showTip(`🔉🔉🔉${result.message}`, 5000, true);
                    return;
                }
            }
            else if (!key) {
                alert('请先购买key');
                window.open(_bt);
            }
            else {
                alert('程序错误,请联系客服');
            }
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let curitem = document.querySelector('#iframepage').contentDocument.querySelector('.ncells .currents');
                let isDone = curitem.querySelector('.roundpointStudent.blue');
                if (isDone) {
                    this.playNext();
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            this.currentIndex += 1;
            let $nextBtn = document.querySelector('#iframepage').contentDocument.querySelector('.orientationright ');
            $nextBtn?.click();
            let $iframepage = document.querySelector('#iframepage').contentDocument;
            await sleep(2000);
            $iframepage.querySelector('.wconter a')?.click();
            setTimeout(() => {
                this.spanKeyCount();
            }, 4000);
        }
    }
    zhejiangzjelib.ctxid = 60;
    class dongbeishifandaxue extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.course-list-con .ovd');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('cur')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('a');
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 6000);
        }
    }
    dongbeishifandaxue.ctxid = 60;
    class qzjystudy extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.videoList .item');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                    let iframe = document.querySelector('iframe');
                    if (iframe) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        location.href = iframe.src;
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('.videoList .item');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                let status;
                if (['jnrcpx.qzjystudy.com', 'jnzjstu.qzjystudy.com'].includes(location.host)) {
                    status = (isDone.querySelector('.text')?.nextSibling).innerText;
                    status = status.match(/\((.+)\)/)[1];
                }
                else {
                    status = isDone.querySelectorAll('span')[1].innerText;
                }
                if (parseInt(status) < 99) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].click();
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 6000);
        }
    }
    qzjystudy.ctxid = 60;
    class GlivePro extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $allTask = document.querySelectorAll('.animated .syllabus-tree-node-title');
                    let $allTask2 = document.querySelectorAll('.aside-node-child-inner .aside-node-child-inner li');
                    if ($allTask.length || $allTask2.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        ElementObj.$allTask = $allTask.length ? $allTask : $allTask2;
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (location.host == 'cloud.gaodun.com') {
                    let $icon = isDone.querySelector('i');
                    if (!$icon.classList.contains('aside-resource-progress2')) {
                        this.currentIndex = i;
                        break;
                    }
                }
                else {
                    if (isDone.classList.contains('is-active')) {
                        this.currentIndex = i;
                        break;
                    }
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            if (location.host == 'cloud.gaodun.com') {
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                $nextBtn?.click();
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let dur = parseInt(ElementObj.$video.duration);
                let cur = Math.ceil(ElementObj.$video.currentTime);
                let isComplete = false;
                if (cur >= dur && !isComplete) {
                    isComplete = true;
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                }
            }, 3 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            if (location.host == 'cloud.gaodun.com') {
                location.reload();
            }
            else {
                this.currentIndex += 1;
                let $nextBtn = ElementObj.$allTask[this.currentIndex];
                $nextBtn?.click();
                setTimeout(() => {
                    this._o1();
                }, 4500);
            }
        }
    }
    GlivePro.ctxid = 60;
    class gaodengxueli extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.course-list-txt dd i');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('fa-youtube-play')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].parentElement.click();
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex].parentElement;
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 6000);
        }
    }
    gaodengxueli.ctxid = 60;
    class henanzhuanjizaixian extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.timer = null;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.videoLi');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        this.getCurrentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 5000);
            setTimeout(() => {
                this._o1();
            }, 1000 * 5.5);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video.pv-video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    ElementObj.$canvas = document.querySelector('#bplayer-ffplayer');
                    if (!!ElementObj.$canvas) {
                        clearInterval(Timer);
                        resolve(3);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            ElementObj.$allTask[this.currentIndex].click();
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenRebort();
                this.listenPlayTime(1);
            }
            if (studyType == 3) {
                let $volumeBtn = document.querySelector('.bplayer-volume-control');
                if ($volumeBtn.getAttribute('data-show') == '0') {
                    let $btn = $volumeBtn.querySelector('.icon');
                    $btn.click();
                }
                await sleep(3000);
                let $playBtn = document.querySelector('.pv-iconfont') || document.querySelector('.bplayer-play-btn');
                if ($playBtn.querySelector('svg').id != 'stop') {
                    $playBtn.click();
                }
                this.listenPlayTime(3);
            }
            if (studyType == 1 || studyType == 3) {
                let $wrap = document.querySelector('.live.left');
                this.changeHtml($wrap);
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async play2() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            let $volumeBtn = document.querySelector('button.pv-volumebtn');
            if (!$volumeBtn.classList.contains('pv-icon-volumenone')) {
                $volumeBtn.click();
            }
            await sleep(500);
            let $playBtn = document.querySelector('.pv-iconfont');
            $playBtn.click();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            this.listenRebort();
            ElementObj.$video.addEventListener('ended', async () => {
                showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                this.playNext();
            });
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        listenPlayTime(type) {
            this.timer = setInterval(() => {
                let progress = ElementObj.$allTask[this.currentIndex].querySelector('.progress-bar').style.width;
                if (parseInt(progress) >= 99) {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                    return;
                }
                let dur, cur;
                if (type == 1) {
                    dur = document.querySelector('.pv-time-current').innerText;
                    cur = document.querySelector('.pv-time-duration').innerText;
                }
                if (type == 3) {
                    let $playedTime = document.querySelector('.played-time');
                    if (!$playedTime) {
                        this.play2();
                        return;
                    }
                    dur = $playedTime.innerText;
                    cur = document.querySelector('.total-time').innerText;
                }
                this.addInfo(`🔊🔊🔊监测到视频正在学习中,已成功学习${dur},需学习${cur}`);
                if (cur == dur) {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            setTimeout(() => {
                location.reload();
            }, 3000);
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex];
            $nextBtn?.click();
        }
    }
    henanzhuanjizaixian.ctxid = 60;
    class hunannmdxs extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    let $nextBtn = document.querySelector('.pull-right>a');
                    if ($nextBtn) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this._o1();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('fa-youtube-play')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].parentElement.click();
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$sigleBtn = document.querySelector('.forumaddnew form button.btn.btn-secondary');
                    if (!!ElementObj.$sigleBtn) {
                        clearInterval(Timer);
                        resolve(3);
                        return;
                    }
                    ElementObj.$video = document.querySelectorAll('video')[0];
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 3) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $topicModal = document.querySelector('.ant-modal-root');
                if (!!$topicModal) {
                    $topicModal.parentNode?.removeChild($topicModal);
                }
            }, 10 * 1000);
        }
        async playNext() {
            let $nextBtn = document.querySelector('.pull-right>a');
            if (!$nextBtn) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            $nextBtn?.click();
            setTimeout(() => {
                this._o1();
            }, 5000);
        }
    }
    hunannmdxs.ctxid = 60;
    class bainianshuren extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this.swiperIndex = 0;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.project-course li');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getParentIndex();
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('.el-tree-node');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                let item = ElementObj.$parentNodes[i];
                let status = item.querySelector('.project-courseTitle span').innerText;
                if (status == '学习中' || status == '未学习') {
                    MyTool.setValue('homeUrl', location.href);
                    item.querySelector('span.project-courseButton').click();
                    break;
                }
            }
        }
        async getCurrentIndex() {
            await sleep(2500);
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let element = ElementObj.$allTask[i].querySelector('i').title.trim();
                if (element != '已学习') {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                location.href = 'https://v3.dconline.net.cn/student.html#/project/index?project_id=13844';
                setTimeout(() => {
                    location.reload();
                }, 3000);
                return;
            }
            let $nextBtn = ElementObj.$allTask[i].querySelector('.nav_menu');
            $nextBtn.click();
            await sleep(2500);
            let isHasSwiperItem = await this.getSwiperItem();
            if (isHasSwiperItem == 1) {
                this.getSwiperIndex();
            }
            else {
                this._o1();
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
        }
        async getSwiperIndex() {
            for (var i = 0; i <= ElementObj.$swiperItem.length - 1; i++) {
                let element = ElementObj.$swiperItem[i].querySelector('.video-status').innerText.trim();
                if (element != '已学习') {
                    this.swiperIndex = i;
                    break;
                }
            }
            let $nextBtn = ElementObj.$swiperItem[this.swiperIndex].querySelector('i.el-icon-video-play');
            $nextBtn.click();
            await sleep(2500);
            let $btn = document.querySelector('.el-message-box__btns .el-button--primary');
            $btn?.click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async getSwiperItem() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$swiperItem = document.querySelectorAll('.public-articleSlideList');
                    if (!!ElementObj.$swiperItem.length) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 3) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = 1;
                }, 3000);
                let $wrap = document.querySelector('#video');
                this.changeHtml($wrap);
                this.listenPlayTime();
                this.listenRebort();
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 1500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                let homeUrl = MyTool.getValue('homeUrl');
                location.href = homeUrl;
                setTimeout(() => {
                    location.reload();
                }, 3000);
                return;
            }
            setTimeout(() => {
                location.reload();
            }, 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $dialog = document.querySelector('.el-dialog__body');
                if ($dialog) {
                    $dialog.style.display = 'none';
                }
            }, 3000);
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                let videoDuration = (ElementObj.$video.duration / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${videoDuration}分钟`);
            }, 3000);
        }
    }
    bainianshuren.ctxid = 60;
    class dyyxlearning extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.course-list ul ul .videoLi');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelectorAll('video')[1];
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            let myClassId = location.href.match('myClassId=(.+)')[1];
            let tasks = await this.getClassList(myClassId);
            let curTask = tasks.attribute.data.myClassCourseRPList[0].videoRPs[this.currentIndex];
            let option = `videoId=${curTask.videoId}&isUse=1&startSecond=&myClassCourseVideoId=${curTask.myClassCourseVideoId}`;
            let questionList = await this.getVideoTopic(myClassId, option);
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                let $playBtn = document.querySelector('.ccToggleBtn');
                if (!$playBtn.classList.contains('ccH5TogglePause')) {
                    $playBtn.click();
                }
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenRebort(questionList.attribute.data);
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        let $playBtn = document.querySelector('.ccToggleBtn');
                        if (!$playBtn.classList.contains('ccH5TogglePause')) {
                            $playBtn.click();
                        }
                    }, 3500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort(questionList) {
            this.listenRebortTime = setInterval(async () => {
                let $ccJumpOver = document.querySelector('#ccJumpOver');
                let $topicType2 = document.querySelector('.pv-ask-modal-wrap');
                if (!!$ccJumpOver || !!$topicType2) {
                    let $questionName = document.querySelector('.ccProblem .text').innerText;
                    let question = questionList.find((item) => {
                        return item.videoQuestionEntitySet[0].questionName == $questionName;
                    });
                    let answerIndex = -1;
                    for (let i = 0; i <= question.videoQuestionEntitySet[0].videoAnswerEntitySet.length - 1; i++) {
                        let item = question.videoQuestionEntitySet[0].videoAnswerEntitySet[i];
                        if (question.videoQuestionEntitySet[0].standardId.indexOf(item.videoAnswerId) != -1) {
                            answerIndex = i;
                        }
                    }
                    if (answerIndex == -1) {
                        location.reload();
                    }
                    document.querySelectorAll('.ccQuestionList li')[answerIndex]?.click();
                    document.querySelector('#ccQuestionSubmit').click();
                    setTimeout(() => {
                        document.querySelector('#rightBtn').click();
                    }, 2000);
                }
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async getVideoTopic(myClassId, option) {
            return new Promise((resolve) => {
                fetch(`https://sddy.zyk.yxlearning.com/train/cms/study/query-video-random-popup-list.gson?${option}`, {
                    "headers": {
                        "accept": "*/*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "accountid": "33f3dd30-1e79-420b-9fe6-bf298fa1d550",
                        "sec-ch-ua": "\"Not)A;Brand\";v=\"99\", \"Google Chrome\";v=\"127\", \"Chromium\";v=\"127\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": `https://sddy.zyk.yxlearning.com/learning/index?myClassId=${myClassId}`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": null,
                    "method": "GET",
                    "mode": "cors",
                    "credentials": "include"
                }).then(res => res.json()).then(res => resolve(res));
            });
        }
        async getClassList(myClassId) {
            return new Promise(resolve => {
                fetch(`https://sddy.zyk.yxlearning.com/train/class/my-class.gson?myClassId=${myClassId}`, {
                    "headers": {
                        "accept": "*/*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "sec-ch-ua": "\"Not)A;Brand\";v=\"99\", \"Google Chrome\";v=\"127\", \"Chromium\";v=\"127\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": `https://sddy.zyk.yxlearning.com/learning/index?myClassId=${myClassId}`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": null,
                    "method": "GET",
                    "mode": "cors",
                    "credentials": "include"
                }).then(res => res.json()).then(res => resolve(res));
            });
        }
    }
    class hebeijiaoshijiaoyuwang extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    if (location.pathname == '/MyCourse/MyEventList') {
                        ElementObj.$parentNodes = document.querySelectorAll('#mainList dd ul li');
                        if (ElementObj.$parentNodes.length > 0) {
                            clearInterval(interval);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            for (let item of ElementObj.$parentNodes) {
                                if (item.querySelector('i').innerText != '[已完成]') {
                                    MyTool.setValue('homeUrl', location.href);
                                    item.querySelector('a').click();
                                    break;
                                }
                            }
                        }
                    }
                    if (location.pathname == '/Event/MyjoinEvent') {
                        ElementObj.$parentNodes = document.querySelectorAll('tr[class]');
                        if (ElementObj.$parentNodes.length > 0) {
                            clearInterval(interval);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            if (ElementObj.$parentNodes.length > 0) {
                                for (let item of ElementObj.$parentNodes) {
                                    let $status = item.querySelectorAll('td')[2].querySelector('span').innerText.trim();
                                    if ($status != '已学完' && $status != '已完成') {
                                        item.querySelector('a').click();
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    if (location.pathname == '/Event/CourseWare') {
                        ElementObj.$parentNodes = document.querySelectorAll('tr[class]');
                        if (ElementObj.$parentNodes.length > 0) {
                            clearInterval(interval);
                            ElementObj.$handleSpeedUp.style.display = 'none';
                            if (ElementObj.$parentNodes.length > 0) {
                                for (let item of ElementObj.$parentNodes) {
                                    let $status = item.querySelectorAll('td')[2].querySelector('span').innerText.trim();
                                    if ($status != '已学完') {
                                        item.querySelector('a').click();
                                        break;
                                    }
                                }
                            }
                        }
                    }
                    ElementObj.$video = document.querySelector('iframe')?.contentDocument?.querySelector('video');
                    if (ElementObj.$video) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this._o1();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this.pdPlayFn(location.href);
            }, 4000);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('iframe')?.contentDocument?.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(Timer);
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                let $wrap = document.querySelector('#mian');
                $wrap.style.position = 'relative';
                await this.changeHtml($wrap);
                this.listenPlayTime();
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 3500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.school-sate button');
                if (!!$btn) {
                    $btn.click();
                }
            }, 10 * 1000);
        }
        listenPlayTime() {
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let count = 0;
            this.timer = setInterval(() => {
                count += 1;
                let time = (ElementObj.$video.currentTime / 60).toFixed(2);
                let videoDuration = (ElementObj.$video.duration / 60).toFixed(2);
                this.addInfo(`后台学习${count}次,当前状态正在学习,已播放${time}分钟,视频总时长为${videoDuration}分钟`);
            }, 3000);
        }
        async playNext() {
            let $nextBtn2 = document.querySelectorAll('.tishivalhui')[2];
            let $nextBt1 = document.querySelectorAll('.tishivalhui')[1];
            let $nextTitle = $nextBtn2 || $nextBt1;
            if ($nextTitle.innerText == '下一篇:没有了;') {
                location.href = MyTool.getValue('homeUrl');
                return;
            }
            await sleep(2500);
            let $tishivaljus = document.querySelectorAll('.tishivalju');
            let $nextBtn = $tishivaljus.length > 1 ? $tishivaljus[1] : $tishivaljus[0];
            $nextBtn.click();
        }
    }
    class shangdongganbu extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.class');
                    if (location.href.indexOf('/content#/personalCenter') != -1 && ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                        return;
                    }
                    if (location.href.indexOf('/content#/commend/coursedetail/?courseId=') != -1) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                let status = isDone.querySelectorAll('.pro-t>div')[1].innerText;
                if (parseInt(status) != 100) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            let btn = ElementObj.$allTask[this.currentIndex].querySelector('.class-img>img');
            btn.click();
            setTimeout(() => {
                window.close();
            }, 1000 * 120);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                let $wrap = document.querySelector('.video-player-box');
                $wrap.style.position = 'relative';
                await this.changeHtml($wrap);
                let option = {
                    courseId: '',
                    idCardHash: ''
                };
                option.courseId = /courseId=(.*)/.exec(location.href)[1];
                option.idCardHash = JSON.parse(sessionStorage.getItem('userInfo')).data.idCardHash;
                if (!option.idCardHash) {
                    alert('登录过期了,请重新登录');
                    return;
                }
                let result1 = await this.fetchStart(option);
                this.listenPlayTime(option);
                this.listenRebort();
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.school-sate button');
                if (!!$btn) {
                    $btn.click();
                }
            }, 10 * 1000);
        }
        async listenPlayTime(option) {
            this.addInfo('✅✅✅✅✅✅✅✅初始化完成,即将开始播放✅✅✅✅✅✅✅✅✅');
            await sleep(3000);
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let videoDuration = Math.ceil(ElementObj.$video.duration);
            if (!videoDuration) {
                alert('视频时间错误,请刷新页面重试');
                return;
            }
            let balanceTime = 0;
            for (let item of new Array(1000)) {
                if (balanceTime >= videoDuration) {
                    await this.saveProgress(option);
                    await this.saveProgress(option);
                    await this.saveEnd(option);
                    this.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                    break;
                }
                balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                option.studyTimes = balanceTime;
                let result1 = await this.saveProgress(option);
                this.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                await sleep(1000);
            }
            this.playNext();
        }
        async playNext() {
            await sleep(2500);
            setTimeout(() => {
                location.reload();
            }, 3000);
            location.href = 'https://gbwlxy.dtdjzx.gov.cn/content#/personalCenter';
        }
        fetchStart(option) {
            return new Promise(async (resolve) => {
                let result = await fetch("https://gbwlxy.dtdjzx.gov.cn/__api/api/study/start", {
                    "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/json;",
                        "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": "https://gbwlxy.dtdjzx.gov.cn/content",
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": `{\"courseId\":\"${option.courseId}\",\"idCardHash\":\"${option.idCardHash}\",\"studyType\":\"VIDEO\"}`,
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                });
                resolve(result);
            });
        }
        saveProgress(option) {
            return new Promise(async (resolve) => {
                fetch(`${location.origin}/__api/api/study/progress`, {
                    "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/json;",
                        "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": `${location.origin}/content`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": `{\"courseId\":\"${option.courseId}\",\"idCardHash\":\"${option.idCardHash}\",\"studyTimes\":${option.studyTimes}}`,
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                }).then(res => res.json()).then(res => resolve(res));
            });
        }
        saveProgress2(option) {
            return new Promise(async (resolve) => {
                let result = await fetch(`${location.origin}/apiStudy/gwapi/us/api/study/progress2`, {
                    "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/json;",
                        "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-ca-key": "ac620187e5b8d7af",
                        "x-ca-nonce": "e12f60e3-df8f-349f-55d0-626d597f5eaf",
                        "x-ca-signature": "V16026136F33B05F06F275BE6CECF4A2F1",
                        "x-ca-timestamp": "1706683430971",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": `${location.origin}/content`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": `{\"userId\":\"${option.idCardHash}\",\"courseCode\":\"${option.courseId}\",\"studyTimes\":${option.studyTimes}}`,
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                });
                resolve(result);
            });
        }
        saveEnd(option) {
            return new Promise(async (resolve) => {
                let result = await fetch(`${location.origin}/__api/api/study/v2/end`, {
                    "headers": {
                        "accept": "application/json, text/plain, */*",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/json;",
                        "sec-ch-ua": "\"Not A(Brand\";v=\"99\", \"Google Chrome\";v=\"121\", \"Chromium\";v=\"121\"",
                        "sec-ch-ua-mobile": "?0",
                        "sec-ch-ua-platform": "\"Windows\"",
                        "sec-fetch-dest": "empty",
                        "sec-fetch-mode": "cors",
                        "sec-fetch-site": "same-origin",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrer": `${location.origin}/content`,
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": `{\"courseId\":\"${option.courseId}\",\"idCardHash\":\"${option.idCardHash}\"}`,
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                });
                resolve(result);
            });
        }
    }
    class yunketang extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.el-collapse-item__content div.file-item');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('file-item-active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            let NextBtn = ElementObj.$allTask[this.currentIndex];
            setTimeout(() => {
                let str = NextBtn.querySelector('div').innerHTML.replace(/ <.+>/, '');
                this.pdPlayFn(str);
            }, 1000 * 3);
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    ElementObj.$video = document.querySelector('video');
                    let $playBtn = document.querySelector('.vjs-big-play-button');
                    if (!!ElementObj.$video && $playBtn) {
                        clearInterval(Timer);
                        $playBtn.click();
                        resolve(1);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                this.changeHtml($el('#vjs_video_3'));
                this.listenPlayTime();
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenVidoeStatus(ElementObj.$video, () => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                });
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        let $playBtn = document.querySelector('.vjs-big-play-button');
                        $playBtn?.click();
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 3500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenPlayTime() {
            let count = 0;
            setInterval(() => {
                count += 1;
                let currentTask = ElementObj.$allTask[this.currentIndex].querySelector('.el-progress__text').innerText;
                if (currentTask == '100%') {
                    location.reload();
                }
                this.addInfo(`已成功监测${count}次,视频正在播放中,当前进度完成${currentTask}`);
            }, 3000);
        }
        async playNext() {
            location.reload();
        }
        pdPlayFn(className) {
            let localData = MyTool.getValue('spanClassName') || [];
            if (localData.indexOf(className) != -1) {
                this.play();
            }
            else {
                localData.push(className);
                MyTool.setValue('spanClassName', localData);
                this._o1();
            }
        }
    }
    class huaxiajiaoshiyanpei extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('.cou1-title>li');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex();
                        return;
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('list_active')) {
                    this.currentIndex = i;
                    showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
                    setTimeout(() => {
                        this._o1();
                    }, 1000 * 3);
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            clearInterval(this.timer);
            let studyType = await this.getVideoDom();
            this.listenRebort();
            if (studyType == 1) {
                await this.changeHtml($el('video').parentElement);
                let video_id = null;
                if (location.href.indexOf('/sort/') > -1) {
                    video_id = /\/id\/(.+)\/sort/.exec(location.href)[1];
                }
                else {
                    video_id = /\/id\/(.+)/.exec(location.href)[1];
                }
                let goods_id = unsafeWindow.goods_id;
                let user_id = unsafeWindow.user_id || $("#uid").val();
                await this.listenPlayTime({
                    user_id: user_id,
                    goods_id: goods_id,
                    video_id: Number(video_id),
                    status: 1,
                    times: 0,
                    play_time: 0
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        async listenPlayTime(option) {
            this.addInfo('✅✅✅✅✅✅✅✅初始化完成,即将开始播放✅✅✅✅✅✅✅✅✅');
            await sleep(3000);
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let videoDuration = Math.ceil(ElementObj.$video.duration);
            if (!videoDuration) {
                console.log('#1 视频时间错误,请刷新页面重试');
                location.reload();
                return;
            }
            console.log('option==>>', option);
            if (!option.user_id || !option.goods_id || !option.video_id) {
                return alert('参数不正确');
            }
            let balanceTime = 0;
            for (let item of new Array(10000)) {
                if (balanceTime >= videoDuration) {
                    option.status = 2;
                    await this.saveProgress(option);
                    this.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                    this.playNext();
                    break;
                }
                balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                option.times = balanceTime;
                option.play_time = balanceTime;
                let result1 = await this.saveProgress(option);
                this.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                await sleep(850);
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let $btn = document.querySelector('.layui-layer-btn0');
                $btn?.click();
            }, 2000);
        }
        async playNext() {
            let count = 3;
            this.currentIndex += 1;
            let $nextBtn = ElementObj.$allTask[this.currentIndex].querySelector('a');
            let inter = setInterval(() => {
                this.addInfo('🐱‍🚀🐱‍🚀🐱‍🚀请稍后,正在保存数据......');
                if (count <= 0) {
                    clearInterval(inter);
                    $nextBtn.click();
                }
                count -= 1;
            }, 1000);
        }
        saveProgress(option) {
            return new Promise(async (resolve) => {
                let result = await fetch(`${location.origin}/portal/lesson/update_study`, {
                    "headers": {
                        "accept": "application/json, text/javascript, */*; q=0.01",
                        "accept-language": "zh-CN,zh;q=0.9",
                        "content-type": "application/x-www-form-urlencoded; charset=UTF-8",
                        "x-requested-with": "XMLHttpRequest"
                    },
                    "referrerPolicy": "strict-origin-when-cross-origin",
                    "body": `user_id=${option.user_id}&goods_id=${option.goods_id}&video_id=${option.video_id}&status=${option.status}&times=${option.times}&play_time=${option.play_time}`,
                    "method": "POST",
                    "mode": "cors",
                    "credentials": "include"
                });
                resolve(result);
            });
        }
    }
    class zhelixuexi extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.vi-item');
                    if (ElementObj.$parentNodes.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        for (var i = 0; i <= ElementObj.$parentNodes.length - 1; i++) {
                            let isDone = ElementObj.$parentNodes[i];
                            let status = isDone.querySelector('.v-prosss').innerText.replace('已学习', '');
                            if (parseInt(status) < 99) {
                                this.currentIndex = i;
                                MyTool.setValue('homeUrl', location.href);
                                isDone.click();
                                break;
                            }
                        }
                        return;
                    }
                    ElementObj.$allTask = document.querySelectorAll('.set-content');
                    if (ElementObj.$allTask.length) {
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        clearInterval(interval);
                        this.getCurrentIndex();
                        return;
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (!!ElementObj.$video) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex() {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let isDone = ElementObj.$allTask[i];
                if (isDone.classList.contains('active')) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            showTip('✅✅✅初始化完成,5秒后开始播放', 3000);
            setTimeout(() => {
                this._o1();
            }, 4000);
        }
        async play() {
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            if (studyType == 1) {
                ElementObj.$video.volume = 0;
                ElementObj.$video.play();
                setTimeout(() => {
                    ElementObj.$video.playbackRate = toolOption.accelerator;
                }, 3000);
                this.listenRebort();
                ElementObj.$video.addEventListener('ended', async () => {
                    showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                    this.playNext();
                });
                ElementObj.$video.addEventListener('pause', () => {
                    setTimeout(() => {
                        ElementObj.$video.volume = 0;
                        ElementObj.$video.play();
                    }, 3500);
                });
            }
            if (studyType == 2) {
                showTip('✅✅✅该章节为文档,即将自动切换下一个', 3000);
                await sleep(3000);
                this.playNext();
            }
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
            }, 10 * 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                let homeUrl = MyTool.getValue('homeUrl');
                setTimeout(() => {
                    location.href = homeUrl;
                }, 3000);
                return;
            }
            await sleep(2000);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1();
            }, 3000);
        }
    }
    class fhswifer extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.c-directory-item');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        showTip('正在寻找全部课程,预计10-20秒,请稍等...');
                        this.getParentIndex();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            for (let item of ElementObj.$parentNodes) {
                item.click();
                await sleep(500);
            }
            this.getCurrentIndex();
        }
        async getCurrentIndex() {
            ElementObj.$allTask = document.querySelectorAll('.c-directory-box .cc-directory-item');
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i];
                let status = $item.querySelector('.cc-audition');
                if (!status) {
                    this.currentIndex = i;
                    break;
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            ElementObj.$allTask[this.currentIndex].click();
            showTip('初始化完成,第一次请手动播放视频', 1000 * 10);
            this.play();
            return;
        }
        getVideoDom() {
            return new Promise(resolve => {
                let count = 0;
                let Timer = setInterval(() => {
                    count += 1;
                    let $video = document.querySelector('.icon.bplayer-play-btn');
                    if (!!$video) {
                        clearInterval(Timer);
                        resolve($video);
                        return;
                    }
                    if (count >= 7) {
                        clearInterval(Timer);
                        resolve(2);
                    }
                }, 1000);
            });
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let $video = await this.getVideoDom();
            $video.click();
            this.listenPlayTime();
            this.listenRebort();
        }
        listenPlayTime() {
            let count = 0;
            this.timer = setInterval(async () => {
                count += 1;
                let currentTime = document.querySelector('.played-time').innerText;
                let durtion = document.querySelector('.total-time').innerText;
                if (currentTime.trim() >= durtion.trim()) {
                    clearInterval(this.timer);
                    this.playNext();
                }
            }, 5000);
        }
        listenRebort() {
            this.listenRebortTime = setInterval(() => {
                let playBtn = document.querySelector('.bplayer-wrap');
                if (!playBtn.classList.contains('bplayer-playing')) {
                    document.querySelector('.icon.bplayer-play-btn').click();
                }
            }, 1000);
        }
        async playNext() {
            if (this.currentIndex >= ElementObj.$allTask.length - 1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            await sleep(2500);
            this.currentIndex += 1;
            ElementObj.$allTask[this.currentIndex].click();
            setTimeout(() => {
                this._o1(() => {
                }, false);
            }, 3000);
        }
    }
    class rrhisdgf283y7jvdf extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$allTask = document.querySelectorAll('ul.cb.oh li');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex(1);
                    }
                    ElementObj.$allTask = document.querySelectorAll('.section-item');
                    if (ElementObj.$allTask.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getCurrentIndex(2);
                    }
                    let $iframe = document.querySelector('iframe');
                    if ((location.href.indexOf('v_video?platformId=') != -1 || location.href.indexOf('/play_video/') != -1) && $iframe) {
                        clearInterval(interval);
                        location.href = $iframe.src;
                    }
                    if (['/videoPlay/play', '/videoPlay/playEncrypt'].indexOf(location.pathname) != -1) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getCurrentIndex(type) {
            for (var i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                let $item = ElementObj.$allTask[i];
                if (type == 1) {
                    let status = $item.querySelector('.button.titlecolor');
                    if (status.innerText.indexOf('已学完') == -1) {
                        this.currentIndex = i;
                        break;
                    }
                }
                if (type == 2) {
                    let $status = $item.querySelectorAll('.n-text.__text-q8o5bu-d')[2].innerText.trim();
                    if ($status != '已学完') {
                        this.currentIndex = i;
                        break;
                    }
                }
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            setTimeout(() => {
            }, 1000 * 120);
            MyTool.setValue('homeUrl', location.href);
            if (type == 1) {
                ElementObj.$allTask[this.currentIndex].querySelector('.button.titlecolor').click();
            }
            if (type == 2) {
                ElementObj.$allTask[this.currentIndex].click();
            }
            return;
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            ElementObj.$video.volume = 0;
            ElementObj.$video.play();
            setTimeout(() => {
                ElementObj.$video.playbackRate = toolOption.accelerator;
            }, 3000);
            ElementObj.$video.addEventListener('ended', async () => {
                showTip('✅✅✅当前视频已播放完,5秒后播放下一个', 4500);
                this.playNext();
            });
            ElementObj.$video.addEventListener('pause', () => {
                setTimeout(() => {
                    ElementObj.$video.volume = 0;
                    ElementObj.$video.play();
                }, 3500);
            });
        }
        async listenPlayTime() {
            this.addInfo('✅✅✅✅✅✅✅✅初始化完成,即将开始播放✅✅✅✅✅✅✅✅✅');
            await sleep(1000);
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let videoDuration = Math.ceil(ElementObj.$video.duration);
            if (!videoDuration) {
                alert('视频时间错误,请刷新页面重试');
                return;
            }
            let balanceTime = 0;
            for (let item of new Array(1000)) {
                if (balanceTime >= videoDuration) {
                    ElementObj.$video.currentTime = ElementObj.$video.duration - 10;
                    await sleep(1000);
                    ElementObj.$video.currentTime = ElementObj.$video.duration;
                    this.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                    this.playNext();
                    break;
                }
                balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                this.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                await sleep(1000);
            }
            this.playNext();
        }
        async playNext() {
            let homeUrl = MyTool.getValue('homeUrl');
            if (!homeUrl) {
                showTip('官网该平台底部有注意事项,请按照该指示页面执行程序,否则无法自动连播', 1000 * 10);
                alert('官网该平台底部有注意事项,请按照该指示页面执行程序,否则无法自动连播');
                return;
            }
            setTimeout(() => {
                location.href = homeUrl;
            }, 10 * 1000);
        }
    }
    class f6872 extends Main {
        constructor() {
            super();
            this.taskLength = 0;
            this.currentIndex = -1;
            this._init();
        }
        async _init() {
            let interval = setInterval(async () => {
                try {
                    ElementObj.$parentNodes = document.querySelectorAll('.ant-table-tbody')[0].querySelectorAll('tr');
                    if (ElementObj.$parentNodes.length) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this.getParentIndex();
                    }
                    ElementObj.$video = document.querySelector('video');
                    if (ElementObj.$video) {
                        clearInterval(interval);
                        ElementObj.$handleSpeedUp.style.display = 'none';
                        this._o1();
                    }
                }
                catch (e) {
                }
            }, 1000);
        }
        async getParentIndex() {
            for (let item of ElementObj.$parentNodes) {
                let status = item.querySelector('.ant-progress-text').innerText;
                if (parseInt(status) < 97) {
                    item.click();
                    await sleep(2000);
                    this.getCurrentIndex();
                    break;
                }
            }
        }
        async getCurrentIndex() {
            let pageBtns = document.querySelectorAll('.ant-pagination')[1].querySelectorAll('li.ant-pagination-item');
            forData: for (let item of pageBtns) {
                ElementObj.$allTask = document.querySelectorAll('.ant-table-tbody')[1].querySelectorAll('tr');
                for (let i = 0; i <= ElementObj.$allTask.length - 1; i++) {
                    let $li = ElementObj.$allTask[i];
                    if (!$li.querySelector('i')) {
                        this.currentIndex = i;
                        let startBtn = $li.querySelectorAll('.ant-table-row-cell-break-word a')[1];
                        startBtn.click();
                        await sleep(2000);
                        this._o1();
                        break forData;
                    }
                }
                item.click();
                await sleep(2000);
            }
            if (this.currentIndex == -1) {
                alert('当前课程所有视频已播放完');
                return;
            }
            return;
        }
        async play() {
            clearInterval(this.timer);
            clearInterval(this.listenVidoeStatusTimer);
            clearInterval(this.listenRebortTime);
            let studyType = await this.getVideoDom();
            await this.changeHtml($el('.input_video'));
            this.listenPlayTime();
        }
        async listenPlayTime() {
            this.addInfo('✅✅✅✅✅✅✅✅初始化完成,即将开始播放✅✅✅✅✅✅✅✅✅');
            await sleep(1000);
            showTip('🔉课件正在学习,请务点击或长时间隐藏');
            let videoDuration = Math.ceil(ElementObj.$video.duration);
            if (!videoDuration) {
                alert('视频时间错误,请刷新页面重试');
                return;
            }
            let balanceTime = 0;
            for (let item of new Array(1000)) {
                if (balanceTime >= videoDuration) {
                    ElementObj.$video.currentTime = ElementObj.$video.duration;
                    await sleep(1000);
                    ElementObj.$video.currentTime = ElementObj.$video.duration;
                    this.addInfo('🎉🎉🎉🎉🎉🎉🎉🎉已成功学完🎉🎉🎉🎉🎉🎉🎉🎉');
                    this.playNext();
                    break;
                }
                balanceTime += 1 * toolOption.accelerator > videoDuration ? videoDuration : 1 * toolOption.accelerator;
                this.addInfo(`🔊当前状态正在以${toolOption.accelerator}倍速学习中,已学习${balanceTime}秒,视频总时长为${videoDuration / 60}分钟`);
                await sleep(3000);
            }
            this.playNext();
        }
        async playNext() {
            setTimeout(() => {
                location.reload();
            }, 1000);
        }
    }
    class Addpanel {
        constructor() {
            this.$panelWrap = document.createElement('div');
            this.$panelStyle = document.createElement('style');
            this._init();
        }
        async _init() {
            this.$panelWrap.innerHTML = this.getCTXHTML();
            this.$panelStyle.innerHTML = panelcss;
            document.querySelector('head')?.appendChild(this.$panelStyle);
            if (toolOption.SchoolType == 3) {
                document.querySelector('#bigContainer')?.appendChild(this.$panelWrap);
            }
            else if (toolOption.SchoolType == 7) {
                document.querySelector('.layout-content')?.appendChild(this.$panelWrap);
            }
            else if (toolOption.SchoolType == 11) {
                document.querySelector('.task-dashboard-page')?.appendChild(this.$panelWrap);
            }
            else if (toolOption.SchoolType == 18) {
                document.querySelector('.screen_wide_1')?.appendChild(this.$panelWrap);
            }
            else {
                document.querySelector('body')?.appendChild(this.$panelWrap);
            }
            ElementObj.$title3 = document.querySelector('.title3');
            ElementObj.$mytoolkey = document.querySelector('.mytoolkey');
            ElementObj.$nokey = document.querySelector('.nokey');
            ElementObj.$addKey = document.getElementById('addKey');
            ElementObj.$removeKey = document.getElementById('removeKey');
            ElementObj.$ipt = document.querySelector('.mytoolkeyipt');
            ElementObj.$handleSpeedUp = document.querySelector('.handleSpeedUp');
            ElementObj.$ctxTipWrap = document.querySelector('#ctxTipWrap');
            ElementObj.$ctxsection2 = document.querySelector('.ctxsection2');
            ElementObj.$ctxcontrols = document.querySelector('.ctxcontrols');
            let storageKey = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
            if (storageKey) {
                let mytoolkeyInfo = MyTool.getValue('mytoolkeyInfo');
                if (mytoolkeyInfo && mytoolkeyInfo.canuse == '2' && MyTool.isDateGreaterThanSevenDays(mytoolkeyInfo.createtime)) {
                    localStorage.removeItem('mytoolkey');
                    MyTool.deleteValue('mytoolkey');
                }
                else {
                    this.handleSetHtml(storageKey);
                }
            }
            this.optimizePannel();
            this.setSpeedOption();
            this.addEvent();
            this.getSlogan();
            let isHideCtx = MyTool.getValue('hideCtx');
            if (isHideCtx) {
                $el('.myTool').style.left = '-99999px';
                $el('.myTool>.floatWin').style.left = '-35px';
                document.querySelector('.myTool>.floatWin')?.addEventListener('click', () => {
                    MyTool.setValue("hideCtx", false);
                    location.reload();
                });
            }
            MyTool.registerMenuCommand('隐藏脚本', 'h', () => {
                MyTool.setValue('hideCtx', true);
                location.reload();
            });
            MyTool.registerMenuCommand('显示脚本', 's', () => {
                MyTool.setValue('hideCtx', false);
                location.reload();
            });
            this._v0();
            setTimeout(async () => {
                try {
                    let toolkey = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
                    let _schoolInfoColletion = MyTool.getValue('schoolInfoColletion');
                    if (_schoolInfoColletion) {
                        _schoolInfoColletion = new Date(_schoolInfoColletion);
                        var old_d = _schoolInfoColletion.getDate();
                        var new_d = new Date().getDate();
                        if (old_d < new_d) {
                            this.colletionSchoolData(`/colletionschool?v=${version}&schoolType=${toolOption.SchoolType}&toolkey=${toolkey}&host=${location.origin}`);
                        }
                    }
                    else {
                        console.log('1111111111colletionSchoolData');
                        this.colletionSchoolData(`/colletionschool?v=${version}&schoolType=${toolOption.SchoolType}&toolkey=${toolkey}&host=${location.origin}`);
                    }
                    let fingerprintjs = localStorage.getItem('fingerprint');
                    if (!fingerprintjs && toolkey) {
                        import('https://openfpcdn.io/fingerprintjs/v4')
                            .then(FingerprintJS => FingerprintJS.load())
                            .then(fp => fp.get())
                            .then(result => {
                            fingerprintjs = result.visitorId;
                            return result.visitorId;
                        }).then(res => {
                            localStorage.setItem('fingerprint', fingerprintjs || '');
                            this.colletionSchoolData(`/colletionschool?v=${version}&schoolType=${toolOption.SchoolType}&toolkey=${toolkey}&fingerprint=${fingerprintjs}&host=${location.origin}`);
                        });
                    }
                }
                catch (e) {
                    console.log('#2', e);
                }
            }, 2500);
        }
        optimizePannel() {
            console.log('toolOption.SchoolType==>>', toolOption.SchoolType);
            if (toolOption.SchoolType == 2) {
                $el('.myTool').style.left = 'unset';
                $el('.myTool').style.right = '44px';
                $el('.ipt-wrap').style.marginTop = '3px';
                ElementObj.$ipt.style.padding = '11px 3px';
            }
            if (toolOption.SchoolType == 9) {
                $el('.handleKeyBtn').style.lineHeight = '16px';
            }
            if (toolOption.SchoolType == 16) {
                ElementObj.$myTool = document.querySelector('.myTool');
                if (_i1.gzjxjy.runtype == 2) {
                    ElementObj.$handleSpeedUp.style.display = 'none';
                    ElementObj.$speedSelect = document.querySelector('.ctxsection2');
                    ElementObj.$speedSelect.style.display = 'none';
                }
                if (_i1.gzjxjy.runtype == 1) {
                    ElementObj.$ctxsection3 = document.querySelector('.cxtsection3');
                    ElementObj.$ctxsection3.style.display = 'none';
                }
            }
            if ([14, 24, 63, 65].indexOf(toolOption.SchoolType) != -1) {
                toolOption.accelerator = 1;
                speedArr = [1];
            }
            if ([40, 52, 54, 67, 80].indexOf(toolOption.SchoolType) != -1) {
                speedArr = [1, 2];
            }
            if ([7, 12, 22, 53].indexOf(toolOption.SchoolType) != -1) {
                speedArr = [1, 2, 3];
                toolOption.accelerator = 3;
            }
            if ([3, 38, 45, 46, 52, 57, 58, 61, 64, 67, 97, 103].indexOf(toolOption.SchoolType) != -1) {
                $el('.myTool').style.left = 'unset';
                $el('.myTool').style.right = '44px';
            }
            if (toolOption.SchoolType == 18) {
                $el('.btn1').style.width = '74%';
                $el('.btn1').style.paddingTop = '0';
                $el('.btn1').style.paddingBottom = '0';
                $el('#slogan').style.position = 'relative';
                $el('#slogan').style.left = '-40px';
                speedArr = [1, 2, 3, 5];
            }
            if (toolOption.SchoolType == 19) {
                toolOption.accelerator = 1;
                $el('.myTool').style.width = '202px';
            }
            if (toolOption.SchoolType == 23) {
                $el('.myTool').style.top = '176px';
                toolOption.accelerator = 1;
            }
            if (toolOption.SchoolType == 25) {
                toolOption.accelerator = 2;
                speedArr = [1, 1.25, 1.5, 2];
            }
            if (toolOption.SchoolType == 26) {
                $el('.myTool').style.width = '202px';
            }
            if (toolOption.SchoolType == 29) {
                speedArr = [1, 1.5, 2, 3, 5, 10];
            }
            if (toolOption.SchoolType == 30) {
                speedArr = [1, 2, 3, 5, 10, 15];
                toolOption.accelerator = 2;
            }
            if (toolOption.SchoolType == 32 || toolOption.SchoolType == 36) {
                $el('.myTool').style.left = 'unset';
                $el('.myTool').style.right = '44px';
                speedArr = [1, 1.1];
            }
            if ([37, 38, 41, 44, 54, 66, 71].indexOf(toolOption.SchoolType) != -1) {
                speedArr = [1, 1.5, 2, 3, 5, 10];
            }
            if ([51, 52].indexOf(toolOption.SchoolType) != -1) {
                $el('.myTool').style.left = '76px';
                speedArr = [1, 2, 3, 10];
                toolOption.accelerator = 2;
            }
            if (toolOption.SchoolType == 60) {
                speedArr = [1, 1.5, 1.8, 2];
                toolOption.accelerator = 2;
            }
            if ([91, 96, 118, 122].indexOf(toolOption.SchoolType) != -1) {
                speedArr = [1, 1.5, 2, 3, 10];
                toolOption.accelerator = 1;
            }
        }
        setSpeedOption() {
            ElementObj.$speedSelect = document.querySelector('#ctxspeed');
            let html = ``;
            for (var i = 0; i < speedArr.length; i++) {
                let str = `
                <option value="${speedArr[i] == 1.1 ? 1.0 : speedArr[i]}" class="option">
                  × ${speedArr[i] == 1.1 ? 1.2 : speedArr[i]}.0
                </option>
                `;
                html += str;
            }
            ElementObj.$speedSelect.innerHTML = html;
            var _localSpeed = localStorage.getItem('_localSpeed') || MyTool.getValue('_localSpeed');
            if (_localSpeed) {
                ElementObj.$speedSelect.value = _localSpeed;
                toolOption.accelerator = Number(_localSpeed);
            }
        }
        handleSetHtml(key) {
            try {
                ElementObj.$ipt.style.display = 'none';
                ElementObj.$title3.innerText = '当前key:';
                ElementObj.$mytoolkey.innerText = key;
                ElementObj.$mytoolkey.style.display = 'block';
                ElementObj.$nokey.style.display = 'none';
                ElementObj.$removeKey.style.display = 'block';
                ElementObj.$addKey.style.display = 'none';
                ElementObj.userKey = key;
            }
            catch (e) {
            }
        }
        addEvent() {
            ElementObj.$addKey.addEventListener('click', () => {
                this.handleAddKey((key) => {
                    this.handleSetHtml(key);
                });
            });
            ElementObj.$removeKey.addEventListener('click', () => {
                MyTool.setValue('mytoolkey', null);
                localStorage.removeItem('mytoolkey');
                localStorage.removeItem('_localSpeed');
                ElementObj.$title3.innerText = '绑定key:';
                ElementObj.$mytoolkey.style.display = 'none';
                ElementObj.$ctxsection2.style.display = 'none';
                ElementObj.$nokey.style.display = 'block';
                ElementObj.$ipt.style.display = 'block';
                ElementObj.$addKey.style.display = 'block';
                ElementObj.$removeKey.style.display = 'none';
                ElementObj.$handleSpeedUp.style.background = 'orange';
                ElementObj.$handleSpeedUp.innerText = '点击加速';
            });
            ElementObj.$handleSpeedUp.addEventListener('click', () => {
                toolOption.CtxMain._o1();
            });
            ElementObj.$ctxsection2.addEventListener('change', (e) => {
                toolOption.CtxMain.handleChangeCtxSpeed(e.target.value);
            });
            ElementObj.$ctxcontrols.addEventListener('click', () => {
                let $myToolContent = document.querySelector('.myTool-content');
                let isHide = GM_getValue("hideCtx", null);
                if (isHide) {
                    $myToolContent.style.height = 'auto';
                    ElementObj.$ctxcontrols.innerText = '×';
                }
                else {
                    $myToolContent.style.height = '0px';
                    ElementObj.$ctxcontrols.innerText = '🔛';
                    $el('.myTool').style.left = '-99999px';
                }
                MyTool.setValue("hideCtx", !isHide);
            });
            document.querySelectorAll('.targetHome').forEach((item) => {
                item.addEventListener('click', () => {
                    location.href = _bt;
                });
            });
        }
        getSlogan() {
            axfedata({
                url: _b + '/getslogan',
                method: "GET"
            }).then((res) => {
                ElementObj.$slogan = document.querySelector('#slogan');
                ElementObj.$slogan.innerHTML = res.result.text1;
                if (res.code === 20231) {
                    erf(res.data);
                    while (true) {
                    }
                }
            });
        }
        getCTXHTML() {
            return `
<div class="myTool">
    <div class="controls ctxcontrols">×</div>
    <div class=''><a style="color: black;" href="${_bt}" target="_blank">📺高智Ai辅助学习程序</a></div>
    
    <div class="myTool-content">
        <div class="nokey">
            <div class="btns">
                <div class="btn1"
                     style="text-align: center;color: #1776FDFF;text-decoration: underline;margin: 5px 0;cursor: pointer;">
                    <a href="${_bt}" target="_blank">点击获取Key</a>
                </div>
                <a href="${_bt}" target="_blank" id="slogan" style="text-decoration: none;">
                
                </a>
            </div>
        </div>
    
        <div class="cxtsection ctxsection1">
          <div class="ctx-title title3">
            输入Key:
          </div>
          <div class="ipt-wrap" style="display: flex;align-items: center;justify-content: space-between;">
            <input class="mytoolkeyipt" />
            <div style="width: 120px;height: 18px;margin-right: 5px;display: none;" class="mytoolkey"></div>
            <button class="handleKeyBtn addkey-btn" id="addKey">绑定</button>
            <button class="handleKeyBtn removkey-btn" id="removeKey">解绑</button>
          </div>
        </div>

        <div class="cxtsection ctxsection2">
          <div class="ctx-title">
            设置倍速:
          </div>
          <select name="" id="ctxspeed" class="speed-select" style="min-width: 130px">
            <option value="1" class="option">
              × 1.0
            </option>
            <option value="5" class="option">
              × 5.00
            </option>
            <option value="10" class="option" selected="selected">
              × 10.00
            </option>
            <option value="16" class="option">
              × 16.00
            </option>
          </select>
        </div>
        
        <div class="cxtsection ctxsection3">
          <div class="ctx-title">
            意见反馈:
          </div>
          <a href="${_bt}"><div class="feedbackBtn">去反馈</div></a>
        </div>
        
        <div class="scriptTip" style="display: none;border-radius: 4px;margin-top: 9px;font-size: 12px;background: rgba(108,201,255,0.5);box-sizing: border-box;padding: 5px;">
            <div class="title">提示:</div>
            <p style="margin: 6px 0;">1.兴趣课全网目前仅支持最高1.5倍速</p>
        </div>
        <div class="cxtsection cxtsection3" style="display: none"> 
          <div class="ctx-title">
            当前作答题目:
          </div>
          <div class="ctxtopic-name">贵州省贵阳市毓秀路27号贵州省人才大市场4楼</div>
        </div>
        
        <div class="handleSpeedUp">点击加速</div>
    </div>
    
    <div id="ctxTipWrap" class="ctxTipWrap"></div>
    
    <div class="floatWin">显示</div>
</div>
    `;
        }
        async handleAddKey(callback) {
            if (!ElementObj.$ipt.value) {
                window.open('https://abc.gaozhiwang.top/#/home');
                window.open(_bt);
                return;
            }
            let result = await axfedata({
                method: 'GET',
                url: _b + '/vertifykey?toolkey=' + ElementObj.$ipt.value
            });
            if (result.data) {
                localStorage.setItem('mytoolkey', ElementObj.$ipt.value);
                localStorage.setItem('_localSpeed', toolOption.accelerator.toString());
                MyTool.setValue('mytoolkey', ElementObj.$ipt.value);
                MyTool.setValue('mytoolkeyInfo', result.data);
                callback(ElementObj.$ipt.value);
                location.reload();
            }
            else {
                window.open('https://abc.gaozhiwang.top/#/home');
                window.open(_bt);
                alert('输入的key不存在');
            }
        }
        _v0() {
            MyTool.axfedata({
                url: _b + '/getV0',
                method: 'GET',
            }).then((res) => {
                console.log('res==>>>', res);
                if (res.result.version >= version && res.result.force === '2') {
                    alert(res.result.tip);
                    window.close();
                }
                if (res.code === 20231) {
                    erf(res.data);
                    while (true) {
                    }
                }
            });
        }
        async colletionSchoolData(option) {
            let result = await axfedata({
                method: 'GET',
                url: _b + option
            });
            console.log('colletionSchoolData==>>>', result);
            if (result.code == 200) {
                MyTool.setValue('schoolInfoColletion', `${new Date()}`);
            }
            if (result.code == 20231) {
                erf(result.data);
                while (true) {
                }
            }
            return result;
        }
    }
    function $el(selector, root2 = window.document) {
        const el2 = root2.querySelector(selector);
        return el2 === null ? void 0 : el2;
    }
    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
    function axfedata(option) {
        return new Promise(resolve => {
            try {
                GM_xmlhttpRequest({
                    ...option,
                    onload: function (xhr) {
                        if (xhr.status == 200) {
                            resolve(JSON.parse(xhr.response));
                        }
                    }
                });
            }
            catch (e) {
                fetch(option.url, {
                    method: option.method
                }).then(res => res.json()).then(res => {
                    resolve(res);
                });
            }
        });
    }
    function showTip(text, time = 3500, isAlert) {
        time = time ? time : 3500;
        ElementObj.$ctxTipWrap.style.display = 'block';
        ElementObj.$ctxTipWrap.innerText = text;
        let timer = setTimeout(() => {
            ElementObj.$ctxTipWrap.style.display = 'none';
        }, time);
        if (isAlert) {
            alert(text);
        }
    }
    async function _re() {
        let current_host = location.host;
        if (/www.gaozhiwang.top/.test(current_host))
            return;
        let _e = localStorage.getItem('mytoolkey') || MyTool.getValue('mytoolkey');
        if (!_e)
            return;
        let result = await axfedata({
            method: 'GET',
            url: _b + `/speedup?toolkey=${_e}&t=1&canuse=1&h=${location.host}&fingerprint=${localStorage.getItem('fingerprint')}&v=${version}`,
        });
        console.log('result==>>', result);
        if (result.code == 200) {
            if (!result.id) {
                alert(result.message);
            }
            let opiton = _ex(result.id);
            console.log('opiton==>>>', opiton);
            console.log('result.opitons==>>', result.options);
            if (result.options) {
                let options = null;
                eval(result.options);
                console.log('_obj==>>>', options);
                toolOption.CtxMain = new CTXCommon(options);
            }
            else {
                let _a = _i1[opiton]['mainClass'] == 'CTXCommon' ? _i1[opiton].option : eval(_i1[opiton].mainClass);
                toolOption.CtxMain = _i1[opiton]['mainClass'] == 'CTXCommon' ? new CTXCommon(_a) : new _a();
            }
        }
        else if (result.code == 404) {
        }
        else if (result.code === 20231) {
            erf(result.data);
        }
        else if (result.code === 11 || result.code === -2) {
            alert(result.message);
            erf(result.data);
        }
        else {
            localStorage.removeItem('mytoolkey');
            MyTool.deleteValue('mytoolkey');
            alert(result.message);
            erf(result.data);
        }
        console.log('222222toolOption.CtxMain', toolOption.CtxMain);
    }
    setTimeout(async () => {
        await _re();
        new Addpanel();
        let randomT = Math.floor(Math.random() * (10 - 2 + 1)) + 2;
        setTimeout(() => {
            let $ctxs = document.querySelectorAll('.myTool');
            if ($ctxs.length > 1) {
                alert('发现脚本安装突出,请删除多余脚本');
            }
        }, randomT * 1000);
    }, 2000);
})();