/* This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/. Palefill Web Technologies Polyfill Add-on Copyright (c) 2020-22 Martok & Contributors. All rights reserved. Portions based on GitHub Web Components Polyfill Add-on Copyright (c) 2020 JustOff. All rights reserved. Copyright (c) 2022 SeaHOH. All rights reserved. https://github.com/JustOff/github-wc-polyfill Element.prototype.toggleAttribute, Array.prototype.flat, Window.queueMicrotask Copyright (c) 2005-2020 Mozilla and individual contributors. https://developer.mozilla.org/docs/Web/API/Element/toggleAttribute https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Array/flat https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/queueMicrotask Array.prototype.flatMap polyfill Copyright (c) 2017 Aluan Haddad. https://github.com/aluanhaddad/flat-map Custom Elements polyfill Copyright (c) 2020 The Polymer Project Authors. All rights reserved. https://github.com/webcomponents/polyfills Node.prototype.getRootNode polyfill Copyright (c) 2016 Foobar HQ https://github.com/foobarhq/get-root-node-polyfill Element.attachShadow & ShadowRoot polyfill Copyright (c) 2022 misteuk & SeaHOH https://github.com/JustOff/github-wc-polyfill/pull/48 String.prototype.matchAll polyfill Copyright (c) 2022 SeaHOH https://github.com/JustOff/github-wc-polyfill/commit/1b0e52569a430dabd9d7d680cbb6f4209e77a377 */ "use strict"; exports.Element_toggleAttribute = `if (typeof Element.prototype.toggleAttribute !== "function") { Element.prototype.toggleAttribute = function(name, force) { if(force !== void 0) force = !!force if (this.hasAttribute(name)) { if (force) return true; this.removeAttribute(name); return false; } if (force === false) return false; this.setAttribute(name, ""); return true; }; } `; exports.Array_flatMap = `if (typeof Array.prototype.flatMap !== "function") { function flattenIntoArray(target, source, start, depth, mapperFunction, thisArg) { const mapperFunctionProvied = mapperFunction !== undefined; let targetIndex = start; let sourceIndex = 0; const sourceLen = source.length; while (sourceIndex < sourceLen) { const p = sourceIndex; const exists = !!source[p]; if (exists === true) { let element = source[p]; if (element) { if (mapperFunctionProvied) { element = mapperFunction.call(thisArg, element, sourceIndex, target); } const spreadable = Object.getOwnPropertySymbols(element).includes(Symbol.isConcatSpreadable) || Array.isArray(element); if (spreadable === true && depth > 0) { const nextIndex = flattenIntoArray(target, element, targetIndex, depth - 1); targetIndex = nextIndex; } else { if (!Number.isSafeInteger(targetIndex)) { throw TypeError(); } target[targetIndex] = element; } } } targetIndex += 1; sourceIndex += 1; } return targetIndex; } function arraySpeciesCreate(originalArray, length) { const isArray = Array.isArray(originalArray); if (!isArray) { return Array(length); } let C = Object.getPrototypeOf(originalArray).constructor; if (C) { if (typeof C === 'object' || typeof C === 'function') { C = C[Symbol.species.toString()]; C = C !== null ? C : undefined; } if (C === undefined) { return Array(length); } if (typeof C !== 'function') { throw TypeError('invalid constructor'); } const result = new C(length); return result; } } Array.prototype.flatMap = function flatMap(callbackFn, thisArg) { const o = Object(this); if (!callbackFn || typeof callbackFn.call !== 'function') { throw TypeError('callbackFn must be callable.'); } const t = thisArg !== undefined ? thisArg : undefined; const a = arraySpeciesCreate(o, o.length); flattenIntoArray(a, o, 0, 1, callbackFn, t); return a.filter(x => x !== undefined, a); }; }`; exports.Array_flat = `if (typeof Array.prototype.flat !== "function") { Array.prototype.flat = function() { var depth = arguments[0]; depth = depth === undefined ? 1 : Math.floor(depth); if (depth < 1) return Array.prototype.slice.call(this); return (function flat(arr, depth) { var len = arr.length >>> 0; var flattened = []; var i = 0; while (i < len) { if (i in arr) { var el = arr[i]; if (Array.isArray(el) && depth > 0) flattened = flattened.concat(flat(el, depth - 1)); else flattened.push(el); } i++; } return flattened; })(this, depth); }; }`; exports.Blob_arrayBuffer = `(function() { function _convImpl(op) { return new Promise((resolve, reject) => { const reader = new FileReader(); reader.onloadend = (evt) => resolve(reader.result); // TODO: translate to conforming exception object reader.onerror = (evt) => reject(evt); try { op(reader); } catch(e) { reject(e); } }); } for (const cls of [Blob, File]) { const proto = cls.prototype; if (typeof proto.arrayBuffer !== "function") { proto.arrayBuffer = function() { return _convImpl(reader => reader.readAsArrayBuffer(this)); }; } if (typeof proto.text !== "function") { proto.text = function() { return _convImpl(reader => reader.readAsText(this, "utf8")); }; } } })()`; exports.Function_toString_proxy = `(function() { try { const dummy = Function.toString.call(new Proxy(()=>{}, {})); } catch (e) { const old_fts = Function.toString; Function.prototype.toString = function() { try { return old_fts.call(this); } catch(e) { if (!!/incompatible/.exec(e)) { return "function () {\\n [native code]\\n}"; } throw e; } } }})() ` exports.String_matchAll = `if (typeof String.prototype.matchAll !== "function") { String.prototype.matchAll = function* (pattern) { let isRe = pattern instanceof RegExp, flags = "g", res = []; if (!isRe) // $()*+,-.?[\\]^{|} pattern = pattern.replace(/[\\x24\\x28-\\x2e\\x3f\\x5b-\\x5e\\x7b-\\x7d]/g, "\\\\$\\&"); else if (pattern.global) flags = pattern.flags; else flags += pattern.flags; pattern = new RegExp(pattern, flags); this.replace(pattern, function (...groups) { groups.input = groups.pop(); groups.index = groups.pop(); res.push(groups); return groups[0]; }); for (let m of res) yield m; }}`; exports.Intl_RelativeTimeFormat_dummy = String.raw`if (typeof Intl.RelativeTimeFormat !== "function") { Intl.RelativeTimeFormat = class { constructor(locales = "en", options = {}) {} format(value, unit) { const str = "" + Math.abs(0+value) + " " + unit; if (value<0) return str + " ago"; return str; } }; }`; exports.Window_queueMicrotask = `if (typeof self.queueMicrotask !== "function") { self.queueMicrotask = function (callback) { Promise.resolve() .then(callback) .catch(e => setTimeout(() => { throw e; })); // report exceptions }; }`; exports.Window_customElements = `(function(){'use strict';var n=window.Document.prototype.createElement,p=window.Document.prototype.createElementNS,aa=window.Document.prototype.importNode,ba=window.Document.prototype.prepend,ca=window.Document.prototype.append,da=window.DocumentFragment.prototype.prepend,ea=window.DocumentFragment.prototype.append,q=window.Node.prototype.cloneNode,r=window.Node.prototype.appendChild,t=window.Node.prototype.insertBefore,u=window.Node.prototype.removeChild,v=window.Node.prototype.replaceChild,w=Object.getOwnPropertyDescriptor(window.Node.prototype, "textContent"),y=window.Element.prototype.attachShadow,z=Object.getOwnPropertyDescriptor(window.Element.prototype,"innerHTML"),A=window.Element.prototype.getAttribute,B=window.Element.prototype.setAttribute,C=window.Element.prototype.removeAttribute,D=window.Element.prototype.getAttributeNS,E=window.Element.prototype.setAttributeNS,F=window.Element.prototype.removeAttributeNS,G=window.Element.prototype.insertAdjacentElement,H=window.Element.prototype.insertAdjacentHTML,fa=window.Element.prototype.prepend, ha=window.Element.prototype.append,ia=window.Element.prototype.before,ja=window.Element.prototype.after,ka=window.Element.prototype.replaceWith,la=window.Element.prototype.remove,ma=window.HTMLElement,I=Object.getOwnPropertyDescriptor(window.HTMLElement.prototype,"innerHTML"),na=window.HTMLElement.prototype.insertAdjacentElement,oa=window.HTMLElement.prototype.insertAdjacentHTML;var pa=new Set;"annotation-xml color-profile font-face font-face-src font-face-uri font-face-format font-face-name missing-glyph".split(" ").forEach(function(a){return pa.add(a)});function qa(a){var b=pa.has(a);a=/^[a-z][.0-9_a-z]*-[-.0-9_a-z]*$/.test(a);return!b&&a}var ra=document.contains?document.contains.bind(document):document.documentElement.contains.bind(document.documentElement); function J(a){var b=a.isConnected;if(void 0!==b)return b;if(ra(a))return!0;for(;a&&!(a.__CE_isImportDocument||a instanceof Document);)a=a.parentNode||(window.ShadowRoot&&a instanceof ShadowRoot?a.host:void 0);return!(!a||!(a.__CE_isImportDocument||a instanceof Document))}function K(a){var b=a.children;if(b)return Array.prototype.slice.call(b);b=[];for(a=a.firstChild;a;a=a.nextSibling)a.nodeType===Node.ELEMENT_NODE&&b.push(a);return b} function L(a,b){for(;b&&b!==a&&!b.nextSibling;)b=b.parentNode;return b&&b!==a?b.nextSibling:null} function M(a,b,c){for(var f=a;f;){if(f.nodeType===Node.ELEMENT_NODE){var d=f;b(d);var e=d.localName;if("link"===e&&"import"===d.getAttribute("rel")){f=d.import;void 0===c&&(c=new Set);if(f instanceof Node&&!c.has(f))for(c.add(f),f=f.firstChild;f;f=f.nextSibling)M(f,b,c);f=L(a,d);continue}else if("template"===e){f=L(a,d);continue}if(d=d.__CE_shadowRoot)for(d=d.firstChild;d;d=d.nextSibling)M(d,b,c)}f=f.firstChild?f.firstChild:L(a,f)}};function N(){var a=!(null===O||void 0===O||!O.noDocumentConstructionObserver),b=!(null===O||void 0===O||!O.shadyDomFastWalk);this.m=[];this.g=[];this.j=!1;this.shadyDomFastWalk=b;this.I=!a}function P(a,b,c,f){var d=window.ShadyDOM;if(a.shadyDomFastWalk&&d&&d.inUse){if(b.nodeType===Node.ELEMENT_NODE&&c(b),b.querySelectorAll)for(a=d.nativeMethods.querySelectorAll.call(b,"*"),b=0;b[\\s\\S]+?<\\/style>/g)) { for (let [$, selectors, style] of css.matchAll(/(:host[\\s\\S]*?)(\\{[\\s\\S]+?\\})/g)) { let hc = c32($, hh); if (cssHashSet.has(hc)) continue cssHashSet.add(hc); CSS.innerHTML += selectors.replace( // flag "s" is broken in SeaMonkey /:host(-context)?(?:\\(([\\s\\S]+?)\\))?/g, function ($, context, selectors) { if (context === undefined && selectors === undefined) return tagName; if (context) return \`:-moz-any(\${selectors}) \${tagName}\`; let res = []; for (let selector of selectors.split(",")) res.push(tagName + selector); return \`:-moz-any(\${res.join(", ")})\`; }) + style; } } } }; const asNames = new Set(["article", "aside", "blockquote", "body", "div", "footer", "h1", "h2", "h3", "h4", "h5", "h6", "header", "main", "nav", "p", "section", "span"]); Element.prototype.attachShadow = function attachShadow(init) { if (this.shadowRoot !== undefined) throw new DOMException( \`The <\${this.tagName}> element has be tried to attach to is already a shadow host.\`, "InvalidStateError"); if (!asNames.has(this.localName)) throw new DOMException( \`The <\${this.tagName}> element does not supported to attach shadow\`, "NotSupportedError"); let sr = new ShadowRoot(); Object.defineProperty(sr, "host", {value: this}); Object.defineProperty(sr, "mode", {value: init.mode}); Object.defineProperty(sr, "delegatesFocus", {value: Boolean(init.delegatesFocus)}); Object.defineProperty(this, "shadowRoot", {value: init.mode === "closed" ? null : sr}); return sr; }; const clickForwarder = new Map(), oldCED = customElements.define; function addCEEventListener (type, listener, options) { const target = this, parent = target.parentNode, ael = EventTarget.prototype.addEventListener; let fwd = null; if (parent && type==="click" && parent.localName==="button") { if (typeof (fwd=clickForwarder.get(parent))==="undefined") { fwd = (event) => {target.dispatchEvent(new Event(event.type))}; clickForwarder.set(parent, fwd); } ael.call(parent, type, fwd, options); } ael.call(target, type, listener, options); } function removeCEEventListener (type, listener, options) { const target = this, parent = target.parentNode, rel = EventTarget.prototype.removeEventListener; let fwd = null; if (parent && typeof (fwd=clickForwarder.get(parent))!=="undefined") { rel.call(parent, type, fwd, options); } rel.call(target, type, listener, options); } customElements.define = function (name, cls) { asNames.add(name); cls.prototype.addEventListener = addCEEventListener; cls.prototype.removeEventListener = removeCEEventListener; oldCED.call(customElements, name, cls); }; } }())`; // This should not do anything -- this setter is the same as the native one. // (See dom/html/nsGenericHTMLElement.h ctrl-f "SetHTMLBoolAttr") // Yet without this change, the property can't be observed. exports.Element_hidden = ` Object.defineProperty(HTMLElement.prototype, "hidden", Object.assign(Object.getOwnPropertyDescriptor(HTMLElement.prototype, "hidden"), { set: function (h) { if (h) this.setAttribute("hidden", ""); else this.removeAttribute("hidden"); } }));`; exports.Regex_UnicodePropertyEmoji = `[\\u{1f300}-\\u{1f5ff}\\u{1f900}-\\u{1f9ff}\\u{1f600}-\\u{1f64f}\\u{1f680}-\\u{1f6ff}\\u{2600}-\\u{26ff}\\u{2700}-\\u{27bf}\\u{1f1e6}-\\u{1f1ff}\\u{1f191}-\\u{1f251}\\u{1f004}\\u{1f0cf}\\u{1f170}-\\u{1f171}\\u{1f17e}-\\u{1f17f}\\u{1f18e}\\u{3030}\\u{2b50}\\u{2b55}\\u{2934}-\\u{2935}\\u{2b05}-\\u{2b07}\\u{2b1b}-\\u{2b1c}\\u{3297}\\u{3299}\\u{303d}\\u{00a9}\\u{00ae}\\u{2122}\\u{23f3}\\u{24c2}\\u{23e9}-\\u{23ef}\\u{25b6}\\u{23f8}-\\u{23fa}]`; exports.Regex_UnicodePropertyLetter = String.raw`[\u0041-\u005A\u0061-\u007A\u00AA\u00B5\u00BA\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02C1\u02C6-\u02D1\u02E0-\u02E4\u02EC\u02EE\u0370-\u0374\u0376\u0377\u037A-\u037D\u0386\u0388-\u038A\u038C\u038E-\u03A1\u03A3-\u03F5\u03F7-\u0481\u048A-\u0527\u0531-\u0556\u0559\u0561-\u0587\u05D0-\u05EA\u05F0-\u05F2\u0620-\u064A\u066E\u066F\u0671-\u06D3\u06D5\u06E5\u06E6\u06EE\u06EF\u06FA-\u06FC\u06FF\u0710\u0712-\u072F\u074D-\u07A5\u07B1\u07CA-\u07EA\u07F4\u07F5\u07FA\u0800-\u0815\u081A\u0824\u0828\u0840-\u0858\u08A0\u08A2-\u08AC\u0904-\u0939\u093D\u0950\u0958-\u0961\u0971-\u0977\u0979-\u097F\u0985-\u098C\u098F\u0990\u0993-\u09A8\u09AA-\u09B0\u09B2\u09B6-\u09B9\u09BD\u09CE\u09DC\u09DD\u09DF-\u09E1\u09F0\u09F1\u0A05-\u0A0A\u0A0F\u0A10\u0A13-\u0A28\u0A2A-\u0A30\u0A32\u0A33\u0A35\u0A36\u0A38\u0A39\u0A59-\u0A5C\u0A5E\u0A72-\u0A74\u0A85-\u0A8D\u0A8F-\u0A91\u0A93-\u0AA8\u0AAA-\u0AB0\u0AB2\u0AB3\u0AB5-\u0AB9\u0ABD\u0AD0\u0AE0\u0AE1\u0B05-\u0B0C\u0B0F\u0B10\u0B13-\u0B28\u0B2A-\u0B30\u0B32\u0B33\u0B35-\u0B39\u0B3D\u0B5C\u0B5D\u0B5F-\u0B61\u0B71\u0B83\u0B85-\u0B8A\u0B8E-\u0B90\u0B92-\u0B95\u0B99\u0B9A\u0B9C\u0B9E\u0B9F\u0BA3\u0BA4\u0BA8-\u0BAA\u0BAE-\u0BB9\u0BD0\u0C05-\u0C0C\u0C0E-\u0C10\u0C12-\u0C28\u0C2A-\u0C33\u0C35-\u0C39\u0C3D\u0C58\u0C59\u0C60\u0C61\u0C85-\u0C8C\u0C8E-\u0C90\u0C92-\u0CA8\u0CAA-\u0CB3\u0CB5-\u0CB9\u0CBD\u0CDE\u0CE0\u0CE1\u0CF1\u0CF2\u0D05-\u0D0C\u0D0E-\u0D10\u0D12-\u0D3A\u0D3D\u0D4E\u0D60\u0D61\u0D7A-\u0D7F\u0D85-\u0D96\u0D9A-\u0DB1\u0DB3-\u0DBB\u0DBD\u0DC0-\u0DC6\u0E01-\u0E30\u0E32\u0E33\u0E40-\u0E46\u0E81\u0E82\u0E84\u0E87\u0E88\u0E8A\u0E8D\u0E94-\u0E97\u0E99-\u0E9F\u0EA1-\u0EA3\u0EA5\u0EA7\u0EAA\u0EAB\u0EAD-\u0EB0\u0EB2\u0EB3\u0EBD\u0EC0-\u0EC4\u0EC6\u0EDC-\u0EDF\u0F00\u0F40-\u0F47\u0F49-\u0F6C\u0F88-\u0F8C\u1000-\u102A\u103F\u1050-\u1055\u105A-\u105D\u1061\u1065\u1066\u106E-\u1070\u1075-\u1081\u108E\u10A0-\u10C5\u10C7\u10CD\u10D0-\u10FA\u10FC-\u1248\u124A-\u124D\u1250-\u1256\u1258\u125A-\u125D\u1260-\u1288\u128A-\u128D\u1290-\u12B0\u12B2-\u12B5\u12B8-\u12BE\u12C0\u12C2-\u12C5\u12C8-\u12D6\u12D8-\u1310\u1312-\u1315\u1318-\u135A\u1380-\u138F\u13A0-\u13F4\u1401-\u166C\u166F-\u167F\u1681-\u169A\u16A0-\u16EA\u1700-\u170C\u170E-\u1711\u1720-\u1731\u1740-\u1751\u1760-\u176C\u176E-\u1770\u1780-\u17B3\u17D7\u17DC\u1820-\u1877\u1880-\u18A8\u18AA\u18B0-\u18F5\u1900-\u191C\u1950-\u196D\u1970-\u1974\u1980-\u19AB\u19C1-\u19C7\u1A00-\u1A16\u1A20-\u1A54\u1AA7\u1B05-\u1B33\u1B45-\u1B4B\u1B83-\u1BA0\u1BAE\u1BAF\u1BBA-\u1BE5\u1C00-\u1C23\u1C4D-\u1C4F\u1C5A-\u1C7D\u1CE9-\u1CEC\u1CEE-\u1CF1\u1CF5\u1CF6\u1D00-\u1DBF\u1E00-\u1F15\u1F18-\u1F1D\u1F20-\u1F45\u1F48-\u1F4D\u1F50-\u1F57\u1F59\u1F5B\u1F5D\u1F5F-\u1F7D\u1F80-\u1FB4\u1FB6-\u1FBC\u1FBE\u1FC2-\u1FC4\u1FC6-\u1FCC\u1FD0-\u1FD3\u1FD6-\u1FDB\u1FE0-\u1FEC\u1FF2-\u1FF4\u1FF6-\u1FFC\u2071\u207F\u2090-\u209C\u2102\u2107\u210A-\u2113\u2115\u2119-\u211D\u2124\u2126\u2128\u212A-\u212D\u212F-\u2139\u213C-\u213F\u2145-\u2149\u214E\u2183\u2184\u2C00-\u2C2E\u2C30-\u2C5E\u2C60-\u2CE4\u2CEB-\u2CEE\u2CF2\u2CF3\u2D00-\u2D25\u2D27\u2D2D\u2D30-\u2D67\u2D6F\u2D80-\u2D96\u2DA0-\u2DA6\u2DA8-\u2DAE\u2DB0-\u2DB6\u2DB8-\u2DBE\u2DC0-\u2DC6\u2DC8-\u2DCE\u2DD0-\u2DD6\u2DD8-\u2DDE\u2E2F\u3005\u3006\u3031-\u3035\u303B\u303C\u3041-\u3096\u309D-\u309F\u30A1-\u30FA\u30FC-\u30FF\u3105-\u312D\u3131-\u318E\u31A0-\u31BA\u31F0-\u31FF\u3400-\u4DB5\u4E00-\u9FCC\uA000-\uA48C\uA4D0-\uA4FD\uA500-\uA60C\uA610-\uA61F\uA62A\uA62B\uA640-\uA66E\uA67F-\uA697\uA6A0-\uA6E5\uA717-\uA71F\uA722-\uA788\uA78B-\uA78E\uA790-\uA793\uA7A0-\uA7AA\uA7F8-\uA801\uA803-\uA805\uA807-\uA80A\uA80C-\uA822\uA840-\uA873\uA882-\uA8B3\uA8F2-\uA8F7\uA8FB\uA90A-\uA925\uA930-\uA946\uA960-\uA97C\uA984-\uA9B2\uA9CF\uAA00-\uAA28\uAA40-\uAA42\uAA44-\uAA4B\uAA60-\uAA76\uAA7A\uAA80-\uAAAF\uAAB1\uAAB5\uAAB6\uAAB9-\uAABD\uAAC0\uAAC2\uAADB-\uAADD\uAAE0-\uAAEA\uAAF2-\uAAF4\uAB01-\uAB06\uAB09-\uAB0E\uAB11-\uAB16\uAB20-\uAB26\uAB28-\uAB2E\uABC0-\uABE2\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFA6D\uFA70-\uFAD9\uFB00-\uFB06\uFB13-\uFB17\uFB1D\uFB1F-\uFB28\uFB2A-\uFB36\uFB38-\uFB3C\uFB3E\uFB40\uFB41\uFB43\uFB44\uFB46-\uFBB1\uFBD3-\uFD3D\uFD50-\uFD8F\uFD92-\uFDC7\uFDF0-\uFDFB\uFE70-\uFE74\uFE76-\uFEFC\uFF21-\uFF3A\uFF41-\uFF5A\uFF66-\uFFBE\uFFC2-\uFFC7\uFFCA-\uFFCF\uFFD2-\uFFD7\uFFDA-\uFFDC]`;