text: ﻿/*!
   * currentExecutingScript
   * Get the currently executing script, regardless of its source/trigger/synchronicity. Similar to HTML5's `document.currentScript` but arguably much more useful!
   * Copyright (c) 2015 James M. Greene
   * Licensed MIT
   * https://github.com/JamesMGreene/currentExecutingScript
   * v0.1.3
   */
  !function (t, r) { "function" == typeof define && define.amd ? define([], r) : "object" == typeof exports ? module.exports = r() : t.currentExecutingScript = r() }(this || window, function () { function t() { if (0 === a.length) return null; var e, f, s, p, d, h = [], m = t.skipStackDepth || 1; for (e = 0; e < a.length; e++)c && i ? r.test(a[e].readyState) && h.push(a[e]) : h.push(a[e]); if (f = new Error, l && (s = f.stack), !s && u) try { throw f } catch (t) { s = t.stack } if (s && (!(d = function (t, r) { var e, n = null; if (r = r || a, "string" == typeof t && t) for (e = r.length; e--;)if (r[e].src === t) { n = r[e]; break } return n }(p = function t(r, e) { var n, a = null, i = "number" == typeof e; return e = i ? Math.round(e) : 0, "string" == typeof r && r && (i ? n = r.match(/(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/) : (n = r.match(/^(?:|[^:@]*@|.+\)@(?=data:text\/javascript|blob|http[s]?|file)|.+?\s+(?: at |@)(?:[^:\(]+ )*[\(]?)(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/)) && n[1] || (n = r.match(/\)@(data:text\/javascript(?:;[^,]+)?,.+?|(?:|blob:)(?:http[s]?|file):\/\/[\/]?.+?\/[^:\)]*?)(?::\d+)(?::\d+)?/)), n && n[1] && (a = e > 0 ? t(r.slice(r.indexOf(n[0]) + n[0].length), e - 1) : n[1])), a }(s, m), h)) && n && p === n && (d = function (t) { var r, e, n = null; for (r = 0, e = (t = t || a).length; e > r; r++)if (!t[r].hasAttribute("src")) { if (n) { n = null; break } n = t[r] } return n }(h))), d || 1 === h.length && (d = h[0]), d || o && (d = document.currentScript), !d && c && i) for (e = h.length; e--;)if ("interactive" === h[e].readyState) { d = h[e]; break } return d || (d = h[h.length - 1] || null), d } var r = /^(interactive|loaded|complete)$/, e = window.location ? window.location.href : null, n = e && e.replace(/#.*$/, "").replace(/\?.*$/, "") || null, a = document.getElementsByTagName("script"), i = "readyState" in (a[0] || document.createElement("script")), c = !window.opera || "[object Opera]" !== window.opera.toString(), o = "currentScript" in document; "stackTraceLimit" in Error && Error.stackTraceLimit !== 1 / 0 && (Error.stackTraceLimit, Error.stackTraceLimit = 1 / 0); var l = !1, u = !1; !function () { try { var t = new Error; throw l = "string" == typeof t.stack && !!t.stack, t } catch (t) { u = "string" == typeof t.stack && !!t.stack } }(), t.skipStackDepth = 1; var f = t; return f.near = t, f.far = function () { return null }, f.origin = function () { return null }, f });