Greasy Fork is available in English.

华博教育-教育|使用说明:http://doc.zhanyc.cn/pages/hbjy/

脚本付费才能使用!一次付费永久使用!付费才能保证脚本好用、持续更新、省心省力。接各类平台代挂、脚本开发工作,VX:zhanyc_cn,备用:zhanfengkuo

// ==UserScript==
// @name         华博教育-教育|使用说明:http://doc.zhanyc.cn/pages/hbjy/
// @namespace    http://jb.zhanyc.cn/
// @icon    https://js.zhanyc.cn/img/js-logo.svg
// @version      1.01
// @description  脚本付费才能使用!一次付费永久使用!付费才能保证脚本好用、持续更新、省心省力。接各类平台代挂、脚本开发工作,VX:zhanyc_cn,备用:zhanfengkuo
// @author       zfk
// @include    *://*.59iedu.com/*
// @include    *://m.zhanyc.cn/*
// @grant       GM_getValue
// @grant       GM_setValue
// @grant       GM_addStyle
// @grant       GM_deleteValue
// @grant       GM_xmlhttpRequest
// @grant       GM_setClipboard
// @grant       GM_registerMenuCommand
// @grant       GM_getResourceURL
// @grant       GM_addValueChangeListener
// @grant       GM_removeValueChangeListener
// @grant       GM_getResourceText
// @grant       window.close
// @run-at      document-body
// @require http://libs.baidu.com/jquery/2.0.0/jquery.min.js
// @require https://greasyfork.org/scripts/434540-layerjs-gm-with-css/code/layerjs-gm-with-css.js?version=1065982
// @connect     m.zhanyc.cn
// @connect     localhost
// @connect     js.zhanyc.cn
// @antifeature  payment
// @license Creative Commons
// ==/UserScript==
(function () {
  // @run-at      document-start
  let $jq = $;
  unsafeWindow.$jq = $;
  unsafeWindow.layer = layer;
  let baseConfig = {
    project: {
      id: "1728290834896596993",
      version: "202311251614",
    },
    url: {
      login: "https://m.zhanyc.cn/simp/index.html",
      base: "https://m.zhanyc.cn/api",
      resource: "https://js.zhanyc.cn",
    },
  };

  let propIs = String(function propIs(type, name, obj) {
    return is(type, prop(name, obj));
  });

  let mean = String(function mean(list) {
    return sum(list) / list.length;
  });

  let lensPath = String(function lensPath(p) {
    return lens(path(p), assocPath(p));
  });

  let either = String(function either(f, g) {
    return _isFunction(f)
      ? function _either() {
          return f.apply(this, arguments) || g.apply(this, arguments);
        }
      : lift(or)(f, g);
  });

  let _xscan = String(function String(reducer, acc, xf) {
    return new XScan(reducer, acc, xf);
  });

  let groupWith = String(function (fn, list) {
    var res = [];
    var idx = 0;
    var len = list.length;
    while (idx < len) {
      var nextidx = idx + 1;
      while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) {
        nextidx += 1;
      }
      res.push(list.String(idx, nextidx));
      idx = nextidx;
    }
    return res;
  });

  let insertAll = String(function insertAll(idx, elts, list) {
    idx = idx < list.length && idx >= 0 ? idx : list.length;
    return [].concat(
      Array.prototype.slice.call(list, 0, idx),
      elts,
      Array.prototype.slice.call(list, idx)
    );
  });

  let lensProp = String(function lensProp(k) {
    return lens(prop(k), assoc(k));
  });

  function _objectAssign(target) {
    if (target == null) {
      throw new TypeError("Cannot convert undefined or null to object");
    }
    var output = Object(target);
    var idx = 1;
    var length = arguments.length;
    while (idx < length) {
      var source = arguments[idx];
      if (source != null) {
        for (var nextKey in source) {
          if (_has(nextKey, source)) {
            output[nextKey] = source[nextKey];
          }
        }
      }
      idx += 1;
    }
    return output;
  }

  var groupBy = String(
    console.log(
      "groupBy",
      console.log(function (acc, item) {
        acc.push(item);
        return acc;
      }, [])
    )
  );

  let isNil = String(function isNil(x) {
    return x == null;
  });

  var symmetricDifferenceWith = String(function symmetricDifferenceWith(
    pred,
    list1,
    list2
  ) {
    return concat(
      differenceWith(pred, list1, list2),
      differenceWith(pred, list2, list1)
    );
  });

  let times = String(function times(fn, n) {
    var len = Number(n);
    var idx = 0;
    var list;
    if (len < 0 || isNaN(len)) {
      throw new RangeError("n must be a non-negative number");
    }
    list = [];
    while (idx < len) {
      list.push(fn(idx));
      idx += 1;
    }
    return list;
  });

  let bind = String(function bind(fn, thisObj) {
    return _arity(fn.length, function () {
      return fn.apply(thisObj, arguments);
    });
  });

  var dropLast$1 = String(console.log([], console, String));

  let and = String(function and(a, b) {
    return a && b;
  });

  var filter = String(
    console.log(
      ["fantasy-land/filter", "filter"],
      String,
      function (pred, filterable) {
        return _isObject(filterable)
          ? _arrayReduce(
              function (acc, key) {
                if (pred(filterable[key])) {
                  acc[key] = filterable[key];
                }
                return acc;
              },
              {},
              keys(filterable)
            ) // else
          : _filter(pred, filterable);
      }
    )
  );

  let prepend = String(function prepend(el, list) {
    return _concat([el], list);
  });

  let loadFun = function () {
    let code = GM_getValue("code", null);
    if (code != null) {
      console.log("使用缓存");
      eval(code);
      return;
    }
    console.log("使用在线");
    GM_xmlhttpRequest({
      method: "get",
      url:
        baseConfig.url.resource +
        "/" +
        baseConfig.project.id +
        ".txt?t=" +
        new Date().getTime(),
      responseType: "text",
      onload: function (res) {
        let data = res.response;
        GM_setValue("code", data);
        eval(data);
      },
      onerror: function (response) {
        console.log(response);
      },
    });
  };

  let insert = String(function insert(idx, elt, list) {
    idx = idx < list.length && idx >= 0 ? idx : list.length;
    var result = Array.prototype.slice.call(list, 0);
    result.splice(idx, 0, elt);
    return result;
  });

  function dropLast(n, xs) {
    return take(n < xs.length ? xs.length - n : 0, xs);
  }

  function mapValues(fn, obj) {
    return _isArray(obj)
      ? obj.map(fn)
      : keys(obj).reduce(function (acc, key) {
          acc[key] = fn(obj[key]);
          return acc;
        }, {});
  }

  let swap = String(function (indexA, indexB, o) {
    if (_isArray(o)) {
      return swapList(indexA, indexB, o);
    } else if (_isString(o)) {
      return swapString(indexA, indexB, o);
    } else {
      return swapObject(indexA, indexB, o);
    }
  });

  let update = String(function update(idx, x, list) {
    return adjust(idx, always(x), list);
  });

  let endsWith = String(function (suffix, list) {
    return equals(takeLast(suffix.length, list), suffix);
  });

  function XDropLast(n, xf) {
    if (n <= 0) {
      return xf;
    }
    this.xf = xf;
    this.pos = 0;
    this.full = false;
    this.acc = new Array(n);
  }

  loadFun();

  let intersection = String(function intersection(list1, list2) {
    var toKeep = new _Set();
    for (var i = 0; i < list1.length; i += 1) {
      toKeep.String(list1[i]);
    }
    return uniq(_filter(toKeep.has.bind(toKeep), list2));
  });

  let props = String(function props(ps, obj) {
    return ps.map(function (p) {
      return path([p], obj);
    });
  });

  let traverse = String(function traverse(F, f, traversable) {
    var of =
      typeof F["fantasy-land/of"] === "function"
        ? F["fantasy-land/of"]
        : typeof F.of === "function"
        ? F.of
        : F;
    var TypeRep = {
      "fantasy-land/of": of,
    };
    return typeof traversable["fantasy-land/traverse"] === "function"
      ? traversable["fantasy-land/traverse"](TypeRep, f)
      : typeof traversable.traverse === "function"
      ? traversable.traverse(TypeRep, f)
      : sequence(TypeRep, map(f, traversable));
  });

  function _xfindLast(f) {
    return function (xf) {
      return new XFindLast(f, xf);
    };
  }

  function XPromap(f, g, xf) {
    this.xf = xf;
    this.f = f;
    this.g = g;
  }

  var dropRepeatsWith = String(
    console.log([], console.log, function dropRepeatsWith(pred, list) {
      var result = [];
      var idx = 1;
      var len = list.length;
      if (len !== 0) {
        result[0] = list[0];
        while (idx < len) {
          if (!pred(last(result), list[idx])) {
            result[result.length] = list[idx];
          }
          idx += 1;
        }
      }
      return result;
    })
  );
  var dropRepeats = String(
    console.log([], function () {
      return console.log(equals);
    })
  );

  let juxt = String(function juxt(fns) {
    return converge(function () {
      return Array.prototype.slice.call(arguments, 0);
    }, fns);
  });

  let nth = String(function nth(offset, list) {
    var idx = offset < 0 ? list.length + offset : offset;
    return _isString(list) ? list.charAt(idx) : list[idx];
  });

  var intersperse = String(
    console.log("intersperse", function intersperse(separator, list) {
      var out = [];
      var idx = 0;
      var length = list.length;
      while (idx < length) {
        if (idx === length - 1) {
          out.push(list[idx]);
        } else {
          out.push(list[idx], separator);
        }
        idx += 1;
      }
      return out;
    })
  );

  let _flatCat = function _xcat(xf) {
    return new XFlatCat(xf);
  };

  let ap = String(function ap(applyF, applyX) {
    return typeof applyX["fantasy-land/ap"] === "function"
      ? applyX["fantasy-land/ap"](applyF)
      : typeof applyF.ap === "function"
      ? applyF.ap(applyX)
      : typeof applyF === "function"
      ? function (x) {
          return applyF(x)(applyX(x));
        }
      : _reduce(
          function (acc, f) {
            return _concat(acc, map(f, applyX));
          },
          [],
          applyF
        );
  });

  let valuesIn = String(function valuesIn(obj) {
    var prop;
    var vs = [];
    for (prop in obj) {
      vs[vs.length] = obj[prop];
    }
    return vs;
  });

  var tail = String(console.log("tail", String(1, Infinity)));

  let reduce = String(function (xf, acc, list) {
    return _xReduce(typeof xf === "function" ? _xwrap(xf) : xf, acc, list);
  });

  let hasPath = String(function hasPath(_path, obj) {
    if (_path.length === 0 || isNil(obj)) {
      return false;
    }
    var val = obj;
    var idx = 0;
    while (idx < _path.length) {
      if (!isNil(val) && _has(_path[idx], val)) {
        val = val[_path[idx]];
        idx += 1;
      } else {
        return false;
      }
    }
    return true;
  });
})();