Last active
December 14, 2020 08:03
-
-
Save amree/183f179164704d9120895d10529e818c to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| /** @preserve jQuery.floatThead 2.2.1 - https://mkoryak.github.io/floatThead/ - Copyright (c) 2012 - 2020 Misha Koryak **/ ! function(bt) { | |
| bt.floatThead = bt.floatThead || {}, bt.floatThead.defaults = { | |
| headerCellSelector: "tr:visible:first>*:visible", | |
| zIndex: 1001, | |
| position: "auto", | |
| top: 0, | |
| bottom: 0, | |
| scrollContainer: function(t) { | |
| return bt([]) | |
| }, | |
| responsiveContainer: function(t) { | |
| return bt([]) | |
| }, | |
| getSizingRow: function(t, e, o) { | |
| return t.find("tbody tr:visible:first>*:visible") | |
| }, | |
| ariaLabel: function(t, e, o) { | |
| return e.text() | |
| }, | |
| floatTableClass: "floatThead-table", | |
| floatWrapperClass: "floatThead-wrapper", | |
| floatContainerClass: "floatThead-container", | |
| copyTableClass: !0, | |
| autoReflow: !1, | |
| debug: !1, | |
| support: { | |
| bootstrap: !0, | |
| datatables: !0, | |
| jqueryUI: !0, | |
| perfectScrollbar: !0 | |
| }, | |
| floatContainerCss: { | |
| "overflow-x": "hidden" | |
| } | |
| }; | |
| var wt = function() { | |
| var n = {}, | |
| o = Object.prototype.hasOwnProperty; | |
| n.has = function(t, e) { | |
| return o.call(t, e) | |
| }, n.keys = Object.keys || function(t) { | |
| if (t !== Object(t)) throw new TypeError("Invalid object"); | |
| var e = []; | |
| for (var o in t) n.has(t, o) && e.push(o); | |
| return e | |
| }; | |
| var r = 0; | |
| return n.uniqueId = function(t) { | |
| var e = ++r + ""; | |
| return t ? t + e : e | |
| }, bt.each(["Arguments", "Function", "String", "Number", "Date", "RegExp"], function() { | |
| var e = this; | |
| n["is" + e] = function(t) { | |
| return Object.prototype.toString.call(t) === "[object " + e + "]" | |
| } | |
| }), n.debounce = function(o, n, r) { | |
| var a, i, l, s, d; | |
| return function() { | |
| l = this, i = arguments, s = new Date; | |
| var e = function() { | |
| var t = new Date - s; | |
| t < n ? a = setTimeout(e, n - t) : (a = null, r || (d = o.apply(l, i))) | |
| }, | |
| t = r && !a; | |
| return a || (a = setTimeout(e, n)), t && (d = o.apply(l, i)), d | |
| } | |
| }, n | |
| }(), | |
| gt = "undefined" != typeof MutationObserver, | |
| mt = function() { | |
| for (var t = 3, e = document.createElement("b"), o = e.all || []; t = 1 + t, e.innerHTML = "\x3c!--[if gt IE " + t + "]><i><![endif]--\x3e", o[0];); | |
| return 4 < t ? t : document.documentMode | |
| }(), | |
| t = /Gecko\//.test(navigator.userAgent), | |
| yt = /WebKit\//.test(navigator.userAgent), | |
| Tt = /rtl/i.test(document.documentElement.dir || ""); | |
| mt || t || yt || (mt = 11); | |
| var l = function() { | |
| if (yt) { | |
| var t = bt("<div>").css("width", 0).append(bt("<table>").css("max-width", "100%").append(bt("<tr>").append(bt("<th>").append(bt("<div>").css("min-width", 100).text("X"))))); | |
| bt("body").append(t); | |
| var e = 0 === t.find("table").width(); | |
| return t.remove(), e | |
| } | |
| return !1 | |
| }, | |
| Ct = !t && !mt, | |
| xt = bt(window), | |
| Lt = t && window.matchMedia; | |
| if (!window.matchMedia || Lt) { | |
| var e = window.onbeforeprint, | |
| o = window.onafterprint; | |
| window.onbeforeprint = function() { | |
| e && e(), xt.triggerHandler("fth-beforeprint") | |
| }, window.onafterprint = function() { | |
| o && o(), xt.triggerHandler("fth-afterprint") | |
| } | |
| } | |
| function St(t) { | |
| var e = t[0].parentElement; | |
| do { | |
| if ("visible" !== window.getComputedStyle(e).getPropertyValue("overflow")) break | |
| } while (e = e.parentElement); | |
| return e === document.body ? bt([]) : bt(e) | |
| } | |
| function jt(t) { | |
| window && window.console && window.console.error && window.console.error("jQuery.floatThead: " + t) | |
| } | |
| function zt(t) { | |
| var e = t.getBoundingClientRect(); | |
| return e.width || e.right - e.left | |
| } | |
| function It() { | |
| var t = document.createElement("scrolltester"); | |
| t.style.cssText = "width:100px;height:100px;overflow:scroll!important;position:absolute;top:-9999px;display:block", document.body.appendChild(t); | |
| var e = t.offsetWidth - t.clientWidth; | |
| return document.body.removeChild(t), e | |
| } | |
| function Ht(t, e, o) { | |
| var n = o ? "outerWidth" : "width"; | |
| if (l && t.css("max-width")) { | |
| var r = 0; | |
| o && (r += parseInt(t.css("borderLeft"), 10), r += parseInt(t.css("borderRight"), 10)); | |
| for (var a = 0; a < e.length; a++) r += zt(e.get(a)); | |
| return r | |
| } | |
| return t[n]() | |
| } | |
| bt.fn.floatThead = function(t) { | |
| if (t = t || {}, mt < 8) return this; | |
| if (wt.isFunction(l) && (l = l()), wt.isString(t)) { | |
| var r = t, | |
| a = Array.prototype.slice.call(arguments, 1), | |
| i = this; | |
| return this.filter("table").each(function() { | |
| var t = bt(this), | |
| e = t.data("floatThead-lazy"); | |
| e && t.floatThead(e); | |
| var o = t.data("floatThead-attached"); | |
| if (o && wt.isFunction(o[r])) { | |
| var n = o[r].apply(this, a); | |
| void 0 !== n && (i = n) | |
| } | |
| }), i | |
| } | |
| var vt = bt.extend({}, bt.floatThead.defaults || {}, t); | |
| if (bt.each(t, function(t, e) { | |
| t in bt.floatThead.defaults || !vt.debug || jt("Used [" + t + "] key to init plugin, but that param is not an option for the plugin. Valid options are: " + wt.keys(bt.floatThead.defaults).join(", ")) | |
| }), vt.debug) { | |
| var e = bt.fn.jquery.split("."); | |
| 1 === parseInt(e[0], 10) && parseInt(e[1], 10) <= 7 && jt("jQuery version " + bt.fn.jquery + " detected! This plugin supports 1.8 or better, or 1.7.x with jQuery UI 1.8.24 -> http://jqueryui.com/resources/download/jquery-ui-1.8.24.zip") | |
| } | |
| return this.filter(":not(." + vt.floatTableClass + ")").each(function() { | |
| var e = wt.uniqueId(), | |
| m = bt(this); | |
| if (m.data("floatThead-attached")) return !0; | |
| if (!m.is("table")) throw new Error('jQuery.floatThead must be run on a table element. ex: $("table").floatThead();'); | |
| var o = vt.autoReflow && gt, | |
| n = null, | |
| d = m.children("thead:first"), | |
| r = m.children("tbody:first"); | |
| if (0 === d.length || 0 === r.length) return vt.debug && (0 === d.length ? jt("The thead element is missing.") : jt("The tbody element is missing.")), m.data("floatThead-lazy", vt), void m.unbind("reflow").one("reflow", function() { | |
| m.floatThead(vt) | |
| }); | |
| m.data("floatThead-lazy") && m.unbind("reflow"), m.data("floatThead-lazy", !1); | |
| var y, T, a = !0, | |
| C = { | |
| vertical: 0, | |
| horizontal: 0 | |
| }; | |
| wt.isFunction(It) && (It = It()); | |
| var i = 0; | |
| !0 === vt.scrollContainer && (vt.scrollContainer = St); | |
| var x = vt.scrollContainer(m) || bt([]), | |
| L = 0 < x.length, | |
| S = L ? bt([]) : vt.responsiveContainer(m) || bt([]), | |
| j = _(), | |
| z = null; | |
| "auto" === vt.position ? z = null : "fixed" === vt.position ? z = !1 : "absolute" === vt.position ? z = !0 : vt.debug && jt('Invalid value given to "position" option, valid is "fixed", "absolute" and "auto". You passed: ', vt.position), null == z && (z = L); | |
| var I = m.find("caption"), | |
| H = 1 === I.length; | |
| if (H) var W = "top" === (I.css("caption-side") || I.attr("align") || "top"); | |
| var l = bt("<fthfoot>").css({ | |
| display: "table-footer-group", | |
| "border-spacing": 0, | |
| height: 0, | |
| "border-collapse": "collapse", | |
| visibility: "hidden" | |
| }), | |
| q = !1, | |
| s = bt([]), | |
| R = mt <= 9 && !L && z, | |
| f = bt("<table/>"), | |
| c = bt("<colgroup/>"), | |
| u = m.children("colgroup:first"), | |
| p = !0; | |
| 0 === u.length && (u = bt("<colgroup/>"), p = !1); | |
| var h = p ? "col:visible" : "col", | |
| v = bt("<fthtr>").css({ | |
| display: "table-row", | |
| "border-spacing": 0, | |
| height: 0, | |
| "border-collapse": "collapse" | |
| }), | |
| E = bt("<div>").css(vt.floatContainerCss).attr("aria-hidden", "true"), | |
| M = !1, | |
| b = bt("<thead/>"), | |
| w = bt('<tr class="size-row"/>'), | |
| g = bt([]), | |
| k = bt([]), | |
| D = bt([]), | |
| F = bt([]); | |
| b.append(w), m.prepend(u), Ct && (l.append(v), m.append(l)), f.append(c), E.append(f), vt.copyTableClass && f.attr("class", m.attr("class")), f.attr({ | |
| cellpadding: m.attr("cellpadding"), | |
| cellspacing: m.attr("cellspacing"), | |
| border: m.attr("border") | |
| }); | |
| var t = m.css("display"); | |
| if (f.css({ | |
| borderCollapse: m.css("borderCollapse"), | |
| border: m.css("border"), | |
| display: t | |
| }), L || f.css("width", "auto"), "none" === t && (M = !0), f.addClass(vt.floatTableClass).css({ | |
| margin: 0, | |
| "border-bottom-width": 0 | |
| }), z) { | |
| var O = function(t, e) { | |
| var o = t.css("position"), | |
| n = t; | |
| if (!("relative" === o || "absolute" === o) || e) { | |
| var r = { | |
| paddingLeft: t.css("paddingLeft"), | |
| paddingRight: t.css("paddingRight") | |
| }; | |
| E.css(r), n = t.data("floatThead-containerWrap") || t.wrap(bt("<div>").addClass(vt.floatWrapperClass).css({ | |
| position: "relative", | |
| clear: "both" | |
| })).parent(), t.data("floatThead-containerWrap", n), q = !0 | |
| } | |
| return n | |
| }; | |
| L ? (s = O(x, !0)).prepend(E) : (s = O(m), m.before(E)) | |
| } else m.before(E); | |
| E.css({ | |
| position: z ? "absolute" : "fixed", | |
| marginTop: 0, | |
| top: z ? 0 : "auto", | |
| zIndex: vt.zIndex, | |
| willChange: "transform" | |
| }), E.addClass(vt.floatContainerClass), V(); | |
| var N = { | |
| "table-layout": "fixed" | |
| }, | |
| A = { | |
| "table-layout": m.css("tableLayout") || "auto" | |
| }, | |
| Q = m[0].style.width || "", | |
| U = m.css("minWidth") || ""; | |
| function G(t) { | |
| return t + ".fth-" + e + ".floatTHead" | |
| } | |
| function P() { | |
| var t = 0; | |
| if (d.children("tr:visible").each(function() { | |
| t += bt(this).outerHeight(!0) | |
| }), "collapse" === m.css("border-collapse")) { | |
| var e = parseInt(m.css("border-top-width"), 10); | |
| parseInt(m.find("thead tr:first").find(">*:first").css("border-top-width"), 10) < e && (t -= e / 2) | |
| } | |
| w.outerHeight(t), g.outerHeight(t) | |
| } | |
| function V() { | |
| y = (wt.isFunction(vt.top) ? vt.top(m) : vt.top) || 0, T = (wt.isFunction(vt.bottom) ? vt.bottom(m) : vt.bottom) || 0 | |
| } | |
| function X() { | |
| if (!a) { | |
| if (a = !0, z) { | |
| var t = Ht(m, F, !0); | |
| s.width() < t && m.css("minWidth", t) | |
| } | |
| m.css(N), f.css(N), f.append(d), r.before(b), P() | |
| } | |
| } | |
| function Y() { | |
| a && (a = !1, z && m.width(Q), b.detach(), m.prepend(d), m.css(A), f.css(A), m.css("minWidth", U), m.css("minWidth", Ht(m, F))) | |
| } | |
| var B = !1; | |
| function K(t) { | |
| B !== t && (B = t, m.triggerHandler("floatThead", [t, E])) | |
| } | |
| function $(t) { | |
| z !== t && (z = t, E.css({ | |
| position: z ? "absolute" : "fixed" | |
| })) | |
| } | |
| function J() { | |
| var l, s = function() { | |
| var t, e = d.find(vt.headerCellSelector); | |
| if (p ? t = u.find(h).length : (t = 0, e.each(function() { | |
| t += parseInt(bt(this).attr("colspan") || 1, 10) | |
| })), t !== i) { | |
| i = t; | |
| var o = [], | |
| n = []; | |
| w.empty(); | |
| for (var r = 0; r < t; r++) { | |
| var a = document.createElement("th"); | |
| a.setAttribute("aria-label", vt.ariaLabel(m, e.eq(r), r)), a.className = "floatThead-col", w[0].appendChild(a), o.push("<col/>"), n.push(bt("<fthtd>").css({ | |
| display: "table-cell", | |
| height: 0, | |
| width: "auto" | |
| })) | |
| } | |
| o = p ? u.html() : o.join(""), Ct && (v.empty(), v.append(n), F = v.find("fthtd")), g = w.find("th"), p || u.html(o), k = u.find(h), c.html(o), D = c.find(h) | |
| } | |
| return t | |
| }(); | |
| return function() { | |
| var t = E.scrollLeft(); | |
| k = u.find(h); | |
| var e, o, n, r, a = (e = m, o = k, n = F, r = mt, Ct ? n : r ? vt.getSizingRow(e, o, n) : o); | |
| if (a.length === s && 0 < s) { | |
| if (!p) | |
| for (l = 0; l < s; l++) k.eq(l).css("width", ""); | |
| Y(); | |
| var i = []; | |
| for (l = 0; l < s; l++) i[l] = zt(a.get(l)); | |
| for (l = 0; l < s; l++) D.eq(l).width(i[l]), k.eq(l).width(i[l]); | |
| X() | |
| } else f.append(d), m.css(A), f.css(A), P(); | |
| E.scrollLeft(t), m.triggerHandler("reflowed", [E]) | |
| } | |
| } | |
| function Z(t) { | |
| var e = x.css("border-" + t + "-width"), | |
| o = 0; | |
| return e && ~e.indexOf("px") && (o = parseInt(e, 10)), o | |
| } | |
| function _() { | |
| return "auto" === S.css("overflow-x") | |
| } | |
| function tt() { | |
| var i, l = x.scrollTop(), | |
| s = 0, | |
| d = H ? I.outerHeight(!0) : 0, | |
| f = W ? d : -d, | |
| c = E.height(), | |
| u = m.offset(), | |
| p = 0, | |
| h = 0; | |
| if (L) { | |
| var t = x.offset(); | |
| s = u.top - t.top + l, H && W && (s += d), p = Z("left"), h = Z("top"), s -= h | |
| } else i = u.top - y - c + T + C.horizontal; | |
| var v = xt.scrollTop(), | |
| b = xt.scrollLeft(), | |
| w = function() { | |
| return (_() ? S : x).scrollLeft() || 0 | |
| }, | |
| g = w(); | |
| return function(t) { | |
| j = _(); | |
| var e = m[0].offsetWidth <= 0 && m[0].offsetHeight <= 0; | |
| if (!e && M) return M = !1, setTimeout(function() { | |
| m.triggerHandler("reflow") | |
| }, 1), null; | |
| if (e && (M = !0, !z)) return null; | |
| if ("windowScroll" === t) v = xt.scrollTop(), b = xt.scrollLeft(); | |
| else if ("containerScroll" === t) | |
| if (S.length) { | |
| if (!j) return; | |
| g = S.scrollLeft() | |
| } else l = x.scrollTop(), g = x.scrollLeft(); | |
| else "init" !== t && (v = xt.scrollTop(), b = xt.scrollLeft(), l = x.scrollTop(), g = w()); | |
| if (!yt || !(v < 0 || Tt && 0 < b || !Tt && b < 0)) { | |
| if (R) $("windowScrollDone" === t); | |
| else if ("windowScrollDone" === t) return null; | |
| var o, n; | |
| u = m.offset(), H && W && (u.top += d); | |
| var r = m.outerHeight(); | |
| if (L && z) { | |
| if (l <= s) { | |
| var a = s - l + h; | |
| o = 0 < a ? a : 0, K(!1) | |
| } else r - c < l - s ? o = r - c - l - s : (o = q ? h : l, K(!0)); | |
| n = p | |
| } else !L && z ? (i + r + f < v ? o = r - c + f + T : u.top >= v + y ? (o = 0, Y(), K(!1)) : (o = y + v - u.top + s + (W ? d : 0), X(), K(!0)), n = g) : L && !z ? (l < s || r < l - s ? (o = u.top - v, Y(), K(!1)) : (o = u.top + l - v - s, X(), K(!0)), n = u.left + g - b) : L || z || (i + r + f < v ? o = r + y - v + i + f : u.top > v + y ? (o = u.top - v, X(), K(!1)) : (o = y, K(!0)), n = u.left + g - b); | |
| return { | |
| top: Math.round(o), | |
| left: Math.round(n) | |
| } | |
| } | |
| } | |
| } | |
| function et() { | |
| var i = null, | |
| l = null, | |
| s = null; | |
| return function(t, e, o) { | |
| if (null != t && (i !== t.top || l !== t.left)) { | |
| if (8 === mt) E.css({ | |
| top: t.top, | |
| left: t.left | |
| }); | |
| else { | |
| var n = "translateX(" + t.left + "px) translateY(" + t.top + "px)", | |
| r = { | |
| "-webkit-transform": n, | |
| "-moz-transform": n, | |
| "-ms-transform": n, | |
| "-o-transform": n, | |
| transform: n, | |
| top: 0, | |
| left: 0 | |
| }; | |
| E.css(r) | |
| } | |
| i = t.top, l = t.left | |
| } | |
| e && function() { | |
| var t = Ht(m, F, !0), | |
| e = j ? S : x, | |
| o = e.length ? zt(e[0]) : t, | |
| n = "hidden" !== e.css("overflow-y") ? o - C.vertical : o; | |
| if (E.width(n), L) { | |
| var r = 100 * t / n; | |
| f.css("width", r + "%") | |
| } else f.css("width", t + "px") | |
| }(), o && P(); | |
| var a = (j ? S : x).scrollLeft(); | |
| z && s === a || (E.scrollLeft(a), s = a) | |
| } | |
| } | |
| function ot() { | |
| if (x.length) | |
| if (vt.support && vt.support.perfectScrollbar && x.data().perfectScrollbar) C = { | |
| horizontal: 0, | |
| vertical: 0 | |
| }; | |
| else { | |
| if ("scroll" === x.css("overflow-x")) C.horizontal = It; | |
| else { | |
| var t = x.width(), | |
| e = Ht(m, F), | |
| o = n < r ? It : 0; | |
| C.horizontal = t - o < e ? It : 0 | |
| } | |
| if ("scroll" === x.css("overflow-y")) C.vertical = It; | |
| else { | |
| var n = x.height(), | |
| r = m.height(), | |
| a = t < e ? It : 0; | |
| C.vertical = n - a < r ? It : 0 | |
| } | |
| } | |
| } | |
| ot(); | |
| var nt = function() { | |
| J()() | |
| }; | |
| nt(); | |
| var rt = tt(), | |
| at = et(); | |
| at(rt("init"), !0); | |
| var it = wt.debounce(function() { | |
| at(rt("windowScrollDone"), !1) | |
| }, 1), | |
| lt = function() { | |
| at(rt("windowScroll"), !1), R && it() | |
| }, | |
| st = function() { | |
| at(rt("containerScroll"), !1) | |
| }, | |
| dt = wt.debounce(function() { | |
| m.is(":hidden") || (ot(), V(), nt(), rt = tt(), at(rt("reflow"), !0, !0)) | |
| }, 1), | |
| ft = function() { | |
| Y() | |
| }, | |
| ct = function() { | |
| X() | |
| }, | |
| ut = function(t) { | |
| t.matches ? ft() : ct() | |
| }, | |
| pt = null; | |
| if (window.matchMedia && window.matchMedia("print").addListener && !Lt ? (pt = window.matchMedia("print")).addListener(ut) : (xt.on("fth-beforeprint", ft), xt.on("fth-afterprint", ct)), L ? z ? x.on(G("scroll"), st) : (x.on(G("scroll"), st), xt.on(G("scroll"), lt)) : (S.on(G("scroll"), st), xt.on(G("scroll"), lt)), xt.on(G("load"), dt), function(t, e) { | |
| if (8 === mt) { | |
| var o = xt.width(), | |
| n = wt.debounce(function() { | |
| var t = xt.width(); | |
| o !== t && (o = t, e()) | |
| }, 1); | |
| xt.on(t, n) | |
| } else xt.on(t, wt.debounce(e, 1)) | |
| }(G("resize"), function() { | |
| m.is(":hidden") || (V(), ot(), nt(), rt = tt(), (at = et())(rt("resize"), !0, !0)) | |
| }), m.on("reflow", dt), vt.support && vt.support.datatables && function(t) { | |
| if (t.dataTableSettings) | |
| for (var e = 0; e < t.dataTableSettings.length; e++) { | |
| var o = t.dataTableSettings[e].nTable; | |
| if (t[0] === o) return !0 | |
| } | |
| return !1 | |
| }(m) && m.on("filter", dt).on("sort", dt).on("page", dt), vt.support && vt.support.bootstrap && xt.on(G("shown.bs.tab"), dt), vt.support && vt.support.jqueryUI && xt.on(G("tabsactivate"), dt), o) { | |
| var ht = null; | |
| wt.isFunction(vt.autoReflow) && (ht = vt.autoReflow(m, x)), ht || (ht = x.length ? x[0] : m[0]), (n = new MutationObserver(function(t) { | |
| for (var e = function(t) { | |
| return t && t[0] && ("THEAD" === t[0].nodeName || "TD" === t[0].nodeName || "TH" === t[0].nodeName) | |
| }, o = 0; o < t.length; o++) | |
| if (!e(t[o].addedNodes) && !e(t[o].removedNodes)) { | |
| dt(); | |
| break | |
| } | |
| })).observe(ht, { | |
| childList: !0, | |
| subtree: !0 | |
| }) | |
| } | |
| m.data("floatThead-attached", { | |
| destroy: function() { | |
| var t = ".fth-" + e; | |
| return Y(), m.css(A), u.remove(), Ct && l.remove(), b.parent().length && b.replaceWith(d), K(!1), o && (n.disconnect(), n = null), m.off("reflow reflowed"), x.off(t), S.off(t), q && (x.length ? x.unwrap() : m.unwrap()), L ? x.data("floatThead-containerWrap", !1) : m.data("floatThead-containerWrap", !1), m.css("minWidth", U), E.remove(), m.data("floatThead-attached", !1), xt.off(t), xt.off("fth-beforeprint fth-afterprint"), pt && pt.removeListener(ut), ft = ct = function() {}, | |
| function() { | |
| return m.floatThead(vt) | |
| } | |
| }, | |
| reflow: function() { | |
| dt() | |
| }, | |
| setHeaderHeight: function() { | |
| P() | |
| }, | |
| getFloatContainer: function() { | |
| return E | |
| }, | |
| getRowGroups: function() { | |
| return a ? E.find(">table>thead").add(m.children("tbody,tfoot")) : m.children("thead,tbody,tfoot") | |
| } | |
| }) | |
| }), this | |
| } | |
| }(function() { | |
| var t = window.jQuery; | |
| console.log('t from plugin', t); | |
| return "undefined" != typeof module && module.exports && !t && (t = require("jquery")), t | |
| }()); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment