Pārlūkot izejas kodu

增加crontab工具

zxlie 6 gadi atpakaļ
vecāks
revīzija
c8441f0bfe

+ 1 - 1
README.md

@@ -43,7 +43,7 @@ https://chrome.google.com/webstore/detail/pkgccpejnmalmdinmhkkfafefagiiiad?hl=zh
 - 编码规范检测(HTML/CSS/JS规范检测)
 - 页面性能检测(页面响应时间、Header监测)
 - 页面栅格标尺(页面栅格化、屏幕标尺)
-- 多维小工具集(进制转换、RGBA/HEX颜色转换等)
+- 多维小工具集(进制转换、RGB/HEX颜色转换、Crontab、还款计算器等)
 - Ajax调试功能(需在控制台中使用)
 - 网页编码设置(UTF-8、GBK、日文、韩文等)
 - 我的便签笔记(便签笔记,支持导出)

+ 2 - 2
apps/manifest.json

@@ -1,9 +1,9 @@
 {
   "name": "WEB前端助手(FeHelper)-Dev",
-  "version": "2019.05.2816",
+  "version": "2019.05.2819",
   "manifest_version": 2,
   "default_locale": "zh_CN",
-  "description": "FE助手:JSON格式化、JSON比对、二维码生成与解码、信息编解码、代码压缩&美化、页面取色、Markdown与HTML、网页截屏、编码设置、正则、时间转换、网页性能检测、Ajax调试、密码生成器、便签笔记、chrome插件下载等",
+  "description": "FE助手:JSON格式化、JSON比对、二维码生成与解码、信息编解码、代码压缩&美化、页面取色、Markdown、网页截屏、编码设置、正则、Crontab、时间转换、网页性能检测、密码生成器、便签笔记、chrome插件下载等",
   "icons": {
     "16": "static/img/fe-16.png",
     "48": "static/img/fe-48.png",

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
apps/options/index.html


BIN
apps/static/screenshot/crx/WEB前端助手(FeHelper)_v2019.05.2816.crx → apps/static/screenshot/crx/WEB前端助手(FeHelper)_v2019.05.2819.crx


+ 235 - 0
apps/toolkit/crontab/index.css

@@ -0,0 +1,235 @@
+*,
+*::before,
+*::after {
+    box-sizing: border-box;
+}
+::-moz-selection {
+    background-color: rgba(255, 255, 128, 0.2);
+}
+::selection {
+    background-color: rgba(255, 255, 128, 0.2);
+}
+
+.mod-crontab {
+    text-align: center;
+}
+.mod-crontab a,
+.mod-crontab a:visited,
+.mod-crontab a.active {
+    color: #cccccc;
+}
+.mod-crontab h1,
+.mod-crontab .text-highlight {
+    color: gold;
+    font-size: 75%;
+    margin-bottom: 10px;
+    margin-top: 25px;
+}
+.mod-crontab .text-highlight a {
+    color: gold;
+}
+.mod-crontab .monitoring {
+    font-size: 75%;
+    line-height: 1.25em;
+    color: #a8a8a8;
+    margin-bottom: 25px;
+}
+.mod-crontab div.select {
+    position: relative;
+    display: inline-block;
+    height: 15em;
+}
+.mod-crontab div.select label {
+    position: absolute;
+    top: 28px;
+    left: 25px;
+    transform: rotate(45deg);
+    transform-origin: left top 0;
+}
+.mod-crontab table {
+    margin-left: auto;
+    margin-right: auto;
+    border-collapse: collapse;
+    border-top: 1px solid #333333;
+    border-bottom: 1px solid #333333;
+    width: 100%;
+    max-width: 400px;
+}
+.mod-crontab table th,
+.mod-crontab table td {
+    border-top: 1px solid #333333;
+    border-bottom: 1px solid #333333;
+}
+.mod-crontab table th {
+    width: 13em;
+    text-align: right;
+    padding: 0.2em 1em 0.2em 0;
+}
+.mod-crontab table td {
+    text-align: left;
+    padding: 0.2em 0 0.2em 1em;
+}
+.mod-crontab .blurb {
+    font-size: 75%;
+    color: #fff !important;
+}
+.mod-crontab .blurb a {
+    color: #fff;
+}
+#contabContentBox {
+    min-height: 500px;
+}
+.mod-crontab div.warning {
+    color: saddlebrown;
+    font-size: 75%;
+    height: 0;
+}
+.mod-crontab .text-editor input {
+    font-family: "Courier New", Courier, monospace;
+    text-align: center;
+    font-size: 250%;
+    width: 100%;
+    background-color: #333333;
+    border: 1px solid #cccccc;
+    border-radius: 0.6em;
+    color: #ffffff;
+    padding-top: 0.075rem;
+    box-shadow: 0 0 20px #888;
+}
+.mod-crontab .text-editor {
+    margin-bottom: 10px;
+}
+.mod-crontab .text-editor input.invalid {
+    border: 1px solid darkred;
+}
+.mod-crontab .text-editor input.warning {
+    border: 1px solid saddlebrown;
+}
+.mod-crontab .text-editor input:focus {
+    outline: none;
+}
+.mod-crontab .text-editor input::-ms-clear {
+    width: 0;
+    height: 0;
+}
+.mod-crontab .text-editor input::-moz-selection {
+    color: #f00;
+    background-color: rgba(255, 255, 128, 0.2);
+}
+.mod-crontab .text-editor input::selection {
+    color: #f00;
+    background-color: rgba(255, 255, 128, 0.2);
+}
+.mod-crontab .clickable {
+    text-decoration: underline;
+    cursor: pointer;
+    -webkit-user-select: none;
+    -moz-user-select: none;
+    -ms-user-select: none;
+    user-select: none;
+}
+.mod-crontab .clickable:hover {
+    color:#b00;
+}
+.mod-crontab .part-explanation {
+    font-size: 75%;
+    color: #888;
+    height: 24em;
+}
+.mod-crontab .part-explanation div {
+    display: inline-block;
+    vertical-align: top;
+    margin: 0 1em 0 0;
+}
+.mod-crontab .part-explanation .active {
+    color: #f00;
+}
+.mod-crontab .part-explanation .invalid {
+    background-color: darkred;
+    color: #ff0;
+}
+.mod-crontab .part-explanation .warning {
+    background-color: saddlebrown;
+}
+.mod-crontab .part-explanation .clickable {
+    border-radius: 1em;
+    padding: 0.1em 0.36em;
+}
+.mod-crontab .part-explanation .clickable:last-child {
+    margin: 0;
+}
+.mod-crontab .human-readable {
+    font-size: 14px;
+    min-height: 2.2em;
+    display: -ms-flexbox;
+    display: flex;
+    -ms-flex-pack: end;
+    justify-content: flex-end;
+    -ms-flex-line-pack: end;
+    align-content: flex-end;
+    -ms-flex-direction: column;
+    flex-direction: column;
+    margin-bottom: 0.2em;
+    margin-top: 1.25em;
+}
+.mod-crontab .human-readable .active {
+    color: #f00;
+}
+.mod-crontab .next-date {
+    font-size: 75%;
+    margin-left: 0.5em;
+}
+.mod-crontab .example {
+    text-align: right;
+    font-size: 75%;
+    margin-top: -1em;
+    margin-bottom: 3px;
+}
+.mod-crontab .monitor {
+    border: 1px dotted #666666;
+    border-radius: 0.2em;
+    margin: 3em 0;
+    padding: 0.2em 0;
+    min-height: 10em;
+    color: #666666;
+}
+.mod-crontab .monitor a,
+.mod-crontab .monitor a:visited,
+.mod-crontab .monitor a:active {
+    color: #666666;
+}
+.mod-crontab .monitor .input-copy {
+    display: -ms-flexbox;
+    display: flex;
+    margin: 0.5em 0;
+}
+.mod-crontab .monitor .input-copy input {
+    -ms-flex: 1 1 auto;
+    flex: 1 1 auto;
+    margin: 0 0;
+    border: none;
+    color: inherit;
+    font-family: inherit;
+    font-size: inherit;
+    padding: 0.2em 0.5em;
+    background-color: #262626;
+}
+.mod-crontab .monitor .input-copy button {
+    -ms-flex: 0 1 auto;
+    flex: 0 1 auto;
+    line-height: 0;
+    margin: 0;
+    font-family: inherit;
+    font-size: inherit;
+    background-color: #333333;
+    border-color: #666666;
+    border-width: 1px;
+}
+.mod-crontab .monitor .input-copy .copy {
+    fill: #666666;
+    color: inherit;
+}
+.mod-crontab .monitor .info {
+    font-size: 75%;
+    margin-top: 2em;
+}

+ 1 - 0
apps/toolkit/crontab/index.html

@@ -0,0 +1 @@
+<!-- crontab工具 -->
<div id="containerCrontab">

    <div class="row mod-crontab">
        <div id="contabContentBox">loading...</div>
    </div>
</div>

+ 1674 - 0
apps/toolkit/crontab/index.js

@@ -0,0 +1,1674 @@
+/**
+ * codes from crontab.guru
+ * copyright by crontab.guru
+ */
+let crontabGuruStarter = function () {
+    !function a(u, i, s) {
+        function c(t, e) {
+            if (!i[t]) {
+                if (!u[t]) {
+                    var n = "function" == typeof require && require;
+                    if (!e && n) return n(t, !0);
+                    if (l) return l(t, !0);
+                    var r = new Error("Cannot find module '" + t + "'");
+                    throw r.code = "MODULE_NOT_FOUND", r
+                }
+                var o = i[t] = {exports: {}};
+                u[t][0].call(o.exports, function (e) {
+                    return c(u[t][1][e] || e)
+                }, o, o.exports, a, u, i, s)
+            }
+            return i[t].exports
+        }
+
+        for (var l = "function" == typeof require && require, e = 0; e < s.length; e++) c(s[e]);
+        return c
+    }({
+        1: [function (r, e, t) {
+            r("string.prototype.startswith"), r("string.prototype.endswith"), Number.isInteger || (Number.isInteger = r("is-integer")), Array.prototype.includes || (Array.prototype.includes = function (e) {
+                return 0 <= this.indexOf(e)
+            }), String.prototype.includes || (String.prototype.includes = r("string-includes"));
+            var o = r("choo");
+            window.start = function () {
+                var e = document.getElementById("contabContentBox");
+                if (["flexBasis", "webkitFlexBasis", "msFlexAlign"].some(function (e) {
+                        return e in document.body.style
+                    })) {
+                    var t = o();
+                    t.model(r("./models/app")), t.router(function (e) {
+                        return [e("/", r("./pages/home"))]
+                    });
+                    var n = t.start({history: !1, href: !1});
+                    e.replaceChild(n, e.firstChild)
+                } else e.innerHTML = "Your browser is not supported."
+            }
+        }, {
+            "./models/app": 16,
+            "./pages/home": 49,
+            choo: 21,
+            "is-integer": 28,
+            "string-includes": 39,
+            "string.prototype.endswith": 40,
+            "string.prototype.startswith": 41
+        }], 2: [function (r, e, t) {
+            r("choo/html");
+            e.exports = function (e, t, n) {
+                return function () {
+                    var e = r("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("span");
+                    return e(t, [arguments[0]]), t
+                }(e.commonBlurb)
+            }
+        }, {
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 3: [function (d, e, t) {
+            d("choo/html");
+
+            function o(e, t) {
+                return t.selectedPart === e ? "active" : ""
+            }
+
+            e.exports = function (e, t, n) {
+                if (e.description) {
+                    var r = e.description;
+                    return r.special ? function () {
+                        var e = d("./yo-yoify/lib/appendChild.js"),
+                            t = document.createElement("div");
+                        t.setAttribute("id", "hr"), t.setAttribute("class", "human-readable");
+                        var n = document.createElement("i"), r = document.createElement("span");
+                        return e(r, [arguments[0]]), e(n, ["\n          “", r, "”\n        "]), e(t, ["\n        ", n, "\n      "]), t
+                    }(r.special) : (setTimeout(function () {
+                        var e = document.getElementById("hr");
+                        e.style.display = "none", e.offsetHeight, e.style.display = ""
+                    }, 0), r.isTime ? function () {
+                        var e = d("./yo-yoify/lib/appendChild.js"),
+                            t = document.createElement("div");
+                        t.setAttribute("id", "hr"), t.setAttribute("class", "human-readable");
+                        var n = document.createElement("i"), r = document.createElement("span");
+                        e(r, [arguments[0]]);
+                        var o = document.createElement("span");
+                        o.setAttribute("class", arguments[1]), e(o, [arguments[2]]);
+                        var a = document.createElement("span");
+                        a.setAttribute("class", arguments[3]), e(a, [arguments[4]]);
+                        var u = document.createElement("span");
+                        u.setAttribute("class", arguments[5]), e(u, [arguments[6]]);
+                        var i = document.createElement("span");
+                        e(i, [arguments[7]]);
+                        var s = document.createElement("span");
+                        s.setAttribute("class", arguments[8]), e(s, [arguments[9]]);
+                        var c = document.createElement("span");
+                        c.setAttribute("class", arguments[10]), e(c, [arguments[11]]);
+                        var l = document.createElement("span");
+                        return e(l, [arguments[12]]), e(n, ["\n            “", r, " ", o, ":", a, arguments[13], u, arguments[14], i, arguments[15], s, arguments[16], c, l, "”\n          "]), e(t, ["\n          ", n, "\n        "]), t
+                    }(r.start, o(2, e), r.hours, o(1, e), r.minutes, o(3, e), r.dates, r.datesWeekdays, o(5, e), r.weekdays, o(4, e), r.months, r.end, r.dates ? " " : "", r.datesWeekdays ? " " : "", r.weekdays ? " " : "", r.months ? " " : "") : function () {
+                        var e = d("./yo-yoify/lib/appendChild.js"),
+                            t = document.createElement("div");
+                        t.setAttribute("id", "hr"), t.setAttribute("class", "human-readable");
+                        var n = document.createElement("i"), r = document.createElement("span");
+                        e(r, [arguments[0]]);
+                        var o = document.createElement("span");
+                        o.setAttribute("class", arguments[1]), e(o, [arguments[2]]);
+                        var a = document.createElement("span");
+                        a.setAttribute("class", arguments[3]), e(a, [arguments[4]]);
+                        var u = document.createElement("span");
+                        u.setAttribute("class", arguments[5]), e(u, [arguments[6]]);
+                        var i = document.createElement("span");
+                        e(i, [arguments[7]]);
+                        var s = document.createElement("span");
+                        s.setAttribute("class", arguments[8]), e(s, [arguments[9]]);
+                        var c = document.createElement("span");
+                        c.setAttribute("class", arguments[10]), e(c, [arguments[11]]);
+                        var l = document.createElement("span");
+                        return e(l, [arguments[12]]), e(n, ["\n          “", r, arguments[13], o, arguments[14], a, arguments[15], u, arguments[16], i, arguments[17], s, arguments[18], c, l, "”\n        "]), e(t, ["\n        ", n, "\n      "]), t
+                    }(r.start, o(1, e), r.minutes, o(2, e), r.hours, o(3, e), r.dates, r.datesWeekdays, o(5, e), r.weekdays, o(4, e), r.months, r.end, r.minutes ? " " : "", r.hours ? " " : "", r.dates ? " " : "", r.datesWeekdays ? " " : "", r.weekdays ? " " : "", r.months ? " " : ""))
+                }
+                return function () {
+                    var e = d("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    t.setAttribute("id", "hr"), t.setAttribute("class", "human-readable");
+                    var n = document.createElement("i");
+                    return e(n, [arguments[0]]), e(t, [n]), t
+                }(" ")
+            }
+        }, {
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 4: [function (i, e, t) {
+            i("choo/html");
+            var s = i("../lib/index"), c = i("../lib/dateFormatter");
+            e.exports = function (e, t, a) {
+                var n = e.moreNextDates ? 5 : 1, r = [];
+                if (e.schedule && !e.schedule.errors) {
+                    var o = e.date;
+                    if (o = new Date(Date.UTC(o.getFullYear(), o.getMonth(), o.getDate(), o.getHours(), o.getMinutes(), o.getSeconds())), o = s.nextDate(e.schedule, o)) {
+                        for (var u = [o]; 0 < --n;) o = s.nextDate(e.schedule, new Date(o.getTime() + 1)), u.push(o);
+                        return function () {
+                            var e = i("./yo-yoify/lib/appendChild.js"),
+                                t = document.createElement("div");
+                            return t.setAttribute("class", "next-date"), e(t, ["\n          ", arguments[0], "\n        "]), t
+                        }(r = u.map(function (e, t) {
+                            var n, r = 0 === t ? function () {
+                                    var e = i("./yo-yoify/lib/appendChild.js"),
+                                        t = document.createElement("span");
+                                    return t.onclick = arguments[0], t.setAttribute("class", "clickable"), e(t, ["next"]), t
+                                }(function (e) {
+                                    return a("toggleMoreNextDates")
+                                }) : (i("./yo-yoify/lib/appendChild.js")(n = document.createElement("span"), ["then"]), n),
+                                o = c(e).utc;
+                            return function () {
+                                var e = i("./yo-yoify/lib/appendChild.js"),
+                                    t = document.createElement("div");
+                                return e(t, ["\n            ", arguments[0], " at ", arguments[1], "-", arguments[2], "-", arguments[3], " ", arguments[4], ":", arguments[5], ":00\n          "]), t
+                            }(r, o.year, o.month, o.date, o.hour, o.minute)
+                        }))
+                    }
+                }
+                for (; 0 < n--;) r.push(function () {
+                    var e = i("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    return e(t, [arguments[0]]), t
+                }(" "));
+                return function () {
+                    var e = i("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    return t.setAttribute("class", "next-date"), e(t, ["\n      ", arguments[0], "\n    "]), t
+                }(r)
+            }
+        }, {
+            "../lib/dateFormatter": 9,
+            "../lib/index": 11,
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 5: [function (Se, e, t) {
+            Se("choo/html");
+            var o = function (e, t) {
+                var n = ["clickable"];
+                e.selectedPart === t && n.push("active");
+                var r = [null, "minutes", "hours", "dates", "months", "weekdays"];
+                return e.schedule.errors && e.schedule.errors.includes(r[t]) ? n.push("invalid") : e.schedule.warnings && e.schedule.warnings.includes(r[t]) && n.push("warning"), n.join(" ")
+            }, a = function (e, t) {
+                return e.selectedPart === t ? "" : "display: none"
+            };
+            e.exports = function (e, t, n) {
+                function r(e, t) {
+                    e.preventDefault(), n("selectPart", t)
+                }
+
+                return function () {
+                    var e = Se("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    t.setAttribute("class", "part-explanation");
+                    var n = document.createElement("p");
+                    n.setAttribute("class", "cron-parts");
+                    var r = document.createElement("div"), o = document.createElement("span");
+                    o.onmousedown = arguments[0], o.setAttribute("class", arguments[1]), e(o, ["minute"]), e(r, ["\n          ", o]);
+                    var a = document.createElement("div"), u = document.createElement("span");
+                    u.onmousedown = arguments[2], u.setAttribute("class", arguments[3]), e(u, ["hour"]), e(a, [u]);
+                    var i = document.createElement("div"), s = document.createElement("span");
+                    s.onmousedown = arguments[4], s.setAttribute("class", arguments[5]), e(s, ["day"]), e(i, [s]);
+                    var c = document.createElement("div"), l = document.createElement("span");
+                    l.onmousedown = arguments[6], l.setAttribute("class", arguments[7]), e(l, ["month"]), e(c, [l]);
+                    var d = document.createElement("div"), m = document.createElement("span");
+                    m.onmousedown = arguments[8], m.setAttribute("class", arguments[9]), e(m, ["week"]), e(d, [m]), e(n, ["\n        ", r, a, i, c, d, "\n      "]);
+                    var f = document.createElement("table"), p = document.createElement("tbody"),
+                        h = document.createElement("tr"), v = document.createElement("th");
+                    e(v, ["*"]);
+                    var y = document.createElement("td");
+                    e(y, ["any value"]), e(h, [v, y]);
+                    var b = document.createElement("tr"), g = document.createElement("th");
+                    e(g, [","]);
+                    var w = document.createElement("td");
+                    e(w, ["value list separator"]), e(b, [g, w]);
+                    var E = document.createElement("tr"), x = document.createElement("th");
+                    e(x, ["-"]);
+                    var A = document.createElement("td");
+                    e(A, ["range of values"]), e(E, [x, A]);
+                    var S = document.createElement("tr"), N = document.createElement("th");
+                    e(N, ["/"]);
+                    var C = document.createElement("td");
+                    e(C, ["step values"]), e(S, [N, C]), e(p, ["\n          ", h, "\n          ", b, "\n          ", E, "\n          ", S, "\n        "]);
+                    var j = document.createElement("tbody");
+                    j.setAttribute("style", arguments[10]);
+                    var D = document.createElement("tr"), T = document.createElement("th");
+                    e(T, ["@yearly"]);
+                    var U = document.createElement("td");
+                    e(U, ["(non-standard)"]), e(D, [T, U]);
+                    var k = document.createElement("tr"), _ = document.createElement("th");
+                    e(_, ["@annually"]);
+                    var O = document.createElement("td");
+                    e(O, ["(non-standard)"]), e(k, [_, O]);
+                    var I = document.createElement("tr"), M = document.createElement("th");
+                    e(M, ["@monthly"]);
+                    var P = document.createElement("td");
+                    e(P, ["(non-standard)"]), e(I, [M, P]);
+                    var L = document.createElement("tr"), F = document.createElement("th");
+                    e(F, ["@weekly"]);
+                    var R = document.createElement("td");
+                    e(R, ["(non-standard)"]), e(L, [F, R]);
+                    var z = document.createElement("tr"), $ = document.createElement("th");
+                    e($, ["@daily"]);
+                    var B = document.createElement("td");
+                    e(B, ["(non-standard)"]), e(z, [$, B]);
+                    var H = document.createElement("tr"), V = document.createElement("th");
+                    e(V, ["@hourly"]);
+                    var W = document.createElement("td");
+                    e(W, ["(non-standard)"]), e(H, [V, W]);
+                    var q = document.createElement("tr"), Y = document.createElement("th");
+                    e(Y, ["@reboot"]);
+                    var J = document.createElement("td");
+                    e(J, ["(non-standard)"]), e(q, [Y, J]), e(j, ["\n          ", D, "\n          ", k, "\n          ", I, "\n          ", L, "\n          ", z, "\n          ", H, "\n          ", q, "\n        "]);
+                    var K = document.createElement("tbody");
+                    K.setAttribute("style", arguments[11]);
+                    var X = document.createElement("tr"), G = document.createElement("th");
+                    e(G, ["0-59"]);
+                    var Z = document.createElement("td");
+                    e(Z, ["allowed values"]), e(X, [G, Z]), e(K, ["\n          ", X, "\n        "]);
+                    var Q = document.createElement("tbody");
+                    Q.setAttribute("style", arguments[12]);
+                    var ee = document.createElement("tr"), te = document.createElement("th");
+                    e(te, ["0-23"]);
+                    var ne = document.createElement("td");
+                    e(ne, ["allowed values"]), e(ee, [te, ne]), e(Q, ["\n          ", ee, "\n        "]);
+                    var re = document.createElement("tbody");
+                    re.setAttribute("style", arguments[13]);
+                    var oe = document.createElement("tr"), ae = document.createElement("th");
+                    e(ae, ["1-31"]);
+                    var ue = document.createElement("td");
+                    e(ue, ["allowed values"]), e(oe, [ae, ue]), e(re, ["\n          ", oe, "\n        "]);
+                    var ie = document.createElement("tbody");
+                    ie.setAttribute("style", arguments[14]);
+                    var se = document.createElement("tr"), ce = document.createElement("th");
+                    e(ce, ["1-12"]);
+                    var le = document.createElement("td");
+                    e(le, ["allowed values"]), e(se, [ce, le]);
+                    var de = document.createElement("tr"), me = document.createElement("th");
+                    e(me, ["JAN-DEC"]);
+                    var fe = document.createElement("td");
+                    e(fe, ["alternative single values"]), e(de, [me, fe]), e(ie, ["\n          ", se, "\n          ", de, "\n        "]);
+                    var pe = document.createElement("tbody");
+                    pe.setAttribute("style", arguments[15]);
+                    var he = document.createElement("tr"), ve = document.createElement("th");
+                    e(ve, ["0-6"]);
+                    var ye = document.createElement("td");
+                    e(ye, ["allowed values"]), e(he, [ve, ye]);
+                    var be = document.createElement("tr"), ge = document.createElement("th");
+                    e(ge, ["SUN-SAT"]);
+                    var we = document.createElement("td");
+                    e(we, ["alternative single values"]), e(be, [ge, we]);
+                    var Ee = document.createElement("tr"), xe = document.createElement("th");
+                    e(xe, ["7"]);
+                    var Ae = document.createElement("td");
+                    return e(Ae, ["sunday (non-standard)"]), e(Ee, [xe, Ae]), e(pe, ["\n          ", he, "\n          ", be, "\n          ", Ee, "\n        "]), e(f, ["\n        ", p, "\n        ", j, "\n        ", K, "\n        ", Q, "\n        ", re, "\n        ", ie, "\n        ", pe, "\n      "]), e(t, ["\n      ", n, "\n      ", f, "\n    "]), t
+                }(function (e) {
+                    return r(e, 1)
+                }, o(e, 1), function (e) {
+                    return r(e, 2)
+                }, o(e, 2), function (e) {
+                    return r(e, 3)
+                }, o(e, 3), function (e) {
+                    return r(e, 4)
+                }, o(e, 4), function (e) {
+                    return r(e, 5)
+                }, o(e, 5), a(e, null), a(e, 1), a(e, 2), a(e, 3), a(e, 4), a(e, 5))
+            }
+        }, {
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 6: [function (r, e, t) {
+            r("choo/html");
+            e.exports = function (e, t, n) {
+                return function () {
+                    var e = r("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    t.setAttribute("class", "example");
+                    var n = document.createElement("span");
+                    return n.onclick = arguments[0], n.setAttribute("class", "clickable"), e(n, ["Random Example"]), e(t, ["\n      ", n, "\n    "]), t
+                }(function (e) {
+                    return n("showNextExample")
+                })
+            }
+        }, {
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 7: [function (a, e, t) {
+            a("choo/html");
+            var n = a("debounce");
+            var o = n(function (e, t) {
+                t("inputSelect", e.target)
+            }, 20), u = n(function (e, t) {
+                t("inputEnter", e.target.value)
+            }, 100);
+            e.exports = function (t, e, n) {
+                setTimeout(function () {
+                    return function (e, t) {
+                        if (e.selectedPart && e.selectedPart !== t.selectedPart && !e.selectedDirectly) {
+                            var n = e.text.split(" ").slice(0, e.selectedPart), r = n.pop().length,
+                                o = n.join(" ").length;
+                            0 < o && (o += 1);
+                            var a = document.getElementById("input");
+                            a.selectionStart = o, a.selectionEnd = o + r, a.focus()
+                        }
+                    }(t, e)
+                }, 0);
+                var r = "";
+                return t.schedule.errors ? r = "invalid" : t.schedule.warnings && (r = "warning"), t.focussed ? function () {
+                    var e = a("./on-load/server.js"),
+                        t = a("./yo-yoify/lib/appendChild.js"),
+                        n = document.createElement("div");
+                    n.setAttribute("class", "text-editor");
+                    var r = document.createElement("input"), o = arguments;
+                    return e(r, function () {
+                        o[0](r)
+                    }, function () {
+                    }, "o0"), r.setAttribute("id", "input"), r.setAttribute("type", "text"), r.setAttribute("autocomplete", "off"), r.oninput = arguments[1], r.onblur = arguments[2], r.onfocus = arguments[3], r.onselect = arguments[4], r.onkeydown = arguments[5], r.onmousedown = arguments[6], r.setAttribute("class", arguments[7]), t(n, ["\n        ", r, "\n      "]), n
+                }(function (e) {
+                    e.value = t.text
+                }, function (e) {
+                    n("inputUpdate", e.target.value), u(e, n)
+                }, function (e) {
+                    return n("inputBlur")
+                }, function (e) {
+                    n("inputFocus"), o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, r) : function () {
+                    var e = a("./on-load/server.js"),
+                        t = a("./yo-yoify/lib/appendChild.js"),
+                        n = document.createElement("div");
+                    n.setAttribute("class", "text-editor");
+                    var r = document.createElement("input"), o = arguments;
+                    return e(r, function () {
+                        o[0](r)
+                    }, function () {
+                    }, "o1"), r.setAttribute("id", "input"), r.setAttribute("type", "text"), r.setAttribute("value", arguments[1]), r.oninput = arguments[2], r.onblur = arguments[3], r.onfocus = arguments[4], r.onselect = arguments[5], r.onkeydown = arguments[6], r.onmousedown = arguments[7], r.setAttribute("class", arguments[8]), t(n, ["\n        ", r, "\n      "]), n
+                }(function (e) {
+                    e.value = t.text
+                }, t.text, function (e) {
+                    n("inputUpdate", e.target.value), u(e, n)
+                }, function (e) {
+                    return n("inputBlur")
+                }, function (e) {
+                    n("inputFocus"), o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, function (e) {
+                    return o(e, n)
+                }, r)
+            }
+        }, {
+            "./on-load/server.js": 33,
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20,
+            debounce: 22
+        }], 8: [function (a, e, t) {
+            a("choo/html");
+            e.exports = function (e, t, n) {
+                return e.schedule.warnings ? (r = a("./yo-yoify/lib/appendChild.js"), (o = document.createElement("div")).setAttribute("class", "warning"), r(o, ["Non standard! May not work with every cron."]), o) : function () {
+                    a("./yo-yoify/lib/appendChild.js");
+                    var e = document.createElement("div");
+                    return e.setAttribute("class", "warning"), e
+                }();
+                var r, o
+            }
+        }, {
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }], 9: [function (e, t, n) {
+            function r(e) {
+                return ("0" + e).slice(-2)
+            }
+
+            t.exports = function (e) {
+                var t = e.toTimeString().split(/[()]/)[1];
+                return t && 3 < t.length && (t = t.replace(/[^A-Z]*/g, "")), t && 3 === t.length || (t = "local"), {
+                    utc: {
+                        year: e.getUTCFullYear(),
+                        month: r(e.getUTCMonth() + 1),
+                        date: r(e.getUTCDate()),
+                        hour: r(e.getUTCHours()),
+                        minute: r(e.getUTCMinutes()),
+                        second: r(e.getUTCSeconds()),
+                        zone: "UTC"
+                    },
+                    local: {
+                        year: e.getFullYear(),
+                        month: r(e.getMonth() + 1),
+                        date: r(e.getDate()),
+                        hour: r(e.getHours()),
+                        minute: r(e.getMinutes()),
+                        second: r(e.getSeconds()),
+                        zone: t
+                    }
+                }
+            }
+        }, {}], 10: [function (e, t, n) {
+            "use strict";
+
+            function u(e) {
+                var t = parseInt(e);
+                switch (20 < t ? t % 10 : t) {
+                    case 1:
+                        return e + "st";
+                    case 2:
+                        return e + "nd";
+                    case 3:
+                        return e + "rd";
+                    default:
+                        return e + "th"
+                }
+            }
+
+            function i(e, t, n, r) {
+                return "*" === e ? "every " + t : function (e, t, n, r) {
+                    var o = e.match(/\d+|./g).map(function (e) {
+                        var t = Number(e);
+                        return isNaN(t) ? e : t
+                    }), a = o[0];
+                    if (Number.isInteger(a)) {
+                        if (1 === o.length) return "" + (n[a] || a);
+                        if (3 === o.length && "/" === o[1] && Number.isInteger(o[2])) return "every " + u(o[2]) + " " + t + " from " + (n[a] || a) + " through " + (n[r] || r);
+                        if (3 === o.length && "-" === o[1] && Number.isInteger(o[2]) && o[2] >= a) return "every " + t + " from " + (n[a] || a) + " through " + (n[o[2]] || o[2]);
+                        if (5 === o.length && "-" === o[1] && Number.isInteger(o[2]) && o[2] >= a && "/" === o[3] && Number.isInteger(o[4]) && 1 <= o[4]) return "every " + u(o[4]) + " " + t + " from " + (n[a] || a) + " through " + (n[o[2]] || o[2])
+                    } else if (3 === o.length && "/" === o[1] && Number.isInteger(o[2]) && "*" === o[0]) return "every " + u(o[2]) + " " + t;
+                    return ""
+                }(e, t, n, r)
+            }
+
+            function h(e, t, n, r, o) {
+                var a = e.split(",");
+                return ((o ? "" : t + " ") + function (e) {
+                    switch (e.length) {
+                        case 0:
+                            return "";
+                        case 1:
+                            return e[0];
+                        case 2:
+                            return e[0] + " and " + e[1];
+                        default:
+                            return e.slice(0, e.length - 1).join(", ") + ", and " + e[e.length - 1]
+                    }
+                }(a.map(function (e) {
+                    return i(e, t, n, r)
+                }))).replace("every 1st", "every").replace(t + " every", "every").replace(", " + t, ", ").replace(", and " + t, ", and ")
+            }
+
+            var v = [null, "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"];
+            var y = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"];
+            var b = /^0*\d\d?$/;
+            var g = "After rebooting.";
+            t.exports = function (e) {
+                if ("@reboot" === e.originalParts[0]) return {full: g, special: g};
+                var t, n, r, o = e.parts, a = "*" === (r = o[2]) ? "" : "on " + h(r, "day-of-month", {}, 31),
+                    u = "*" === (n = o[3]) ? "" : "in " + h(n, "month", v, 12, !0),
+                    i = "*" === (t = o[4]) ? "" : "on " + h(t, "day-of-week", y, 7, !0), s = "";
+                a && i && (s = e.daysAnded ? "if it's" : "and");
+                var c, l,
+                    d = (c = o[0], l = o[1], b.test(c) && b.test(l) ? [("0" + c).slice(-2), ("0" + l).slice(-2)] : null);
+                if (d) return {
+                    start: "At",
+                    minutes: d[0],
+                    hours: d[1],
+                    isTime: !0,
+                    dates: a || null,
+                    datesWeekdays: s || null,
+                    weekdays: i || null,
+                    months: u || null,
+                    end: ".",
+                    full: ("At " + d[1] + ":" + d[0] + " " + a + " " + s + " " + i + " " + u).replace(/ +/g, " ").trim() + "."
+                };
+                var m, f = h(o[0], "minute", {}, 59), p = "*" === (m = o[1]) ? "" : "past " + h(m, "hour", {}, 23);
+                return {
+                    start: "At",
+                    minutes: f || null,
+                    hours: p || null,
+                    dates: a || null,
+                    datesWeekdays: s || null,
+                    weekdays: i || null,
+                    months: u || null,
+                    end: ".",
+                    full: ("At " + f + " " + p + " " + a + " " + s + " " + i + " " + u).replace(/ +/g, " ").trim() + "."
+                }
+            }
+        }, {}], 11: [function (e, t, n) {
+            "use strict";
+            var r = e("./describe"), o = e("./nextDate"), a = e("./normalize"), u = e("./prenormalize");
+            t.exports = {prenormalize: u, normalize: a, describe: r, nextDate: o}
+        }, {"./describe": 10, "./nextDate": 12, "./normalize": 13, "./prenormalize": 15}], 12: [function (e, t, n) {
+            "use strict";
+
+            function r(e) {
+                var t, n, r = 0 !== (n = (t = e).getUTCMilliseconds()) ? new Date(t.getTime() + (1e3 - n)) : t,
+                    o = r.getUTCSeconds();
+                return 0 !== o ? new Date(r.getTime() + 1e3 * (60 - o)) : r
+            }
+
+            function m(e, t, n, r, o) {
+                return new Date(Date.UTC(e, t, n, r, o))
+            }
+
+            t.exports = function (e, t) {
+                return Object.keys(e).length && e.months.length && e.dates.length && e.weekdays.length && e.hours.length && e.minutes.length ? function e(t, n, r) {
+                    if (127 < r) return null;
+                    var o = n.getUTCMonth() + 1, a = n.getUTCFullYear();
+                    if (!t.months.includes(o)) return e(t, m(a, o + 1 - 1, 1, 0, 0), ++r);
+                    var u = n.getUTCDate(), i = n.getUTCDay(), s = t.dates.includes(u), c = t.weekdays.includes(i);
+                    if (t.daysAnded && (!s || !c) || !t.daysAnded && !s && !c) return e(t, m(a, o - 1, u + 1, 0, 0), ++r);
+                    var l = n.getUTCHours();
+                    if (!t.hours.includes(l)) return e(t, m(a, o - 1, u, l + 1, 0), ++r);
+                    var d = n.getUTCMinutes();
+                    return t.minutes.includes(d) ? n : e(t, m(a, o - 1, u, l, d + 1), ++r)
+                }(e, r(t), 1) : null
+            }
+        }, {}], 13: [function (e, t, n) {
+            "use strict";
+
+            function h(e, t) {
+                return e - t
+            }
+
+            function v(e) {
+                return e.reduce(function (e, t) {
+                    return e.indexOf(t) < 0 && e.push(t), e
+                }, [])
+            }
+
+            function r(e) {
+                return e.reduce(function (e, t) {
+                    return e.concat(Array.isArray(t) ? r(t) : t)
+                }, [])
+            }
+
+            function o(e, t, n) {
+                for (var r = [], o = e; o <= t; o += n) r.push(o);
+                return r
+            }
+
+            var a = /(^|[,-\/])\*($|[,-\/])/g;
+
+            function y(e, t) {
+                var n = "$1" + t + "$2";
+                return e.replace(a, n).replace(a, n)
+            }
+
+            function b(e, t) {
+                var n = e.split(",").map(function (e) {
+                    return function (e, t) {
+                        var n = e ? e.match(/\d+|./g).map(function (e) {
+                            var t = Number(e);
+                            return isNaN(t) ? e : t
+                        }) : [], r = n[0];
+                        if (Number.isInteger(r)) {
+                            if (1 === n.length) return {list: [r]};
+                            if (3 === n.length && "/" === n[1] && Number.isInteger(n[2]) && 1 <= n[2]) return {
+                                list: o(r, t, n[2]),
+                                warnings: ["nonstandard"]
+                            };
+                            if (3 === n.length && "-" === n[1] && Number.isInteger(n[2]) && n[2] >= r) return {list: o(r, n[2], 1)};
+                            if (5 === n.length && "-" === n[1] && Number.isInteger(n[2]) && n[2] >= r && "/" === n[3] && Number.isInteger(n[4]) && 1 <= n[4]) return {list: o(r, n[2], n[4])}
+                        }
+                        return {errors: ["invalid part"]}
+                    }(e, t)
+                });
+                return {
+                    list: v(r(n.map(function (e) {
+                        return e.list || []
+                    }))).sort(h).filter(function (e) {
+                        return !isNaN(e)
+                    }), errors: v(r(n.map(function (e) {
+                        return e.errors || []
+                    }))), warnings: v(r(n.map(function (e) {
+                        return e.warnings || []
+                    })))
+                }
+            }
+
+            function g(e, t, n) {
+                return e.length && (e[0] < t || e[e.length - 1] > n)
+            }
+
+            var w = /[^\d\-\/\,]/i;
+            t.exports = function (e) {
+                var t = e.parts.map(function (e) {
+                    return e.slice(0)
+                }).map(function (e) {
+                    return e.replace(/\*\/1(?!\d)/g, "*")
+                });
+                if (0 === t.length && e.originalParts.length) return {};
+                var n = {errors: [], warnings: []};
+                if (void 0 !== e.daysAnded && (n.daysAnded = e.daysAnded), 5 !== t.length && n.errors.push("fields"), t[0] && t[0].length) {
+                    var r = y(t[0], "0-59"), o = b(r, 59);
+                    n.minutes = o.list, (o.errors.length || g(n.minutes, 0, 59) || w.test(r)) && (n.minutes = [], n.errors.push("minutes")), o.warnings.length && n.warnings.push("minutes")
+                } else void 0 === t[0] && n.errors.push("minutes");
+                if (t[1] && t[1].length) {
+                    var a = y(t[1], "0-23"), u = b(a, 23);
+                    n.hours = u.list, (u.errors.length || g(n.hours, 0, 23) || w.test(a)) && (n.hours = [], n.errors.push("hours")), u.warnings.length && n.warnings.push("hours")
+                } else void 0 === t[1] && n.errors.push("hours");
+                if (t[2] && t[2].length) {
+                    var i = y(t[2], "1-31"), s = b(i, 31);
+                    n.dates = s.list, (s.errors.length || g(n.dates, 1, 31) || w.test(i)) && (n.dates = [], n.errors.push("dates")), s.warnings.length && n.warnings.push("dates")
+                } else void 0 === t[2] && n.errors.push("dates");
+                if (t[3] && t[3].length) {
+                    var c = y(t[3], "1-12"), l = e.originalParts[3], d = b(c, 12);
+                    n.months = d.list, (d.errors.length || g(n.months, 1, 12) || w.test(c)) && (n.months = [], n.errors.push("months")), (d.warnings.length || l && t[3] !== l && 3 < l.length && /\D/.test(l)) && n.warnings.push("months")
+                } else void 0 === t[3] && n.errors.push("months");
+                if (t[4] && t[4].length) {
+                    var m = y(t[4], "0-6"), f = e.originalParts[4], p = b(m, 7);
+                    n.weekdays = v(p.list.map(function (e) {
+                        return 7 === e ? 0 : e
+                    })).sort(h), (p.errors.length || g(n.weekdays, 0, 6) || w.test(m)) && (n.weekdays = [], n.errors.push("weekdays")), (p.warnings.length || p.list.includes(7) || f && t[4] !== f && 3 < f.length && /\D/.test(f)) && n.warnings.push("weekdays")
+                } else void 0 === t[4] && n.errors.push("weekdays");
+                return n.errors.length || delete n.errors, n.warnings.length || delete n.warnings, n
+            }
+        }, {}], 14: [function (e, t, n) {
+            var r = "crontab.guru - the cron schedule expression editor", o = {
+                "/every-minute": "* * * * *",
+                "/every-1-minute": "* * * * *",
+                "/every-2-minutes": "*/2 * * * *",
+                "/every-even-minute": "*/2 * * * *",
+                "/every-uneven-minute": "1-59/2 * * * *",
+                "/every-3-minutes": "*/3 * * * *",
+                "/every-4-minutes": "*/4 * * * *",
+                "/every-5-minutes": "*/5 * * * *",
+                "/every-five-minutes": "*/5 * * * *",
+                "/every-6-minutes": "*/6 * * * *",
+                "/every-10-minutes": "*/10 * * * *",
+                "/every-ten-minutes": "*/10 * * * *",
+                "/every-15-minutes": "*/15 * * * *",
+                "/every-fifteen-minutes": "*/15 * * * *",
+                "/every-quarter-hour": "*/15 * * * *",
+                "/every-20-minutes": "*/20 * * * *",
+                "/every-30-minutes": "*/30 * * * *",
+                "/every-hour-at-30-minutes": "30 * * * *",
+                "/every-half-hour": "*/30 * * * *",
+                "/every-60-minutes": "0 * * * *",
+                "/every-hour": "0 * * * *",
+                "/every-1-hour": "0 * * * *",
+                "/every-2-hours": "0 */2 * * *",
+                "/every-two-hours": "0 */2 * * *",
+                "/every-even-hour": "0 */2 * * *",
+                "/every-other-hour": "0 */2 * * *",
+                "/every-3-hours": "0 */3 * * *",
+                "/every-three-hours": "0 */3 * * *",
+                "/every-4-hours": "0 */4 * * *",
+                "/every-6-hours": "0 */6 * * *",
+                "/every-six-hours": "0 */6 * * *",
+                "/every-8-hours": "0 */8 * * *",
+                "/every-12-hours": "0 */12 * * *",
+                "/hour-range": "0 9-17 * * *",
+                "/between-certain-hours": "0 9-17 * * *",
+                "/every-day": "0 0 * * *",
+                "/daily": "0 0 * * *",
+                "/once-a-day": "0 0 * * *",
+                "/every-night": "0 0 * * *",
+                "/every-day-at-1am": "0 1 * * *",
+                "/every-day-at-2am": "0 2 * * *",
+                "/every-day-8am": "0 8 * * *",
+                "/every-morning": "0 9 * * *",
+                "/every-midnight": "0 0 * * *",
+                "/every-day-at-midnight": "0 0 * * *",
+                "/every-night-at-midnight": "0 0 * * *",
+                "/every-sunday": "0 0 * * SUN",
+                "/every-monday": "0 0 * * MON",
+                "/every-tuesday": "0 0 * * TUE",
+                "/every-wednesday": "0 0 * * WED",
+                "/every-thursday": "0 0 * * THU",
+                "/every-friday": "0 0 * * FRI",
+                "/every-friday-at-midnight": "0 0 * * FRI",
+                "/every-saturday": "0 0 * * SAT",
+                "/every-weekday": "0 0 * * 1-5",
+                "/weekdays-only": "0 0 * * 1-5",
+                "/monday-to-friday": "0 0 * * 1-5",
+                "/every-weekend": "0 0 * * 6,0",
+                "/weekends-only": "0 0 * * 6,0",
+                "/every-7-days": "0 0 * * 0",
+                "/weekly": "0 0 * * 0",
+                "/once-a-week": "0 0 * * 0",
+                "/every-week": "0 0 * * 0",
+                "/every-month": "0 0 1 * *",
+                "/monthly": "0 0 1 * *",
+                "/once-a-month": "0 0 1 * *",
+                "/every-other-month": "0 0 1 */2 *",
+                "/every-quarter": "0 0 1 */3 *",
+                "/every-6-months": "0 0 1 */6 *",
+                "/every-year": "0 0 1 1 *"
+            };
+            t.exports = {
+                textFromLocation: function () {
+                    if (window.location.hash) return decodeURIComponent(window.location.hash).replace("#", "").replace(/_/g, " ");
+                    if (window.location.pathname) {
+                        var e = decodeURIComponent(window.location.pathname);
+                    }
+                    return null
+                }, updateLocation: function (e) {
+                }, defaultTitle: r
+            }
+        }, {}], 15: [function (e, t, n) {
+            "use strict";
+
+            function a(e, i) {
+                return Object.keys(i).reduce(function (e, t) {
+                    return n = e, o = i[r = t], a = new RegExp("(^|[ ,-/])" + r + "($|[ ,-/])", "gi"), u = "$1" + o + "$2", n.replace(a, u).replace(a, u);
+                    var n, r, o, a, u
+                }, e)
+            }
+
+            var u = {sun: "0", mon: "1", tue: "2", wed: "3", thu: "4", fri: "5", sat: "6"};
+            var i = {
+                jan: "1",
+                feb: "2",
+                mar: "3",
+                apr: "4",
+                may: "5",
+                jun: "6",
+                jul: "7",
+                aug: "8",
+                sep: "9",
+                oct: "10",
+                nov: "11",
+                dec: "12"
+            };
+            var s = {
+                "@yearly": ["0", "0", "1", "1", "*"],
+                "@annually": ["0", "0", "1", "1", "*"],
+                "@monthly": ["0", "0", "1", "*", "*"],
+                "@weekly": ["0", "0", "*", "*", "0"],
+                "@daily": ["0", "0", "*", "*", "*"],
+                "@midnight": ["0", "0", "*", "*", "*"],
+                "@hourly": ["0", "*", "*", "*", "*"]
+            };
+            t.exports = function (e) {
+                var t = e.trim().split(/\s+/).filter(function (e) {
+                    return e
+                });
+                if (1 === t.length && "@reboot" === t[0]) return {originalParts: t, parts: []};
+                var n, r, o = (1 === t.length ? (n = t[0], r = s[n], void 0 !== r ? r : [n]) : t).map(function (e, t) {
+                    switch (t) {
+                        case 3:
+                            return a(e, i);
+                        case 4:
+                            return a(e, u);
+                        default:
+                            return e
+                    }
+                });
+                return {originalParts: t, parts: o, daysAnded: !!o[2] && "*" === o[2][0] || !!o[4] && "*" === o[4][0]}
+            }
+        }, {}], 16: [function (e, t, n) {
+            var i = e("../lib/index"), s = e("../lib/path"),
+                o = ["5 0 * 8 *", "15 14 1 * *", "0 22 * * 1-5", "23 0-20/2 * * *", "5 4 * * sun", "0 0,12 1 */2 *", "0 4 8-14 * *", "0 0 1,15 * 3", "@weekly"],
+                c = function (e) {
+                    return e.trim().replace(/ +/g, " ")
+                };
+
+            function a(e) {
+                var t = c(e),
+                    n = null,
+                    r = i.prenormalize(t), o = i.normalize(r), a = o.errors ? null : i.describe(r), u = t.split(" ");
+                return {
+                    schedule: o,
+                    description: a,
+                    commonBlurb: n,
+                    isSpecialString: 1 <= u.length && u[0].startsWith("@")
+                }
+            }
+
+            var r = s.textFromLocation() || "5 4 * * *", u = a(r);
+            t.exports = {
+                state: {
+                    text: r,
+                    schedule: u.schedule,
+                    description: u.description,
+                    exampleIndex: 0,
+                    selectedPart: null,
+                    selectedDirectly: !1,
+                    moreNextDates: !1,
+                    commonBlurb: u.commonBlurb,
+                    isSpecialString: u.isSpecialString,
+                    date: new Date,
+                    focussed: !1
+                }, reducers: {
+                    showNextExample: function (e, t) {
+                        var n = o[t.exampleIndex], r = a(n);
+                        return s.updateLocation(n), {
+                            text: n,
+                            schedule: r.schedule,
+                            description: r.description,
+                            exampleIndex: (t.exampleIndex + 1) % o.length,
+                            isSpecialString: r.isSpecialString
+                        }
+                    }, inputFocus: function (e, t) {
+                        return {focussed: !0}
+                    }, inputBlur: function (e, t) {
+                        return {text: c(t.text), selectedPart: null, focussed: !1}
+                    }, selectPart: function (e, t) {
+                        return {selectedPart: t.isSpecialString ? null : e, selectedDirectly: !1}
+                    }, inputUpdate: function (e, t) {
+                        return {text: e}
+                    }, inputEnter: function (e, t) {
+                        return s.updateLocation(e), a(e)
+                    }, inputSelect: function (e, t) {
+                        if (!t.focussed) return {};
+                        if (t.isSpecialString) return {selectedPart: null, selectedDirectly: !0};
+                        var n = e.selectionStart, r = e.selectionEnd,
+                            o = c(t.text.substring(0, n + 1)).split(" ").length;
+                        return {
+                            selectedPart: o === c(t.text.substring(0, r + 1)).split(" ").length ? Math.max(Math.min(o, 5), 1) : null,
+                            selectedDirectly: !0
+                        }
+                    }, toggleMoreNextDates: function (e, t) {
+                        return {moreNextDates: !t.moreNextDates}
+                    }, setNextMinute: function (e, t) {
+                        return {date: e}
+                    }
+                }, effects: {}, subscriptions: [function (e, t) {
+                    var n = 61 - (new Date).getUTCSeconds();
+                    setTimeout(function () {
+                        e("setNextMinute", new Date, t), setInterval(function () {
+                            e("setNextMinute", new Date, t)
+                        }, 6e4)
+                    }, 1e3 * n)
+                }]
+            }
+        }, {"../lib/index": 11, "../lib/path": 14}], 17: [function (e, t, n) {
+            t.exports = function (e, t, n, r, o, a) {
+                e.forEach(function (e) {
+                    e(t, n, r, o, a)
+                })
+            }
+        }, {}], 18: [function (e, t, n) {
+            var x = e("xtend/mutable"), A = e("xtend"), S = e("./apply-hook");
+
+            function N(n, r, o, a) {
+                n && !o[n] && (o[n] = {}), Object.keys(r).forEach(function (e) {
+                    var t = a ? a(r[e], e) : r[e];
+                    n ? o[n][e] = t : o[e] = t
+                })
+            }
+
+            function r(e) {
+                throw e
+            }
+
+            function C(r) {
+                return function (e, t, n) {
+                    e && r(e, t, n)
+                }
+            }
+
+            function j(t, e) {
+                return e.forEach(function (e) {
+                    t = e(t)
+                }), t
+            }
+
+            t.exports = function (e) {
+                var h = [], v = [], i = [], o = [], s = [], a = [], c = [];
+                t(e = e || {});
+                var l = !1, d = !1, m = !1, f = !1, y = n._subscriptions = {}, b = n._reducers = {},
+                    g = n._effects = {},
+                    w = n._models = [], E = {};
+                return n.model = function (e) {
+                    w.push(e)
+                }, n.state = function (e) {
+                    var r = (e = e || {}).state;
+                    if (!e.state && !1 === e.freeze) return A(E);
+                    if (!e.state) return Object.freeze(A(E));
+                    var o = [], a = {};
+                    w.forEach(function (e) {
+                        var t = e.namespace;
+                        o.push(t);
+                        var n = e.state || {};
+                        t ? (a[t] = a[t] || {}, N(t, n, a), a[t] = A(a[t], r[t])) : x(a, n)
+                    }), Object.keys(r).forEach(function (e) {
+                        -1 === o.indexOf(e) && (a[e] = r[e])
+                    });
+                    var t = j(A(E, A(r, a)), s);
+                    return !1 === e.freeze ? t : Object.freeze(t)
+                }, (n.start = n).use = t, n;
+
+                function t(e) {
+                    e.onStateChange && h.push(e.onStateChange), e.onError && i.push(C(e.onError)), e.onAction && v.push(e.onAction), e.wrapSubscriptions && o.push(e.wrapSubscriptions), e.wrapInitialState && s.push(e.wrapInitialState), e.wrapReducers && a.push(e.wrapReducers), e.wrapEffects && c.push(e.wrapEffects)
+                }
+
+                function n(n) {
+                    return n = n || {}, w.forEach(function (e) {
+                        var r = e.namespace;
+                        if (!m && e.state && !1 !== n.state) {
+                            var t = e.state || {};
+                            r ? (E[r] = E[r] || {}, N(r, t, E)) : x(E, t)
+                        }
+                        !l && e.reducers && !1 !== n.reducers && N(r, e.reducers, b, function (e) {
+                            return j(e, a)
+                        }), !d && e.effects && !1 !== n.effects && N(r, e.effects, g, function (e) {
+                            return j(e, c)
+                        }), !f && e.subscriptions && !1 !== n.subscriptions && N(r, e.subscriptions, y, function (e, t) {
+                            var n = p("subscription: " + (r ? r + ":" + t : t));
+                            return (e = j(e, o))(n, function (e) {
+                                S(i, e, E, p)
+                            }), e
+                        })
+                    }), m || !1 === n.state || (E = j(E, s)), n.noSubscriptions || (f = !0), n.noReducers || (l = !0), n.noEffects || (d = !0), n.noState || (m = !0), i.length || i.push(C(r)), p;
+
+                    function p(o, a) {
+                        return function (e, t, n) {
+                            n || a || (n = t, t = null);
+                            var r = a ? function (e) {
+                                (e = e || null) && S(i, e, E, function (n) {
+                                    return function (e, t) {
+                                        u(e, t = void 0 === t ? null : t, n, r)
+                                    }
+                                })
+                            } : n;
+                            u(e, t = void 0 === t ? null : t, o, r)
+                        }
+                    }
+
+                    function u(l, d, m, f) {
+                        setTimeout(function () {
+                            var e = !1, t = !1, n = A(E);
+                            v.length && S(v, d, E, l, m, p);
+                            var r = l;
+                            if (/:/.test(l)) {
+                                var o = l.split(":"), a = o.shift();
+                                r = o.join(":")
+                            }
+                            var u = a ? b[a] : b;
+                            if (u && u[r]) {
+                                if (a) {
+                                    var i = u[r](d, E[a]);
+                                    n[a] = A(E[a], i)
+                                } else x(n, b[r](d, E));
+                                e = !0, h.length && S(h, d, n, E, r, p), f(null, E = n)
+                            }
+                            var s = a ? g[a] : g;
+                            if (!e && s && s[r]) {
+                                var c = p("effect: " + l);
+                                a ? s[r](d, E[a], c, f) : s[r](d, E, c, f), t = !0
+                            }
+                            if (!e && !t) throw new Error("Could not find action " + r)
+                        }, 0)
+                    }
+                }
+            }
+        }, {"./apply-hook": 17, xtend: 44, "xtend/mutable": 45}], 19: [function (e, t, n) {
+        }, {}], 20: [function (e, t, n) {
+            t.exports = e("yo-yo")
+        }, {"yo-yo": 46}], 21: [function (e, t, n) {
+            var p = e("sheet-router/history"), r = e("sheet-router"), h = e("global/document"), v = e("document-ready"),
+                y = e("sheet-router/href"), b = e("sheet-router/hash"), g = e("hash-match"), o = e("barracks"),
+                w = e("nanoraf"), E = e("xtend"), x = e("yo-yo");
+            t.exports = function (s) {
+                s = s || {};
+                var a = m._store = o(), u = m._router = null, i = null, c = null, l = null, d = null;
+                return a.use({
+                    onStateChange: function (e, t, n, r, o) {
+                        d || (d = w(function (e, t) {
+                            var n = u(e.location.pathname, e, t);
+                            c = x.update(c, n)
+                        })), d(t, n)
+                    }
+                }), a.use(s), m.toString = function (e, t) {
+                    t = t || {}, a.start({subscriptions: !1, reducers: !1, effects: !1});
+                    var n = a.state({state: t}), r = f(i, l, function () {
+                        return function () {
+                        }
+                    })(e, n);
+                    return r.outerHTML || r.toString()
+                }, m.router = function (e, t) {
+                    i = e, l = t
+                }, m.model = function (e) {
+                    a.model(e)
+                }, (m.start = m).use = function (e) {
+                    a.use(e)
+                }, m;
+
+                function m(n, e) {
+                    e || "string" == typeof n || (e = n, n = null), e = e || {}, a.model(function (e) {
+                        var t = h.location, n = {pathname: e.hash ? g(t.hash) : t.href}, r = {};
+                        return !0 === e.hash ? o(function (t) {
+                            b(function (e) {
+                                t(g(e))
+                            })
+                        }, "handleHash", r) : (!1 !== e.history && o(p, "handleHistory", r), !1 !== e.href && o(y, "handleHref", r)), {
+                            namespace: "location",
+                            subscriptions: r,
+                            reducers: {
+                                setLocation: function (e, t) {
+                                    return {pathname: e.location.replace(/#.*/, "")}
+                                }
+                            },
+                            state: n
+                        };
+
+                        function o(e, t, n) {
+                            n[t] = function (t, n) {
+                                e(function (e) {
+                                    t("location:setLocation", {location: e}, n)
+                                })
+                            }
+                        }
+                    }(e));
+                    var t = a.start(e);
+                    u = m._router = f(i, l, t);
+                    var r = a.state({state: {}});
+                    if (!n) {
+                        var o = u(r.location.pathname, r);
+                        return c = o
+                    }
+                    v(function () {
+                        var e = h.querySelector(n), t = u(r.location.pathname, r);
+                        c = x.update(e, t)
+                    })
+                }
+
+                function f(e, t, u) {
+                    var i = {params: {}};
+                    return r(e, t, function (r) {
+                        return function (e, t, n) {
+                            return "function" == typeof t && (o = t, a = u("view: " + e, !0), t = function (e, t) {
+                                var n = i, r = i = E(t, {params: e});
+                                return !1 !== s.freeze && Object.freeze(r), o(r, n, a)
+                            }), r(e, t, n);
+                            var o, a
+                        }
+                    })
+                }
+            }
+        }, {
+            barracks: 18,
+            "document-ready": 23,
+            "global/document": 24,
+            "hash-match": 26,
+            nanoraf: 30,
+            "sheet-router": 38,
+            "sheet-router/hash": 35,
+            "sheet-router/history": 36,
+            "sheet-router/href": 37,
+            xtend: 44,
+            "yo-yo": 46
+        }], 22: [function (e, t, n) {
+            t.exports = function (t, n, r) {
+                var o, a, u, i, s;
+
+                function c() {
+                    var e = Date.now() - i;
+                    e < n && 0 <= e ? o = setTimeout(c, n - e) : (o = null, r || (s = t.apply(u, a), u = a = null))
+                }
+
+                null == n && (n = 100);
+                var e = function () {
+                    u = this, a = arguments, i = Date.now();
+                    var e = r && !o;
+                    return o || (o = setTimeout(c, n)), e && (s = t.apply(u, a), u = a = null), s
+                };
+                return e.clear = function () {
+                    o && (clearTimeout(o), o = null)
+                }, e.flush = function () {
+                    o && (s = t.apply(u, a), u = a = null, clearTimeout(o), o = null)
+                }, e
+            }
+        }, {}], 23: [function (e, t, n) {
+            "use strict";
+            var r = e("global/document");
+            t.exports = r.addEventListener ? function (e) {
+                var t = r.readyState;
+                if ("complete" === t || "interactive" === t) return setTimeout(e, 0);
+                r.addEventListener("DOMContentLoaded", function () {
+                    e()
+                })
+            } : function () {
+            }
+        }, {"global/document": 24}], 24: [function (o, a, e) {
+            (function (e) {
+                var t, n = void 0 !== e ? e : "undefined" != typeof window ? window : {}, r = o("min-document");
+                "undefined" != typeof document ? t = document : (t = n["__GLOBAL_DOCUMENT_CACHE@4"]) || (t = n["__GLOBAL_DOCUMENT_CACHE@4"] = r), a.exports = t
+            }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
+        }, {"min-document": 19}], 25: [function (e, n, t) {
+            (function (e) {
+                var t;
+                t = "undefined" != typeof window ? window : void 0 !== e ? e : "undefined" != typeof self ? self : {}, n.exports = t
+            }).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
+        }, {}], 26: [function (e, t, n) {
+            t.exports = function (e, t) {
+                var n = t || "/";
+                return 0 === e.length ? n : (0 != (e = (e = e.replace("#", "")).replace(/\/$/, "")).indexOf("/") && (e = "/" + e), "/" == n ? e : e.replace(n, ""))
+            }
+        }, {}], 27: [function (e, t, n) {
+            "use strict";
+            var r = e("number-is-nan");
+            t.exports = Number.isFinite || function (e) {
+                return !("number" != typeof e || r(e) || e === 1 / 0 || e === -1 / 0)
+            }
+        }, {"number-is-nan": 31}], 28: [function (e, t, n) {
+            var r = e("is-finite");
+            t.exports = Number.isInteger || function (e) {
+                return "number" == typeof e && r(e) && Math.floor(e) === e
+            }
+        }, {"is-finite": 27}], 29: [function (e, t, n) {
+            "use strict";
+            var T, U = "http://www.w3.org/1999/xhtml", k = "undefined" == typeof document ? void 0 : document,
+                r = k ? k.body || k.createElement("div") : {}, s = r.hasAttributeNS ? function (e, t, n) {
+                    return e.hasAttributeNS(t, n)
+                } : r.hasAttribute ? function (e, t, n) {
+                    return e.hasAttribute(n)
+                } : function (e, t, n) {
+                    return null != e.getAttributeNode(t, n)
+                };
+
+            function _(e, t) {
+                var n = e.nodeName, r = t.nodeName;
+                return n === r || !!(t.actualize && n.charCodeAt(0) < 91 && 90 < r.charCodeAt(0)) && n === r.toUpperCase()
+            }
+
+            function o(e, t, n) {
+                e[n] !== t[n] && (e[n] = t[n], e[n] ? e.setAttribute(n, "") : e.removeAttribute(n, ""))
+            }
+
+            var O = {
+                OPTION: function (e, t) {
+                    o(e, t, "selected")
+                }, INPUT: function (e, t) {
+                    o(e, t, "checked"), o(e, t, "disabled"), e.value !== t.value && (e.value = t.value), s(t, null, "value") || e.removeAttribute("value")
+                }, TEXTAREA: function (e, t) {
+                    var n = t.value;
+                    e.value !== n && (e.value = n);
+                    var r = e.firstChild;
+                    if (r) {
+                        var o = r.nodeValue;
+                        if (o == n || !n && o == e.placeholder) return;
+                        r.nodeValue = n
+                    }
+                }, SELECT: function (e, t) {
+                    if (!s(t, null, "multiple")) {
+                        for (var n = 0, r = t.firstChild; r;) {
+                            var o = r.nodeName;
+                            if (o && "OPTION" === o.toUpperCase()) {
+                                if (s(r, null, "selected")) break;
+                                n++
+                            }
+                            r = r.nextSibling
+                        }
+                        e.selectedIndex = n
+                    }
+                }
+            };
+
+            function I() {
+            }
+
+            function M(e) {
+                return e.id
+            }
+
+            var P, a = (P = function (e, t) {
+                var n, r, o, a, u, i = t.attributes;
+                for (n = i.length - 1; 0 <= n; --n) o = (r = i[n]).name, a = r.namespaceURI, u = r.value, a ? (o = r.localName || o, e.getAttributeNS(a, o) !== u && e.setAttributeNS(a, o, u)) : e.getAttribute(o) !== u && e.setAttribute(o, u);
+                for (n = (i = e.attributes).length - 1; 0 <= n; --n) !1 !== (r = i[n]).specified && (o = r.name, (a = r.namespaceURI) ? (o = r.localName || o, s(t, a, o) || e.removeAttributeNS(a, o)) : s(t, null, o) || e.removeAttribute(o))
+            }, function (h, v, e) {
+                if (e || (e = {}), "string" == typeof v) if ("#document" === h.nodeName || "HTML" === h.nodeName) {
+                    var t = v;
+                    (v = k.createElement("html")).innerHTML = t
+                } else n = v, !T && k.createRange && (T = k.createRange()).selectNode(k.body), T && T.createContextualFragment ? r = T.createContextualFragment(n) : (r = k.createElement("body")).innerHTML = n, v = r.childNodes[0];
+                var n, r, o, y = e.getNodeKey || M, b = e.onBeforeNodeAdded || I, a = e.onNodeAdded || I,
+                    g = e.onBeforeElUpdated || I, w = e.onElUpdated || I, u = e.onBeforeNodeDiscarded || I,
+                    i = e.onNodeDiscarded || I, E = e.onBeforeElChildrenUpdated || I, s = !0 === e.childrenOnly, x = {};
+
+                function A(e) {
+                    o ? o.push(e) : o = [e]
+                }
+
+                function S(e, t, n) {
+                    !1 !== u(e) && (t && t.removeChild(e), i(e), function e(t, n) {
+                        if (1 === t.nodeType) for (var r = t.firstChild; r;) {
+                            var o = void 0;
+                            n && (o = y(r)) ? A(o) : (i(r), r.firstChild && e(r, n)), r = r.nextSibling
+                        }
+                    }(e, n))
+                }
+
+                function N(e) {
+                    a(e);
+                    for (var t = e.firstChild; t;) {
+                        var n = t.nextSibling, r = y(t);
+                        if (r) {
+                            var o = x[r];
+                            o && _(t, o) && (t.parentNode.replaceChild(o, t), C(o, t))
+                        }
+                        N(t), t = n
+                    }
+                }
+
+                function C(e, t, n) {
+                    var r, o = y(t);
+                    if (o && delete x[o], !v.isSameNode || !v.isSameNode(h)) {
+                        if (!n) {
+                            if (!1 === g(e, t)) return;
+                            if (P(e, t), w(e), !1 === E(e, t)) return
+                        }
+                        if ("TEXTAREA" !== e.nodeName) {
+                            var a, u, i, s, c = t.firstChild, l = e.firstChild;
+                            e:for (; c;) {
+                                for (i = c.nextSibling, a = y(c); l;) {
+                                    if (u = l.nextSibling, c.isSameNode && c.isSameNode(l)) {
+                                        c = i, l = u;
+                                        continue e
+                                    }
+                                    r = y(l);
+                                    var d = l.nodeType, m = void 0;
+                                    if (d === c.nodeType && (1 === d ? (a ? a !== r && ((s = x[a]) ? l.nextSibling === s ? m = !1 : (e.insertBefore(s, l), u = l.nextSibling, r ? A(r) : S(l, e, !0), l = s) : m = !1) : r && (m = !1), (m = !1 !== m && _(l, c)) && C(l, c)) : 3 !== d && 8 != d || (m = !0, l.nodeValue !== c.nodeValue && (l.nodeValue = c.nodeValue))), m) {
+                                        c = i, l = u;
+                                        continue e
+                                    }
+                                    r ? A(r) : S(l, e, !0), l = u
+                                }
+                                if (a && (s = x[a]) && _(s, c)) e.appendChild(s), C(s, c); else {
+                                    var f = b(c);
+                                    !1 !== f && (f && (c = f), c.actualize && (c = c.actualize(e.ownerDocument || k)), e.appendChild(c), N(c))
+                                }
+                                c = i, l = u
+                            }
+                            for (; l;) u = l.nextSibling, (r = y(l)) ? A(r) : S(l, e, !0), l = u
+                        }
+                        var p = O[e.nodeName];
+                        p && p(e, t)
+                    }
+                }
+
+                !function e(t) {
+                    if (1 === t.nodeType) for (var n = t.firstChild; n;) {
+                        var r = y(n);
+                        r && (x[r] = n), e(n), n = n.nextSibling
+                    }
+                }(h);
+                var c, l, d = h, m = d.nodeType, f = v.nodeType;
+                if (!s) if (1 === m) 1 === f ? _(h, v) || (i(h), d = function (e, t) {
+                    for (var n = e.firstChild; n;) {
+                        var r = n.nextSibling;
+                        t.appendChild(n), n = r
+                    }
+                    return t
+                }(h, (c = v.nodeName, (l = v.namespaceURI) && l !== U ? k.createElementNS(l, c) : k.createElement(c)))) : d = v; else if (3 === m || 8 === m) {
+                    if (f === m) return d.nodeValue !== v.nodeValue && (d.nodeValue = v.nodeValue), d;
+                    d = v
+                }
+                if (d === v) i(h); else if (C(d, v, s), o) for (var p = 0, j = o.length; p < j; p++) {
+                    var D = x[o[p]];
+                    D && S(D, D.parentNode, !1)
+                }
+                return !s && d !== h && h.parentNode && (d.actualize && (d = d.actualize(h.ownerDocument || k)), h.parentNode.replaceChild(d, h)), d
+            });
+            t.exports = a
+        }, {}], 30: [function (e, t, n) {
+            var u = e("global/window");
+            t.exports = function (n, r) {
+                r = r || u.requestAnimationFrame;
+                var o = !1, a = null;
+                return function (e, t) {
+                    null !== a || o || (o = !0, r(function () {
+                        o = !1, a && (n(a, t), a = null)
+                    })), a = e
+                }
+            }
+        }, {"global/window": 25}], 31: [function (e, t, n) {
+            "use strict";
+            t.exports = Number.isNaN || function (e) {
+                return e != e
+            }
+        }, {}], 32: [function (e, t, n) {
+            var r = e("global/document"), o = e("global/window"), s = Object.create(null),
+                a = "onloadid" + (new Date % 9e6).toString(36), c = "data-" + a, u = 0;
+            if (o && o.MutationObserver) {
+                var i = new MutationObserver(function (e) {
+                    if (!(Object.keys(s).length < 1)) for (var t = 0; t < e.length; t++) e[t].attributeName !== c ? (f(e[t].removedNodes, m), f(e[t].addedNodes, d)) : (o = e[t], a = d, u = m, void 0, i = o.target.getAttribute(c), n = o.oldValue, r = i, n && r && s[n][3] === s[r][3] ? s[i] = s[o.oldValue] : (s[o.oldValue] && u(o.oldValue, o.target), s[i] && a(i, o.target)));
+                    var n, r, o, a, u, i
+                });
+                r.body ? l(i) : r.addEventListener("DOMContentLoaded", function (e) {
+                    l(i)
+                })
+            }
+
+            function l(e) {
+                e.observe(r.documentElement, {
+                    childList: !0,
+                    subtree: !0,
+                    attributes: !0,
+                    attributeOldValue: !0,
+                    attributeFilter: [c]
+                })
+            }
+
+            function d(e, t) {
+                s[e][0] && 0 === s[e][2] && (s[e][0](t), s[e][2] = 1)
+            }
+
+            function m(e, t) {
+                s[e][1] && 1 === s[e][2] && (s[e][1](t), s[e][2] = 0)
+            }
+
+            function f(t, n) {
+                for (var e = Object.keys(s), r = 0; r < t.length; r++) {
+                    if (t[r] && t[r].getAttribute && t[r].getAttribute(c)) {
+                        var o = t[r].getAttribute(c);
+                        e.forEach(function (e) {
+                            o === e && n(e, t[r])
+                        })
+                    }
+                    0 < t[r].childNodes.length && f(t[r].childNodes, n)
+                }
+            }
+
+            t.exports = function e(t, n, r, o) {
+                return n = n || function () {
+                }, r = r || function () {
+                }, t.setAttribute(c, "o" + u), s["o" + u] = [n, r, 0, o || e.caller], u += 1, t
+            }, t.exports.KEY_ATTR = c, t.exports.KEY_ID = a
+        }, {"global/document": 24, "global/window": 25}], 33: [function (e, t, n) {
+            var r = e("global/window");
+            r && r.process && "renderer" === r.process.type ? t.exports = e("./index.js") : t.exports = function () {
+            }
+        }, {"./index.js": 32, "global/window": 25}], 34: [function (e, t, n) {
+            t.exports = function (e) {
+                return e.trim().replace(/[\?|#].*$/, "").replace(/^(?:https?\:)\/\//, "").replace(/^.*?(\/.*)/, "$1").replace(/\/$/, "")
+            }
+        }, {}], 35: [function (e, t, n) {
+            var r = e("global/window");
+            t.exports = function (t) {
+                r.onhashchange = function (e) {
+                    t(r.location.hash)
+                }
+            }
+        }, {"global/window": 25}], 36: [function (e, t, n) {
+            var r = e("global/document"), o = e("global/window");
+            t.exports = function (e) {
+                o.onpopstate = function () {
+                    e(r.location.href)
+                }
+            }
+        }, {"global/document": 24, "global/window": 25}], 37: [function (e, t, n) {
+            var o = e("global/window");
+            t.exports = function (r) {
+                o.onclick = function (e) {
+                    var t = function e(t) {
+                        if (t) return "a" !== t.localName ? e(t.parentNode) : void 0 === t.href ? e(t.parentNode) : o.location.host !== t.host ? e(t.parentNode) : t
+                    }(e.target);
+                    if (t) {
+                        e.preventDefault();
+                        var n = t.href.replace(/#$/, "");
+                        r(n), o.history.pushState({}, null, n)
+                    }
+                }
+            }
+        }, {"global/window": 25}], 38: [function (e, t, n) {
+            var r = e("pathname-match"), o = e("wayfarer");
+
+            function u(e, t, n) {
+                return n || (n = t, t = null), [e = e.replace(/^\//, ""), t, n]
+            }
+
+            t.exports = function (e, t, n) {
+                n = n ? n(u) : u, t || (t = e, e = "");
+                var a = o(e);
+                return function t(e, n) {
+                    if (Array.isArray(e[0])) e.forEach(function (e) {
+                        t(e, n)
+                    }); else if (e[1]) {
+                        var r = e[0] ? n.concat(e[0]).join("/") : n.length ? n.join("/") : e[0];
+                        a.on(r, e[1]), t(e[2], n.concat(e[0]))
+                    } else if (Array.isArray(e[2])) t(e[2], n.concat(e[0])); else {
+                        var o = e[0] ? n.concat(e[0]).join("/") : n.length ? n.join("/") : e[0];
+                        a.on(o, e[2])
+                    }
+                }(t(n), []), function (e) {
+                    var t = [].slice.call(arguments);
+                    return t[0] = r(t[0]), a.apply(null, t)
+                }
+            }
+        }, {"pathname-match": 34, wayfarer: 42}], 39: [function (e, t, n) {
+            "use strict";
+            t.exports = function (e, t, n) {
+                if (n = "number" == typeof n ? n : 0, "string" != typeof e) throw new TypeError("Expected a string");
+                return -1 !== e.indexOf(t, n)
+            }
+        }, {}], 40: [function (e, t, n) {
+            String.prototype.endsWith || function () {
+                "use strict";
+                var e = function () {
+                    try {
+                        var e = {}, t = Object.defineProperty, n = t(e, e, e) && t
+                    } catch (e) {
+                    }
+                    return n
+                }(), c = {}.toString, t = function (e) {
+                    if (null == this) throw TypeError();
+                    var t = String(this);
+                    if (e && "[object RegExp]" == c.call(e)) throw TypeError();
+                    var n = t.length, r = String(e), o = r.length, a = n;
+                    if (1 < arguments.length) {
+                        var u = arguments[1];
+                        void 0 !== u && (a = u ? Number(u) : 0) != a && (a = 0)
+                    }
+                    var i = Math.min(Math.max(a, 0), n) - o;
+                    if (i < 0) return !1;
+                    for (var s = -1; ++s < o;) if (t.charCodeAt(i + s) != r.charCodeAt(s)) return !1;
+                    return !0
+                };
+                e ? e(String.prototype, "endsWith", {
+                    value: t,
+                    configurable: !0,
+                    writable: !0
+                }) : String.prototype.endsWith = t
+            }()
+        }, {}], 41: [function (e, t, n) {
+            String.prototype.startsWith || function () {
+                "use strict";
+                var e = function () {
+                    try {
+                        var e = {}, t = Object.defineProperty, n = t(e, e, e) && t
+                    } catch (e) {
+                    }
+                    return n
+                }(), c = {}.toString, t = function (e) {
+                    if (null == this) throw TypeError();
+                    var t = String(this);
+                    if (e && "[object RegExp]" == c.call(e)) throw TypeError();
+                    var n = t.length, r = String(e), o = r.length, a = 1 < arguments.length ? arguments[1] : void 0,
+                        u = a ? Number(a) : 0;
+                    u != u && (u = 0);
+                    var i = Math.min(Math.max(u, 0), n);
+                    if (n < o + i) return !1;
+                    for (var s = -1; ++s < o;) if (t.charCodeAt(i + s) != r.charCodeAt(s)) return !1;
+                    return !0
+                };
+                e ? e(String.prototype, "startsWith", {
+                    value: t,
+                    configurable: !0,
+                    writable: !0
+                }) : String.prototype.startsWith = t
+            }()
+        }, {}], 42: [function (e, t, n) {
+            var s = e("./trie");
+            t.exports = function e(t) {
+                if (!(this instanceof e)) return new e(t);
+                var r = (t || "").replace(/^\//, ""), o = s();
+                return a._trie = o, a.on = function (e, t) {
+                    var n = t._wayfarer && t._trie ? t : function () {
+                        return t.apply(this, Array.prototype.slice.call(arguments))
+                    };
+                    return e = e || "/", n.route = e, n._wayfarer && n._trie ? o.mount(e, n._trie.trie) : o.create(e).cb = n, a
+                }, (a.emit = a).match = u, a._wayfarer = !0, a;
+
+                function a(e) {
+                    var t = u(e), n = new Array(arguments.length);
+                    n[0] = t.params;
+                    for (var r = 1; r < n.length; r++) n[r] = arguments[r];
+                    return t.cb.apply(t.cb, n)
+                }
+
+                function u(e) {
+                    var t = o.match(e);
+                    if (t && t.cb) return new i(t);
+                    var n = o.match(r);
+                    if (n && n.cb) return new i(n);
+                    throw new Error("route '" + e + "' did not match")
+                }
+
+                function i(e) {
+                    this.cb = e.cb, this.route = e.cb.route, this.params = e.params
+                }
+            }
+        }, {"./trie": 43}], 43: [function (e, t, n) {
+            var u = e("xtend/mutable"), r = e("xtend");
+
+            function o() {
+                if (!(this instanceof o)) return new o;
+                this.trie = {nodes: {}}
+            }
+
+            (t.exports = o).prototype.create = function (e) {
+                var a = e.replace(/^\//, "").split("/");
+                return function e(t, n) {
+                    var r = a.hasOwnProperty(t) && a[t];
+                    if (!1 === r) return n;
+                    var o = null;
+                    return /^:|^\*/.test(r) ? (n.nodes.hasOwnProperty("$$") ? o = n.nodes.$$ : (o = {nodes: {}}, n.nodes.$$ = o), "*" === r[0] && (n.wildcard = !0), n.name = r.replace(/^:|^\*/, "")) : n.nodes.hasOwnProperty(r) ? o = n.nodes[r] : (o = {nodes: {}}, n.nodes[r] = o), e(t + 1, o)
+                }(0, this.trie)
+            }, o.prototype.match = function (e) {
+                var o = e.replace(/^\//, "").split("/"), a = {}, t = function t(n, e) {
+                    if (void 0 !== e) {
+                        var r = o[n];
+                        if (void 0 === r) return e;
+                        if (e.nodes.hasOwnProperty(r)) return t(n + 1, e.nodes[r]);
+                        if (e.name) {
+                            try {
+                                a[e.name] = decodeURIComponent(r)
+                            } catch (e) {
+                                return t(n, void 0)
+                            }
+                            return t(n + 1, e.nodes.$$)
+                        }
+                        if (e.wildcard) {
+                            try {
+                                a.wildcard = decodeURIComponent(o.slice(n).join("/"))
+                            } catch (e) {
+                                return t(n, void 0)
+                            }
+                            return e.nodes.$$
+                        }
+                        return t(n + 1)
+                    }
+                }(0, this.trie);
+                if (t) return (t = r(t)).params = a, t
+            }, o.prototype.mount = function (e, t) {
+                var n = e.replace(/^\//, "").split("/"), r = null, o = null;
+                if (1 === n.length) o = n[0], r = this.create(o); else {
+                    var a = n.join("/");
+                    o = n[0], r = this.create(a)
+                }
+                u(r.nodes, t.nodes), t.name && (r.name = t.name), r.nodes[""] && (Object.keys(r.nodes[""]).forEach(function (e) {
+                    "nodes" !== e && (r[e] = r.nodes[""][e])
+                }), u(r.nodes, r.nodes[""].nodes), delete r.nodes[""].nodes)
+            }
+        }, {xtend: 44, "xtend/mutable": 45}], 44: [function (e, t, n) {
+            t.exports = function () {
+                for (var e = {}, t = 0; t < arguments.length; t++) {
+                    var n = arguments[t];
+                    for (var r in n) o.call(n, r) && (e[r] = n[r])
+                }
+                return e
+            };
+            var o = Object.prototype.hasOwnProperty
+        }, {}], 45: [function (e, t, n) {
+            t.exports = function (e) {
+                for (var t = 1; t < arguments.length; t++) {
+                    var n = arguments[t];
+                    for (var r in n) o.call(n, r) && (e[r] = n[r])
+                }
+                return e
+            };
+            var o = Object.prototype.hasOwnProperty
+        }, {}], 46: [function (e, t, n) {
+            var r = e("morphdom"), s = e("./update-events.js");
+            t.exports = {}, t.exports.update = function (e, t, i) {
+                return i || (i = {}), !1 !== i.events && (i.onBeforeElUpdated || (i.onBeforeElUpdated = function (e, t) {
+                    for (var n = i.events || s, r = 0; r < n.length; r++) {
+                        var o = n[r];
+                        t[o] ? e[o] = t[o] : e[o] && (e[o] = void 0)
+                    }
+                    var a = e.value, u = t.value;
+                    "INPUT" === e.nodeName && "file" !== e.type || "SELECT" === e.nodeName ? u || t.hasAttribute("value") ? u !== a && (e.value = u) : t.value = e.value : "TEXTAREA" === e.nodeName && null === t.getAttribute("value") && (e.value = t.value)
+                })), r(e, t, i)
+            }
+        }, {"./update-events.js": 47, morphdom: 29}], 47: [function (e, t, n) {
+            t.exports = ["onclick", "ondblclick", "onmousedown", "onmouseup", "onmouseover", "onmousemove", "onmouseout", "ondragstart", "ondrag", "ondragenter", "ondragleave", "ondragover", "ondrop", "ondragend", "onkeydown", "onkeypress", "onkeyup", "onunload", "onabort", "onerror", "onresize", "onscroll", "onselect", "onchange", "onsubmit", "onreset", "onfocus", "onblur", "oninput", "oncontextmenu", "onfocusin", "onfocusout"]
+        }, {}], 48: [function (e, t, n) {
+            t.exports = function e(t, n) {
+                for (var r = 0; r < n.length; r++) {
+                    var o = n[r];
+                    if (Array.isArray(o)) e(t, o); else {
+                        if (("number" == typeof o || "boolean" == typeof o || o instanceof Date || o instanceof RegExp) && (o = o.toString()), "string" == typeof o) {
+                            if (t.lastChild && "#text" === t.lastChild.nodeName) {
+                                t.lastChild.nodeValue += o;
+                                continue
+                            }
+                            o = document.createTextNode(o)
+                        }
+                        o && o.nodeType && t.appendChild(o)
+                    }
+                }
+            }
+        }, {}], 49: [function (r, e, t) {
+            r("choo/html");
+            var o = r("../elements/part-explanation"), a = r("../elements/text-editor"), u = r("../elements/warning"),
+                i = r("../elements/random-example"), s = r("../elements/next-date"),
+                c = r("../elements/human-readable"),
+                l = r("../elements/blurb");
+            e.exports = function (e, t, n) {
+                return function () {
+                    var e = r("./yo-yoify/lib/appendChild.js"),
+                        t = document.createElement("div");
+                    return e(t, ["\n    ", arguments[0], "\n    ", arguments[1], "\n    ", arguments[2], "\n    ", arguments[3], "\n    ", arguments[4], "\n    ", arguments[5], "\n    ", arguments[6], "\n  "]), t
+                }(c(e, t, n), s(e, t, n), i(e, t, n), a(e, t, n), u(e, t, n), o(e, t, n), l(e, t, n))
+            }
+        }, {
+            "../elements/blurb": 2,
+            "../elements/human-readable": 3,
+            "../elements/next-date": 4,
+            "../elements/part-explanation": 5,
+            "../elements/random-example": 6,
+            "../elements/text-editor": 7,
+            "../elements/warning": 8,
+            "./yo-yoify/lib/appendChild.js": 48,
+            "choo/html": 20
+        }]
+    }, {}, [1]);
+};
+
+/**
+ * FeHelper 进制转换工具
+ */
+new Vue({
+    el: '#containerCrontab',
+    data: {},
+
+    mounted: function () {
+        // 初始化
+        crontabGuruStarter();
+        window.start() ;
+        // 触发一次随机
+        this.randomCron();
+    },
+
+    methods: {
+        randomCron: function(){
+            document.querySelector('#contabContentBox .example span.clickable').click();
+        }
+    }
+});
+

+ 3 - 0
apps/toolkit/index.css

@@ -1,6 +1,9 @@
 @import url("../static/css/bootstrap.min.css");
 
 
+.ui-widget {
+    font-family: Arial,sans-serif;
+}
 .ui-widget-content {
     border:none;
 }

+ 1 - 0
apps/toolkit/index.js

@@ -7,6 +7,7 @@ new Vue({
         tools: {
             radix: '进制转换',
             color: '颜色转换',
+            crontab: 'Crontab生成器',
             payback: '还款计算器'
         },
         loadManager: {}

Failā izmaiņas netiks attēlotas, jo tās ir par lielu
+ 0 - 0
apps/toolkit/payback/index.html


Daži faili netika attēloti, jo izmaiņu fails ir pārāk liels