From 1f0a50219779ee6d2976c1bc52570d649e44c8f6 Mon Sep 17 00:00:00 2001 From: babayaga Date: Sat, 13 Sep 2025 12:50:59 +0200 Subject: [PATCH] maintainence love:) --- packages/kbot/dist-in/data/openai_models.json | 2 +- .../kbot/dist-in/data/openrouter_models.json | 2 +- packages/kbot/dist-in/zod_types.d.ts | 20 +- packages/kbot/dist/main_node.cjs | 23239 +++------------- packages/kbot/dist/main_node.js | 23193 +++------------ packages/kbot/dist/package-lock.json | 4 +- packages/kbot/dist/package.json | 2 +- packages/kbot/dist/win-64/kbot.exe | Bin 94364855 -> 94232929 bytes packages/kbot/schema.json | 2 +- packages/kbot/schema_ui.json | 2 +- packages/kbot/src/zod_types.ts | 20 +- packages/kbot/webpack.config.js | 2 +- 12 files changed, 8592 insertions(+), 37896 deletions(-) diff --git a/packages/kbot/dist-in/data/openai_models.json b/packages/kbot/dist-in/data/openai_models.json index 8518de32..5e50be70 100644 --- a/packages/kbot/dist-in/data/openai_models.json +++ b/packages/kbot/dist-in/data/openai_models.json @@ -1,5 +1,5 @@ { - "timestamp": 1757758318142, + "timestamp": 1757760643663, "models": [ { "id": "gpt-4-0613", diff --git a/packages/kbot/dist-in/data/openrouter_models.json b/packages/kbot/dist-in/data/openrouter_models.json index 5e5410fe..8c393a17 100644 --- a/packages/kbot/dist-in/data/openrouter_models.json +++ b/packages/kbot/dist-in/data/openrouter_models.json @@ -1,5 +1,5 @@ { - "timestamp": 1757758318388, + "timestamp": 1757760644021, "models": [ { "id": "qwen/qwen3-next-80b-a3b-thinking", diff --git a/packages/kbot/dist-in/zod_types.d.ts b/packages/kbot/dist-in/zod_types.d.ts index cd7168b2..9e477dac 100644 --- a/packages/kbot/dist-in/zod_types.d.ts +++ b/packages/kbot/dist-in/zod_types.d.ts @@ -39,6 +39,8 @@ export interface IKBotOptions { aion-labs/aion-1.0-mini | paid aion-labs/aion-rp-llama-3.1-8b | paid alfredpros/codellama-7b-instruct-solidity | paid + allenai/molmo-7b-d | paid + allenai/olmo-2-0325-32b-instruct | paid amazon/nova-lite-v1 | paid amazon/nova-micro-v1 | paid amazon/nova-pro-v1 | paid @@ -64,6 +66,7 @@ export interface IKBotOptions { baidu/ernie-4.5-300b-a47b | paid baidu/ernie-4.5-vl-28b-a3b | paid baidu/ernie-4.5-vl-424b-a47b | paid + bytedance/seed-oss-36b-instruct | paid bytedance/ui-tars-1.5-7b | paid deepcogito/cogito-v2-preview-llama-109b-moe | paid cohere/command | paid @@ -113,7 +116,6 @@ export interface IKBotOptions { google/gemini-2.5-flash-lite | paid google/gemini-2.5-flash-lite-preview-06-17 | paid google/gemini-2.5-pro | paid - google/gemini-2.5-pro-exp-03-25 | paid google/gemini-2.5-pro-preview-05-06 | paid google/gemini-2.5-pro-preview | paid google/gemma-2-27b-it | paid @@ -130,7 +132,6 @@ export interface IKBotOptions { google/gemma-3n-e4b-it:free | free inception/mercury | paid inception/mercury-coder | paid - infermatic/mn-inferor-12b | paid inflection/inflection-3-pi | paid inflection/inflection-3-productivity | paid liquid/lfm-3b | paid @@ -139,6 +140,7 @@ export interface IKBotOptions { anthracite-org/magnum-v2-72b | paid anthracite-org/magnum-v4-72b | paid mancer/weaver | paid + meituan/longcat-flash-chat | paid meta-llama/llama-3-70b-instruct | paid meta-llama/llama-3-8b-instruct | paid meta-llama/llama-3.1-405b | paid @@ -210,6 +212,7 @@ export interface IKBotOptions { moonshotai/kimi-dev-72b:free | free moonshotai/kimi-k2 | paid moonshotai/kimi-k2:free | free + moonshotai/kimi-k2-0905 | paid moonshotai/kimi-vl-a3b-thinking | paid moonshotai/kimi-vl-a3b-thinking:free | free morph/morph-v3-fast | paid @@ -228,7 +231,8 @@ export interface IKBotOptions { nvidia/llama-3.1-nemotron-70b-instruct | paid nvidia/llama-3.1-nemotron-ultra-253b-v1 | paid nvidia/llama-3.1-nemotron-ultra-253b-v1:free | free - nvidia/llama-3.3-nemotron-super-49b-v1 | paid + nvidia/nemotron-nano-9b-v2 | paid + nvidia/nemotron-nano-9b-v2:free | free openai/chatgpt-4o-latest | paid openai/codex-mini | paid openai/gpt-3.5-turbo | paid @@ -277,7 +281,8 @@ export interface IKBotOptions { perplexity/sonar-pro | paid perplexity/sonar-reasoning | paid perplexity/sonar-reasoning-pro | paid - pygmalionai/mythalion-13b | paid + qwen/qwen-plus-2025-07-28 | paid + qwen/qwen-plus-2025-07-28:thinking | paid qwen/qwen-vl-max | paid qwen/qwen-vl-plus | paid qwen/qwen-max | paid @@ -305,6 +310,9 @@ export interface IKBotOptions { qwen/qwen3-coder-30b-a3b-instruct | paid qwen/qwen3-coder | paid qwen/qwen3-coder:free | free + qwen/qwen3-max | paid + qwen/qwen3-next-80b-a3b-instruct | paid + qwen/qwen3-next-80b-a3b-thinking | paid qwen/qwq-32b | paid qwen/qwq-32b:free | free qwen/qwq-32b-preview | paid @@ -321,7 +329,10 @@ export interface IKBotOptions { sao10k/l3.3-euryale-70b | paid shisa-ai/shisa-v2-llama3.3-70b | paid shisa-ai/shisa-v2-llama3.3-70b:free | free + openrouter/sonoma-dusk-alpha | paid + openrouter/sonoma-sky-alpha | paid raifle/sorcererlm-8x22b | paid + stepfun-ai/step3 | paid switchpoint/router | paid tencent/hunyuan-a13b-instruct | paid tencent/hunyuan-a13b-instruct:free | free @@ -346,7 +357,6 @@ export interface IKBotOptions { x-ai/grok-3-mini-beta | paid x-ai/grok-4 | paid x-ai/grok-code-fast-1 | paid - x-ai/grok-vision-beta | paid z-ai/glm-4-32b | paid z-ai/glm-4.5 | paid z-ai/glm-4.5-air | paid diff --git a/packages/kbot/dist/main_node.cjs b/packages/kbot/dist/main_node.cjs index 61bf96c1..f7de8d1a 100644 --- a/packages/kbot/dist/main_node.cjs +++ b/packages/kbot/dist/main_node.cjs @@ -1266,17136 +1266,6 @@ exports.ud = deferred; __webpack_unused_export__ = deferred; //# sourceMappingURL=index.js.map -/***/ }), - -/***/ 53141: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const { parse } = __webpack_require__(72636); - -module.exports = function (elt) { - const style = new CSSStyleDeclaration(elt) - const handler = { - get: function(target, property) { - return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property)); - }, - has: function(target, key) { - return true; - }, - set: function(target, property, value) { - if (property in target) { - target[property] = value; - } else { - target.setProperty(dasherizeProperty(property), value ?? undefined); - } - - return true; - } - }; - - return new Proxy(style, handler); -}; - -function dasherizeProperty(property) { - return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); -} - - -function CSSStyleDeclaration(elt) { - this._element = elt; -} - -const IMPORTANT_BANG = '!important'; - -// Utility function for parsing style declarations -// Pass in a string like "margin-left: 5px; border-style: solid" -// and this function returns an object like -// {"margin-left":"5px", "border-style":"solid"} -function parseStyles(value) { - const result = { - property: {}, - priority: {}, - } - - if (!value) { - return result; - } - - const styleValues = parse(value); - if (styleValues.length < 2) { - return result; - } - - for (let i = 0; i < styleValues.length; i += 2) { - const name = styleValues[i]; - let value = styleValues[i+1]; - - if (value.endsWith(IMPORTANT_BANG)) { - result.priority[name] = 'important'; - value = value.slice(0, -IMPORTANT_BANG.length).trim(); - } - - result.property[name] = value; - } - - return result; -} - -var NO_CHANGE = {}; // Private marker object - -CSSStyleDeclaration.prototype = Object.create(Object.prototype, { - - // Return the parsed form of the element's style attribute. - // If the element's style attribute has never been parsed - // or if it has changed since the last parse, then reparse it - // Note that the styles don't get parsed until they're actually needed - _parsed: { get: function() { - if (!this._parsedStyles || this.cssText !== this._lastParsedText) { - var text = this.cssText; - this._parsedStyles = parseStyles(text); - this._lastParsedText = text; - delete this._names; - } - return this._parsedStyles; - }}, - - // Call this method any time the parsed representation of the - // style changes. It converts the style properties to a string and - // sets cssText and the element's style attribute - _serialize: { value: function() { - var styles = this._parsed; - var s = ""; - - for(var name in styles.property) { - if (s) s += " "; - s += name + ": " + styles.property[name]; - if (styles.priority[name]) { - s += " !" + styles.priority[name]; - } - s += ";"; - } - - this.cssText = s; // also sets the style attribute - this._lastParsedText = s; // so we don't reparse - delete this._names; - }}, - - cssText: { - get: function() { - // XXX: this is a CSSStyleDeclaration for an element. - // A different impl might be necessary for a set of styles - // associated returned by getComputedStyle(), e.g. - return this._element.getAttribute("style"); - }, - set: function(value) { - // XXX: I should parse and serialize the value to - // normalize it and remove errors. FF and chrome do that. - this._element.setAttribute("style", value); - } - }, - - length: { get: function() { - if (!this._names) - this._names = Object.getOwnPropertyNames(this._parsed.property); - return this._names.length; - }}, - - item: { value: function(n) { - if (!this._names) - this._names = Object.getOwnPropertyNames(this._parsed.property); - return this._names[n]; - }}, - - getPropertyValue: { value: function(property) { - property = property.toLowerCase(); - return this._parsed.property[property] || ""; - }}, - - getPropertyPriority: { value: function(property) { - property = property.toLowerCase(); - return this._parsed.priority[property] || ""; - }}, - - setProperty: { value: function(property, value, priority) { - property = property.toLowerCase(); - if (value === null || value === undefined) { - value = ""; - } - if (priority === null || priority === undefined) { - priority = ""; - } - - // String coercion - if (value !== NO_CHANGE) { - value = "" + value; - } - - value = value.trim(); - if (value === "") { - this.removeProperty(property); - return; - } - - if (priority !== "" && priority !== NO_CHANGE && - !/^important$/i.test(priority)) { - return; - } - - var styles = this._parsed; - if (value === NO_CHANGE) { - if (!styles.property[property]) { - return; // Not a valid property name. - } - if (priority !== "") { - styles.priority[property] = "important"; - } else { - delete styles.priority[property]; - } - } else { - // We don't just accept the property value. Instead - // we parse it to ensure that it is something valid. - // If it contains a semicolon it is invalid - if (value.indexOf(";") !== -1) return; - - var newprops = parseStyles(property + ":" + value); - if (Object.getOwnPropertyNames(newprops.property).length === 0) { - return; // no valid property found - } - if (Object.getOwnPropertyNames(newprops.priority).length !== 0) { - return; // if the value included '!important' it wasn't valid. - } - - // XXX handle shorthand properties - - for (var p in newprops.property) { - styles.property[p] = newprops.property[p]; - if (priority === NO_CHANGE) { - continue; - } else if (priority !== "") { - styles.priority[p] = "important"; - } else if (styles.priority[p]) { - delete styles.priority[p]; - } - } - } - - // Serialize and update cssText and element.style! - this._serialize(); - }}, - - setPropertyValue: { value: function(property, value) { - return this.setProperty(property, value, NO_CHANGE); - }}, - - setPropertyPriority: { value: function(property, priority) { - return this.setProperty(property, NO_CHANGE, priority); - }}, - - removeProperty: { value: function(property) { - property = property.toLowerCase(); - var styles = this._parsed; - if (property in styles.property) { - delete styles.property[property]; - delete styles.priority[property]; - - // Serialize and update cssText and element.style! - this._serialize(); - } - }}, -}); - - -/***/ }), - -/***/ 90086: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* jshint bitwise: false */ - -module.exports = CharacterData; - -var Leaf = __webpack_require__(8161); -var utils = __webpack_require__(89076); -var ChildNode = __webpack_require__(52091); -var NonDocumentTypeChildNode = __webpack_require__(32001); - -function CharacterData() { - Leaf.call(this); -} - -CharacterData.prototype = Object.create(Leaf.prototype, { - // DOMString substringData(unsigned long offset, - // unsigned long count); - // The substringData(offset, count) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // If offset+count is greater than the context - // object's length, return a DOMString whose value is - // the UTF-16 code units from the offsetth UTF-16 code - // unit to the end of data. - // - // Return a DOMString whose value is the UTF-16 code - // units from the offsetth UTF-16 code unit to the - // offset+countth UTF-16 code unit in data. - substringData: { value: function substringData(offset, count) { - if (arguments.length < 2) { throw new TypeError("Not enough arguments"); } - // Convert arguments to WebIDL "unsigned long" - offset = offset >>> 0; - count = count >>> 0; - if (offset > this.data.length || offset < 0 || count < 0) { - utils.IndexSizeError(); - } - return this.data.substring(offset, offset+count); - }}, - - // void appendData(DOMString data); - // The appendData(data) method must append data to the context - // object's data. - appendData: { value: function appendData(data) { - if (arguments.length < 1) { throw new TypeError("Not enough arguments"); } - this.data += String(data); - }}, - - // void insertData(unsigned long offset, DOMString data); - // The insertData(offset, data) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // Insert data into the context object's data after - // offset UTF-16 code units. - // - insertData: { value: function insertData(offset, data) { - return this.replaceData(offset, 0, data); - }}, - - - // void deleteData(unsigned long offset, unsigned long count); - // The deleteData(offset, count) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // If offset+count is greater than the context - // object's length var count be length-offset. - // - // Starting from offset UTF-16 code units remove count - // UTF-16 code units from the context object's data. - deleteData: { value: function deleteData(offset, count) { - return this.replaceData(offset, count, ''); - }}, - - - // void replaceData(unsigned long offset, unsigned long count, - // DOMString data); - // - // The replaceData(offset, count, data) method must act as - // if the deleteData() method is invoked with offset and - // count as arguments followed by the insertData() method - // with offset and data as arguments and re-throw any - // exceptions these methods might have thrown. - replaceData: { value: function replaceData(offset, count, data) { - var curtext = this.data, len = curtext.length; - // Convert arguments to correct WebIDL type - offset = offset >>> 0; - count = count >>> 0; - data = String(data); - - if (offset > len || offset < 0) utils.IndexSizeError(); - - if (offset+count > len) - count = len - offset; - - var prefix = curtext.substring(0, offset), - suffix = curtext.substring(offset+count); - - this.data = prefix + data + suffix; - }}, - - // Utility method that Node.isEqualNode() calls to test Text and - // Comment nodes for equality. It is okay to put it here, since - // Node will have already verified that nodeType is equal - isEqual: { value: function isEqual(n) { - return this._data === n._data; - }}, - - length: { get: function() { return this.data.length; }} - -}); - -Object.defineProperties(CharacterData.prototype, ChildNode); -Object.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode); - - -/***/ }), - -/***/ 52091: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var Node = __webpack_require__(97537); -var LinkedList = __webpack_require__(41360); - -var createDocumentFragmentFromArguments = function(document, args) { - var docFrag = document.createDocumentFragment(); - - for (var i=0; i { - -"use strict"; - -module.exports = Comment; - -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function Comment(doc, data) { - CharacterData.call(this); - this.nodeType = Node.COMMENT_NODE; - this.ownerDocument = doc; - this._data = data; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - this._data = v; - if (this.rooted) - this.ownerDocument.mutateValue(this); - } -}; - -Comment.prototype = Object.create(CharacterData.prototype, { - nodeName: { value: '#comment' }, - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - // Utility methods - clone: { value: function clone() { - return new Comment(this.ownerDocument, this._data); - }}, -}); - - -/***/ }), - -/***/ 38554: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = ContainerNode; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); - -// This class defines common functionality for node subtypes that -// can have children - -function ContainerNode() { - Node.call(this); - this._firstChild = this._childNodes = null; -} - -// Primary representation is a circular linked list of siblings -ContainerNode.prototype = Object.create(Node.prototype, { - - hasChildNodes: { value: function() { - if (this._childNodes) { - return this._childNodes.length > 0; - } - return this._firstChild !== null; - }}, - - childNodes: { get: function() { - this._ensureChildNodes(); - return this._childNodes; - }}, - - firstChild: { get: function() { - if (this._childNodes) { - return this._childNodes.length === 0 ? null : this._childNodes[0]; - } - return this._firstChild; - }}, - - lastChild: { get: function() { - var kids = this._childNodes, first; - if (kids) { - return kids.length === 0 ? null: kids[kids.length-1]; - } - first = this._firstChild; - if (first === null) { return null; } - return first._previousSibling; // circular linked list - }}, - - _ensureChildNodes: { value: function() { - if (this._childNodes) { return; } - var first = this._firstChild, - kid = first, - childNodes = this._childNodes = new NodeList(); - if (first) do { - childNodes.push(kid); - kid = kid._nextSibling; - } while (kid !== first); // circular linked list - this._firstChild = null; // free memory - }}, - - // Remove all of this node's children. This is a minor - // optimization that only calls modify() once. - removeChildren: { value: function removeChildren() { - var root = this.rooted ? this.ownerDocument : null, - next = this.firstChild, - kid; - while (next !== null) { - kid = next; - next = kid.nextSibling; - - if (root) root.mutateRemove(kid); - kid.parentNode = null; - } - if (this._childNodes) { - this._childNodes.length = 0; - } else { - this._firstChild = null; - } - this.modify(); // Update last modified type once only - }}, - -}); - - -/***/ }), - -/***/ 22112: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = CustomEvent; - -var Event = __webpack_require__(13441); - -function CustomEvent(type, dictionary) { - // Just use the superclass constructor to initialize - Event.call(this, type, dictionary); -} -CustomEvent.prototype = Object.create(Event.prototype, { - constructor: { value: CustomEvent } -}); - - -/***/ }), - -/***/ 46364: -/***/ ((module) => { - -"use strict"; - -module.exports = DOMException; - -var INDEX_SIZE_ERR = 1; -var HIERARCHY_REQUEST_ERR = 3; -var WRONG_DOCUMENT_ERR = 4; -var INVALID_CHARACTER_ERR = 5; -var NO_MODIFICATION_ALLOWED_ERR = 7; -var NOT_FOUND_ERR = 8; -var NOT_SUPPORTED_ERR = 9; -var INVALID_STATE_ERR = 11; -var SYNTAX_ERR = 12; -var INVALID_MODIFICATION_ERR = 13; -var NAMESPACE_ERR = 14; -var INVALID_ACCESS_ERR = 15; -var TYPE_MISMATCH_ERR = 17; -var SECURITY_ERR = 18; -var NETWORK_ERR = 19; -var ABORT_ERR = 20; -var URL_MISMATCH_ERR = 21; -var QUOTA_EXCEEDED_ERR = 22; -var TIMEOUT_ERR = 23; -var INVALID_NODE_TYPE_ERR = 24; -var DATA_CLONE_ERR = 25; - -// Code to name -var names = [ - null, // No error with code 0 - 'INDEX_SIZE_ERR', - null, // historical - 'HIERARCHY_REQUEST_ERR', - 'WRONG_DOCUMENT_ERR', - 'INVALID_CHARACTER_ERR', - null, // historical - 'NO_MODIFICATION_ALLOWED_ERR', - 'NOT_FOUND_ERR', - 'NOT_SUPPORTED_ERR', - 'INUSE_ATTRIBUTE_ERR', // historical - 'INVALID_STATE_ERR', - 'SYNTAX_ERR', - 'INVALID_MODIFICATION_ERR', - 'NAMESPACE_ERR', - 'INVALID_ACCESS_ERR', - null, // historical - 'TYPE_MISMATCH_ERR', - 'SECURITY_ERR', - 'NETWORK_ERR', - 'ABORT_ERR', - 'URL_MISMATCH_ERR', - 'QUOTA_EXCEEDED_ERR', - 'TIMEOUT_ERR', - 'INVALID_NODE_TYPE_ERR', - 'DATA_CLONE_ERR', -]; - -// Code to message -// These strings are from the 13 May 2011 Editor's Draft of DOM Core. -// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html -// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. -// Used under the terms of the W3C Document License: -// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231 -var messages = [ - null, // No error with code 0 - 'INDEX_SIZE_ERR (1): the index is not in the allowed range', - null, - 'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model', - 'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required', - 'INVALID_CHARACTER_ERR (5): the string contains invalid characters', - null, - 'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified', - 'NOT_FOUND_ERR (8): the object can not be found here', - 'NOT_SUPPORTED_ERR (9): this operation is not supported', - 'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute', - 'INVALID_STATE_ERR (11): the object is in an invalid state', - 'SYNTAX_ERR (12): the string did not match the expected pattern', - 'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way', - 'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML', - 'INVALID_ACCESS_ERR (15): the object does not support the operation or argument', - null, - 'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type', - 'SECURITY_ERR (18): the operation is insecure', - 'NETWORK_ERR (19): a network error occurred', - 'ABORT_ERR (20): the user aborted an operation', - 'URL_MISMATCH_ERR (21): the given URL does not match another URL', - 'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded', - 'TIMEOUT_ERR (23): a timeout occurred', - 'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation', - 'DATA_CLONE_ERR (25): the object can not be cloned.' -]; - -// Name to code -var constants = { - INDEX_SIZE_ERR: INDEX_SIZE_ERR, - DOMSTRING_SIZE_ERR: 2, // historical - HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR, - WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR, - INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR, - NO_DATA_ALLOWED_ERR: 6, // historical - NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR, - NOT_FOUND_ERR: NOT_FOUND_ERR, - NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR, - INUSE_ATTRIBUTE_ERR: 10, // historical - INVALID_STATE_ERR: INVALID_STATE_ERR, - SYNTAX_ERR: SYNTAX_ERR, - INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR, - NAMESPACE_ERR: NAMESPACE_ERR, - INVALID_ACCESS_ERR: INVALID_ACCESS_ERR, - VALIDATION_ERR: 16, // historical - TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR, - SECURITY_ERR: SECURITY_ERR, - NETWORK_ERR: NETWORK_ERR, - ABORT_ERR: ABORT_ERR, - URL_MISMATCH_ERR: URL_MISMATCH_ERR, - QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR, - TIMEOUT_ERR: TIMEOUT_ERR, - INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR, - DATA_CLONE_ERR: DATA_CLONE_ERR -}; - -function DOMException(code) { - Error.call(this); - Error.captureStackTrace(this, this.constructor); - this.code = code; - this.message = messages[code]; - this.name = names[code]; -} -DOMException.prototype.__proto__ = Error.prototype; - -// Initialize the constants on DOMException and DOMException.prototype -for(var c in constants) { - var v = { value: constants[c] }; - Object.defineProperty(DOMException, c, v); - Object.defineProperty(DOMException.prototype, c, v); -} - - -/***/ }), - -/***/ 80931: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DOMImplementation; - -var Document = __webpack_require__(35452); -var DocumentType = __webpack_require__(73092); -var HTMLParser = __webpack_require__(91895); -var utils = __webpack_require__(89076); -var xml = __webpack_require__(66798); - -// Each document must have its own instance of the domimplementation object -function DOMImplementation(contextObject) { - this.contextObject = contextObject; -} - - -// Feature/version pairs that DOMImplementation.hasFeature() returns -// true for. It returns false for anything else. -var supportedFeatures = { - 'xml': { '': true, '1.0': true, '2.0': true }, // DOM Core - 'core': { '': true, '2.0': true }, // DOM Core - 'html': { '': true, '1.0': true, '2.0': true} , // HTML - 'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML -}; - -DOMImplementation.prototype = { - hasFeature: function hasFeature(feature, version) { - var f = supportedFeatures[(feature || '').toLowerCase()]; - return (f && f[version || '']) || false; - }, - - createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) { - if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError(); - - return new DocumentType(this.contextObject, qualifiedName, publicId, systemId); - }, - - createDocument: function createDocument(namespace, qualifiedName, doctype) { - // - // Note that the current DOMCore spec makes it impossible to - // create an HTML document with this function, even if the - // namespace and doctype are propertly set. See this thread: - // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html - // - var d = new Document(false, null); - var e; - - if (qualifiedName) - e = d.createElementNS(namespace, qualifiedName); - else - e = null; - - if (doctype) { - d.appendChild(doctype); - } - - if (e) d.appendChild(e); - if (namespace === utils.NAMESPACE.HTML) { - d._contentType = 'application/xhtml+xml'; - } else if (namespace === utils.NAMESPACE.SVG) { - d._contentType = 'image/svg+xml'; - } else { - d._contentType = 'application/xml'; - } - - return d; - }, - - createHTMLDocument: function createHTMLDocument(titleText) { - var d = new Document(true, null); - d.appendChild(new DocumentType(d, 'html')); - var html = d.createElement('html'); - d.appendChild(html); - var head = d.createElement('head'); - html.appendChild(head); - if (titleText !== undefined) { - var title = d.createElement('title'); - head.appendChild(title); - title.appendChild(d.createTextNode(titleText)); - } - html.appendChild(d.createElement('body')); - d.modclock = 1; // Start tracking modifications - return d; - }, - - mozSetOutputMutationHandler: function(doc, handler) { - doc.mutationHandler = handler; - }, - - mozGetInputMutationHandler: function(doc) { - utils.nyi(); - }, - - mozHTMLParser: HTMLParser, -}; - - -/***/ }), - -/***/ 82840: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim -var utils = __webpack_require__(89076); - -module.exports = DOMTokenList; - -function DOMTokenList(getter, setter) { - this._getString = getter; - this._setString = setter; - this._length = 0; - this._lastStringValue = ''; - this._update(); -} - -Object.defineProperties(DOMTokenList.prototype, { - length: { get: function() { return this._length; } }, - item: { value: function(index) { - var list = getList(this); - if (index < 0 || index >= list.length) { - return null; - } - return list[index]; - }}, - - contains: { value: function(token) { - token = String(token); // no error checking for contains() - var list = getList(this); - return list.indexOf(token) > -1; - }}, - - add: { value: function() { - var list = getList(this); - for (var i = 0, len = arguments.length; i < len; i++) { - var token = handleErrors(arguments[i]); - if (list.indexOf(token) < 0) { - list.push(token); - } - } - // Note: as per spec, if handleErrors() throws any errors, we never - // make it here and none of the changes take effect. - // Also per spec: we run the "update steps" even if no change was - // made (ie, if the token already existed) - this._update(list); - }}, - - remove: { value: function() { - var list = getList(this); - for (var i = 0, len = arguments.length; i < len; i++) { - var token = handleErrors(arguments[i]); - var index = list.indexOf(token); - if (index > -1) { - list.splice(index, 1); - } - } - // Note: as per spec, if handleErrors() throws any errors, we never - // make it here and none of the changes take effect. - // Also per spec: we run the "update steps" even if no change was - // made (ie, if the token wasn't previously present) - this._update(list); - }}, - - toggle: { value: function toggle(token, force) { - token = handleErrors(token); - if (this.contains(token)) { - if (force === undefined || force === false) { - this.remove(token); - return false; - } - return true; - } else { - if (force === undefined || force === true) { - this.add(token); - return true; - } - return false; - } - }}, - - replace: { value: function replace(token, newToken) { - // weird corner case of spec: if `token` contains whitespace, but - // `newToken` is the empty string, we must throw SyntaxError not - // InvalidCharacterError (sigh) - if (String(newToken)==='') { utils.SyntaxError(); } - token = handleErrors(token); - newToken = handleErrors(newToken); - var list = getList(this); - var idx = list.indexOf(token); - if (idx < 0) { - // Note that, per spec, we do not run the update steps on this path. - return false; - } - var idx2 = list.indexOf(newToken); - if (idx2 < 0) { - list[idx] = newToken; - } else { - // "replace the first instance of either `token` or `newToken` with - // `newToken` and remove all other instances" - if (idx < idx2) { - list[idx] = newToken; - list.splice(idx2, 1); - } else { - // idx2 is already `newToken` - list.splice(idx, 1); - } - } - this._update(list); - return true; - }}, - - toString: { value: function() { - return this._getString(); - }}, - - value: { - get: function() { - return this._getString(); - }, - set: function(v) { - this._setString(v); - this._update(); - } - }, - - // Called when the setter is called from outside this interface. - _update: { value: function(list) { - if (list) { - fixIndex(this, list); - this._setString(list.join(" ").trim()); - } else { - fixIndex(this, getList(this)); - } - this._lastStringValue = this._getString(); - } }, -}); - -function fixIndex(clist, list) { - var oldLength = clist._length; - var i; - clist._length = list.length; - for (i = 0; i < list.length; i++) { - clist[i] = list[i]; - } - // Clear/free old entries. - for (; i < oldLength; i++) { - clist[i] = undefined; - } -} - -function handleErrors(token) { - token = String(token); - if (token === "") { - utils.SyntaxError(); - } - if (/[ \t\r\n\f]/.test(token)) { - utils.InvalidCharacterError(); - } - return token; -} - -function toArray(clist) { - var length = clist._length; - var arr = Array(length); - for (var i = 0; i < length; i++) { - arr[i] = clist[i]; - } - return arr; -} - -function getList(clist) { - var strProp = clist._getString(); - if (strProp === clist._lastStringValue) { - return toArray(clist); - } - var str = strProp.replace(/(^[ \t\r\n\f]+)|([ \t\r\n\f]+$)/g, ''); - if (str === "") { - return []; - } else { - var seen = Object.create(null); - return str.split(/[ \t\r\n\f]+/g).filter(function(n) { - var key = '$' + n; - if (seen[key]) { return false; } - seen[key] = true; - return true; - }); - } -} - - -/***/ }), - -/***/ 35452: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Document; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var ContainerNode = __webpack_require__(38554); -var Element = __webpack_require__(77301); -var Text = __webpack_require__(58210); -var Comment = __webpack_require__(17548); -var Event = __webpack_require__(13441); -var DocumentFragment = __webpack_require__(17948); -var ProcessingInstruction = __webpack_require__(81248); -var DOMImplementation = __webpack_require__(80931); -var TreeWalker = __webpack_require__(44507); -var NodeIterator = __webpack_require__(30419); -var NodeFilter = __webpack_require__(383); -var URL = __webpack_require__(85184); -var select = __webpack_require__(23509); -var events = __webpack_require__(18196); -var xml = __webpack_require__(66798); -var html = __webpack_require__(96324); -var svg = __webpack_require__(967); -var utils = __webpack_require__(89076); -var MUTATE = __webpack_require__(40993); -var NAMESPACE = utils.NAMESPACE; -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -function Document(isHTML, address) { - ContainerNode.call(this); - this.nodeType = Node.DOCUMENT_NODE; - this.isHTML = isHTML; - this._address = address || 'about:blank'; - this.readyState = 'loading'; - this.implementation = new DOMImplementation(this); - - // DOMCore says that documents are always associated with themselves - this.ownerDocument = null; // ... but W3C tests expect null - this._contentType = isHTML ? 'text/html' : 'application/xml'; - - // These will be initialized by our custom versions of - // appendChild and insertBefore that override the inherited - // Node methods. - // XXX: override those methods! - this.doctype = null; - this.documentElement = null; - - // "Associated inert template document" - this._templateDocCache = null; - // List of active NodeIterators, see NodeIterator#_preremove() - this._nodeIterators = null; - - // Documents are always rooted, by definition - this._nid = 1; - this._nextnid = 2; // For numbering children of the document - this._nodes = [null, this]; // nid to node map - - // This maintains the mapping from element ids to element nodes. - // We may need to update this mapping every time a node is rooted - // or uprooted, and any time an attribute is added, removed or changed - // on a rooted element. - this.byId = Object.create(null); - - // This property holds a monotonically increasing value akin to - // a timestamp used to record the last modification time of nodes - // and their subtrees. See the lastModTime attribute and modify() - // method of the Node class. And see FilteredElementList for an example - // of the use of lastModTime - this.modclock = 0; -} - -// Map from lowercase event category names (used as arguments to -// createEvent()) to the property name in the impl object of the -// event constructor. -var supportedEvents = { - event: 'Event', - customevent: 'CustomEvent', - uievent: 'UIEvent', - mouseevent: 'MouseEvent' -}; - -// Certain arguments to document.createEvent() must be treated specially -var replacementEvent = { - events: 'event', - htmlevents: 'event', - mouseevents: 'mouseevent', - mutationevents: 'mutationevent', - uievents: 'uievent' -}; - -var mirrorAttr = function(f, name, defaultValue) { - return { - get: function() { - var o = f.call(this); - if (o) { return o[name]; } - return defaultValue; - }, - set: function(value) { - var o = f.call(this); - if (o) { o[name] = value; } - }, - }; -}; - -/** @spec https://dom.spec.whatwg.org/#validate-and-extract */ -function validateAndExtract(namespace, qualifiedName) { - var prefix, localName, pos; - if (namespace==='') { namespace = null; } - // See https://github.com/whatwg/dom/issues/671 - // and https://github.com/whatwg/dom/issues/319 - if (!xml.isValidQName(qualifiedName)) { - utils.InvalidCharacterError(); - } - prefix = null; - localName = qualifiedName; - - pos = qualifiedName.indexOf(':'); - if (pos >= 0) { - prefix = qualifiedName.substring(0, pos); - localName = qualifiedName.substring(pos+1); - } - if (prefix !== null && namespace === null) { - utils.NamespaceError(); - } - if (prefix === 'xml' && namespace !== NAMESPACE.XML) { - utils.NamespaceError(); - } - if ((prefix === 'xmlns' || qualifiedName === 'xmlns') && - namespace !== NAMESPACE.XMLNS) { - utils.NamespaceError(); - } - if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) { - utils.NamespaceError(); - } - return { namespace: namespace, prefix: prefix, localName: localName }; -} - -Document.prototype = Object.create(ContainerNode.prototype, { - // This method allows dom.js to communicate with a renderer - // that displays the document in some way - // XXX: I should probably move this to the window object - _setMutationHandler: { value: function(handler) { - this.mutationHandler = handler; - }}, - - // This method allows dom.js to receive event notifications - // from the renderer. - // XXX: I should probably move this to the window object - _dispatchRendererEvent: { value: function(targetNid, type, details) { - var target = this._nodes[targetNid]; - if (!target) return; - target._dispatchEvent(new Event(type, details), true); - }}, - - nodeName: { value: '#document'}, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - - // XXX: DOMCore may remove documentURI, so it is NYI for now - documentURI: { get: function() { return this._address; }, set: utils.nyi }, - compatMode: { get: function() { - // The _quirks property is set by the HTML parser - return this._quirks ? 'BackCompat' : 'CSS1Compat'; - }}, - - createTextNode: { value: function(data) { - return new Text(this, String(data)); - }}, - createComment: { value: function(data) { - return new Comment(this, data); - }}, - createDocumentFragment: { value: function() { - return new DocumentFragment(this); - }}, - createProcessingInstruction: { value: function(target, data) { - if (!xml.isValidName(target) || data.indexOf('?>') !== -1) - utils.InvalidCharacterError(); - return new ProcessingInstruction(this, target, data); - }}, - - createAttribute: { value: function(localName) { - localName = String(localName); - if (!xml.isValidName(localName)) utils.InvalidCharacterError(); - if (this.isHTML) { - localName = utils.toASCIILowerCase(localName); - } - return new Element._Attr(null, localName, null, null, ''); - }}, - createAttributeNS: { value: function(namespace, qualifiedName) { - // Convert parameter types according to WebIDL - namespace = - (namespace === null || namespace === undefined || namespace === '') ? null : - String(namespace); - qualifiedName = String(qualifiedName); - var ve = validateAndExtract(namespace, qualifiedName); - return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, ''); - }}, - - createElement: { value: function(localName) { - localName = String(localName); - if (!xml.isValidName(localName)) utils.InvalidCharacterError(); - // Per spec, namespace should be HTML namespace if "context object is - // an HTML document or context object's content type is - // "application/xhtml+xml", and null otherwise. - if (this.isHTML) { - if (/[A-Z]/.test(localName)) - localName = utils.toASCIILowerCase(localName); - return html.createElement(this, localName, null); - } else if (this.contentType === 'application/xhtml+xml') { - return html.createElement(this, localName, null); - } else { - return new Element(this, localName, null, null); - } - }, writable: isApiWritable }, - - createElementNS: { value: function(namespace, qualifiedName) { - // Convert parameter types according to WebIDL - namespace = - (namespace === null || namespace === undefined || namespace === '') ? null : - String(namespace); - qualifiedName = String(qualifiedName); - var ve = validateAndExtract(namespace, qualifiedName); - return this._createElementNS(ve.localName, ve.namespace, ve.prefix); - }, writable: isApiWritable }, - - // This is used directly by HTML parser, which allows it to create - // elements with localNames containing ':' and non-default namespaces - _createElementNS: { value: function(localName, namespace, prefix) { - if (namespace === NAMESPACE.HTML) { - return html.createElement(this, localName, prefix); - } - else if (namespace === NAMESPACE.SVG) { - return svg.createElement(this, localName, prefix); - } - - return new Element(this, localName, namespace, prefix); - }}, - - createEvent: { value: function createEvent(interfaceName) { - interfaceName = interfaceName.toLowerCase(); - var name = replacementEvent[interfaceName] || interfaceName; - var constructor = events[supportedEvents[name]]; - - if (constructor) { - var e = new constructor(); - e._initialized = false; - return e; - } - else { - utils.NotSupportedError(); - } - }}, - - // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker - createTreeWalker: {value: function (root, whatToShow, filter) { - if (!root) { throw new TypeError("root argument is required"); } - if (!(root instanceof Node)) { throw new TypeError("root not a node"); } - whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow); - filter = filter === undefined ? null : filter; - - return new TreeWalker(root, whatToShow, filter); - }}, - - // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator - createNodeIterator: {value: function (root, whatToShow, filter) { - if (!root) { throw new TypeError("root argument is required"); } - if (!(root instanceof Node)) { throw new TypeError("root not a node"); } - whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow); - filter = filter === undefined ? null : filter; - - return new NodeIterator(root, whatToShow, filter); - }}, - - _attachNodeIterator: { value: function(ni) { - // XXX ideally this should be a weak reference from Document to NodeIterator - if (!this._nodeIterators) { this._nodeIterators = []; } - this._nodeIterators.push(ni); - }}, - - _detachNodeIterator: { value: function(ni) { - // ni should always be in list of node iterators - var idx = this._nodeIterators.indexOf(ni); - this._nodeIterators.splice(idx, 1); - }}, - - _preremoveNodeIterators: { value: function(toBeRemoved) { - if (this._nodeIterators) { - this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); }); - } - }}, - - // Maintain the documentElement and - // doctype properties of the document. Each of the following - // methods chains to the Node implementation of the method - // to do the actual inserting, removal or replacement. - - _updateDocTypeElement: { value: function _updateDocTypeElement() { - this.doctype = this.documentElement = null; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.DOCUMENT_TYPE_NODE) - this.doctype = kid; - else if (kid.nodeType === Node.ELEMENT_NODE) - this.documentElement = kid; - } - }}, - - insertBefore: { value: function insertBefore(child, refChild) { - Node.prototype.insertBefore.call(this, child, refChild); - this._updateDocTypeElement(); - return child; - }}, - - replaceChild: { value: function replaceChild(node, child) { - Node.prototype.replaceChild.call(this, node, child); - this._updateDocTypeElement(); - return child; - }}, - - removeChild: { value: function removeChild(child) { - Node.prototype.removeChild.call(this, child); - this._updateDocTypeElement(); - return child; - }}, - - getElementById: { value: function(id) { - var n = this.byId[id]; - if (!n) return null; - if (n instanceof MultiId) { // there was more than one element with this id - return n.getFirst(); - } - return n; - }}, - - _hasMultipleElementsWithId: { value: function(id) { - // Used internally by querySelectorAll optimization - return (this.byId[id] instanceof MultiId); - }}, - - // Just copy this method from the Element prototype - getElementsByName: { value: Element.prototype.getElementsByName }, - getElementsByTagName: { value: Element.prototype.getElementsByTagName }, - getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS }, - getElementsByClassName: { value: Element.prototype.getElementsByClassName }, - - adoptNode: { value: function adoptNode(node) { - if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError(); - if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; } - - if (node.parentNode) node.parentNode.removeChild(node); - - if (node.ownerDocument !== this) - recursivelySetOwner(node, this); - - return node; - }}, - - importNode: { value: function importNode(node, deep) { - return this.adoptNode(node.cloneNode(deep)); - }, writable: isApiWritable }, - - // The following attributes and methods are from the HTML spec - origin: { get: function origin() { return null; } }, - characterSet: { get: function characterSet() { return "UTF-8"; } }, - contentType: { get: function contentType() { return this._contentType; } }, - URL: { get: function URL() { return this._address; } }, - domain: { get: utils.nyi, set: utils.nyi }, - referrer: { get: utils.nyi }, - cookie: { get: utils.nyi, set: utils.nyi }, - lastModified: { get: utils.nyi }, - location: { - get: function() { - return this.defaultView ? this.defaultView.location : null; // gh #75 - }, - set: utils.nyi - }, - _titleElement: { - get: function() { - // The title element of a document is the first title element in the - // document in tree order, if there is one, or null otherwise. - return this.getElementsByTagName('title').item(0) || null; - } - }, - title: { - get: function() { - var elt = this._titleElement; - // The child text content of the title element, or '' if null. - var value = elt ? elt.textContent : ''; - // Strip and collapse whitespace in value - return value.replace(/[ \t\n\r\f]+/g, ' ').replace(/(^ )|( $)/g, ''); - }, - set: function(value) { - var elt = this._titleElement; - var head = this.head; - if (!elt && !head) { return; /* according to spec */ } - if (!elt) { - elt = this.createElement('title'); - head.appendChild(elt); - } - elt.textContent = value; - } - }, - dir: mirrorAttr(function() { - var htmlElement = this.documentElement; - if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; } - }, 'dir', ''), - fgColor: mirrorAttr(function() { return this.body; }, 'text', ''), - linkColor: mirrorAttr(function() { return this.body; }, 'link', ''), - vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''), - alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''), - bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''), - - // Historical aliases of Document#characterSet - charset: { get: function() { return this.characterSet; } }, - inputEncoding: { get: function() { return this.characterSet; } }, - - scrollingElement: { - get: function() { - return this._quirks ? this.body : this.documentElement; - } - }, - - // Return the first child of the document element. - // XXX For now, setting this attribute is not implemented. - body: { - get: function() { - return namedHTMLChild(this.documentElement, 'body'); - }, - set: utils.nyi - }, - // Return the first child of the document element. - head: { get: function() { - return namedHTMLChild(this.documentElement, 'head'); - }}, - images: { get: utils.nyi }, - embeds: { get: utils.nyi }, - plugins: { get: utils.nyi }, - links: { get: utils.nyi }, - forms: { get: utils.nyi }, - scripts: { get: utils.nyi }, - applets: { get: function() { return []; } }, - activeElement: { get: function() { return null; } }, - innerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - outerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - - write: { value: function(args) { - if (!this.isHTML) utils.InvalidStateError(); - - // XXX: still have to implement the ignore part - if (!this._parser /* && this._ignore_destructive_writes > 0 */ ) - return; - - if (!this._parser) { - // XXX call document.open, etc. - } - - var s = arguments.join(''); - - // If the Document object's reload override flag is set, then - // append the string consisting of the concatenation of all the - // arguments to the method to the Document's reload override - // buffer. - // XXX: don't know what this is about. Still have to do it - - // If there is no pending parsing-blocking script, have the - // tokenizer process the characters that were inserted, one at a - // time, processing resulting tokens as they are emitted, and - // stopping when the tokenizer reaches the insertion point or when - // the processing of the tokenizer is aborted by the tree - // construction stage (this can happen if a script end tag token is - // emitted by the tokenizer). - - // XXX: still have to do the above. Sounds as if we don't - // always call parse() here. If we're blocked, then we just - // insert the text into the stream but don't parse it reentrantly... - - // Invoke the parser reentrantly - this._parser.parse(s); - }}, - - writeln: { value: function writeln(args) { - this.write(Array.prototype.join.call(arguments, '') + '\n'); - }}, - - open: { value: function() { - this.documentElement = null; - }}, - - close: { value: function() { - this.readyState = 'interactive'; - this._dispatchEvent(new Event('readystatechange'), true); - this._dispatchEvent(new Event('DOMContentLoaded'), true); - this.readyState = 'complete'; - this._dispatchEvent(new Event('readystatechange'), true); - if (this.defaultView) { - this.defaultView._dispatchEvent(new Event('load'), true); - } - }}, - - // Utility methods - clone: { value: function clone() { - var d = new Document(this.isHTML, this._address); - d._quirks = this._quirks; - d._contentType = this._contentType; - return d; - }}, - - // We need to adopt the nodes if we do a deep clone - cloneNode: { value: function cloneNode(deep) { - var clone = Node.prototype.cloneNode.call(this, false); - if (deep) { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - clone._appendChild(clone.importNode(kid, true)); - } - } - clone._updateDocTypeElement(); - return clone; - }}, - - isEqual: { value: function isEqual(n) { - // Any two documents are shallowly equal. - // Node.isEqualNode will also test the children - return true; - }}, - - // Implementation-specific function. Called when a text, comment, - // or pi value changes. - mutateValue: { value: function(node) { - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.VALUE, - target: node, - data: node.data - }); - } - }}, - - // Invoked when an attribute's value changes. Attr holds the new - // value. oldval is the old value. Attribute mutations can also - // involve changes to the prefix (and therefore the qualified name) - mutateAttr: { value: function(attr, oldval) { - // Manage id->element mapping for getElementsById() - // XXX: this special case id handling should not go here, - // but in the attribute declaration for the id attribute - /* - if (attr.localName === 'id' && attr.namespaceURI === null) { - if (oldval) delId(oldval, attr.ownerElement); - addId(attr.value, attr.ownerElement); - } - */ - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.ATTR, - target: attr.ownerElement, - attr: attr - }); - } - }}, - - // Used by removeAttribute and removeAttributeNS for attributes. - mutateRemoveAttr: { value: function(attr) { -/* -* This is now handled in Attributes.js - // Manage id to element mapping - if (attr.localName === 'id' && attr.namespaceURI === null) { - this.delId(attr.value, attr.ownerElement); - } -*/ - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.REMOVE_ATTR, - target: attr.ownerElement, - attr: attr - }); - } - }}, - - // Called by Node.removeChild, etc. to remove a rooted element from - // the tree. Only needs to generate a single mutation event when a - // node is removed, but must recursively mark all descendants as not - // rooted. - mutateRemove: { value: function(node) { - // Send a single mutation event - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.REMOVE, - target: node.parentNode, - node: node - }); - } - - // Mark this and all descendants as not rooted - recursivelyUproot(node); - }}, - - // Called when a new element becomes rooted. It must recursively - // generate mutation events for each of the children, and mark them all - // as rooted. - mutateInsert: { value: function(node) { - // Mark node and its descendants as rooted - recursivelyRoot(node); - - // Send a single mutation event - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.INSERT, - target: node.parentNode, - node: node - }); - } - }}, - - // Called when a rooted element is moved within the document - mutateMove: { value: function(node) { - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.MOVE, - target: node - }); - } - }}, - - - // Add a mapping from id to n for n.ownerDocument - addId: { value: function addId(id, n) { - var val = this.byId[id]; - if (!val) { - this.byId[id] = n; - } - else { - // TODO: Add a way to opt-out console warnings - //console.warn('Duplicate element id ' + id); - if (!(val instanceof MultiId)) { - val = new MultiId(val); - this.byId[id] = val; - } - val.add(n); - } - }}, - - // Delete the mapping from id to n for n.ownerDocument - delId: { value: function delId(id, n) { - var val = this.byId[id]; - utils.assert(val); - - if (val instanceof MultiId) { - val.del(n); - if (val.length === 1) { // convert back to a single node - this.byId[id] = val.downgrade(); - } - } - else { - this.byId[id] = undefined; - } - }}, - - _resolve: { value: function(href) { - //XXX: Cache the URL - return new URL(this._documentBaseURL).resolve(href); - }}, - - _documentBaseURL: { get: function() { - // XXX: This is not implemented correctly yet - var url = this._address; - if (url === 'about:blank') url = '/'; - - var base = this.querySelector('base[href]'); - if (base) { - return new URL(url).resolve(base.getAttribute('href')); - } - return url; - - // The document base URL of a Document object is the - // absolute URL obtained by running these substeps: - - // Let fallback base url be the document's address. - - // If fallback base url is about:blank, and the - // Document's browsing context has a creator browsing - // context, then let fallback base url be the document - // base URL of the creator Document instead. - - // If the Document is an iframe srcdoc document, then - // let fallback base url be the document base URL of - // the Document's browsing context's browsing context - // container's Document instead. - - // If there is no base element that has an href - // attribute, then the document base URL is fallback - // base url; abort these steps. Otherwise, let url be - // the value of the href attribute of the first such - // element. - - // Resolve url relative to fallback base url (thus, - // the base href attribute isn't affected by xml:base - // attributes). - - // The document base URL is the result of the previous - // step if it was successful; otherwise it is fallback - // base url. - }}, - - _templateDoc: { get: function() { - if (!this._templateDocCache) { - // "associated inert template document" - var newDoc = new Document(this.isHTML, this._address); - this._templateDocCache = newDoc._templateDocCache = newDoc; - } - return this._templateDocCache; - }}, - - querySelector: { value: function(selector) { - return select(selector, this)[0]; - }}, - - querySelectorAll: { value: function(selector) { - var nodes = select(selector, this); - return nodes.item ? nodes : new NodeList(nodes); - }} - -}); - - -var eventHandlerTypes = [ - 'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu', - 'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave', - 'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended', - 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata', - 'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout', - 'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing', - 'progress', 'ratechange', 'readystatechange', 'reset', 'seeked', - 'seeking', 'select', 'show', 'stalled', 'submit', 'suspend', - 'timeupdate', 'volumechange', 'waiting', - - 'blur', 'error', 'focus', 'load', 'scroll' -]; - -// Add event handler idl attribute getters and setters to Document -eventHandlerTypes.forEach(function(type) { - // Define the event handler registration IDL attribute for this type - Object.defineProperty(Document.prototype, 'on' + type, { - get: function() { - return this._getEventHandler(type); - }, - set: function(v) { - this._setEventHandler(type, v); - } - }); -}); - -function namedHTMLChild(parent, name) { - if (parent && parent.isHTML) { - for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE && - kid.localName === name && - kid.namespaceURI === NAMESPACE.HTML) { - return kid; - } - } - } - return null; -} - -function root(n) { - n._nid = n.ownerDocument._nextnid++; - n.ownerDocument._nodes[n._nid] = n; - // Manage id to element mapping - if (n.nodeType === Node.ELEMENT_NODE) { - var id = n.getAttribute('id'); - if (id) n.ownerDocument.addId(id, n); - - // Script elements need to know when they're inserted - // into the document - if (n._roothook) n._roothook(); - } -} - -function uproot(n) { - // Manage id to element mapping - if (n.nodeType === Node.ELEMENT_NODE) { - var id = n.getAttribute('id'); - if (id) n.ownerDocument.delId(id, n); - } - n.ownerDocument._nodes[n._nid] = undefined; - n._nid = undefined; -} - -function recursivelyRoot(node) { - root(node); - // XXX: - // accessing childNodes on a leaf node creates a new array the - // first time, so be careful to write this loop so that it - // doesn't do that. node is polymorphic, so maybe this is hard to - // optimize? Try switching on nodeType? -/* - if (node.hasChildNodes()) { - var kids = node.childNodes; - for(var i = 0, n = kids.length; i < n; i++) - recursivelyRoot(kids[i]); - } -*/ - if (node.nodeType === Node.ELEMENT_NODE) { - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelyRoot(kid); - } -} - -function recursivelyUproot(node) { - uproot(node); - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelyUproot(kid); -} - -function recursivelySetOwner(node, owner) { - node.ownerDocument = owner; - node._lastModTime = undefined; // mod times are document-based - if (Object.prototype.hasOwnProperty.call(node, '_tagName')) { - node._tagName = undefined; // Element subclasses might need to change case - } - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelySetOwner(kid, owner); -} - -// A class for storing multiple nodes with the same ID -function MultiId(node) { - this.nodes = Object.create(null); - this.nodes[node._nid] = node; - this.length = 1; - this.firstNode = undefined; -} - -// Add a node to the list, with O(1) time -MultiId.prototype.add = function(node) { - if (!this.nodes[node._nid]) { - this.nodes[node._nid] = node; - this.length++; - this.firstNode = undefined; - } -}; - -// Remove a node from the list, with O(1) time -MultiId.prototype.del = function(node) { - if (this.nodes[node._nid]) { - delete this.nodes[node._nid]; - this.length--; - this.firstNode = undefined; - } -}; - -// Get the first node from the list, in the document order -// Takes O(N) time in the size of the list, with a cache that is invalidated -// when the list is modified. -MultiId.prototype.getFirst = function() { - /* jshint bitwise: false */ - if (!this.firstNode) { - var nid; - for (nid in this.nodes) { - if (this.firstNode === undefined || - this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) { - this.firstNode = this.nodes[nid]; - } - } - } - return this.firstNode; -}; - -// If there is only one node left, return it. Otherwise return "this". -MultiId.prototype.downgrade = function() { - if (this.length === 1) { - var nid; - for (nid in this.nodes) { - return this.nodes[nid]; - } - } - return this; -}; - - -/***/ }), - -/***/ 17948: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DocumentFragment; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var ContainerNode = __webpack_require__(38554); -var Element = __webpack_require__(77301); -var select = __webpack_require__(23509); -var utils = __webpack_require__(89076); - -function DocumentFragment(doc) { - ContainerNode.call(this); - this.nodeType = Node.DOCUMENT_FRAGMENT_NODE; - this.ownerDocument = doc; -} - -DocumentFragment.prototype = Object.create(ContainerNode.prototype, { - nodeName: { value: '#document-fragment' }, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - // Copy the text content getter/setter from Element - textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'), - - // Copy the text content getter/setter from Element - innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'), - - querySelector: { value: function(selector) { - // implement in terms of querySelectorAll - var nodes = this.querySelectorAll(selector); - return nodes.length ? nodes[0] : null; - }}, - querySelectorAll: { value: function(selector) { - // create a context - var context = Object.create(this); - // add some methods to the context for zest implementation, without - // adding them to the public DocumentFragment API - context.isHTML = true; // in HTML namespace (case-insensitive match) - context.getElementsByTagName = Element.prototype.getElementsByTagName; - context.nextElement = - Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild'). - get; - // invoke zest - var nodes = select(selector, context); - return nodes.item ? nodes : new NodeList(nodes); - }}, - - // Utility methods - clone: { value: function clone() { - return new DocumentFragment(this.ownerDocument); - }}, - isEqual: { value: function isEqual(n) { - // Any two document fragments are shallowly equal. - // Node.isEqualNode() will test their children for equality - return true; - }}, - - // Non-standard, but useful (github issue #73) - innerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - outerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - -}); - - -/***/ }), - -/***/ 73092: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DocumentType; - -var Node = __webpack_require__(97537); -var Leaf = __webpack_require__(8161); -var ChildNode = __webpack_require__(52091); - -function DocumentType(ownerDocument, name, publicId, systemId) { - Leaf.call(this); - this.nodeType = Node.DOCUMENT_TYPE_NODE; - this.ownerDocument = ownerDocument || null; - this.name = name; - this.publicId = publicId || ""; - this.systemId = systemId || ""; -} - -DocumentType.prototype = Object.create(Leaf.prototype, { - nodeName: { get: function() { return this.name; }}, - nodeValue: { - get: function() { return null; }, - set: function() {} - }, - - // Utility methods - clone: { value: function clone() { - return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId); - }}, - - isEqual: { value: function isEqual(n) { - return this.name === n.name && - this.publicId === n.publicId && - this.systemId === n.systemId; - }} -}); - -Object.defineProperties(DocumentType.prototype, ChildNode); - - -/***/ }), - -/***/ 77301: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Element; - -var xml = __webpack_require__(66798); -var utils = __webpack_require__(89076); -var NAMESPACE = utils.NAMESPACE; -var attributes = __webpack_require__(6548); -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var NodeUtils = __webpack_require__(41608); -var FilteredElementList = __webpack_require__(61676); -var DOMException = __webpack_require__(46364); -var DOMTokenList = __webpack_require__(82840); -var select = __webpack_require__(23509); -var ContainerNode = __webpack_require__(38554); -var ChildNode = __webpack_require__(52091); -var NonDocumentTypeChildNode = __webpack_require__(32001); -var NamedNodeMap = __webpack_require__(49492); - -var uppercaseCache = Object.create(null); - -function Element(doc, localName, namespaceURI, prefix) { - ContainerNode.call(this); - this.nodeType = Node.ELEMENT_NODE; - this.ownerDocument = doc; - this.localName = localName; - this.namespaceURI = namespaceURI; - this.prefix = prefix; - this._tagName = undefined; - - // These properties maintain the set of attributes - this._attrsByQName = Object.create(null); // The qname->Attr map - this._attrsByLName = Object.create(null); // The ns|lname->Attr map - this._attrKeys = []; // attr index -> ns|lname -} - -function recursiveGetText(node, a) { - if (node.nodeType === Node.TEXT_NODE) { - a.push(node._data); - } - else { - for(var i = 0, n = node.childNodes.length; i < n; i++) - recursiveGetText(node.childNodes[i], a); - } -} - -Element.prototype = Object.create(ContainerNode.prototype, { - isHTML: { get: function isHTML() { - return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML; - }}, - tagName: { get: function tagName() { - if (this._tagName === undefined) { - var tn; - if (this.prefix === null) { - tn = this.localName; - } else { - tn = this.prefix + ':' + this.localName; - } - if (this.isHTML) { - var up = uppercaseCache[tn]; - if (!up) { - // Converting to uppercase can be slow, so cache the conversion. - uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn); - } - tn = up; - } - this._tagName = tn; - } - return this._tagName; - }}, - nodeName: { get: function() { return this.tagName; }}, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - textContent: { - get: function() { - var strings = []; - recursiveGetText(this, strings); - return strings.join(''); - }, - set: function(newtext) { - this.removeChildren(); - if (newtext !== null && newtext !== undefined && newtext !== '') { - this._appendChild(this.ownerDocument.createTextNode(newtext)); - } - } - }, - innerText: { - get: function() { - var strings = []; - recursiveGetText(this, strings); - // Strip and collapse whitespace - // This doesn't 100% match the browser behavior, - // but should cover most of the cases. This is also similar to - // how Angular's renderer used to work: the `textContent` and `innerText` - // were almost equivalent from the renderer perspective. - // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext - return strings.join('').replace(/[ \t\n\f\r]+/g, ' ').trim(); - }, - set: function(newtext) { - this.removeChildren(); - if (newtext !== null && newtext !== undefined && newtext !== '') { - this._appendChild(this.ownerDocument.createTextNode(newtext)); - } - } - }, - innerHTML: { - get: function() { - return this.serialize(); - }, - set: utils.nyi - }, - outerHTML: { - get: function() { - // "the attribute must return the result of running the HTML fragment - // serialization algorithm on a fictional node whose only child is - // the context object" - // - // The serialization logic is intentionally implemented in a separate - // `NodeUtils` helper instead of the more obvious choice of a private - // `_serializeOne()` method on the `Node.prototype` in order to avoid - // the megamorphic `this._serializeOne` property access, which reduces - // performance unnecessarily. If you need specialized behavior for a - // certain subclass, you'll need to implement that in `NodeUtils`. - // See https://github.com/fgnass/domino/pull/142 for more information. - return NodeUtils.serializeOne(this, { nodeType: 0 }); - }, - set: function(v) { - var document = this.ownerDocument; - var parent = this.parentNode; - if (parent === null) { return; } - if (parent.nodeType === Node.DOCUMENT_NODE) { - utils.NoModificationAllowedError(); - } - if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - parent = parent.ownerDocument.createElement("body"); - } - var parser = document.implementation.mozHTMLParser( - document._address, - parent - ); - parser.parse(v===null?'':String(v), true); - this.replaceWith(parser._asDocumentFragment()); - }, - }, - - _insertAdjacent: { value: function _insertAdjacent(position, node) { - var first = false; - switch(position) { - case 'beforebegin': - first = true; - /* falls through */ - case 'afterend': - var parent = this.parentNode; - if (parent === null) { return null; } - return parent.insertBefore(node, first ? this : this.nextSibling); - case 'afterbegin': - first = true; - /* falls through */ - case 'beforeend': - return this.insertBefore(node, first ? this.firstChild : null); - default: - return utils.SyntaxError(); - } - }}, - - insertAdjacentElement: { value: function insertAdjacentElement(position, element) { - if (element.nodeType !== Node.ELEMENT_NODE) { - throw new TypeError('not an element'); - } - position = utils.toASCIILowerCase(String(position)); - return this._insertAdjacent(position, element); - }}, - - insertAdjacentText: { value: function insertAdjacentText(position, data) { - var textNode = this.ownerDocument.createTextNode(data); - position = utils.toASCIILowerCase(String(position)); - this._insertAdjacent(position, textNode); - // "This method returns nothing because it existed before we had a chance - // to design it." - }}, - - insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) { - position = utils.toASCIILowerCase(String(position)); - text = String(text); - var context; - switch(position) { - case 'beforebegin': - case 'afterend': - context = this.parentNode; - if (context === null || context.nodeType === Node.DOCUMENT_NODE) { - utils.NoModificationAllowedError(); - } - break; - case 'afterbegin': - case 'beforeend': - context = this; - break; - default: - utils.SyntaxError(); - } - if ( (!(context instanceof Element)) || ( - context.ownerDocument.isHTML && - context.localName === 'html' && - context.namespaceURI === NAMESPACE.HTML - ) ) { - context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body'); - } - var parser = this.ownerDocument.implementation.mozHTMLParser( - this.ownerDocument._address, context - ); - parser.parse(text, true); - this._insertAdjacent(position, parser._asDocumentFragment()); - }}, - - children: { get: function() { - if (!this._children) { - this._children = new ChildrenCollection(this); - } - return this._children; - }}, - - attributes: { get: function() { - if (!this._attributes) { - this._attributes = new AttributesArray(this); - } - return this._attributes; - }}, - - - firstElementChild: { get: function() { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - return null; - }}, - - lastElementChild: { get: function() { - for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - return null; - }}, - - childElementCount: { get: function() { - return this.children.length; - }}, - - - // Return the next element, in source order, after this one or - // null if there are no more. If root element is specified, - // then don't traverse beyond its subtree. - // - // This is not a DOM method, but is convenient for - // lazy traversals of the tree. - nextElement: { value: function(root) { - if (!root) root = this.ownerDocument.documentElement; - var next = this.firstElementChild; - if (!next) { - // don't use sibling if we're at root - if (this===root) return null; - next = this.nextElementSibling; - } - if (next) return next; - - // If we can't go down or across, then we have to go up - // and across to the parent sibling or another ancestor's - // sibling. Be careful, though: if we reach the root - // element, or if we reach the documentElement, then - // the traversal ends. - for(var parent = this.parentElement; - parent && parent !== root; - parent = parent.parentElement) { - - next = parent.nextElementSibling; - if (next) return next; - } - - return null; - }}, - - // XXX: - // Tests are currently failing for this function. - // Awaiting resolution of: - // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html - getElementsByTagName: { value: function getElementsByTagName(lname) { - var filter; - if (!lname) return new NodeList(); - if (lname === '*') - filter = function() { return true; }; - else if (this.isHTML) - filter = htmlLocalNameElementFilter(lname); - else - filter = localNameElementFilter(lname); - - return new FilteredElementList(this, filter); - }}, - - getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){ - var filter; - if (ns === '*' && lname === '*') - filter = function() { return true; }; - else if (ns === '*') - filter = localNameElementFilter(lname); - else if (lname === '*') - filter = namespaceElementFilter(ns); - else - filter = namespaceLocalNameElementFilter(ns, lname); - - return new FilteredElementList(this, filter); - }}, - - getElementsByClassName: { value: function getElementsByClassName(names){ - names = String(names).trim(); - if (names === '') { - var result = new NodeList(); // Empty node list - return result; - } - names = names.split(/[ \t\r\n\f]+/); // Split on ASCII whitespace - return new FilteredElementList(this, classNamesElementFilter(names)); - }}, - - getElementsByName: { value: function getElementsByName(name) { - return new FilteredElementList(this, elementNameFilter(String(name))); - }}, - - // Utility methods used by the public API methods above - clone: { value: function clone() { - var e; - - // XXX: - // Modify this to use the constructor directly or - // avoid error checking in some other way. In case we try - // to clone an invalid node that the parser inserted. - // - if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) { - e = this.ownerDocument.createElementNS( - this.namespaceURI, (this.prefix !== null) ? - (this.prefix + ':' + this.localName) : this.localName - ); - } else { - e = this.ownerDocument.createElement(this.localName); - } - - for(var i = 0, n = this._attrKeys.length; i < n; i++) { - var lname = this._attrKeys[i]; - var a = this._attrsByLName[lname]; - var b = a.cloneNode(); - b._setOwnerElement(e); - e._attrsByLName[lname] = b; - e._addQName(b); - } - e._attrKeys = this._attrKeys.concat(); - - return e; - }}, - - isEqual: { value: function isEqual(that) { - if (this.localName !== that.localName || - this.namespaceURI !== that.namespaceURI || - this.prefix !== that.prefix || - this._numattrs !== that._numattrs) - return false; - - // Compare the sets of attributes, ignoring order - // and ignoring attribute prefixes. - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if (!that.hasAttributeNS(a.namespaceURI, a.localName)) - return false; - if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value) - return false; - } - - return true; - }}, - - // This is the 'locate a namespace prefix' algorithm from the - // DOM specification. It is used by Node.lookupPrefix() - // (Be sure to compare DOM3 and DOM4 versions of spec.) - _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) { - if ( - this.namespaceURI && - this.namespaceURI === ns && - this.prefix !== null && - originalElement.lookupNamespaceURI(this.prefix) === ns - ) { - return this.prefix; - } - - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if ( - a.prefix === 'xmlns' && - a.value === ns && - originalElement.lookupNamespaceURI(a.localName) === ns - ) { - return a.localName; - } - } - - var parent = this.parentElement; - return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null; - }}, - - // This is the 'locate a namespace' algorithm for Element nodes - // from the DOM Core spec. It is used by Node#lookupNamespaceURI() - lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) { - if (prefix === '' || prefix === undefined) { prefix = null; } - if (this.namespaceURI !== null && this.prefix === prefix) - return this.namespaceURI; - - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if (a.namespaceURI === NAMESPACE.XMLNS) { - if ( - (a.prefix === 'xmlns' && a.localName === prefix) || - (prefix === null && a.prefix === null && a.localName === 'xmlns') - ) { - return a.value || null; - } - } - } - - var parent = this.parentElement; - return parent ? parent.lookupNamespaceURI(prefix) : null; - }}, - - // - // Attribute handling methods and utilities - // - - /* - * Attributes in the DOM are tricky: - * - * - there are the 8 basic get/set/has/removeAttribute{NS} methods - * - * - but many HTML attributes are also 'reflected' through IDL - * attributes which means that they can be queried and set through - * regular properties of the element. There is just one attribute - * value, but two ways to get and set it. - * - * - Different HTML element types have different sets of reflected - attributes. - * - * - attributes can also be queried and set through the .attributes - * property of an element. This property behaves like an array of - * Attr objects. The value property of each Attr is writeable, so - * this is a third way to read and write attributes. - * - * - for efficiency, we really want to store attributes in some kind - * of name->attr map. But the attributes[] array is an array, not a - * map, which is kind of unnatural. - * - * - When using namespaces and prefixes, and mixing the NS methods - * with the non-NS methods, it is apparently actually possible for - * an attributes[] array to have more than one attribute with the - * same qualified name. And certain methods must operate on only - * the first attribute with such a name. So for these methods, an - * inefficient array-like data structure would be easier to - * implement. - * - * - The attributes[] array is live, not a snapshot, so changes to the - * attributes must be immediately visible through existing arrays. - * - * - When attributes are queried and set through IDL properties - * (instead of the get/setAttributes() method or the attributes[] - * array) they may be subject to type conversions, URL - * normalization, etc., so some extra processing is required in that - * case. - * - * - But access through IDL properties is probably the most common - * case, so we'd like that to be as fast as possible. - * - * - We can't just store attribute values in their parsed idl form, - * because setAttribute() has to return whatever string is passed to - * getAttribute even if it is not a legal, parseable value. So - * attribute values must be stored in unparsed string form. - * - * - We need to be able to send change notifications or mutation - * events of some sort to the renderer whenever an attribute value - * changes, regardless of the way in which it changes. - * - * - Some attributes, such as id and class affect other parts of the - * DOM API, like getElementById and getElementsByClassName and so - * for efficiency, we need to specially track changes to these - * special attributes. - * - * - Some attributes like class have different names (className) when - * reflected. - * - * - Attributes whose names begin with the string 'data-' are treated - specially. - * - * - Reflected attributes that have a boolean type in IDL have special - * behavior: setting them to false (in IDL) is the same as removing - * them with removeAttribute() - * - * - numeric attributes (like HTMLElement.tabIndex) can have default - * values that must be returned by the idl getter even if the - * content attribute does not exist. (The default tabIndex value - * actually varies based on the type of the element, so that is a - * tricky one). - * - * See - * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect - * for rules on how attributes are reflected. - * - */ - - getAttribute: { value: function getAttribute(qname) { - var attr = this.getAttributeNode(qname); - return attr ? attr.value : null; - }}, - - getAttributeNS: { value: function getAttributeNS(ns, lname) { - var attr = this.getAttributeNodeNS(ns, lname); - return attr ? attr.value : null; - }}, - - getAttributeNode: { value: function getAttributeNode(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - var attr = this._attrsByQName[qname]; - if (!attr) return null; - - if (Array.isArray(attr)) // If there is more than one - attr = attr[0]; // use the first - - return attr; - }}, - - getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var attr = this._attrsByLName[ns + '|' + lname]; - return attr ? attr : null; - }}, - - hasAttribute: { value: function hasAttribute(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - return this._attrsByQName[qname] !== undefined; - }}, - - hasAttributeNS: { value: function hasAttributeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var key = ns + '|' + lname; - return this._attrsByLName[key] !== undefined; - }}, - - hasAttributes: { value: function hasAttributes() { - return this._numattrs > 0; - }}, - - toggleAttribute: { value: function toggleAttribute(qname, force) { - qname = String(qname); - if (!xml.isValidName(qname)) utils.InvalidCharacterError(); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - var a = this._attrsByQName[qname]; - if (a === undefined) { - if (force === undefined || force === true) { - this._setAttribute(qname, ''); - return true; - } - return false; - } else { - if (force === undefined || force === false) { - this.removeAttribute(qname); - return false; - } - return true; - } - }}, - - // Set the attribute without error checking. The parser uses this. - _setAttribute: { value: function _setAttribute(qname, value) { - // XXX: the spec says that this next search should be done - // on the local name, but I think that is an error. - // email pending on www-dom about it. - var attr = this._attrsByQName[qname]; - var isnew; - if (!attr) { - attr = this._newattr(qname); - isnew = true; - } - else { - if (Array.isArray(attr)) attr = attr[0]; - } - - // Now set the attribute value on the new or existing Attr object. - // The Attr.value setter method handles mutation events, etc. - attr.value = value; - if (this._attributes) this._attributes[qname] = attr; - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Check for errors, and then set the attribute - setAttribute: { value: function setAttribute(qname, value) { - qname = String(qname); - if (!xml.isValidName(qname)) utils.InvalidCharacterError(); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - this._setAttribute(qname, String(value)); - }}, - - - // The version with no error checking used by the parser - _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) { - var pos = qname.indexOf(':'), prefix, lname; - if (pos < 0) { - prefix = null; - lname = qname; - } - else { - prefix = qname.substring(0, pos); - lname = qname.substring(pos+1); - } - - if (ns === '' || ns === undefined) ns = null; - var key = (ns === null ? '' : ns) + '|' + lname; - - var attr = this._attrsByLName[key]; - var isnew; - if (!attr) { - attr = new Attr(this, lname, prefix, ns); - isnew = true; - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - - // We also have to make the attr searchable by qname. - // But we have to be careful because there may already - // be an attr with this qname. - this._addQName(attr); - } - else if (false /* changed in DOM 4 */) {} - attr.value = value; // Automatically sends mutation event - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Do error checking then call _setAttributeNS - setAttributeNS: { value: function setAttributeNS(ns, qname, value) { - // Convert parameter types according to WebIDL - ns = (ns === null || ns === undefined || ns === '') ? null : String(ns); - qname = String(qname); - if (!xml.isValidQName(qname)) utils.InvalidCharacterError(); - - var pos = qname.indexOf(':'); - var prefix = (pos < 0) ? null : qname.substring(0, pos); - - if ((prefix !== null && ns === null) || - (prefix === 'xml' && ns !== NAMESPACE.XML) || - ((qname === 'xmlns' || prefix === 'xmlns') && - (ns !== NAMESPACE.XMLNS)) || - (ns === NAMESPACE.XMLNS && - !(qname === 'xmlns' || prefix === 'xmlns'))) - utils.NamespaceError(); - - this._setAttributeNS(ns, qname, String(value)); - }}, - - setAttributeNode: { value: function setAttributeNode(attr) { - if (attr.ownerElement !== null && attr.ownerElement !== this) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - var result = null; - var oldAttrs = this._attrsByQName[attr.name]; - if (oldAttrs) { - if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; } - if (oldAttrs.some(function(a) { return a===attr; })) { - return attr; - } else if (attr.ownerElement !== null) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this); - result = oldAttrs[0]; - } - this.setAttributeNodeNS(attr); - return result; - }}, - - setAttributeNodeNS: { value: function setAttributeNodeNS(attr) { - if (attr.ownerElement !== null) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - var ns = attr.namespaceURI; - var key = (ns === null ? '' : ns) + '|' + attr.localName; - var oldAttr = this._attrsByLName[key]; - if (oldAttr) { this.removeAttributeNode(oldAttr); } - attr._setOwnerElement(this); - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - this._addQName(attr); - if (this._newattrhook) this._newattrhook(attr.name, attr.value); - return oldAttr || null; - }}, - - removeAttribute: { value: function removeAttribute(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - - var attr = this._attrsByQName[qname]; - if (!attr) return; - - // If there is more than one match for this qname - // so don't delete the qname mapping, just remove the first - // element from it. - if (Array.isArray(attr)) { - if (attr.length > 2) { - attr = attr.shift(); // remove it from the array - } - else { - this._attrsByQName[qname] = attr[1]; - attr = attr[0]; - } - } - else { - // only a single match, so remove the qname mapping - this._attrsByQName[qname] = undefined; - } - - var ns = attr.namespaceURI; - // Now attr is the removed attribute. Figure out its - // ns+lname key and remove it from the other mapping as well. - var key = (ns === null ? '' : ns) + '|' + attr.localName; - this._attrsByLName[key] = undefined; - - var i = this._attrKeys.indexOf(key); - if (this._attributes) { - Array.prototype.splice.call(this._attributes, i, 1); - this._attributes[qname] = undefined; - } - this._attrKeys.splice(i, 1); - - // Onchange handler for the attribute - var onchange = attr.onchange; - attr._setOwnerElement(null); - if (onchange) { - onchange.call(attr, this, attr.localName, attr.value, null); - } - // Mutation event - if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr); - }}, - - removeAttributeNS: { value: function removeAttributeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var key = ns + '|' + lname; - var attr = this._attrsByLName[key]; - if (!attr) return; - - this._attrsByLName[key] = undefined; - - var i = this._attrKeys.indexOf(key); - if (this._attributes) { - Array.prototype.splice.call(this._attributes, i, 1); - } - this._attrKeys.splice(i, 1); - - // Now find the same Attr object in the qname mapping and remove it - // But be careful because there may be more than one match. - this._removeQName(attr); - - // Onchange handler for the attribute - var onchange = attr.onchange; - attr._setOwnerElement(null); - if (onchange) { - onchange.call(attr, this, attr.localName, attr.value, null); - } - // Mutation event - if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr); - }}, - - removeAttributeNode: { value: function removeAttributeNode(attr) { - var ns = attr.namespaceURI; - var key = (ns === null ? '' : ns) + '|' + attr.localName; - if (this._attrsByLName[key] !== attr) { - utils.NotFoundError(); - } - this.removeAttributeNS(ns, attr.localName); - return attr; - }}, - - getAttributeNames: { value: function getAttributeNames() { - var elt = this; - return this._attrKeys.map(function(key) { - return elt._attrsByLName[key].name; - }); - }}, - - // This 'raw' version of getAttribute is used by the getter functions - // of reflected attributes. It skips some error checking and - // namespace steps - _getattr: { value: function _getattr(qname) { - // Assume that qname is already lowercased, so don't do it here. - // Also don't check whether attr is an array: a qname with no - // prefix will never have two matching Attr objects (because - // setAttributeNS doesn't allow a non-null namespace with a - // null prefix. - var attr = this._attrsByQName[qname]; - return attr ? attr.value : null; - }}, - - // The raw version of setAttribute for reflected idl attributes. - _setattr: { value: function _setattr(qname, value) { - var attr = this._attrsByQName[qname]; - var isnew; - if (!attr) { - attr = this._newattr(qname); - isnew = true; - } - attr.value = String(value); - if (this._attributes) this._attributes[qname] = attr; - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Create a new Attr object, insert it, and return it. - // Used by setAttribute() and by set() - _newattr: { value: function _newattr(qname) { - var attr = new Attr(this, qname, null, null); - var key = '|' + qname; - this._attrsByQName[qname] = attr; - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - return attr; - }}, - - // Add a qname->Attr mapping to the _attrsByQName object, taking into - // account that there may be more than one attr object with the - // same qname - _addQName: { value: function(attr) { - var qname = attr.name; - var existing = this._attrsByQName[qname]; - if (!existing) { - this._attrsByQName[qname] = attr; - } - else if (Array.isArray(existing)) { - existing.push(attr); - } - else { - this._attrsByQName[qname] = [existing, attr]; - } - if (this._attributes) this._attributes[qname] = attr; - }}, - - // Remove a qname->Attr mapping to the _attrsByQName object, taking into - // account that there may be more than one attr object with the - // same qname - _removeQName: { value: function(attr) { - var qname = attr.name; - var target = this._attrsByQName[qname]; - - if (Array.isArray(target)) { - var idx = target.indexOf(attr); - utils.assert(idx !== -1); // It must be here somewhere - if (target.length === 2) { - this._attrsByQName[qname] = target[1-idx]; - if (this._attributes) { - this._attributes[qname] = this._attrsByQName[qname]; - } - } else { - target.splice(idx, 1); - if (this._attributes && this._attributes[qname] === attr) { - this._attributes[qname] = target[0]; - } - } - } - else { - utils.assert(target === attr); // If only one, it must match - this._attrsByQName[qname] = undefined; - if (this._attributes) { - this._attributes[qname] = undefined; - } - } - }}, - - // Return the number of attributes - _numattrs: { get: function() { return this._attrKeys.length; }}, - // Return the nth Attr object - _attr: { value: function(n) { - return this._attrsByLName[this._attrKeys[n]]; - }}, - - // Define getters and setters for an 'id' property that reflects - // the content attribute 'id'. - id: attributes.property({name: 'id'}), - - // Define getters and setters for a 'className' property that reflects - // the content attribute 'class'. - className: attributes.property({name: 'class'}), - - classList: { get: function() { - var self = this; - if (this._classList) { - return this._classList; - } - var dtlist = new DOMTokenList( - function() { - return self.className || ""; - }, - function(v) { - self.className = v; - } - ); - this._classList = dtlist; - return dtlist; - }, set: function(v) { this.className = v; }}, - - matches: { value: function(selector) { - return select.matches(this, selector); - }}, - - closest: { value: function(selector) { - var el = this; - do { - if (el.matches && el.matches(selector)) { return el; } - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === Node.ELEMENT_NODE); - return null; - }}, - - querySelector: { value: function(selector) { - return select(selector, this)[0]; - }}, - - querySelectorAll: { value: function(selector) { - var nodes = select(selector, this); - return nodes.item ? nodes : new NodeList(nodes); - }} - -}); - -Object.defineProperties(Element.prototype, ChildNode); -Object.defineProperties(Element.prototype, NonDocumentTypeChildNode); - -// Register special handling for the id attribute -attributes.registerChangeHandler(Element, 'id', - function(element, lname, oldval, newval) { - if (element.rooted) { - if (oldval) { - element.ownerDocument.delId(oldval, element); - } - if (newval) { - element.ownerDocument.addId(newval, element); - } - } - } -); -attributes.registerChangeHandler(Element, 'class', - function(element, lname, oldval, newval) { - if (element._classList) { element._classList._update(); } - } -); - -// The Attr class represents a single attribute. The values in -// _attrsByQName and _attrsByLName are instances of this class. -function Attr(elt, lname, prefix, namespace, value) { - // localName and namespace are constant for any attr object. - // But value may change. And so can prefix, and so, therefore can name. - this.localName = lname; - this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix); - this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace); - this.data = value; - // Set ownerElement last to ensure it is hooked up to onchange handler - this._setOwnerElement(elt); -} - -// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned. -Attr.prototype = Object.create(Object.prototype, { - ownerElement: { - get: function() { return this._ownerElement; }, - }, - _setOwnerElement: { value: function _setOwnerElement(elt) { - this._ownerElement = elt; - if (this.prefix === null && this.namespaceURI === null && elt) { - this.onchange = elt._attributeChangeHandlers[this.localName]; - } else { - this.onchange = null; - } - }}, - - name: { get: function() { - return this.prefix ? this.prefix + ':' + this.localName : this.localName; - }}, - - specified: { get: function() { - // Deprecated - return true; - }}, - - value: { - get: function() { - return this.data; - }, - set: function(value) { - var oldval = this.data; - value = (value === undefined) ? '' : value + ''; - if (value === oldval) return; - - this.data = value; - - // Run the onchange hook for the attribute - // if there is one. - if (this.ownerElement) { - if (this.onchange) - this.onchange(this.ownerElement,this.localName, oldval, value); - - // Generate a mutation event if the element is rooted - if (this.ownerElement.rooted) - this.ownerElement.ownerDocument.mutateAttr(this, oldval); - } - }, - }, - - cloneNode: { value: function cloneNode(deep) { - // Both this method and Document#createAttribute*() create unowned Attrs - return new Attr( - null, this.localName, this.prefix, this.namespaceURI, this.data - ); - }}, - - // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr) - nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } }, - nodeName: { get: function() { return this.name; } }, - nodeValue: { - get: function() { return this.value; }, - set: function(v) { this.value = v; }, - }, - textContent: { - get: function() { return this.value; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } - this.value = v; - }, - }, - innerText: { - get: function() { return this.value; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } - this.value = v; - }, - }, -}); -// Sneakily export this class for use by Document.createAttribute() -Element._Attr = Attr; - -// The attributes property of an Element will be an instance of this class. -// This class is really just a dummy, though. It only defines a length -// property and an item() method. The AttrArrayProxy that -// defines the public API just uses the Element object itself. -function AttributesArray(elt) { - NamedNodeMap.call(this, elt); - for (var name in elt._attrsByQName) { - this[name] = elt._attrsByQName[name]; - } - for (var i = 0; i < elt._attrKeys.length; i++) { - this[i] = elt._attrsByLName[elt._attrKeys[i]]; - } -} -AttributesArray.prototype = Object.create(NamedNodeMap.prototype, { - length: { get: function() { - return this.element._attrKeys.length; - }, set: function() { /* ignore */ } }, - item: { value: function(n) { - /* jshint bitwise: false */ - n = n >>> 0; - if (n >= this.length) { return null; } - return this.element._attrsByLName[this.element._attrKeys[n]]; - /* jshint bitwise: true */ - } }, -}); - -// We can't make direct array access work (without Proxies, node >=6) -// but we can make `Array.from(node.attributes)` and for-of loops work. -if (globalThis.Symbol?.iterator) { - AttributesArray.prototype[globalThis.Symbol.iterator] = function() { - var i=0, n=this.length, self=this; - return { - next: function() { - if (ielement map. - // It is not part of the HTMLCollection API, but we need it in - // src/HTMLCollectionProxy - namedItems: { get: function() { - this.updateCache(); - return this.childrenByName; - } }, - - updateCache: { value: function updateCache() { - var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/; - if (this.lastModTime !== this.element.lastModTime) { - this.lastModTime = this.element.lastModTime; - - var n = this.childrenByNumber && this.childrenByNumber.length || 0; - for(var i = 0; i < n; i++) { - this[i] = undefined; - } - - this.childrenByNumber = []; - this.childrenByName = Object.create(null); - - for (var c = this.element.firstChild; c !== null; c = c.nextSibling) { - if (c.nodeType === Node.ELEMENT_NODE) { - - this[this.childrenByNumber.length] = c; - this.childrenByNumber.push(c); - - // XXX Are there any requirements about the namespace - // of the id property? - var id = c.getAttribute('id'); - - // If there is an id that is not already in use... - if (id && !this.childrenByName[id]) - this.childrenByName[id] = c; - - // For certain HTML elements we check the name attribute - var name = c.getAttribute('name'); - if (name && - this.element.namespaceURI === NAMESPACE.HTML && - namedElts.test(this.element.localName) && - !this.childrenByName[name]) - this.childrenByName[id] = c; - } - } - } - } }, -}); - -// These functions return predicates for filtering elements. -// They're used by the Document and Element classes for methods like -// getElementsByTagName and getElementsByClassName - -function localNameElementFilter(lname) { - return function(e) { return e.localName === lname; }; -} - -function htmlLocalNameElementFilter(lname) { - var lclname = utils.toASCIILowerCase(lname); - if (lclname === lname) - return localNameElementFilter(lname); - - return function(e) { - return e.isHTML ? e.localName === lclname : e.localName === lname; - }; -} - -function namespaceElementFilter(ns) { - return function(e) { return e.namespaceURI === ns; }; -} - -function namespaceLocalNameElementFilter(ns, lname) { - return function(e) { - return e.namespaceURI === ns && e.localName === lname; - }; -} - -function classNamesElementFilter(names) { - return function(e) { - return names.every(function(n) { return e.classList.contains(n); }); - }; -} - -function elementNameFilter(name) { - return function(e) { - // All the *HTML elements* in the document with the given name attribute - if (e.namespaceURI !== NAMESPACE.HTML) { return false; } - return e.getAttribute('name') === name; - }; -} - - -/***/ }), - -/***/ 13441: -/***/ ((module) => { - -"use strict"; - -module.exports = Event; - -Event.CAPTURING_PHASE = 1; -Event.AT_TARGET = 2; -Event.BUBBLING_PHASE = 3; - -function Event(type, dictionary) { - // Initialize basic event properties - this.type = ''; - this.target = null; - this.currentTarget = null; - this.eventPhase = Event.AT_TARGET; - this.bubbles = false; - this.cancelable = false; - this.isTrusted = false; - this.defaultPrevented = false; - this.timeStamp = Date.now(); - - // Initialize internal flags - // XXX: Would it be better to inherit these defaults from the prototype? - this._propagationStopped = false; - this._immediatePropagationStopped = false; - this._initialized = true; - this._dispatching = false; - - // Now initialize based on the constructor arguments (if any) - if (type) this.type = type; - if (dictionary) { - for(var p in dictionary) { - this[p] = dictionary[p]; - } - } -} - -Event.prototype = Object.create(Object.prototype, { - constructor: { value: Event }, - stopPropagation: { value: function stopPropagation() { - this._propagationStopped = true; - }}, - - stopImmediatePropagation: { value: function stopImmediatePropagation() { - this._propagationStopped = true; - this._immediatePropagationStopped = true; - }}, - - preventDefault: { value: function preventDefault() { - if (this.cancelable) this.defaultPrevented = true; - }}, - - initEvent: { value: function initEvent(type, bubbles, cancelable) { - this._initialized = true; - if (this._dispatching) return; - - this._propagationStopped = false; - this._immediatePropagationStopped = false; - this.defaultPrevented = false; - this.isTrusted = false; - - this.target = null; - this.type = type; - this.bubbles = bubbles; - this.cancelable = cancelable; - }}, - -}); - - -/***/ }), - -/***/ 22356: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Event = __webpack_require__(13441); -var MouseEvent = __webpack_require__(21440); -var utils = __webpack_require__(89076); - -module.exports = EventTarget; - -function EventTarget() {} - -EventTarget.prototype = { - // XXX - // See WebIDL §4.8 for details on object event handlers - // and how they should behave. We actually have to accept - // any object to addEventListener... Can't type check it. - // on registration. - - // XXX: - // Capturing event listeners are sort of rare. I think I can optimize - // them so that dispatchEvent can skip the capturing phase (or much of - // it). Each time a capturing listener is added, increment a flag on - // the target node and each of its ancestors. Decrement when removed. - // And update the counter when nodes are added and removed from the - // tree as well. Then, in dispatch event, the capturing phase can - // abort if it sees any node with a zero count. - addEventListener: function addEventListener(type, listener, capture) { - if (!listener) return; - if (capture === undefined) capture = false; - if (!this._listeners) this._listeners = Object.create(null); - if (!this._listeners[type]) this._listeners[type] = []; - var list = this._listeners[type]; - - // If this listener has already been registered, just return - for(var i = 0, n = list.length; i < n; i++) { - var l = list[i]; - if (l.listener === listener && l.capture === capture) - return; - } - - // Add an object to the list of listeners - var obj = { listener: listener, capture: capture }; - if (typeof listener === 'function') obj.f = listener; - list.push(obj); - }, - - removeEventListener: function removeEventListener(type, - listener, - capture) { - if (capture === undefined) capture = false; - if (this._listeners) { - var list = this._listeners[type]; - if (list) { - // Find the listener in the list and remove it - for(var i = 0, n = list.length; i < n; i++) { - var l = list[i]; - if (l.listener === listener && l.capture === capture) { - if (list.length === 1) { - this._listeners[type] = undefined; - } - else { - list.splice(i, 1); - } - return; - } - } - } - } - }, - - // This is the public API for dispatching untrusted public events. - // See _dispatchEvent for the implementation - dispatchEvent: function dispatchEvent(event) { - // Dispatch an untrusted event - return this._dispatchEvent(event, false); - }, - - // - // See DOMCore §4.4 - // XXX: I'll probably need another version of this method for - // internal use, one that does not set isTrusted to false. - // XXX: see Document._dispatchEvent: perhaps that and this could - // call a common internal function with different settings of - // a trusted boolean argument - // - // XXX: - // The spec has changed in how to deal with handlers registered - // on idl or content attributes rather than with addEventListener. - // Used to say that they always ran first. That's how webkit does it - // Spec now says that they run in a position determined by - // when they were first set. FF does it that way. See: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers - // - _dispatchEvent: function _dispatchEvent(event, trusted) { - if (typeof trusted !== 'boolean') trusted = false; - function invoke(target, event) { - var type = event.type, phase = event.eventPhase; - event.currentTarget = target; - - // If there was an individual handler defined, invoke it first - // XXX: see comment above: this shouldn't always be first. - if (phase !== Event.CAPTURING_PHASE && - target._handlers && target._handlers[type]) - { - var handler = target._handlers[type]; - var rv; - if (typeof handler === 'function') { - rv=handler.call(event.currentTarget, event); - } - else { - var f = handler.handleEvent; - if (typeof f !== 'function') - throw new TypeError('handleEvent property of ' + - 'event handler object is' + - 'not a function.'); - rv=f.call(handler, event); - } - - switch(event.type) { - case 'mouseover': - if (rv === true) // Historical baggage - event.preventDefault(); - break; - case 'beforeunload': - // XXX: eventually we need a special case here - /* falls through */ - default: - if (rv === false) - event.preventDefault(); - break; - } - } - - // Now invoke list list of listeners for this target and type - var list = target._listeners && target._listeners[type]; - if (!list) return; - list = list.slice(); - for(var i = 0, n = list.length; i < n; i++) { - if (event._immediatePropagationStopped) return; - var l = list[i]; - if ((phase === Event.CAPTURING_PHASE && !l.capture) || - (phase === Event.BUBBLING_PHASE && l.capture)) - continue; - if (l.f) { - l.f.call(event.currentTarget, event); - } - else { - var fn = l.listener.handleEvent; - if (typeof fn !== 'function') - throw new TypeError('handleEvent property of event listener object is not a function.'); - fn.call(l.listener, event); - } - } - } - - if (!event._initialized || event._dispatching) utils.InvalidStateError(); - event.isTrusted = trusted; - - // Begin dispatching the event now - event._dispatching = true; - event.target = this; - - // Build the list of targets for the capturing and bubbling phases - // XXX: we'll eventually have to add Window to this list. - var ancestors = []; - for(var n = this.parentNode; n; n = n.parentNode) - ancestors.push(n); - - // Capturing phase - event.eventPhase = Event.CAPTURING_PHASE; - for(var i = ancestors.length-1; i >= 0; i--) { - invoke(ancestors[i], event); - if (event._propagationStopped) break; - } - - // At target phase - if (!event._propagationStopped) { - event.eventPhase = Event.AT_TARGET; - invoke(this, event); - } - - // Bubbling phase - if (event.bubbles && !event._propagationStopped) { - event.eventPhase = Event.BUBBLING_PHASE; - for(var ii = 0, nn = ancestors.length; ii < nn; ii++) { - invoke(ancestors[ii], event); - if (event._propagationStopped) break; - } - } - - event._dispatching = false; - event.eventPhase = Event.AT_TARGET; - event.currentTarget = null; - - // Deal with mouse events and figure out when - // a click has happened - if (trusted && !event.defaultPrevented && event instanceof MouseEvent) { - switch(event.type) { - case 'mousedown': - this._armed = { - x: event.clientX, - y: event.clientY, - t: event.timeStamp - }; - break; - case 'mouseout': - case 'mouseover': - this._armed = null; - break; - case 'mouseup': - if (this._isClick(event)) this._doClick(event); - this._armed = null; - break; - } - } - - - - return !event.defaultPrevented; - }, - - // Determine whether a click occurred - // XXX We don't support double clicks for now - _isClick: function(event) { - return (this._armed !== null && - event.type === 'mouseup' && - event.isTrusted && - event.button === 0 && - event.timeStamp - this._armed.t < 1000 && - Math.abs(event.clientX - this._armed.x) < 10 && - Math.abs(event.clientY - this._armed.Y) < 10); - }, - - // Clicks are handled like this: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0 - // - // Note that this method is similar to the HTMLElement.click() method - // The event argument must be the trusted mouseup event - _doClick: function(event) { - if (this._click_in_progress) return; - this._click_in_progress = true; - - // Find the nearest enclosing element that is activatable - // An element is activatable if it has a - // _post_click_activation_steps hook - var activated = this; - while(activated && !activated._post_click_activation_steps) - activated = activated.parentNode; - - if (activated && activated._pre_click_activation_steps) { - activated._pre_click_activation_steps(); - } - - var click = this.ownerDocument.createEvent('MouseEvent'); - click.initMouseEvent('click', true, true, - this.ownerDocument.defaultView, 1, - event.screenX, event.screenY, - event.clientX, event.clientY, - event.ctrlKey, event.altKey, - event.shiftKey, event.metaKey, - event.button, null); - - var result = this._dispatchEvent(click, true); - - if (activated) { - if (result) { - // This is where hyperlinks get followed, for example. - if (activated._post_click_activation_steps) - activated._post_click_activation_steps(click); - } - else { - if (activated._cancelled_activation_steps) - activated._cancelled_activation_steps(); - } - } - }, - - // - // An event handler is like an event listener, but it registered - // by setting an IDL or content attribute like onload or onclick. - // There can only be one of these at a time for any event type. - // This is an internal method for the attribute accessors and - // content attribute handlers that need to register events handlers. - // The type argument is the same as in addEventListener(). - // The handler argument is the same as listeners in addEventListener: - // it can be a function or an object. Pass null to remove any existing - // handler. Handlers are always invoked before any listeners of - // the same type. They are not invoked during the capturing phase - // of event dispatch. - // - _setEventHandler: function _setEventHandler(type, handler) { - if (!this._handlers) this._handlers = Object.create(null); - this._handlers[type] = handler; - }, - - _getEventHandler: function _getEventHandler(type) { - return (this._handlers && this._handlers[type]) || null; - } - -}; - - -/***/ }), - -/***/ 61676: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = FilteredElementList; - -var Node = __webpack_require__(97537); - -// -// This file defines node list implementation that lazily traverses -// the document tree (or a subtree rooted at any element) and includes -// only those elements for which a specified filter function returns true. -// It is used to implement the -// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods. -// -// XXX this should inherit from NodeList - -function FilteredElementList(root, filter) { - this.root = root; - this.filter = filter; - this.lastModTime = root.lastModTime; - this.done = false; - this.cache = []; - this.traverse(); -} - -FilteredElementList.prototype = Object.create(Object.prototype, { - length: { get: function() { - this.checkcache(); - if (!this.done) this.traverse(); - return this.cache.length; - } }, - - item: { value: function(n) { - this.checkcache(); - if (!this.done && n >= this.cache.length) { - // This can lead to O(N^2) behavior if we stop when we get to n - // and the caller is iterating through the items in order; so - // be sure to do the full traverse here. - this.traverse(/*n*/); - } - return this.cache[n]; - } }, - - checkcache: { value: function() { - if (this.lastModTime !== this.root.lastModTime) { - // subtree has changed, so invalidate cache - for (var i = this.cache.length-1; i>=0; i--) { - this[i] = undefined; - } - this.cache.length = 0; - this.done = false; - this.lastModTime = this.root.lastModTime; - } - } }, - - // If n is specified, then traverse the tree until we've found the nth - // item (or until we've found all items). If n is not specified, - // traverse until we've found all items. - traverse: { value: function(n) { - // increment n so we can compare to length, and so it is never falsy - if (n !== undefined) n++; - - var elt; - while ((elt = this.next()) !== null) { - this[this.cache.length] = elt; //XXX Use proxy instead - this.cache.push(elt); - if (n && this.cache.length === n) return; - } - - // no next element, so we've found everything - this.done = true; - } }, - - // Return the next element under root that matches filter - next: { value: function() { - var start = (this.cache.length === 0) ? this.root // Start at the root or at - : this.cache[this.cache.length-1]; // the last element we found - - var elt; - if (start.nodeType === Node.DOCUMENT_NODE) - elt = start.documentElement; - else - elt = start.nextElement(this.root); - - while(elt) { - if (this.filter(elt)) { - return elt; - } - - elt = elt.nextElement(this.root); - } - return null; - } }, -}); - - -/***/ }), - -/***/ 91895: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = HTMLParser; - -var Document = __webpack_require__(35452); -var DocumentType = __webpack_require__(73092); -var Node = __webpack_require__(97537); -var NAMESPACE = (__webpack_require__(89076).NAMESPACE); -var html = __webpack_require__(96324); -var impl = html.elements; - -var pushAll = Function.prototype.apply.bind(Array.prototype.push); - -/* - * This file contains an implementation of the HTML parsing algorithm. - * The algorithm and the implementation are complex because HTML - * explicitly defines how the parser should behave for all possible - * valid and invalid inputs. - * - * Usage: - * - * The file defines a single HTMLParser() function, which dom.js exposes - * publicly as document.implementation.mozHTMLParser(). This is a - * factory function, not a constructor. - * - * When you call document.implementation.mozHTMLParser(), it returns - * an object that has parse() and document() methods. To parse HTML text, - * pass the text (in one or more chunks) to the parse() method. When - * you've passed all the text (on the last chunk, or afterward) pass - * true as the second argument to parse() to tell the parser that there - * is no more coming. Call document() to get the document object that - * the parser is parsing into. You can call this at any time, before - * or after calling parse(). - * - * The first argument to mozHTMLParser is the absolute URL of the document. - * - * The second argument is optional and is for internal use only. Pass an - * element as the fragmentContext to do innerHTML parsing for the - * element. To do innerHTML parsing on a document, pass null. Otherwise, - * omit the 2nd argument. See HTMLElement.innerHTML for an example. Note - * that if you pass a context element, the end() method will return an - * unwrapped document instead of a wrapped one. - * - * Implementation details: - * - * This is a long file of almost 7000 lines. It is structured as one - * big function nested within another big function. The outer - * function defines a bunch of constant data, utility functions - * that use that data, and a couple of classes used by the parser. - * The outer function also defines and returns the - * inner function. This inner function is the HTMLParser factory - * function that implements the parser and holds all the parser state - * as local variables. The HTMLParser function is quite big because - * it defines many nested functions that use those local variables. - * - * There are three tightly coupled parser stages: a scanner, a - * tokenizer and a tree builder. In a (possibly misguided) attempt at - * efficiency, the stages are not implemented as separate classes: - * everything shares state and is (mostly) implemented in imperative - * (rather than OO) style. - * - * The stages of the parser work like this: When the client code calls - * the parser's parse() method, the specified string is passed to - * scanChars(). The scanner loops through that string and passes characters - * (sometimes one at a time, sometimes in chunks) to the tokenizer stage. - * The tokenizer groups the characters into tokens: tags, endtags, runs - * of text, comments, doctype declarations, and the end-of-file (EOF) - * token. These tokens are then passed to the tree building stage via - * the insertToken() function. The tree building stage builds up the - * document tree. - * - * The tokenizer stage is a finite state machine. Each state is - * implemented as a function with a name that ends in "_state". The - * initial state is data_state(). The current tokenizer state is stored - * in the variable 'tokenizer'. Most state functions expect a single - * integer argument which represents a single UTF-16 codepoint. Some - * states want more characters and set a lookahead property on - * themselves. The scanChars() function in the scanner checks for this - * lookahead property. If it doesn't exist, then scanChars() just passes - * the next input character to the current tokenizer state function. - * Otherwise, scanChars() looks ahead (a given # of characters, or for a - * matching string, or for a matching regexp) and passes a string of - * characters to the current tokenizer state function. - * - * As a shortcut, certain states of the tokenizer use regular expressions - * to look ahead in the scanner's input buffer for runs of text, simple - * tags and attributes. For well-formed input, these shortcuts skip a - * lot of state transitions and speed things up a bit. - * - * When a tokenizer state function has consumed a complete token, it - * emits that token, by calling insertToken(), or by calling a utility - * function that itself calls insertToken(). These tokens are passed to - * the tree building stage, which is also a state machine. Like the - * tokenizer, the tree building states are implemented as functions, and - * these functions have names that end with _mode (because the HTML spec - * refers to them as insertion modes). The current insertion mode is held - * by the 'parser' variable. Each insertion mode function takes up to 4 - * arguments. The first is a token type, represented by the constants - * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF. The second argument is - * the value of the token: the text or comment data, or tagname or - * doctype. For tags, the 3rd argument is an array of attributes. For - * DOCTYPES it is the optional public id. For tags, the 4th argument is - * true if the tag is self-closing. For doctypes, the 4th argument is the - * optional system id. - * - * Search for "***" to find the major sub-divisions in the code. - */ - - -/*** - * Data prolog. Lots of constants declared here, including some - * very large objects. They're used throughout the code that follows - */ -// Token types for the tree builder. -var EOF = -1; -var TEXT = 1; -var TAG = 2; -var ENDTAG = 3; -var COMMENT = 4; -var DOCTYPE = 5; - -// A re-usable empty array -var NOATTRS = []; - -// These DTD public ids put the browser in quirks mode -var quirkyPublicIds = /^HTML$|^-\/\/W3O\/\/DTD W3 HTML Strict 3\.0\/\/EN\/\/$|^-\/W3C\/DTD HTML 4\.0 Transitional\/EN$|^\+\/\/Silmaril\/\/dtd html Pro v0r11 19970101\/\/|^-\/\/AdvaSoft Ltd\/\/DTD HTML 3\.0 asWedit \+ extensions\/\/|^-\/\/AS\/\/DTD HTML 3\.0 asWedit \+ extensions\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Level 1\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Level 2\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict Level 1\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict Level 2\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict\/\/|^-\/\/IETF\/\/DTD HTML 2\.0\/\/|^-\/\/IETF\/\/DTD HTML 2\.1E\/\/|^-\/\/IETF\/\/DTD HTML 3\.0\/\/|^-\/\/IETF\/\/DTD HTML 3\.2 Final\/\/|^-\/\/IETF\/\/DTD HTML 3\.2\/\/|^-\/\/IETF\/\/DTD HTML 3\/\/|^-\/\/IETF\/\/DTD HTML Level 0\/\/|^-\/\/IETF\/\/DTD HTML Level 1\/\/|^-\/\/IETF\/\/DTD HTML Level 2\/\/|^-\/\/IETF\/\/DTD HTML Level 3\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 0\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 1\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 2\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 3\/\/|^-\/\/IETF\/\/DTD HTML Strict\/\/|^-\/\/IETF\/\/DTD HTML\/\/|^-\/\/Metrius\/\/DTD Metrius Presentational\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 HTML Strict\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 HTML\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 Tables\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 HTML Strict\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 HTML\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 Tables\/\/|^-\/\/Netscape Comm\. Corp\.\/\/DTD HTML\/\/|^-\/\/Netscape Comm\. Corp\.\/\/DTD Strict HTML\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML 2\.0\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML Extended 1\.0\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML Extended Relaxed 1\.0\/\/|^-\/\/SoftQuad Software\/\/DTD HoTMetaL PRO 6\.0::19990601::extensions to HTML 4\.0\/\/|^-\/\/SoftQuad\/\/DTD HoTMetaL PRO 4\.0::19971010::extensions to HTML 4\.0\/\/|^-\/\/Spyglass\/\/DTD HTML 2\.0 Extended\/\/|^-\/\/SQ\/\/DTD HTML 2\.0 HoTMetaL \+ extensions\/\/|^-\/\/Sun Microsystems Corp\.\/\/DTD HotJava HTML\/\/|^-\/\/Sun Microsystems Corp\.\/\/DTD HotJava Strict HTML\/\/|^-\/\/W3C\/\/DTD HTML 3 1995-03-24\/\/|^-\/\/W3C\/\/DTD HTML 3\.2 Draft\/\/|^-\/\/W3C\/\/DTD HTML 3\.2 Final\/\/|^-\/\/W3C\/\/DTD HTML 3\.2\/\/|^-\/\/W3C\/\/DTD HTML 3\.2S Draft\/\/|^-\/\/W3C\/\/DTD HTML 4\.0 Frameset\/\/|^-\/\/W3C\/\/DTD HTML 4\.0 Transitional\/\/|^-\/\/W3C\/\/DTD HTML Experimental 19960712\/\/|^-\/\/W3C\/\/DTD HTML Experimental 970421\/\/|^-\/\/W3C\/\/DTD W3 HTML\/\/|^-\/\/W3O\/\/DTD W3 HTML 3\.0\/\/|^-\/\/WebTechs\/\/DTD Mozilla HTML 2\.0\/\/|^-\/\/WebTechs\/\/DTD Mozilla HTML\/\//i; - -var quirkySystemId = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; - -var conditionallyQuirkyPublicIds = /^-\/\/W3C\/\/DTD HTML 4\.01 Frameset\/\/|^-\/\/W3C\/\/DTD HTML 4\.01 Transitional\/\//i; - -// These DTD public ids put the browser in limited quirks mode -var limitedQuirkyPublicIds = /^-\/\/W3C\/\/DTD XHTML 1\.0 Frameset\/\/|^-\/\/W3C\/\/DTD XHTML 1\.0 Transitional\/\//i; - - -// Element sets below. See the isA() function for a way to test -// whether an element is a member of a set -var specialSet = Object.create(null); -specialSet[NAMESPACE.HTML] = { - __proto__: null, - "address":true, "applet":true, "area":true, "article":true, - "aside":true, "base":true, "basefont":true, "bgsound":true, - "blockquote":true, "body":true, "br":true, "button":true, - "caption":true, "center":true, "col":true, "colgroup":true, - "dd":true, "details":true, "dir":true, - "div":true, "dl":true, "dt":true, "embed":true, - "fieldset":true, "figcaption":true, "figure":true, "footer":true, - "form":true, "frame":true, "frameset":true, "h1":true, - "h2":true, "h3":true, "h4":true, "h5":true, - "h6":true, "head":true, "header":true, "hgroup":true, - "hr":true, "html":true, "iframe":true, "img":true, - "input":true, "li":true, "link":true, - "listing":true, "main":true, "marquee":true, "menu":true, "meta":true, - "nav":true, "noembed":true, "noframes":true, "noscript":true, - "object":true, "ol":true, "p":true, "param":true, - "plaintext":true, "pre":true, "script":true, "section":true, - "select":true, "source":true, "style":true, "summary":true, "table":true, - "tbody":true, "td":true, "template":true, "textarea":true, "tfoot":true, - "th":true, "thead":true, "title":true, "tr":true, "track":true, - // Note that "xmp" was removed from the "special" set in the latest - // spec, apparently by accident; see - // https://github.com/whatwg/html/pull/1919 - "ul":true, "wbr":true, "xmp":true -}; -specialSet[NAMESPACE.SVG] = { - __proto__: null, - "foreignObject": true, "desc": true, "title": true -}; -specialSet[NAMESPACE.MATHML] = { - __proto__: null, - "mi":true, "mo":true, "mn":true, "ms":true, - "mtext":true, "annotation-xml":true -}; - -// The set of address, div, and p HTML tags -var addressdivpSet = Object.create(null); -addressdivpSet[NAMESPACE.HTML] = { - __proto__: null, - "address":true, "div":true, "p":true -}; - -var dddtSet = Object.create(null); -dddtSet[NAMESPACE.HTML] = { - __proto__: null, - "dd":true, "dt":true -}; - -var tablesectionrowSet = Object.create(null); -tablesectionrowSet[NAMESPACE.HTML] = { - __proto__: null, - "table":true, "thead":true, "tbody":true, "tfoot":true, "tr":true -}; - -var impliedEndTagsSet = Object.create(null); -impliedEndTagsSet[NAMESPACE.HTML] = { - __proto__: null, - "dd": true, "dt": true, "li": true, "menuitem": true, "optgroup": true, - "option": true, "p": true, "rb": true, "rp": true, "rt": true, "rtc": true -}; - -var thoroughImpliedEndTagsSet = Object.create(null); -thoroughImpliedEndTagsSet[NAMESPACE.HTML] = { - __proto__: null, - "caption": true, "colgroup": true, "dd": true, "dt": true, "li": true, - "optgroup": true, "option": true, "p": true, "rb": true, "rp": true, - "rt": true, "rtc": true, "tbody": true, "td": true, "tfoot": true, - "th": true, "thead": true, "tr": true -}; - -var tableContextSet = Object.create(null); -tableContextSet[NAMESPACE.HTML] = { - __proto__: null, - "table": true, "template": true, "html": true -}; - -var tableBodyContextSet = Object.create(null); -tableBodyContextSet[NAMESPACE.HTML] = { - __proto__: null, - "tbody": true, "tfoot": true, "thead": true, "template": true, "html": true -}; - -var tableRowContextSet = Object.create(null); -tableRowContextSet[NAMESPACE.HTML] = { - __proto__: null, - "tr": true, "template": true, "html": true -}; - -// See http://www.w3.org/TR/html5/forms.html#form-associated-element -var formassociatedSet = Object.create(null); -formassociatedSet[NAMESPACE.HTML] = { - __proto__: null, - "button": true, "fieldset": true, "input": true, "keygen": true, - "object": true, "output": true, "select": true, "textarea": true, - "img": true -}; - -var inScopeSet = Object.create(null); -inScopeSet[NAMESPACE.HTML]= { - __proto__: null, - "applet":true, "caption":true, "html":true, "table":true, - "td":true, "th":true, "marquee":true, "object":true, - "template":true -}; -inScopeSet[NAMESPACE.MATHML] = { - __proto__: null, - "mi":true, "mo":true, "mn":true, "ms":true, - "mtext":true, "annotation-xml":true -}; -inScopeSet[NAMESPACE.SVG] = { - __proto__: null, - "foreignObject":true, "desc":true, "title":true -}; - -var inListItemScopeSet = Object.create(inScopeSet); -inListItemScopeSet[NAMESPACE.HTML] = - Object.create(inScopeSet[NAMESPACE.HTML]); -inListItemScopeSet[NAMESPACE.HTML].ol = true; -inListItemScopeSet[NAMESPACE.HTML].ul = true; - -var inButtonScopeSet = Object.create(inScopeSet); -inButtonScopeSet[NAMESPACE.HTML] = - Object.create(inScopeSet[NAMESPACE.HTML]); -inButtonScopeSet[NAMESPACE.HTML].button = true; - -var inTableScopeSet = Object.create(null); -inTableScopeSet[NAMESPACE.HTML] = { - __proto__: null, - "html":true, "table":true, "template":true -}; - -// The set of elements for select scope is the everything *except* these -var invertedSelectScopeSet = Object.create(null); -invertedSelectScopeSet[NAMESPACE.HTML] = { - __proto__: null, - "optgroup":true, "option":true -}; - -var mathmlTextIntegrationPointSet = Object.create(null); -mathmlTextIntegrationPointSet[NAMESPACE.MATHML] = { - __proto__: null, - mi: true, - mo: true, - mn: true, - ms: true, - mtext: true -}; - -var htmlIntegrationPointSet = Object.create(null); -htmlIntegrationPointSet[NAMESPACE.SVG] = { - __proto__: null, - foreignObject: true, - desc: true, - title: true -}; - -var foreignAttributes = { - __proto__: null, - "xlink:actuate": NAMESPACE.XLINK, "xlink:arcrole": NAMESPACE.XLINK, - "xlink:href": NAMESPACE.XLINK, "xlink:role": NAMESPACE.XLINK, - "xlink:show": NAMESPACE.XLINK, "xlink:title": NAMESPACE.XLINK, - "xlink:type": NAMESPACE.XLINK, "xml:base": NAMESPACE.XML, - "xml:lang": NAMESPACE.XML, "xml:space": NAMESPACE.XML, - "xmlns": NAMESPACE.XMLNS, "xmlns:xlink": NAMESPACE.XMLNS -}; - - -// Lowercase to mixed case mapping for SVG attributes and tagnames -var svgAttrAdjustments = { - __proto__: null, - attributename: "attributeName", attributetype: "attributeType", - basefrequency: "baseFrequency", baseprofile: "baseProfile", - calcmode: "calcMode", clippathunits: "clipPathUnits", - diffuseconstant: "diffuseConstant", - edgemode: "edgeMode", - filterunits: "filterUnits", - glyphref: "glyphRef", gradienttransform: "gradientTransform", - gradientunits: "gradientUnits", kernelmatrix: "kernelMatrix", - kernelunitlength: "kernelUnitLength", keypoints: "keyPoints", - keysplines: "keySplines", keytimes: "keyTimes", - lengthadjust: "lengthAdjust", limitingconeangle: "limitingConeAngle", - markerheight: "markerHeight", markerunits: "markerUnits", - markerwidth: "markerWidth", maskcontentunits: "maskContentUnits", - maskunits: "maskUnits", numoctaves: "numOctaves", - pathlength: "pathLength", patterncontentunits: "patternContentUnits", - patterntransform: "patternTransform", patternunits: "patternUnits", - pointsatx: "pointsAtX", pointsaty: "pointsAtY", - pointsatz: "pointsAtZ", preservealpha: "preserveAlpha", - preserveaspectratio: "preserveAspectRatio", - primitiveunits: "primitiveUnits", refx: "refX", - refy: "refY", repeatcount: "repeatCount", - repeatdur: "repeatDur", requiredextensions: "requiredExtensions", - requiredfeatures: "requiredFeatures", - specularconstant: "specularConstant", - specularexponent: "specularExponent", spreadmethod: "spreadMethod", - startoffset: "startOffset", stddeviation: "stdDeviation", - stitchtiles: "stitchTiles", surfacescale: "surfaceScale", - systemlanguage: "systemLanguage", tablevalues: "tableValues", - targetx: "targetX", targety: "targetY", - textlength: "textLength", viewbox: "viewBox", - viewtarget: "viewTarget", xchannelselector: "xChannelSelector", - ychannelselector: "yChannelSelector", zoomandpan: "zoomAndPan" -}; - -var svgTagNameAdjustments = { - __proto__: null, - altglyph: "altGlyph", altglyphdef: "altGlyphDef", - altglyphitem: "altGlyphItem", animatecolor: "animateColor", - animatemotion: "animateMotion", animatetransform: "animateTransform", - clippath: "clipPath", feblend: "feBlend", - fecolormatrix: "feColorMatrix", - fecomponenttransfer: "feComponentTransfer", fecomposite: "feComposite", - feconvolvematrix: "feConvolveMatrix", - fediffuselighting: "feDiffuseLighting", - fedisplacementmap: "feDisplacementMap", - fedistantlight: "feDistantLight", feflood: "feFlood", - fefunca: "feFuncA", fefuncb: "feFuncB", - fefuncg: "feFuncG", fefuncr: "feFuncR", - fegaussianblur: "feGaussianBlur", feimage: "feImage", - femerge: "feMerge", femergenode: "feMergeNode", - femorphology: "feMorphology", feoffset: "feOffset", - fepointlight: "fePointLight", fespecularlighting: "feSpecularLighting", - fespotlight: "feSpotLight", fetile: "feTile", - feturbulence: "feTurbulence", foreignobject: "foreignObject", - glyphref: "glyphRef", lineargradient: "linearGradient", - radialgradient: "radialGradient", textpath: "textPath" -}; - - -// Data for parsing numeric and named character references -// These next 3 objects are direct translations of tables -// in the HTML spec into JavaScript object format -var numericCharRefReplacements = { - __proto__: null, - 0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E, - 0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030, - 0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018, - 0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013, - 0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A, - 0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178 -}; - -/* - * This table is generated with test/tools/update-entities.js - */ -var namedCharRefs = { - __proto__: null, - "AElig":0xc6, "AElig;":0xc6, - "AMP":0x26, "AMP;":0x26, - "Aacute":0xc1, "Aacute;":0xc1, - "Abreve;":0x102, "Acirc":0xc2, - "Acirc;":0xc2, "Acy;":0x410, - "Afr;":[0xd835,0xdd04], "Agrave":0xc0, - "Agrave;":0xc0, "Alpha;":0x391, - "Amacr;":0x100, "And;":0x2a53, - "Aogon;":0x104, "Aopf;":[0xd835,0xdd38], - "ApplyFunction;":0x2061, "Aring":0xc5, - "Aring;":0xc5, "Ascr;":[0xd835,0xdc9c], - "Assign;":0x2254, "Atilde":0xc3, - "Atilde;":0xc3, "Auml":0xc4, - "Auml;":0xc4, "Backslash;":0x2216, - "Barv;":0x2ae7, "Barwed;":0x2306, - "Bcy;":0x411, "Because;":0x2235, - "Bernoullis;":0x212c, "Beta;":0x392, - "Bfr;":[0xd835,0xdd05], "Bopf;":[0xd835,0xdd39], - "Breve;":0x2d8, "Bscr;":0x212c, - "Bumpeq;":0x224e, "CHcy;":0x427, - "COPY":0xa9, "COPY;":0xa9, - "Cacute;":0x106, "Cap;":0x22d2, - "CapitalDifferentialD;":0x2145, "Cayleys;":0x212d, - "Ccaron;":0x10c, "Ccedil":0xc7, - "Ccedil;":0xc7, "Ccirc;":0x108, - "Cconint;":0x2230, "Cdot;":0x10a, - "Cedilla;":0xb8, "CenterDot;":0xb7, - "Cfr;":0x212d, "Chi;":0x3a7, - "CircleDot;":0x2299, "CircleMinus;":0x2296, - "CirclePlus;":0x2295, "CircleTimes;":0x2297, - "ClockwiseContourIntegral;":0x2232, "CloseCurlyDoubleQuote;":0x201d, - "CloseCurlyQuote;":0x2019, "Colon;":0x2237, - "Colone;":0x2a74, "Congruent;":0x2261, - "Conint;":0x222f, "ContourIntegral;":0x222e, - "Copf;":0x2102, "Coproduct;":0x2210, - "CounterClockwiseContourIntegral;":0x2233, "Cross;":0x2a2f, - "Cscr;":[0xd835,0xdc9e], "Cup;":0x22d3, - "CupCap;":0x224d, "DD;":0x2145, - "DDotrahd;":0x2911, "DJcy;":0x402, - "DScy;":0x405, "DZcy;":0x40f, - "Dagger;":0x2021, "Darr;":0x21a1, - "Dashv;":0x2ae4, "Dcaron;":0x10e, - "Dcy;":0x414, "Del;":0x2207, - "Delta;":0x394, "Dfr;":[0xd835,0xdd07], - "DiacriticalAcute;":0xb4, "DiacriticalDot;":0x2d9, - "DiacriticalDoubleAcute;":0x2dd, "DiacriticalGrave;":0x60, - "DiacriticalTilde;":0x2dc, "Diamond;":0x22c4, - "DifferentialD;":0x2146, "Dopf;":[0xd835,0xdd3b], - "Dot;":0xa8, "DotDot;":0x20dc, - "DotEqual;":0x2250, "DoubleContourIntegral;":0x222f, - "DoubleDot;":0xa8, "DoubleDownArrow;":0x21d3, - "DoubleLeftArrow;":0x21d0, "DoubleLeftRightArrow;":0x21d4, - "DoubleLeftTee;":0x2ae4, "DoubleLongLeftArrow;":0x27f8, - "DoubleLongLeftRightArrow;":0x27fa, "DoubleLongRightArrow;":0x27f9, - "DoubleRightArrow;":0x21d2, "DoubleRightTee;":0x22a8, - "DoubleUpArrow;":0x21d1, "DoubleUpDownArrow;":0x21d5, - "DoubleVerticalBar;":0x2225, "DownArrow;":0x2193, - "DownArrowBar;":0x2913, "DownArrowUpArrow;":0x21f5, - "DownBreve;":0x311, "DownLeftRightVector;":0x2950, - "DownLeftTeeVector;":0x295e, "DownLeftVector;":0x21bd, - "DownLeftVectorBar;":0x2956, "DownRightTeeVector;":0x295f, - "DownRightVector;":0x21c1, "DownRightVectorBar;":0x2957, - "DownTee;":0x22a4, "DownTeeArrow;":0x21a7, - "Downarrow;":0x21d3, "Dscr;":[0xd835,0xdc9f], - "Dstrok;":0x110, "ENG;":0x14a, - "ETH":0xd0, "ETH;":0xd0, - "Eacute":0xc9, "Eacute;":0xc9, - "Ecaron;":0x11a, "Ecirc":0xca, - "Ecirc;":0xca, "Ecy;":0x42d, - "Edot;":0x116, "Efr;":[0xd835,0xdd08], - "Egrave":0xc8, "Egrave;":0xc8, - "Element;":0x2208, "Emacr;":0x112, - "EmptySmallSquare;":0x25fb, "EmptyVerySmallSquare;":0x25ab, - "Eogon;":0x118, "Eopf;":[0xd835,0xdd3c], - "Epsilon;":0x395, "Equal;":0x2a75, - "EqualTilde;":0x2242, "Equilibrium;":0x21cc, - "Escr;":0x2130, "Esim;":0x2a73, - "Eta;":0x397, "Euml":0xcb, - "Euml;":0xcb, "Exists;":0x2203, - "ExponentialE;":0x2147, "Fcy;":0x424, - "Ffr;":[0xd835,0xdd09], "FilledSmallSquare;":0x25fc, - "FilledVerySmallSquare;":0x25aa, "Fopf;":[0xd835,0xdd3d], - "ForAll;":0x2200, "Fouriertrf;":0x2131, - "Fscr;":0x2131, "GJcy;":0x403, - "GT":0x3e, "GT;":0x3e, - "Gamma;":0x393, "Gammad;":0x3dc, - "Gbreve;":0x11e, "Gcedil;":0x122, - "Gcirc;":0x11c, "Gcy;":0x413, - "Gdot;":0x120, "Gfr;":[0xd835,0xdd0a], - "Gg;":0x22d9, "Gopf;":[0xd835,0xdd3e], - "GreaterEqual;":0x2265, "GreaterEqualLess;":0x22db, - "GreaterFullEqual;":0x2267, "GreaterGreater;":0x2aa2, - "GreaterLess;":0x2277, "GreaterSlantEqual;":0x2a7e, - "GreaterTilde;":0x2273, "Gscr;":[0xd835,0xdca2], - "Gt;":0x226b, "HARDcy;":0x42a, - "Hacek;":0x2c7, "Hat;":0x5e, - "Hcirc;":0x124, "Hfr;":0x210c, - "HilbertSpace;":0x210b, "Hopf;":0x210d, - "HorizontalLine;":0x2500, "Hscr;":0x210b, - "Hstrok;":0x126, "HumpDownHump;":0x224e, - "HumpEqual;":0x224f, "IEcy;":0x415, - "IJlig;":0x132, "IOcy;":0x401, - "Iacute":0xcd, "Iacute;":0xcd, - "Icirc":0xce, "Icirc;":0xce, - "Icy;":0x418, "Idot;":0x130, - "Ifr;":0x2111, "Igrave":0xcc, - "Igrave;":0xcc, "Im;":0x2111, - "Imacr;":0x12a, "ImaginaryI;":0x2148, - "Implies;":0x21d2, "Int;":0x222c, - "Integral;":0x222b, "Intersection;":0x22c2, - "InvisibleComma;":0x2063, "InvisibleTimes;":0x2062, - "Iogon;":0x12e, "Iopf;":[0xd835,0xdd40], - "Iota;":0x399, "Iscr;":0x2110, - "Itilde;":0x128, "Iukcy;":0x406, - "Iuml":0xcf, "Iuml;":0xcf, - "Jcirc;":0x134, "Jcy;":0x419, - "Jfr;":[0xd835,0xdd0d], "Jopf;":[0xd835,0xdd41], - "Jscr;":[0xd835,0xdca5], "Jsercy;":0x408, - "Jukcy;":0x404, "KHcy;":0x425, - "KJcy;":0x40c, "Kappa;":0x39a, - "Kcedil;":0x136, "Kcy;":0x41a, - "Kfr;":[0xd835,0xdd0e], "Kopf;":[0xd835,0xdd42], - "Kscr;":[0xd835,0xdca6], "LJcy;":0x409, - "LT":0x3c, "LT;":0x3c, - "Lacute;":0x139, "Lambda;":0x39b, - "Lang;":0x27ea, "Laplacetrf;":0x2112, - "Larr;":0x219e, "Lcaron;":0x13d, - "Lcedil;":0x13b, "Lcy;":0x41b, - "LeftAngleBracket;":0x27e8, "LeftArrow;":0x2190, - "LeftArrowBar;":0x21e4, "LeftArrowRightArrow;":0x21c6, - "LeftCeiling;":0x2308, "LeftDoubleBracket;":0x27e6, - "LeftDownTeeVector;":0x2961, "LeftDownVector;":0x21c3, - "LeftDownVectorBar;":0x2959, "LeftFloor;":0x230a, - "LeftRightArrow;":0x2194, "LeftRightVector;":0x294e, - "LeftTee;":0x22a3, "LeftTeeArrow;":0x21a4, - "LeftTeeVector;":0x295a, "LeftTriangle;":0x22b2, - "LeftTriangleBar;":0x29cf, "LeftTriangleEqual;":0x22b4, - "LeftUpDownVector;":0x2951, "LeftUpTeeVector;":0x2960, - "LeftUpVector;":0x21bf, "LeftUpVectorBar;":0x2958, - "LeftVector;":0x21bc, "LeftVectorBar;":0x2952, - "Leftarrow;":0x21d0, "Leftrightarrow;":0x21d4, - "LessEqualGreater;":0x22da, "LessFullEqual;":0x2266, - "LessGreater;":0x2276, "LessLess;":0x2aa1, - "LessSlantEqual;":0x2a7d, "LessTilde;":0x2272, - "Lfr;":[0xd835,0xdd0f], "Ll;":0x22d8, - "Lleftarrow;":0x21da, "Lmidot;":0x13f, - "LongLeftArrow;":0x27f5, "LongLeftRightArrow;":0x27f7, - "LongRightArrow;":0x27f6, "Longleftarrow;":0x27f8, - "Longleftrightarrow;":0x27fa, "Longrightarrow;":0x27f9, - "Lopf;":[0xd835,0xdd43], "LowerLeftArrow;":0x2199, - "LowerRightArrow;":0x2198, "Lscr;":0x2112, - "Lsh;":0x21b0, "Lstrok;":0x141, - "Lt;":0x226a, "Map;":0x2905, - "Mcy;":0x41c, "MediumSpace;":0x205f, - "Mellintrf;":0x2133, "Mfr;":[0xd835,0xdd10], - "MinusPlus;":0x2213, "Mopf;":[0xd835,0xdd44], - "Mscr;":0x2133, "Mu;":0x39c, - "NJcy;":0x40a, "Nacute;":0x143, - "Ncaron;":0x147, "Ncedil;":0x145, - "Ncy;":0x41d, "NegativeMediumSpace;":0x200b, - "NegativeThickSpace;":0x200b, "NegativeThinSpace;":0x200b, - "NegativeVeryThinSpace;":0x200b, "NestedGreaterGreater;":0x226b, - "NestedLessLess;":0x226a, "NewLine;":0xa, - "Nfr;":[0xd835,0xdd11], "NoBreak;":0x2060, - "NonBreakingSpace;":0xa0, "Nopf;":0x2115, - "Not;":0x2aec, "NotCongruent;":0x2262, - "NotCupCap;":0x226d, "NotDoubleVerticalBar;":0x2226, - "NotElement;":0x2209, "NotEqual;":0x2260, - "NotEqualTilde;":[0x2242,0x338], "NotExists;":0x2204, - "NotGreater;":0x226f, "NotGreaterEqual;":0x2271, - "NotGreaterFullEqual;":[0x2267,0x338], "NotGreaterGreater;":[0x226b,0x338], - "NotGreaterLess;":0x2279, "NotGreaterSlantEqual;":[0x2a7e,0x338], - "NotGreaterTilde;":0x2275, "NotHumpDownHump;":[0x224e,0x338], - "NotHumpEqual;":[0x224f,0x338], "NotLeftTriangle;":0x22ea, - "NotLeftTriangleBar;":[0x29cf,0x338], "NotLeftTriangleEqual;":0x22ec, - "NotLess;":0x226e, "NotLessEqual;":0x2270, - "NotLessGreater;":0x2278, "NotLessLess;":[0x226a,0x338], - "NotLessSlantEqual;":[0x2a7d,0x338], "NotLessTilde;":0x2274, - "NotNestedGreaterGreater;":[0x2aa2,0x338], "NotNestedLessLess;":[0x2aa1,0x338], - "NotPrecedes;":0x2280, "NotPrecedesEqual;":[0x2aaf,0x338], - "NotPrecedesSlantEqual;":0x22e0, "NotReverseElement;":0x220c, - "NotRightTriangle;":0x22eb, "NotRightTriangleBar;":[0x29d0,0x338], - "NotRightTriangleEqual;":0x22ed, "NotSquareSubset;":[0x228f,0x338], - "NotSquareSubsetEqual;":0x22e2, "NotSquareSuperset;":[0x2290,0x338], - "NotSquareSupersetEqual;":0x22e3, "NotSubset;":[0x2282,0x20d2], - "NotSubsetEqual;":0x2288, "NotSucceeds;":0x2281, - "NotSucceedsEqual;":[0x2ab0,0x338], "NotSucceedsSlantEqual;":0x22e1, - "NotSucceedsTilde;":[0x227f,0x338], "NotSuperset;":[0x2283,0x20d2], - "NotSupersetEqual;":0x2289, "NotTilde;":0x2241, - "NotTildeEqual;":0x2244, "NotTildeFullEqual;":0x2247, - "NotTildeTilde;":0x2249, "NotVerticalBar;":0x2224, - "Nscr;":[0xd835,0xdca9], "Ntilde":0xd1, - "Ntilde;":0xd1, "Nu;":0x39d, - "OElig;":0x152, "Oacute":0xd3, - "Oacute;":0xd3, "Ocirc":0xd4, - "Ocirc;":0xd4, "Ocy;":0x41e, - "Odblac;":0x150, "Ofr;":[0xd835,0xdd12], - "Ograve":0xd2, "Ograve;":0xd2, - "Omacr;":0x14c, "Omega;":0x3a9, - "Omicron;":0x39f, "Oopf;":[0xd835,0xdd46], - "OpenCurlyDoubleQuote;":0x201c, "OpenCurlyQuote;":0x2018, - "Or;":0x2a54, "Oscr;":[0xd835,0xdcaa], - "Oslash":0xd8, "Oslash;":0xd8, - "Otilde":0xd5, "Otilde;":0xd5, - "Otimes;":0x2a37, "Ouml":0xd6, - "Ouml;":0xd6, "OverBar;":0x203e, - "OverBrace;":0x23de, "OverBracket;":0x23b4, - "OverParenthesis;":0x23dc, "PartialD;":0x2202, - "Pcy;":0x41f, "Pfr;":[0xd835,0xdd13], - "Phi;":0x3a6, "Pi;":0x3a0, - "PlusMinus;":0xb1, "Poincareplane;":0x210c, - "Popf;":0x2119, "Pr;":0x2abb, - "Precedes;":0x227a, "PrecedesEqual;":0x2aaf, - "PrecedesSlantEqual;":0x227c, "PrecedesTilde;":0x227e, - "Prime;":0x2033, "Product;":0x220f, - "Proportion;":0x2237, "Proportional;":0x221d, - "Pscr;":[0xd835,0xdcab], "Psi;":0x3a8, - "QUOT":0x22, "QUOT;":0x22, - "Qfr;":[0xd835,0xdd14], "Qopf;":0x211a, - "Qscr;":[0xd835,0xdcac], "RBarr;":0x2910, - "REG":0xae, "REG;":0xae, - "Racute;":0x154, "Rang;":0x27eb, - "Rarr;":0x21a0, "Rarrtl;":0x2916, - "Rcaron;":0x158, "Rcedil;":0x156, - "Rcy;":0x420, "Re;":0x211c, - "ReverseElement;":0x220b, "ReverseEquilibrium;":0x21cb, - "ReverseUpEquilibrium;":0x296f, "Rfr;":0x211c, - "Rho;":0x3a1, "RightAngleBracket;":0x27e9, - "RightArrow;":0x2192, "RightArrowBar;":0x21e5, - "RightArrowLeftArrow;":0x21c4, "RightCeiling;":0x2309, - "RightDoubleBracket;":0x27e7, "RightDownTeeVector;":0x295d, - "RightDownVector;":0x21c2, "RightDownVectorBar;":0x2955, - "RightFloor;":0x230b, "RightTee;":0x22a2, - "RightTeeArrow;":0x21a6, "RightTeeVector;":0x295b, - "RightTriangle;":0x22b3, "RightTriangleBar;":0x29d0, - "RightTriangleEqual;":0x22b5, "RightUpDownVector;":0x294f, - "RightUpTeeVector;":0x295c, "RightUpVector;":0x21be, - "RightUpVectorBar;":0x2954, "RightVector;":0x21c0, - "RightVectorBar;":0x2953, "Rightarrow;":0x21d2, - "Ropf;":0x211d, "RoundImplies;":0x2970, - "Rrightarrow;":0x21db, "Rscr;":0x211b, - "Rsh;":0x21b1, "RuleDelayed;":0x29f4, - "SHCHcy;":0x429, "SHcy;":0x428, - "SOFTcy;":0x42c, "Sacute;":0x15a, - "Sc;":0x2abc, "Scaron;":0x160, - "Scedil;":0x15e, "Scirc;":0x15c, - "Scy;":0x421, "Sfr;":[0xd835,0xdd16], - "ShortDownArrow;":0x2193, "ShortLeftArrow;":0x2190, - "ShortRightArrow;":0x2192, "ShortUpArrow;":0x2191, - "Sigma;":0x3a3, "SmallCircle;":0x2218, - "Sopf;":[0xd835,0xdd4a], "Sqrt;":0x221a, - "Square;":0x25a1, "SquareIntersection;":0x2293, - "SquareSubset;":0x228f, "SquareSubsetEqual;":0x2291, - "SquareSuperset;":0x2290, "SquareSupersetEqual;":0x2292, - "SquareUnion;":0x2294, "Sscr;":[0xd835,0xdcae], - "Star;":0x22c6, "Sub;":0x22d0, - "Subset;":0x22d0, "SubsetEqual;":0x2286, - "Succeeds;":0x227b, "SucceedsEqual;":0x2ab0, - "SucceedsSlantEqual;":0x227d, "SucceedsTilde;":0x227f, - "SuchThat;":0x220b, "Sum;":0x2211, - "Sup;":0x22d1, "Superset;":0x2283, - "SupersetEqual;":0x2287, "Supset;":0x22d1, - "THORN":0xde, "THORN;":0xde, - "TRADE;":0x2122, "TSHcy;":0x40b, - "TScy;":0x426, "Tab;":0x9, - "Tau;":0x3a4, "Tcaron;":0x164, - "Tcedil;":0x162, "Tcy;":0x422, - "Tfr;":[0xd835,0xdd17], "Therefore;":0x2234, - "Theta;":0x398, "ThickSpace;":[0x205f,0x200a], - "ThinSpace;":0x2009, "Tilde;":0x223c, - "TildeEqual;":0x2243, "TildeFullEqual;":0x2245, - "TildeTilde;":0x2248, "Topf;":[0xd835,0xdd4b], - "TripleDot;":0x20db, "Tscr;":[0xd835,0xdcaf], - "Tstrok;":0x166, "Uacute":0xda, - "Uacute;":0xda, "Uarr;":0x219f, - "Uarrocir;":0x2949, "Ubrcy;":0x40e, - "Ubreve;":0x16c, "Ucirc":0xdb, - "Ucirc;":0xdb, "Ucy;":0x423, - "Udblac;":0x170, "Ufr;":[0xd835,0xdd18], - "Ugrave":0xd9, "Ugrave;":0xd9, - "Umacr;":0x16a, "UnderBar;":0x5f, - "UnderBrace;":0x23df, "UnderBracket;":0x23b5, - "UnderParenthesis;":0x23dd, "Union;":0x22c3, - "UnionPlus;":0x228e, "Uogon;":0x172, - "Uopf;":[0xd835,0xdd4c], "UpArrow;":0x2191, - "UpArrowBar;":0x2912, "UpArrowDownArrow;":0x21c5, - "UpDownArrow;":0x2195, "UpEquilibrium;":0x296e, - "UpTee;":0x22a5, "UpTeeArrow;":0x21a5, - "Uparrow;":0x21d1, "Updownarrow;":0x21d5, - "UpperLeftArrow;":0x2196, "UpperRightArrow;":0x2197, - "Upsi;":0x3d2, "Upsilon;":0x3a5, - "Uring;":0x16e, "Uscr;":[0xd835,0xdcb0], - "Utilde;":0x168, "Uuml":0xdc, - "Uuml;":0xdc, "VDash;":0x22ab, - "Vbar;":0x2aeb, "Vcy;":0x412, - "Vdash;":0x22a9, "Vdashl;":0x2ae6, - "Vee;":0x22c1, "Verbar;":0x2016, - "Vert;":0x2016, "VerticalBar;":0x2223, - "VerticalLine;":0x7c, "VerticalSeparator;":0x2758, - "VerticalTilde;":0x2240, "VeryThinSpace;":0x200a, - "Vfr;":[0xd835,0xdd19], "Vopf;":[0xd835,0xdd4d], - "Vscr;":[0xd835,0xdcb1], "Vvdash;":0x22aa, - "Wcirc;":0x174, "Wedge;":0x22c0, - "Wfr;":[0xd835,0xdd1a], "Wopf;":[0xd835,0xdd4e], - "Wscr;":[0xd835,0xdcb2], "Xfr;":[0xd835,0xdd1b], - "Xi;":0x39e, "Xopf;":[0xd835,0xdd4f], - "Xscr;":[0xd835,0xdcb3], "YAcy;":0x42f, - "YIcy;":0x407, "YUcy;":0x42e, - "Yacute":0xdd, "Yacute;":0xdd, - "Ycirc;":0x176, "Ycy;":0x42b, - "Yfr;":[0xd835,0xdd1c], "Yopf;":[0xd835,0xdd50], - "Yscr;":[0xd835,0xdcb4], "Yuml;":0x178, - "ZHcy;":0x416, "Zacute;":0x179, - "Zcaron;":0x17d, "Zcy;":0x417, - "Zdot;":0x17b, "ZeroWidthSpace;":0x200b, - "Zeta;":0x396, "Zfr;":0x2128, - "Zopf;":0x2124, "Zscr;":[0xd835,0xdcb5], - "aacute":0xe1, "aacute;":0xe1, - "abreve;":0x103, "ac;":0x223e, - "acE;":[0x223e,0x333], "acd;":0x223f, - "acirc":0xe2, "acirc;":0xe2, - "acute":0xb4, "acute;":0xb4, - "acy;":0x430, "aelig":0xe6, - "aelig;":0xe6, "af;":0x2061, - "afr;":[0xd835,0xdd1e], "agrave":0xe0, - "agrave;":0xe0, "alefsym;":0x2135, - "aleph;":0x2135, "alpha;":0x3b1, - "amacr;":0x101, "amalg;":0x2a3f, - "amp":0x26, "amp;":0x26, - "and;":0x2227, "andand;":0x2a55, - "andd;":0x2a5c, "andslope;":0x2a58, - "andv;":0x2a5a, "ang;":0x2220, - "ange;":0x29a4, "angle;":0x2220, - "angmsd;":0x2221, "angmsdaa;":0x29a8, - "angmsdab;":0x29a9, "angmsdac;":0x29aa, - "angmsdad;":0x29ab, "angmsdae;":0x29ac, - "angmsdaf;":0x29ad, "angmsdag;":0x29ae, - "angmsdah;":0x29af, "angrt;":0x221f, - "angrtvb;":0x22be, "angrtvbd;":0x299d, - "angsph;":0x2222, "angst;":0xc5, - "angzarr;":0x237c, "aogon;":0x105, - "aopf;":[0xd835,0xdd52], "ap;":0x2248, - "apE;":0x2a70, "apacir;":0x2a6f, - "ape;":0x224a, "apid;":0x224b, - "apos;":0x27, "approx;":0x2248, - "approxeq;":0x224a, "aring":0xe5, - "aring;":0xe5, "ascr;":[0xd835,0xdcb6], - "ast;":0x2a, "asymp;":0x2248, - "asympeq;":0x224d, "atilde":0xe3, - "atilde;":0xe3, "auml":0xe4, - "auml;":0xe4, "awconint;":0x2233, - "awint;":0x2a11, "bNot;":0x2aed, - "backcong;":0x224c, "backepsilon;":0x3f6, - "backprime;":0x2035, "backsim;":0x223d, - "backsimeq;":0x22cd, "barvee;":0x22bd, - "barwed;":0x2305, "barwedge;":0x2305, - "bbrk;":0x23b5, "bbrktbrk;":0x23b6, - "bcong;":0x224c, "bcy;":0x431, - "bdquo;":0x201e, "becaus;":0x2235, - "because;":0x2235, "bemptyv;":0x29b0, - "bepsi;":0x3f6, "bernou;":0x212c, - "beta;":0x3b2, "beth;":0x2136, - "between;":0x226c, "bfr;":[0xd835,0xdd1f], - "bigcap;":0x22c2, "bigcirc;":0x25ef, - "bigcup;":0x22c3, "bigodot;":0x2a00, - "bigoplus;":0x2a01, "bigotimes;":0x2a02, - "bigsqcup;":0x2a06, "bigstar;":0x2605, - "bigtriangledown;":0x25bd, "bigtriangleup;":0x25b3, - "biguplus;":0x2a04, "bigvee;":0x22c1, - "bigwedge;":0x22c0, "bkarow;":0x290d, - "blacklozenge;":0x29eb, "blacksquare;":0x25aa, - "blacktriangle;":0x25b4, "blacktriangledown;":0x25be, - "blacktriangleleft;":0x25c2, "blacktriangleright;":0x25b8, - "blank;":0x2423, "blk12;":0x2592, - "blk14;":0x2591, "blk34;":0x2593, - "block;":0x2588, "bne;":[0x3d,0x20e5], - "bnequiv;":[0x2261,0x20e5], "bnot;":0x2310, - "bopf;":[0xd835,0xdd53], "bot;":0x22a5, - "bottom;":0x22a5, "bowtie;":0x22c8, - "boxDL;":0x2557, "boxDR;":0x2554, - "boxDl;":0x2556, "boxDr;":0x2553, - "boxH;":0x2550, "boxHD;":0x2566, - "boxHU;":0x2569, "boxHd;":0x2564, - "boxHu;":0x2567, "boxUL;":0x255d, - "boxUR;":0x255a, "boxUl;":0x255c, - "boxUr;":0x2559, "boxV;":0x2551, - "boxVH;":0x256c, "boxVL;":0x2563, - "boxVR;":0x2560, "boxVh;":0x256b, - "boxVl;":0x2562, "boxVr;":0x255f, - "boxbox;":0x29c9, "boxdL;":0x2555, - "boxdR;":0x2552, "boxdl;":0x2510, - "boxdr;":0x250c, "boxh;":0x2500, - "boxhD;":0x2565, "boxhU;":0x2568, - "boxhd;":0x252c, "boxhu;":0x2534, - "boxminus;":0x229f, "boxplus;":0x229e, - "boxtimes;":0x22a0, "boxuL;":0x255b, - "boxuR;":0x2558, "boxul;":0x2518, - "boxur;":0x2514, "boxv;":0x2502, - "boxvH;":0x256a, "boxvL;":0x2561, - "boxvR;":0x255e, "boxvh;":0x253c, - "boxvl;":0x2524, "boxvr;":0x251c, - "bprime;":0x2035, "breve;":0x2d8, - "brvbar":0xa6, "brvbar;":0xa6, - "bscr;":[0xd835,0xdcb7], "bsemi;":0x204f, - "bsim;":0x223d, "bsime;":0x22cd, - "bsol;":0x5c, "bsolb;":0x29c5, - "bsolhsub;":0x27c8, "bull;":0x2022, - "bullet;":0x2022, "bump;":0x224e, - "bumpE;":0x2aae, "bumpe;":0x224f, - "bumpeq;":0x224f, "cacute;":0x107, - "cap;":0x2229, "capand;":0x2a44, - "capbrcup;":0x2a49, "capcap;":0x2a4b, - "capcup;":0x2a47, "capdot;":0x2a40, - "caps;":[0x2229,0xfe00], "caret;":0x2041, - "caron;":0x2c7, "ccaps;":0x2a4d, - "ccaron;":0x10d, "ccedil":0xe7, - "ccedil;":0xe7, "ccirc;":0x109, - "ccups;":0x2a4c, "ccupssm;":0x2a50, - "cdot;":0x10b, "cedil":0xb8, - "cedil;":0xb8, "cemptyv;":0x29b2, - "cent":0xa2, "cent;":0xa2, - "centerdot;":0xb7, "cfr;":[0xd835,0xdd20], - "chcy;":0x447, "check;":0x2713, - "checkmark;":0x2713, "chi;":0x3c7, - "cir;":0x25cb, "cirE;":0x29c3, - "circ;":0x2c6, "circeq;":0x2257, - "circlearrowleft;":0x21ba, "circlearrowright;":0x21bb, - "circledR;":0xae, "circledS;":0x24c8, - "circledast;":0x229b, "circledcirc;":0x229a, - "circleddash;":0x229d, "cire;":0x2257, - "cirfnint;":0x2a10, "cirmid;":0x2aef, - "cirscir;":0x29c2, "clubs;":0x2663, - "clubsuit;":0x2663, "colon;":0x3a, - "colone;":0x2254, "coloneq;":0x2254, - "comma;":0x2c, "commat;":0x40, - "comp;":0x2201, "compfn;":0x2218, - "complement;":0x2201, "complexes;":0x2102, - "cong;":0x2245, "congdot;":0x2a6d, - "conint;":0x222e, "copf;":[0xd835,0xdd54], - "coprod;":0x2210, "copy":0xa9, - "copy;":0xa9, "copysr;":0x2117, - "crarr;":0x21b5, "cross;":0x2717, - "cscr;":[0xd835,0xdcb8], "csub;":0x2acf, - "csube;":0x2ad1, "csup;":0x2ad0, - "csupe;":0x2ad2, "ctdot;":0x22ef, - "cudarrl;":0x2938, "cudarrr;":0x2935, - "cuepr;":0x22de, "cuesc;":0x22df, - "cularr;":0x21b6, "cularrp;":0x293d, - "cup;":0x222a, "cupbrcap;":0x2a48, - "cupcap;":0x2a46, "cupcup;":0x2a4a, - "cupdot;":0x228d, "cupor;":0x2a45, - "cups;":[0x222a,0xfe00], "curarr;":0x21b7, - "curarrm;":0x293c, "curlyeqprec;":0x22de, - "curlyeqsucc;":0x22df, "curlyvee;":0x22ce, - "curlywedge;":0x22cf, "curren":0xa4, - "curren;":0xa4, "curvearrowleft;":0x21b6, - "curvearrowright;":0x21b7, "cuvee;":0x22ce, - "cuwed;":0x22cf, "cwconint;":0x2232, - "cwint;":0x2231, "cylcty;":0x232d, - "dArr;":0x21d3, "dHar;":0x2965, - "dagger;":0x2020, "daleth;":0x2138, - "darr;":0x2193, "dash;":0x2010, - "dashv;":0x22a3, "dbkarow;":0x290f, - "dblac;":0x2dd, "dcaron;":0x10f, - "dcy;":0x434, "dd;":0x2146, - "ddagger;":0x2021, "ddarr;":0x21ca, - "ddotseq;":0x2a77, "deg":0xb0, - "deg;":0xb0, "delta;":0x3b4, - "demptyv;":0x29b1, "dfisht;":0x297f, - "dfr;":[0xd835,0xdd21], "dharl;":0x21c3, - "dharr;":0x21c2, "diam;":0x22c4, - "diamond;":0x22c4, "diamondsuit;":0x2666, - "diams;":0x2666, "die;":0xa8, - "digamma;":0x3dd, "disin;":0x22f2, - "div;":0xf7, "divide":0xf7, - "divide;":0xf7, "divideontimes;":0x22c7, - "divonx;":0x22c7, "djcy;":0x452, - "dlcorn;":0x231e, "dlcrop;":0x230d, - "dollar;":0x24, "dopf;":[0xd835,0xdd55], - "dot;":0x2d9, "doteq;":0x2250, - "doteqdot;":0x2251, "dotminus;":0x2238, - "dotplus;":0x2214, "dotsquare;":0x22a1, - "doublebarwedge;":0x2306, "downarrow;":0x2193, - "downdownarrows;":0x21ca, "downharpoonleft;":0x21c3, - "downharpoonright;":0x21c2, "drbkarow;":0x2910, - "drcorn;":0x231f, "drcrop;":0x230c, - "dscr;":[0xd835,0xdcb9], "dscy;":0x455, - "dsol;":0x29f6, "dstrok;":0x111, - "dtdot;":0x22f1, "dtri;":0x25bf, - "dtrif;":0x25be, "duarr;":0x21f5, - "duhar;":0x296f, "dwangle;":0x29a6, - "dzcy;":0x45f, "dzigrarr;":0x27ff, - "eDDot;":0x2a77, "eDot;":0x2251, - "eacute":0xe9, "eacute;":0xe9, - "easter;":0x2a6e, "ecaron;":0x11b, - "ecir;":0x2256, "ecirc":0xea, - "ecirc;":0xea, "ecolon;":0x2255, - "ecy;":0x44d, "edot;":0x117, - "ee;":0x2147, "efDot;":0x2252, - "efr;":[0xd835,0xdd22], "eg;":0x2a9a, - "egrave":0xe8, "egrave;":0xe8, - "egs;":0x2a96, "egsdot;":0x2a98, - "el;":0x2a99, "elinters;":0x23e7, - "ell;":0x2113, "els;":0x2a95, - "elsdot;":0x2a97, "emacr;":0x113, - "empty;":0x2205, "emptyset;":0x2205, - "emptyv;":0x2205, "emsp13;":0x2004, - "emsp14;":0x2005, "emsp;":0x2003, - "eng;":0x14b, "ensp;":0x2002, - "eogon;":0x119, "eopf;":[0xd835,0xdd56], - "epar;":0x22d5, "eparsl;":0x29e3, - "eplus;":0x2a71, "epsi;":0x3b5, - "epsilon;":0x3b5, "epsiv;":0x3f5, - "eqcirc;":0x2256, "eqcolon;":0x2255, - "eqsim;":0x2242, "eqslantgtr;":0x2a96, - "eqslantless;":0x2a95, "equals;":0x3d, - "equest;":0x225f, "equiv;":0x2261, - "equivDD;":0x2a78, "eqvparsl;":0x29e5, - "erDot;":0x2253, "erarr;":0x2971, - "escr;":0x212f, "esdot;":0x2250, - "esim;":0x2242, "eta;":0x3b7, - "eth":0xf0, "eth;":0xf0, - "euml":0xeb, "euml;":0xeb, - "euro;":0x20ac, "excl;":0x21, - "exist;":0x2203, "expectation;":0x2130, - "exponentiale;":0x2147, "fallingdotseq;":0x2252, - "fcy;":0x444, "female;":0x2640, - "ffilig;":0xfb03, "fflig;":0xfb00, - "ffllig;":0xfb04, "ffr;":[0xd835,0xdd23], - "filig;":0xfb01, "fjlig;":[0x66,0x6a], - "flat;":0x266d, "fllig;":0xfb02, - "fltns;":0x25b1, "fnof;":0x192, - "fopf;":[0xd835,0xdd57], "forall;":0x2200, - "fork;":0x22d4, "forkv;":0x2ad9, - "fpartint;":0x2a0d, "frac12":0xbd, - "frac12;":0xbd, "frac13;":0x2153, - "frac14":0xbc, "frac14;":0xbc, - "frac15;":0x2155, "frac16;":0x2159, - "frac18;":0x215b, "frac23;":0x2154, - "frac25;":0x2156, "frac34":0xbe, - "frac34;":0xbe, "frac35;":0x2157, - "frac38;":0x215c, "frac45;":0x2158, - "frac56;":0x215a, "frac58;":0x215d, - "frac78;":0x215e, "frasl;":0x2044, - "frown;":0x2322, "fscr;":[0xd835,0xdcbb], - "gE;":0x2267, "gEl;":0x2a8c, - "gacute;":0x1f5, "gamma;":0x3b3, - "gammad;":0x3dd, "gap;":0x2a86, - "gbreve;":0x11f, "gcirc;":0x11d, - "gcy;":0x433, "gdot;":0x121, - "ge;":0x2265, "gel;":0x22db, - "geq;":0x2265, "geqq;":0x2267, - "geqslant;":0x2a7e, "ges;":0x2a7e, - "gescc;":0x2aa9, "gesdot;":0x2a80, - "gesdoto;":0x2a82, "gesdotol;":0x2a84, - "gesl;":[0x22db,0xfe00], "gesles;":0x2a94, - "gfr;":[0xd835,0xdd24], "gg;":0x226b, - "ggg;":0x22d9, "gimel;":0x2137, - "gjcy;":0x453, "gl;":0x2277, - "glE;":0x2a92, "gla;":0x2aa5, - "glj;":0x2aa4, "gnE;":0x2269, - "gnap;":0x2a8a, "gnapprox;":0x2a8a, - "gne;":0x2a88, "gneq;":0x2a88, - "gneqq;":0x2269, "gnsim;":0x22e7, - "gopf;":[0xd835,0xdd58], "grave;":0x60, - "gscr;":0x210a, "gsim;":0x2273, - "gsime;":0x2a8e, "gsiml;":0x2a90, - "gt":0x3e, "gt;":0x3e, - "gtcc;":0x2aa7, "gtcir;":0x2a7a, - "gtdot;":0x22d7, "gtlPar;":0x2995, - "gtquest;":0x2a7c, "gtrapprox;":0x2a86, - "gtrarr;":0x2978, "gtrdot;":0x22d7, - "gtreqless;":0x22db, "gtreqqless;":0x2a8c, - "gtrless;":0x2277, "gtrsim;":0x2273, - "gvertneqq;":[0x2269,0xfe00], "gvnE;":[0x2269,0xfe00], - "hArr;":0x21d4, "hairsp;":0x200a, - "half;":0xbd, "hamilt;":0x210b, - "hardcy;":0x44a, "harr;":0x2194, - "harrcir;":0x2948, "harrw;":0x21ad, - "hbar;":0x210f, "hcirc;":0x125, - "hearts;":0x2665, "heartsuit;":0x2665, - "hellip;":0x2026, "hercon;":0x22b9, - "hfr;":[0xd835,0xdd25], "hksearow;":0x2925, - "hkswarow;":0x2926, "hoarr;":0x21ff, - "homtht;":0x223b, "hookleftarrow;":0x21a9, - "hookrightarrow;":0x21aa, "hopf;":[0xd835,0xdd59], - "horbar;":0x2015, "hscr;":[0xd835,0xdcbd], - "hslash;":0x210f, "hstrok;":0x127, - "hybull;":0x2043, "hyphen;":0x2010, - "iacute":0xed, "iacute;":0xed, - "ic;":0x2063, "icirc":0xee, - "icirc;":0xee, "icy;":0x438, - "iecy;":0x435, "iexcl":0xa1, - "iexcl;":0xa1, "iff;":0x21d4, - "ifr;":[0xd835,0xdd26], "igrave":0xec, - "igrave;":0xec, "ii;":0x2148, - "iiiint;":0x2a0c, "iiint;":0x222d, - "iinfin;":0x29dc, "iiota;":0x2129, - "ijlig;":0x133, "imacr;":0x12b, - "image;":0x2111, "imagline;":0x2110, - "imagpart;":0x2111, "imath;":0x131, - "imof;":0x22b7, "imped;":0x1b5, - "in;":0x2208, "incare;":0x2105, - "infin;":0x221e, "infintie;":0x29dd, - "inodot;":0x131, "int;":0x222b, - "intcal;":0x22ba, "integers;":0x2124, - "intercal;":0x22ba, "intlarhk;":0x2a17, - "intprod;":0x2a3c, "iocy;":0x451, - "iogon;":0x12f, "iopf;":[0xd835,0xdd5a], - "iota;":0x3b9, "iprod;":0x2a3c, - "iquest":0xbf, "iquest;":0xbf, - "iscr;":[0xd835,0xdcbe], "isin;":0x2208, - "isinE;":0x22f9, "isindot;":0x22f5, - "isins;":0x22f4, "isinsv;":0x22f3, - "isinv;":0x2208, "it;":0x2062, - "itilde;":0x129, "iukcy;":0x456, - "iuml":0xef, "iuml;":0xef, - "jcirc;":0x135, "jcy;":0x439, - "jfr;":[0xd835,0xdd27], "jmath;":0x237, - "jopf;":[0xd835,0xdd5b], "jscr;":[0xd835,0xdcbf], - "jsercy;":0x458, "jukcy;":0x454, - "kappa;":0x3ba, "kappav;":0x3f0, - "kcedil;":0x137, "kcy;":0x43a, - "kfr;":[0xd835,0xdd28], "kgreen;":0x138, - "khcy;":0x445, "kjcy;":0x45c, - "kopf;":[0xd835,0xdd5c], "kscr;":[0xd835,0xdcc0], - "lAarr;":0x21da, "lArr;":0x21d0, - "lAtail;":0x291b, "lBarr;":0x290e, - "lE;":0x2266, "lEg;":0x2a8b, - "lHar;":0x2962, "lacute;":0x13a, - "laemptyv;":0x29b4, "lagran;":0x2112, - "lambda;":0x3bb, "lang;":0x27e8, - "langd;":0x2991, "langle;":0x27e8, - "lap;":0x2a85, "laquo":0xab, - "laquo;":0xab, "larr;":0x2190, - "larrb;":0x21e4, "larrbfs;":0x291f, - "larrfs;":0x291d, "larrhk;":0x21a9, - "larrlp;":0x21ab, "larrpl;":0x2939, - "larrsim;":0x2973, "larrtl;":0x21a2, - "lat;":0x2aab, "latail;":0x2919, - "late;":0x2aad, "lates;":[0x2aad,0xfe00], - "lbarr;":0x290c, "lbbrk;":0x2772, - "lbrace;":0x7b, "lbrack;":0x5b, - "lbrke;":0x298b, "lbrksld;":0x298f, - "lbrkslu;":0x298d, "lcaron;":0x13e, - "lcedil;":0x13c, "lceil;":0x2308, - "lcub;":0x7b, "lcy;":0x43b, - "ldca;":0x2936, "ldquo;":0x201c, - "ldquor;":0x201e, "ldrdhar;":0x2967, - "ldrushar;":0x294b, "ldsh;":0x21b2, - "le;":0x2264, "leftarrow;":0x2190, - "leftarrowtail;":0x21a2, "leftharpoondown;":0x21bd, - "leftharpoonup;":0x21bc, "leftleftarrows;":0x21c7, - "leftrightarrow;":0x2194, "leftrightarrows;":0x21c6, - "leftrightharpoons;":0x21cb, "leftrightsquigarrow;":0x21ad, - "leftthreetimes;":0x22cb, "leg;":0x22da, - "leq;":0x2264, "leqq;":0x2266, - "leqslant;":0x2a7d, "les;":0x2a7d, - "lescc;":0x2aa8, "lesdot;":0x2a7f, - "lesdoto;":0x2a81, "lesdotor;":0x2a83, - "lesg;":[0x22da,0xfe00], "lesges;":0x2a93, - "lessapprox;":0x2a85, "lessdot;":0x22d6, - "lesseqgtr;":0x22da, "lesseqqgtr;":0x2a8b, - "lessgtr;":0x2276, "lesssim;":0x2272, - "lfisht;":0x297c, "lfloor;":0x230a, - "lfr;":[0xd835,0xdd29], "lg;":0x2276, - "lgE;":0x2a91, "lhard;":0x21bd, - "lharu;":0x21bc, "lharul;":0x296a, - "lhblk;":0x2584, "ljcy;":0x459, - "ll;":0x226a, "llarr;":0x21c7, - "llcorner;":0x231e, "llhard;":0x296b, - "lltri;":0x25fa, "lmidot;":0x140, - "lmoust;":0x23b0, "lmoustache;":0x23b0, - "lnE;":0x2268, "lnap;":0x2a89, - "lnapprox;":0x2a89, "lne;":0x2a87, - "lneq;":0x2a87, "lneqq;":0x2268, - "lnsim;":0x22e6, "loang;":0x27ec, - "loarr;":0x21fd, "lobrk;":0x27e6, - "longleftarrow;":0x27f5, "longleftrightarrow;":0x27f7, - "longmapsto;":0x27fc, "longrightarrow;":0x27f6, - "looparrowleft;":0x21ab, "looparrowright;":0x21ac, - "lopar;":0x2985, "lopf;":[0xd835,0xdd5d], - "loplus;":0x2a2d, "lotimes;":0x2a34, - "lowast;":0x2217, "lowbar;":0x5f, - "loz;":0x25ca, "lozenge;":0x25ca, - "lozf;":0x29eb, "lpar;":0x28, - "lparlt;":0x2993, "lrarr;":0x21c6, - "lrcorner;":0x231f, "lrhar;":0x21cb, - "lrhard;":0x296d, "lrm;":0x200e, - "lrtri;":0x22bf, "lsaquo;":0x2039, - "lscr;":[0xd835,0xdcc1], "lsh;":0x21b0, - "lsim;":0x2272, "lsime;":0x2a8d, - "lsimg;":0x2a8f, "lsqb;":0x5b, - "lsquo;":0x2018, "lsquor;":0x201a, - "lstrok;":0x142, "lt":0x3c, - "lt;":0x3c, "ltcc;":0x2aa6, - "ltcir;":0x2a79, "ltdot;":0x22d6, - "lthree;":0x22cb, "ltimes;":0x22c9, - "ltlarr;":0x2976, "ltquest;":0x2a7b, - "ltrPar;":0x2996, "ltri;":0x25c3, - "ltrie;":0x22b4, "ltrif;":0x25c2, - "lurdshar;":0x294a, "luruhar;":0x2966, - "lvertneqq;":[0x2268,0xfe00], "lvnE;":[0x2268,0xfe00], - "mDDot;":0x223a, "macr":0xaf, - "macr;":0xaf, "male;":0x2642, - "malt;":0x2720, "maltese;":0x2720, - "map;":0x21a6, "mapsto;":0x21a6, - "mapstodown;":0x21a7, "mapstoleft;":0x21a4, - "mapstoup;":0x21a5, "marker;":0x25ae, - "mcomma;":0x2a29, "mcy;":0x43c, - "mdash;":0x2014, "measuredangle;":0x2221, - "mfr;":[0xd835,0xdd2a], "mho;":0x2127, - "micro":0xb5, "micro;":0xb5, - "mid;":0x2223, "midast;":0x2a, - "midcir;":0x2af0, "middot":0xb7, - "middot;":0xb7, "minus;":0x2212, - "minusb;":0x229f, "minusd;":0x2238, - "minusdu;":0x2a2a, "mlcp;":0x2adb, - "mldr;":0x2026, "mnplus;":0x2213, - "models;":0x22a7, "mopf;":[0xd835,0xdd5e], - "mp;":0x2213, "mscr;":[0xd835,0xdcc2], - "mstpos;":0x223e, "mu;":0x3bc, - "multimap;":0x22b8, "mumap;":0x22b8, - "nGg;":[0x22d9,0x338], "nGt;":[0x226b,0x20d2], - "nGtv;":[0x226b,0x338], "nLeftarrow;":0x21cd, - "nLeftrightarrow;":0x21ce, "nLl;":[0x22d8,0x338], - "nLt;":[0x226a,0x20d2], "nLtv;":[0x226a,0x338], - "nRightarrow;":0x21cf, "nVDash;":0x22af, - "nVdash;":0x22ae, "nabla;":0x2207, - "nacute;":0x144, "nang;":[0x2220,0x20d2], - "nap;":0x2249, "napE;":[0x2a70,0x338], - "napid;":[0x224b,0x338], "napos;":0x149, - "napprox;":0x2249, "natur;":0x266e, - "natural;":0x266e, "naturals;":0x2115, - "nbsp":0xa0, "nbsp;":0xa0, - "nbump;":[0x224e,0x338], "nbumpe;":[0x224f,0x338], - "ncap;":0x2a43, "ncaron;":0x148, - "ncedil;":0x146, "ncong;":0x2247, - "ncongdot;":[0x2a6d,0x338], "ncup;":0x2a42, - "ncy;":0x43d, "ndash;":0x2013, - "ne;":0x2260, "neArr;":0x21d7, - "nearhk;":0x2924, "nearr;":0x2197, - "nearrow;":0x2197, "nedot;":[0x2250,0x338], - "nequiv;":0x2262, "nesear;":0x2928, - "nesim;":[0x2242,0x338], "nexist;":0x2204, - "nexists;":0x2204, "nfr;":[0xd835,0xdd2b], - "ngE;":[0x2267,0x338], "nge;":0x2271, - "ngeq;":0x2271, "ngeqq;":[0x2267,0x338], - "ngeqslant;":[0x2a7e,0x338], "nges;":[0x2a7e,0x338], - "ngsim;":0x2275, "ngt;":0x226f, - "ngtr;":0x226f, "nhArr;":0x21ce, - "nharr;":0x21ae, "nhpar;":0x2af2, - "ni;":0x220b, "nis;":0x22fc, - "nisd;":0x22fa, "niv;":0x220b, - "njcy;":0x45a, "nlArr;":0x21cd, - "nlE;":[0x2266,0x338], "nlarr;":0x219a, - "nldr;":0x2025, "nle;":0x2270, - "nleftarrow;":0x219a, "nleftrightarrow;":0x21ae, - "nleq;":0x2270, "nleqq;":[0x2266,0x338], - "nleqslant;":[0x2a7d,0x338], "nles;":[0x2a7d,0x338], - "nless;":0x226e, "nlsim;":0x2274, - "nlt;":0x226e, "nltri;":0x22ea, - "nltrie;":0x22ec, "nmid;":0x2224, - "nopf;":[0xd835,0xdd5f], "not":0xac, - "not;":0xac, "notin;":0x2209, - "notinE;":[0x22f9,0x338], "notindot;":[0x22f5,0x338], - "notinva;":0x2209, "notinvb;":0x22f7, - "notinvc;":0x22f6, "notni;":0x220c, - "notniva;":0x220c, "notnivb;":0x22fe, - "notnivc;":0x22fd, "npar;":0x2226, - "nparallel;":0x2226, "nparsl;":[0x2afd,0x20e5], - "npart;":[0x2202,0x338], "npolint;":0x2a14, - "npr;":0x2280, "nprcue;":0x22e0, - "npre;":[0x2aaf,0x338], "nprec;":0x2280, - "npreceq;":[0x2aaf,0x338], "nrArr;":0x21cf, - "nrarr;":0x219b, "nrarrc;":[0x2933,0x338], - "nrarrw;":[0x219d,0x338], "nrightarrow;":0x219b, - "nrtri;":0x22eb, "nrtrie;":0x22ed, - "nsc;":0x2281, "nsccue;":0x22e1, - "nsce;":[0x2ab0,0x338], "nscr;":[0xd835,0xdcc3], - "nshortmid;":0x2224, "nshortparallel;":0x2226, - "nsim;":0x2241, "nsime;":0x2244, - "nsimeq;":0x2244, "nsmid;":0x2224, - "nspar;":0x2226, "nsqsube;":0x22e2, - "nsqsupe;":0x22e3, "nsub;":0x2284, - "nsubE;":[0x2ac5,0x338], "nsube;":0x2288, - "nsubset;":[0x2282,0x20d2], "nsubseteq;":0x2288, - "nsubseteqq;":[0x2ac5,0x338], "nsucc;":0x2281, - "nsucceq;":[0x2ab0,0x338], "nsup;":0x2285, - "nsupE;":[0x2ac6,0x338], "nsupe;":0x2289, - "nsupset;":[0x2283,0x20d2], "nsupseteq;":0x2289, - "nsupseteqq;":[0x2ac6,0x338], "ntgl;":0x2279, - "ntilde":0xf1, "ntilde;":0xf1, - "ntlg;":0x2278, "ntriangleleft;":0x22ea, - "ntrianglelefteq;":0x22ec, "ntriangleright;":0x22eb, - "ntrianglerighteq;":0x22ed, "nu;":0x3bd, - "num;":0x23, "numero;":0x2116, - "numsp;":0x2007, "nvDash;":0x22ad, - "nvHarr;":0x2904, "nvap;":[0x224d,0x20d2], - "nvdash;":0x22ac, "nvge;":[0x2265,0x20d2], - "nvgt;":[0x3e,0x20d2], "nvinfin;":0x29de, - "nvlArr;":0x2902, "nvle;":[0x2264,0x20d2], - "nvlt;":[0x3c,0x20d2], "nvltrie;":[0x22b4,0x20d2], - "nvrArr;":0x2903, "nvrtrie;":[0x22b5,0x20d2], - "nvsim;":[0x223c,0x20d2], "nwArr;":0x21d6, - "nwarhk;":0x2923, "nwarr;":0x2196, - "nwarrow;":0x2196, "nwnear;":0x2927, - "oS;":0x24c8, "oacute":0xf3, - "oacute;":0xf3, "oast;":0x229b, - "ocir;":0x229a, "ocirc":0xf4, - "ocirc;":0xf4, "ocy;":0x43e, - "odash;":0x229d, "odblac;":0x151, - "odiv;":0x2a38, "odot;":0x2299, - "odsold;":0x29bc, "oelig;":0x153, - "ofcir;":0x29bf, "ofr;":[0xd835,0xdd2c], - "ogon;":0x2db, "ograve":0xf2, - "ograve;":0xf2, "ogt;":0x29c1, - "ohbar;":0x29b5, "ohm;":0x3a9, - "oint;":0x222e, "olarr;":0x21ba, - "olcir;":0x29be, "olcross;":0x29bb, - "oline;":0x203e, "olt;":0x29c0, - "omacr;":0x14d, "omega;":0x3c9, - "omicron;":0x3bf, "omid;":0x29b6, - "ominus;":0x2296, "oopf;":[0xd835,0xdd60], - "opar;":0x29b7, "operp;":0x29b9, - "oplus;":0x2295, "or;":0x2228, - "orarr;":0x21bb, "ord;":0x2a5d, - "order;":0x2134, "orderof;":0x2134, - "ordf":0xaa, "ordf;":0xaa, - "ordm":0xba, "ordm;":0xba, - "origof;":0x22b6, "oror;":0x2a56, - "orslope;":0x2a57, "orv;":0x2a5b, - "oscr;":0x2134, "oslash":0xf8, - "oslash;":0xf8, "osol;":0x2298, - "otilde":0xf5, "otilde;":0xf5, - "otimes;":0x2297, "otimesas;":0x2a36, - "ouml":0xf6, "ouml;":0xf6, - "ovbar;":0x233d, "par;":0x2225, - "para":0xb6, "para;":0xb6, - "parallel;":0x2225, "parsim;":0x2af3, - "parsl;":0x2afd, "part;":0x2202, - "pcy;":0x43f, "percnt;":0x25, - "period;":0x2e, "permil;":0x2030, - "perp;":0x22a5, "pertenk;":0x2031, - "pfr;":[0xd835,0xdd2d], "phi;":0x3c6, - "phiv;":0x3d5, "phmmat;":0x2133, - "phone;":0x260e, "pi;":0x3c0, - "pitchfork;":0x22d4, "piv;":0x3d6, - "planck;":0x210f, "planckh;":0x210e, - "plankv;":0x210f, "plus;":0x2b, - "plusacir;":0x2a23, "plusb;":0x229e, - "pluscir;":0x2a22, "plusdo;":0x2214, - "plusdu;":0x2a25, "pluse;":0x2a72, - "plusmn":0xb1, "plusmn;":0xb1, - "plussim;":0x2a26, "plustwo;":0x2a27, - "pm;":0xb1, "pointint;":0x2a15, - "popf;":[0xd835,0xdd61], "pound":0xa3, - "pound;":0xa3, "pr;":0x227a, - "prE;":0x2ab3, "prap;":0x2ab7, - "prcue;":0x227c, "pre;":0x2aaf, - "prec;":0x227a, "precapprox;":0x2ab7, - "preccurlyeq;":0x227c, "preceq;":0x2aaf, - "precnapprox;":0x2ab9, "precneqq;":0x2ab5, - "precnsim;":0x22e8, "precsim;":0x227e, - "prime;":0x2032, "primes;":0x2119, - "prnE;":0x2ab5, "prnap;":0x2ab9, - "prnsim;":0x22e8, "prod;":0x220f, - "profalar;":0x232e, "profline;":0x2312, - "profsurf;":0x2313, "prop;":0x221d, - "propto;":0x221d, "prsim;":0x227e, - "prurel;":0x22b0, "pscr;":[0xd835,0xdcc5], - "psi;":0x3c8, "puncsp;":0x2008, - "qfr;":[0xd835,0xdd2e], "qint;":0x2a0c, - "qopf;":[0xd835,0xdd62], "qprime;":0x2057, - "qscr;":[0xd835,0xdcc6], "quaternions;":0x210d, - "quatint;":0x2a16, "quest;":0x3f, - "questeq;":0x225f, "quot":0x22, - "quot;":0x22, "rAarr;":0x21db, - "rArr;":0x21d2, "rAtail;":0x291c, - "rBarr;":0x290f, "rHar;":0x2964, - "race;":[0x223d,0x331], "racute;":0x155, - "radic;":0x221a, "raemptyv;":0x29b3, - "rang;":0x27e9, "rangd;":0x2992, - "range;":0x29a5, "rangle;":0x27e9, - "raquo":0xbb, "raquo;":0xbb, - "rarr;":0x2192, "rarrap;":0x2975, - "rarrb;":0x21e5, "rarrbfs;":0x2920, - "rarrc;":0x2933, "rarrfs;":0x291e, - "rarrhk;":0x21aa, "rarrlp;":0x21ac, - "rarrpl;":0x2945, "rarrsim;":0x2974, - "rarrtl;":0x21a3, "rarrw;":0x219d, - "ratail;":0x291a, "ratio;":0x2236, - "rationals;":0x211a, "rbarr;":0x290d, - "rbbrk;":0x2773, "rbrace;":0x7d, - "rbrack;":0x5d, "rbrke;":0x298c, - "rbrksld;":0x298e, "rbrkslu;":0x2990, - "rcaron;":0x159, "rcedil;":0x157, - "rceil;":0x2309, "rcub;":0x7d, - "rcy;":0x440, "rdca;":0x2937, - "rdldhar;":0x2969, "rdquo;":0x201d, - "rdquor;":0x201d, "rdsh;":0x21b3, - "real;":0x211c, "realine;":0x211b, - "realpart;":0x211c, "reals;":0x211d, - "rect;":0x25ad, "reg":0xae, - "reg;":0xae, "rfisht;":0x297d, - "rfloor;":0x230b, "rfr;":[0xd835,0xdd2f], - "rhard;":0x21c1, "rharu;":0x21c0, - "rharul;":0x296c, "rho;":0x3c1, - "rhov;":0x3f1, "rightarrow;":0x2192, - "rightarrowtail;":0x21a3, "rightharpoondown;":0x21c1, - "rightharpoonup;":0x21c0, "rightleftarrows;":0x21c4, - "rightleftharpoons;":0x21cc, "rightrightarrows;":0x21c9, - "rightsquigarrow;":0x219d, "rightthreetimes;":0x22cc, - "ring;":0x2da, "risingdotseq;":0x2253, - "rlarr;":0x21c4, "rlhar;":0x21cc, - "rlm;":0x200f, "rmoust;":0x23b1, - "rmoustache;":0x23b1, "rnmid;":0x2aee, - "roang;":0x27ed, "roarr;":0x21fe, - "robrk;":0x27e7, "ropar;":0x2986, - "ropf;":[0xd835,0xdd63], "roplus;":0x2a2e, - "rotimes;":0x2a35, "rpar;":0x29, - "rpargt;":0x2994, "rppolint;":0x2a12, - "rrarr;":0x21c9, "rsaquo;":0x203a, - "rscr;":[0xd835,0xdcc7], "rsh;":0x21b1, - "rsqb;":0x5d, "rsquo;":0x2019, - "rsquor;":0x2019, "rthree;":0x22cc, - "rtimes;":0x22ca, "rtri;":0x25b9, - "rtrie;":0x22b5, "rtrif;":0x25b8, - "rtriltri;":0x29ce, "ruluhar;":0x2968, - "rx;":0x211e, "sacute;":0x15b, - "sbquo;":0x201a, "sc;":0x227b, - "scE;":0x2ab4, "scap;":0x2ab8, - "scaron;":0x161, "sccue;":0x227d, - "sce;":0x2ab0, "scedil;":0x15f, - "scirc;":0x15d, "scnE;":0x2ab6, - "scnap;":0x2aba, "scnsim;":0x22e9, - "scpolint;":0x2a13, "scsim;":0x227f, - "scy;":0x441, "sdot;":0x22c5, - "sdotb;":0x22a1, "sdote;":0x2a66, - "seArr;":0x21d8, "searhk;":0x2925, - "searr;":0x2198, "searrow;":0x2198, - "sect":0xa7, "sect;":0xa7, - "semi;":0x3b, "seswar;":0x2929, - "setminus;":0x2216, "setmn;":0x2216, - "sext;":0x2736, "sfr;":[0xd835,0xdd30], - "sfrown;":0x2322, "sharp;":0x266f, - "shchcy;":0x449, "shcy;":0x448, - "shortmid;":0x2223, "shortparallel;":0x2225, - "shy":0xad, "shy;":0xad, - "sigma;":0x3c3, "sigmaf;":0x3c2, - "sigmav;":0x3c2, "sim;":0x223c, - "simdot;":0x2a6a, "sime;":0x2243, - "simeq;":0x2243, "simg;":0x2a9e, - "simgE;":0x2aa0, "siml;":0x2a9d, - "simlE;":0x2a9f, "simne;":0x2246, - "simplus;":0x2a24, "simrarr;":0x2972, - "slarr;":0x2190, "smallsetminus;":0x2216, - "smashp;":0x2a33, "smeparsl;":0x29e4, - "smid;":0x2223, "smile;":0x2323, - "smt;":0x2aaa, "smte;":0x2aac, - "smtes;":[0x2aac,0xfe00], "softcy;":0x44c, - "sol;":0x2f, "solb;":0x29c4, - "solbar;":0x233f, "sopf;":[0xd835,0xdd64], - "spades;":0x2660, "spadesuit;":0x2660, - "spar;":0x2225, "sqcap;":0x2293, - "sqcaps;":[0x2293,0xfe00], "sqcup;":0x2294, - "sqcups;":[0x2294,0xfe00], "sqsub;":0x228f, - "sqsube;":0x2291, "sqsubset;":0x228f, - "sqsubseteq;":0x2291, "sqsup;":0x2290, - "sqsupe;":0x2292, "sqsupset;":0x2290, - "sqsupseteq;":0x2292, "squ;":0x25a1, - "square;":0x25a1, "squarf;":0x25aa, - "squf;":0x25aa, "srarr;":0x2192, - "sscr;":[0xd835,0xdcc8], "ssetmn;":0x2216, - "ssmile;":0x2323, "sstarf;":0x22c6, - "star;":0x2606, "starf;":0x2605, - "straightepsilon;":0x3f5, "straightphi;":0x3d5, - "strns;":0xaf, "sub;":0x2282, - "subE;":0x2ac5, "subdot;":0x2abd, - "sube;":0x2286, "subedot;":0x2ac3, - "submult;":0x2ac1, "subnE;":0x2acb, - "subne;":0x228a, "subplus;":0x2abf, - "subrarr;":0x2979, "subset;":0x2282, - "subseteq;":0x2286, "subseteqq;":0x2ac5, - "subsetneq;":0x228a, "subsetneqq;":0x2acb, - "subsim;":0x2ac7, "subsub;":0x2ad5, - "subsup;":0x2ad3, "succ;":0x227b, - "succapprox;":0x2ab8, "succcurlyeq;":0x227d, - "succeq;":0x2ab0, "succnapprox;":0x2aba, - "succneqq;":0x2ab6, "succnsim;":0x22e9, - "succsim;":0x227f, "sum;":0x2211, - "sung;":0x266a, "sup1":0xb9, - "sup1;":0xb9, "sup2":0xb2, - "sup2;":0xb2, "sup3":0xb3, - "sup3;":0xb3, "sup;":0x2283, - "supE;":0x2ac6, "supdot;":0x2abe, - "supdsub;":0x2ad8, "supe;":0x2287, - "supedot;":0x2ac4, "suphsol;":0x27c9, - "suphsub;":0x2ad7, "suplarr;":0x297b, - "supmult;":0x2ac2, "supnE;":0x2acc, - "supne;":0x228b, "supplus;":0x2ac0, - "supset;":0x2283, "supseteq;":0x2287, - "supseteqq;":0x2ac6, "supsetneq;":0x228b, - "supsetneqq;":0x2acc, "supsim;":0x2ac8, - "supsub;":0x2ad4, "supsup;":0x2ad6, - "swArr;":0x21d9, "swarhk;":0x2926, - "swarr;":0x2199, "swarrow;":0x2199, - "swnwar;":0x292a, "szlig":0xdf, - "szlig;":0xdf, "target;":0x2316, - "tau;":0x3c4, "tbrk;":0x23b4, - "tcaron;":0x165, "tcedil;":0x163, - "tcy;":0x442, "tdot;":0x20db, - "telrec;":0x2315, "tfr;":[0xd835,0xdd31], - "there4;":0x2234, "therefore;":0x2234, - "theta;":0x3b8, "thetasym;":0x3d1, - "thetav;":0x3d1, "thickapprox;":0x2248, - "thicksim;":0x223c, "thinsp;":0x2009, - "thkap;":0x2248, "thksim;":0x223c, - "thorn":0xfe, "thorn;":0xfe, - "tilde;":0x2dc, "times":0xd7, - "times;":0xd7, "timesb;":0x22a0, - "timesbar;":0x2a31, "timesd;":0x2a30, - "tint;":0x222d, "toea;":0x2928, - "top;":0x22a4, "topbot;":0x2336, - "topcir;":0x2af1, "topf;":[0xd835,0xdd65], - "topfork;":0x2ada, "tosa;":0x2929, - "tprime;":0x2034, "trade;":0x2122, - "triangle;":0x25b5, "triangledown;":0x25bf, - "triangleleft;":0x25c3, "trianglelefteq;":0x22b4, - "triangleq;":0x225c, "triangleright;":0x25b9, - "trianglerighteq;":0x22b5, "tridot;":0x25ec, - "trie;":0x225c, "triminus;":0x2a3a, - "triplus;":0x2a39, "trisb;":0x29cd, - "tritime;":0x2a3b, "trpezium;":0x23e2, - "tscr;":[0xd835,0xdcc9], "tscy;":0x446, - "tshcy;":0x45b, "tstrok;":0x167, - "twixt;":0x226c, "twoheadleftarrow;":0x219e, - "twoheadrightarrow;":0x21a0, "uArr;":0x21d1, - "uHar;":0x2963, "uacute":0xfa, - "uacute;":0xfa, "uarr;":0x2191, - "ubrcy;":0x45e, "ubreve;":0x16d, - "ucirc":0xfb, "ucirc;":0xfb, - "ucy;":0x443, "udarr;":0x21c5, - "udblac;":0x171, "udhar;":0x296e, - "ufisht;":0x297e, "ufr;":[0xd835,0xdd32], - "ugrave":0xf9, "ugrave;":0xf9, - "uharl;":0x21bf, "uharr;":0x21be, - "uhblk;":0x2580, "ulcorn;":0x231c, - "ulcorner;":0x231c, "ulcrop;":0x230f, - "ultri;":0x25f8, "umacr;":0x16b, - "uml":0xa8, "uml;":0xa8, - "uogon;":0x173, "uopf;":[0xd835,0xdd66], - "uparrow;":0x2191, "updownarrow;":0x2195, - "upharpoonleft;":0x21bf, "upharpoonright;":0x21be, - "uplus;":0x228e, "upsi;":0x3c5, - "upsih;":0x3d2, "upsilon;":0x3c5, - "upuparrows;":0x21c8, "urcorn;":0x231d, - "urcorner;":0x231d, "urcrop;":0x230e, - "uring;":0x16f, "urtri;":0x25f9, - "uscr;":[0xd835,0xdcca], "utdot;":0x22f0, - "utilde;":0x169, "utri;":0x25b5, - "utrif;":0x25b4, "uuarr;":0x21c8, - "uuml":0xfc, "uuml;":0xfc, - "uwangle;":0x29a7, "vArr;":0x21d5, - "vBar;":0x2ae8, "vBarv;":0x2ae9, - "vDash;":0x22a8, "vangrt;":0x299c, - "varepsilon;":0x3f5, "varkappa;":0x3f0, - "varnothing;":0x2205, "varphi;":0x3d5, - "varpi;":0x3d6, "varpropto;":0x221d, - "varr;":0x2195, "varrho;":0x3f1, - "varsigma;":0x3c2, "varsubsetneq;":[0x228a,0xfe00], - "varsubsetneqq;":[0x2acb,0xfe00], "varsupsetneq;":[0x228b,0xfe00], - "varsupsetneqq;":[0x2acc,0xfe00], "vartheta;":0x3d1, - "vartriangleleft;":0x22b2, "vartriangleright;":0x22b3, - "vcy;":0x432, "vdash;":0x22a2, - "vee;":0x2228, "veebar;":0x22bb, - "veeeq;":0x225a, "vellip;":0x22ee, - "verbar;":0x7c, "vert;":0x7c, - "vfr;":[0xd835,0xdd33], "vltri;":0x22b2, - "vnsub;":[0x2282,0x20d2], "vnsup;":[0x2283,0x20d2], - "vopf;":[0xd835,0xdd67], "vprop;":0x221d, - "vrtri;":0x22b3, "vscr;":[0xd835,0xdccb], - "vsubnE;":[0x2acb,0xfe00], "vsubne;":[0x228a,0xfe00], - "vsupnE;":[0x2acc,0xfe00], "vsupne;":[0x228b,0xfe00], - "vzigzag;":0x299a, "wcirc;":0x175, - "wedbar;":0x2a5f, "wedge;":0x2227, - "wedgeq;":0x2259, "weierp;":0x2118, - "wfr;":[0xd835,0xdd34], "wopf;":[0xd835,0xdd68], - "wp;":0x2118, "wr;":0x2240, - "wreath;":0x2240, "wscr;":[0xd835,0xdccc], - "xcap;":0x22c2, "xcirc;":0x25ef, - "xcup;":0x22c3, "xdtri;":0x25bd, - "xfr;":[0xd835,0xdd35], "xhArr;":0x27fa, - "xharr;":0x27f7, "xi;":0x3be, - "xlArr;":0x27f8, "xlarr;":0x27f5, - "xmap;":0x27fc, "xnis;":0x22fb, - "xodot;":0x2a00, "xopf;":[0xd835,0xdd69], - "xoplus;":0x2a01, "xotime;":0x2a02, - "xrArr;":0x27f9, "xrarr;":0x27f6, - "xscr;":[0xd835,0xdccd], "xsqcup;":0x2a06, - "xuplus;":0x2a04, "xutri;":0x25b3, - "xvee;":0x22c1, "xwedge;":0x22c0, - "yacute":0xfd, "yacute;":0xfd, - "yacy;":0x44f, "ycirc;":0x177, - "ycy;":0x44b, "yen":0xa5, - "yen;":0xa5, "yfr;":[0xd835,0xdd36], - "yicy;":0x457, "yopf;":[0xd835,0xdd6a], - "yscr;":[0xd835,0xdcce], "yucy;":0x44e, - "yuml":0xff, "yuml;":0xff, - "zacute;":0x17a, "zcaron;":0x17e, - "zcy;":0x437, "zdot;":0x17c, - "zeetrf;":0x2128, "zeta;":0x3b6, - "zfr;":[0xd835,0xdd37], "zhcy;":0x436, - "zigrarr;":0x21dd, "zopf;":[0xd835,0xdd6b], - "zscr;":[0xd835,0xdccf], "zwj;":0x200d, - "zwnj;":0x200c, -}; -/* - * This regexp is generated with test/tools/update-entities.js - * It will always match at least one character -- but note that there - * are no entities whose names are a single character long. - */ -var NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\s\S]/g; - -var NAMEDCHARREF_MAXLEN = 32; - -// Regular expression constants used by the tokenizer and parser - -// Note that \r is included in all of these regexps because it will need -// to be converted to LF by the scanChars() function. -var DBLQUOTEATTRVAL = /[^\r"&\u0000]+/g; -var SINGLEQUOTEATTRVAL = /[^\r'&\u0000]+/g; -var UNQUOTEDATTRVAL = /[^\r\t\n\f &>\u0000]+/g; -var TAGNAME = /[^\r\t\n\f \/>A-Z\u0000]+/g; -var ATTRNAME = /[^\r\t\n\f \/=>A-Z\u0000]+/g; - -var CDATATEXT = /[^\]\r\u0000\uffff]*/g; -var DATATEXT = /[^&<\r\u0000\uffff]*/g; -var RAWTEXT = /[^<\r\u0000\uffff]*/g; -var PLAINTEXT = /[^\r\u0000\uffff]*/g; -// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG -// and SIMPLEATTR so that we are guaranteed to always match. This prevents -// us from scanning past the lastIndex set. (Note that the desired matches -// are always greater than 1 char long, so longest-match will ensure that . -// is not matched unless the desired match fails.) -var SIMPLETAG = /(?:(\/)?([a-z]+)>)|[\s\S]/g; -var SIMPLEATTR = /(?:([-a-z]+)[ \t\n\f]*=[ \t\n\f]*('[^'&\r\u0000]*'|"[^"&\r\u0000]*"|[^\t\n\r\f "&'\u0000>][^&> \t\n\r\f\u0000]*[ \t\n\f]))|[\s\S]/g; - -var NONWS = /[^\x09\x0A\x0C\x0D\x20]/; -var ALLNONWS = /[^\x09\x0A\x0C\x0D\x20]/g; // like above, with g flag -var NONWSNONNUL = /[^\x00\x09\x0A\x0C\x0D\x20]/; // don't allow NUL either -var LEADINGWS = /^[\x09\x0A\x0C\x0D\x20]+/; -var NULCHARS = /\x00/g; - -/*** - * These are utility functions that don't use any of the parser's - * internal state. - */ -function buf2str(buf) { - var CHUNKSIZE=16384; - if (buf.length < CHUNKSIZE) { - return String.fromCharCode.apply(String, buf); - } - // special case for large strings, to avoid busting the stack. - var result = ''; - for (var i = 0; i < buf.length; i += CHUNKSIZE) { - result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE)); - } - return result; -} - -function str2buf(s) { - var result = []; - for (var i=0; i 0; i--) { - var e = this.elements[i]; - if (isA(e, tag)) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Pop elements off the stack up to and including the first -// element that is an instance of the specified type -HTMLParser.ElementStack.prototype.popElementType = function(type) { - for(var i = this.elements.length-1; i > 0; i--) { - if (this.elements[i] instanceof type) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Pop elements off the stack up to and including the element e. -// Note that this is very different from removeElement() -// This requires that e is on the stack. -HTMLParser.ElementStack.prototype.popElement = function(e) { - for(var i = this.elements.length-1; i > 0; i--) { - if (this.elements[i] === e) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Remove a specific element from the stack. -// Do nothing if the element is not on the stack -HTMLParser.ElementStack.prototype.removeElement = function(e) { - if (this.top === e) this.pop(); - else { - var idx = this.elements.lastIndexOf(e); - if (idx !== -1) - this.elements.splice(idx, 1); - } -}; - -HTMLParser.ElementStack.prototype.clearToContext = function(set) { - // Note that we don't loop to 0. Never pop the elt off. - for(var i = this.elements.length-1; i > 0; i--) { - if (isA(this.elements[i], set)) break; - } - this.elements.length = i+1; - this.top = this.elements[i]; -}; - -HTMLParser.ElementStack.prototype.contains = function(tag) { - return this.inSpecificScope(tag, Object.create(null)); -}; - -HTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (isA(elt, tag)) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -// Like the above, but for a specific element, not a tagname -HTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt === target) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -// Like the above, but for an element interface, not a tagname -HTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt instanceof target) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -HTMLParser.ElementStack.prototype.inScope = function(tag) { - return this.inSpecificScope(tag, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.elementInScope = function(e) { - return this.elementInSpecificScope(e, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.elementTypeInScope = function(type) { - return this.elementTypeInSpecificScope(type, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.inButtonScope = function(tag) { - return this.inSpecificScope(tag, inButtonScopeSet); -}; - -HTMLParser.ElementStack.prototype.inListItemScope = function(tag) { - return this.inSpecificScope(tag, inListItemScopeSet); -}; - -HTMLParser.ElementStack.prototype.inTableScope = function(tag) { - return this.inSpecificScope(tag, inTableScopeSet); -}; - -HTMLParser.ElementStack.prototype.inSelectScope = function(tag) { - // Can't implement this one with inSpecificScope, since it involves - // a set defined by inverting another set. So implement manually. - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt.namespaceURI !== NAMESPACE.HTML) return false; - var localname = elt.localName; - if (localname === tag) return true; - if (localname !== "optgroup" && localname !== "option") - return false; - } - return false; -}; - -HTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) { - var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet; - for(var i = this.elements.length-1; i >= 0; i--) { - var e = this.elements[i]; - if (butnot && isA(e, butnot)) break; - if (!isA(this.elements[i], endTagSet)) break; - } - - this.elements.length = i+1; - this.top = this.elements[i]; -}; - -/*** - * The ActiveFormattingElements class - */ -HTMLParser.ActiveFormattingElements = function AFE() { - this.list = []; // elements - this.attrs = []; // attribute tokens for cloning -}; - -HTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: "|" }; - -/* -// For debugging -HTMLParser.ActiveFormattingElements.prototype.toString = function() { - return "AFE: " + - this.list.map(function(e) { return e.localName; }).join("-"); -} -*/ - -HTMLParser.ActiveFormattingElements.prototype.insertMarker = function() { - this.list.push(this.MARKER); - this.attrs.push(this.MARKER); -}; - -HTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) { - // Scan backwards: if there are already 3 copies of this element - // before we encounter a marker, then drop the last one - var count = 0; - for(var i = this.list.length-1; i >= 0; i--) { - if (this.list[i] === this.MARKER) break; - // equal() is defined below - if (equal(elt, this.list[i], this.attrs[i])) { - count++; - if (count === 3) { - this.list.splice(i, 1); - this.attrs.splice(i, 1); - break; - } - } - } - - - // Now push the element onto the list - this.list.push(elt); - - // Copy the attributes and push those on, too - var attrcopy = []; - for(var ii = 0; ii < attrs.length; ii++) { - attrcopy[ii] = attrs[ii]; - } - - this.attrs.push(attrcopy); - - // This function defines equality of two elements for the purposes - // of the AFE list. Note that it compares the new elements - // attributes to the saved array of attributes associated with - // the old element because a script could have changed the - // old element's set of attributes - function equal(newelt, oldelt, oldattrs) { - if (newelt.localName !== oldelt.localName) return false; - if (newelt._numattrs !== oldattrs.length) return false; - for(var i = 0, n = oldattrs.length; i < n; i++) { - var oldname = oldattrs[i][0]; - var oldval = oldattrs[i][1]; - if (!newelt.hasAttribute(oldname)) return false; - if (newelt.getAttribute(oldname) !== oldval) return false; - } - return true; - } -}; - -HTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() { - for(var i = this.list.length-1; i >= 0; i--) { - if (this.list[i] === this.MARKER) break; - } - if (i < 0) i = 0; - this.list.length = i; - this.attrs.length = i; -}; - -// Find and return the last element with the specified tag between the -// end of the list and the last marker on the list. -// Used when parsing in_body_mode() -HTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) { - for(var i = this.list.length-1; i >= 0; i--) { - var elt = this.list[i]; - if (elt === this.MARKER) break; - if (elt.localName === tag) return elt; - } - return null; -}; - -HTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) { - return this.list.lastIndexOf(e); -}; - -// Find the element e in the list and remove it -// Used when parsing in_body() -HTMLParser.ActiveFormattingElements.prototype.remove = function(e) { - var idx = this.list.lastIndexOf(e); - if (idx !== -1) { - this.list.splice(idx, 1); - this.attrs.splice(idx, 1); - } -}; - -// Find element a in the list and replace it with element b -// XXX: Do I need to handle attributes here? -HTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) { - var idx = this.list.lastIndexOf(a); - if (idx !== -1) { - this.list[idx] = b; - this.attrs[idx] = attrs; - } -}; - -// Find a in the list and insert b after it -// This is only used for insert a bookmark object, so the -// attrs array doesn't really matter -HTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) { - var idx = this.list.lastIndexOf(a); - if (idx !== -1) { - this.list.splice(idx, 0, b); - this.attrs.splice(idx, 0, b); - } -}; - - - - -/*** - * This is the parser factory function. It is the return value of - * the outer closure that it is defined within. Most of the parser - * implementation details are inside this function. - */ -function HTMLParser(address, fragmentContext, options) { - /*** - * These are the parser's state variables - */ - // Scanner state - var chars = null; - var numchars = 0; // Length of chars - var nextchar = 0; // Index of next char - var input_complete = false; // Becomes true when end() called. - var scanner_skip_newline = false; // If previous char was CR - var reentrant_invocations = 0; - var saved_scanner_state = []; - var leftovers = ""; - var first_batch = true; - var paused = 0; // Becomes non-zero while loading scripts - - - // Tokenizer state - var tokenizer = data_state; // Current tokenizer state - var return_state; - var character_reference_code; - var tagnamebuf = ""; - var lasttagname = ""; // holds the target end tag for text states - var tempbuf = []; - var attrnamebuf = ""; - var attrvaluebuf = ""; - var commentbuf = []; - var doctypenamebuf = []; - var doctypepublicbuf = []; - var doctypesystembuf = []; - var attributes = []; - var is_end_tag = false; - - // Tree builder state - var parser = initial_mode; // Current insertion mode - var originalInsertionMode = null; // A saved insertion mode - var templateInsertionModes = []; // Stack of template insertion modes. - var stack = new HTMLParser.ElementStack(); // Stack of open elements - var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags - var fragment = (fragmentContext!==undefined); // For innerHTML, etc. - var head_element_pointer = null; - var form_element_pointer = null; - var scripting_enabled = true; - if (fragmentContext) { - scripting_enabled = fragmentContext.ownerDocument._scripting_enabled; - } - if (options && options.scripting_enabled === false) - scripting_enabled = false; - var frameset_ok = true; - var force_quirks = false; - var pending_table_text; - var text_integration_mode; // XXX a spec bug workaround? - - // A single run of characters, buffered up to be sent to - // the parser as a single string. - var textrun = []; - var textIncludesNUL = false; - var ignore_linefeed = false; - - /*** - * This is the parser object that will be the return value of this - * factory function, which is some 5000 lines below. - * Note that the variable "parser" is the current state of the - * parser's state machine. This variable "htmlparser" is the - * return value and defines the public API of the parser - */ - var htmlparser = { - document: function() { - return doc; - }, - - // Convenience function for internal use. Can only be called once, - // as it removes the nodes from `doc` to add them to fragment. - _asDocumentFragment: function() { - var frag = doc.createDocumentFragment(); - var root = doc.firstChild; - while(root.hasChildNodes()) { - frag.appendChild(root.firstChild); - } - return frag; - }, - - // Internal function used from HTMLScriptElement to pause the - // parser while a script is being loaded from the network - pause: function() { - // print("pausing parser"); - paused++; - }, - - // Called when a script finishes loading - resume: function() { - // print("resuming parser"); - paused--; - // XXX: added this to force a resumption. - // Is this the right thing to do? - this.parse(""); - }, - - // Parse the HTML text s. - // The second argument should be true if there is no more - // text to be parsed, and should be false or omitted otherwise. - // The second argument must not be set for recursive invocations - // from document.write() - parse: function(s, end, shouldPauseFunc) { - var moreToDo; - - // If we're paused, remember the text to parse, but - // don't parse it now. - // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.) - if (paused > 0) { - leftovers += s; - return true; // more to do - } - - - if (reentrant_invocations === 0) { - // A normal, top-level invocation - if (leftovers) { - s = leftovers + s; - leftovers = ""; - } - - // Add a special marker character to the end of - // the buffer. If the scanner is at the end of - // the buffer and input_complete is set, then this - // character will transform into an EOF token. - // Having an actual character that represents EOF - // in the character buffer makes lookahead regexp - // matching work more easily, and this is - // important for character references. - if (end) { - s += "\uFFFF"; - input_complete = true; // Makes scanChars() send EOF - } - - chars = s; - numchars = s.length; - nextchar = 0; - - if (first_batch) { - // We skip a leading Byte Order Mark (\uFEFF) - // on first batch of text we're given - first_batch = false; - if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1; - } - - reentrant_invocations++; - moreToDo = scanChars(shouldPauseFunc); - leftovers = chars.substring(nextchar, numchars); - reentrant_invocations--; - } - else { - // This is the re-entrant case, which we have to - // handle a little differently. - reentrant_invocations++; - - // Save current scanner state - saved_scanner_state.push(chars, numchars, nextchar); - - // Set new scanner state - chars = s; - numchars = s.length; - nextchar = 0; - - // Now scan as many of these new chars as we can - scanChars(); - moreToDo = false; - - leftovers = chars.substring(nextchar, numchars); - - // restore old scanner state - nextchar = saved_scanner_state.pop(); - numchars = saved_scanner_state.pop(); - chars = saved_scanner_state.pop(); - - // If there were leftover chars from this invocation - // insert them into the pending invocation's buffer - // and trim already processed chars at the same time - if (leftovers) { - chars = leftovers + chars.substring(nextchar); - numchars = chars.length; - nextchar = 0; - leftovers = ""; - } - - // Decrement the counter - reentrant_invocations--; - } - return moreToDo; - } - }; - - - // This is the document we'll be building up - var doc = new Document(true, address); - - // The document needs to know about the parser, for document.write(). - // This _parser property will be deleted when we're done parsing. - doc._parser = htmlparser; - - // XXX I think that any document we use this parser on should support - // scripts. But I may need to configure that through a parser parameter - // Only documents with windows ("browsing contexts" to be precise) - // allow scripting. - doc._scripting_enabled = scripting_enabled; - - - /*** - * The actual code of the HTMLParser() factory function begins here. - */ - - if (fragmentContext) { // for innerHTML parsing - if (fragmentContext.ownerDocument._quirks) - doc._quirks = true; - if (fragmentContext.ownerDocument._limitedQuirks) - doc._limitedQuirks = true; - - // Set the initial tokenizer state - if (fragmentContext.namespaceURI === NAMESPACE.HTML) { - switch(fragmentContext.localName) { - case "title": - case "textarea": - tokenizer = rcdata_state; - break; - case "style": - case "xmp": - case "iframe": - case "noembed": - case "noframes": - case "script": - case "plaintext": - tokenizer = plaintext_state; - break; - } - } - - var root = doc.createElement("html"); - doc._appendChild(root); - stack.push(root); - if (fragmentContext instanceof impl.HTMLTemplateElement) { - templateInsertionModes.push(in_template_mode); - } - resetInsertionMode(); - - for(var e = fragmentContext; e !== null; e = e.parentElement) { - if (e instanceof impl.HTMLFormElement) { - form_element_pointer = e; - break; - } - } - } - - /*** - * Scanner functions - */ - // Loop through the characters in chars, and pass them one at a time - // to the tokenizer FSM. Return when no more characters can be processed - // (This may leave 1 or more characters in the buffer: like a CR - // waiting to see if the next char is LF, or for states that require - // lookahead...) - function scanChars(shouldPauseFunc) { - var codepoint, s, pattern, eof; - - while(nextchar < numchars) { - - // If we just tokenized a tag, then the paused flag - // may have been set to tell us to stop tokenizing while - // the script is loading - if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) { - return true; - } - - - switch(typeof tokenizer.lookahead) { - case 'undefined': - codepoint = chars.charCodeAt(nextchar++); - if (scanner_skip_newline) { - scanner_skip_newline = false; - if (codepoint === 0x000A) { - nextchar++; - continue; - } - } - switch(codepoint) { - case 0x000D: - // CR always turns into LF, but if the next character - // is LF, then that second LF is skipped. - if (nextchar < numchars) { - if (chars.charCodeAt(nextchar) === 0x000A) - nextchar++; - } - else { - // We don't know the next char right now, so we - // can't check if it is a LF. So set a flag - scanner_skip_newline = true; - } - - // In either case, emit a LF - tokenizer(0x000A); - - break; - case 0xFFFF: - if (input_complete && nextchar === numchars) { - tokenizer(EOF); // codepoint will be 0xFFFF here - break; - } - /* falls through */ - default: - tokenizer(codepoint); - break; - } - break; - - case 'number': - codepoint = chars.charCodeAt(nextchar); - - // The only tokenizer states that require fixed lookahead - // only consume alphanum characters, so we don't have - // to worry about CR and LF in this case - - // tokenizer wants n chars of lookahead - var n = tokenizer.lookahead; - var needsString = true; - if (n < 0) { - needsString = false; - n = -n; - } - - if (n < numchars - nextchar) { - // If we can look ahead that far - s = needsString ? chars.substring(nextchar, nextchar+n) : null; - eof = false; - } - else { // if we don't have that many characters - if (input_complete) { // If no more are coming - // Just return what we have - s = needsString ? chars.substring(nextchar, numchars) : null; - eof = true; - if (codepoint === 0xFFFF && nextchar === numchars-1) - codepoint = EOF; - } - else { - // Return now and wait for more chars later - return true; - } - } - tokenizer(codepoint, s, eof); - break; - case 'string': - codepoint = chars.charCodeAt(nextchar); - - // tokenizer wants characters up to a matching string - pattern = tokenizer.lookahead; - var pos = chars.indexOf(pattern, nextchar); - if (pos !== -1) { - s = chars.substring(nextchar, pos + pattern.length); - eof = false; - } - else { // No match - // If more characters coming, wait for them - if (!input_complete) return true; - - // Otherwise, we've got to return what we've got - s = chars.substring(nextchar, numchars); - if (codepoint === 0xFFFF && nextchar === numchars-1) - codepoint = EOF; - eof = true; - } - - // The tokenizer states that require this kind of - // lookahead have to be careful to handle CR characters - // correctly - tokenizer(codepoint, s, eof); - break; - } - } - return false; // no more characters to scan! - } - - - /*** - * Tokenizer utility functions - */ - function addAttribute(name,value) { - // Make sure there isn't already an attribute with this name - // If there is, ignore this one. - for(var i = 0; i < attributes.length; i++) { - if (attributes[i][0] === name) return; - } - - if (value !== undefined) { - attributes.push([name, value]); - } - else { - attributes.push([name]); - } - } - - // Shortcut for simple attributes - function handleSimpleAttribute() { - SIMPLEATTR.lastIndex = nextchar-1; - var matched = SIMPLEATTR.exec(chars); - if (!matched) throw new Error("should never happen"); - var name = matched[1]; - if (!name) return false; - var value = matched[2]; - var len = value.length; - switch(value[0]) { - case '"': - case "'": - value = value.substring(1, len-1); - nextchar += (matched[0].length-1); - tokenizer = after_attribute_value_quoted_state; - break; - default: - tokenizer = before_attribute_name_state; - nextchar += (matched[0].length-1); - value = value.substring(0, len-1); - break; - } - - // Make sure there isn't already an attribute with this name - // If there is, ignore this one. - for(var i = 0; i < attributes.length; i++) { - if (attributes[i][0] === name) return true; - } - - attributes.push([name, value]); - return true; - } - - function beginTagName() { - is_end_tag = false; - tagnamebuf = ""; - attributes.length = 0; - } - function beginEndTagName() { - is_end_tag = true; - tagnamebuf = ""; - attributes.length = 0; - } - - function beginTempBuf() { tempbuf.length = 0; } - function beginAttrName() { attrnamebuf = ""; } - function beginAttrValue() { attrvaluebuf = ""; } - function beginComment() { commentbuf.length = 0; } - function beginDoctype() { - doctypenamebuf.length = 0; - doctypepublicbuf = null; - doctypesystembuf = null; - } - function beginDoctypePublicId() { doctypepublicbuf = []; } - function beginDoctypeSystemId() { doctypesystembuf = []; } - function forcequirks() { force_quirks = true; } - function cdataAllowed() { - return stack.top && - stack.top.namespaceURI !== "http://www.w3.org/1999/xhtml"; - } - - // Return true if the codepoints in the specified buffer match the - // characters of lasttagname - function appropriateEndTag(buf) { - return lasttagname === buf; - } - - function flushText() { - if (textrun.length > 0) { - var s = buf2str(textrun); - textrun.length = 0; - - if (ignore_linefeed) { - ignore_linefeed = false; - if (s[0] === "\n") s = s.substring(1); - if (s.length === 0) return; - } - - insertToken(TEXT, s); - textIncludesNUL = false; - } - ignore_linefeed = false; - } - - // Consume chars matched by the pattern and return them as a string. Starts - // matching at the current position, so users should drop the current char - // otherwise. - function getMatchingChars(pattern) { - pattern.lastIndex = nextchar - 1; - var match = pattern.exec(chars); - if (match && match.index === nextchar - 1) { - match = match[0]; - nextchar += match.length - 1; - /* Careful! Make sure we haven't matched the EOF character! */ - if (input_complete && nextchar === numchars) { - // Oops, backup one. - match = match.slice(0, -1); - nextchar--; - } - return match; - } else { - throw new Error("should never happen"); - } - } - - // emit a string of chars that match a regexp - // Returns false if no chars matched. - function emitCharsWhile(pattern) { - pattern.lastIndex = nextchar-1; - var match = pattern.exec(chars)[0]; - if (!match) return false; - emitCharString(match); - nextchar += match.length - 1; - return true; - } - - // This is used by CDATA sections - function emitCharString(s) { - if (textrun.length > 0) flushText(); - - if (ignore_linefeed) { - ignore_linefeed = false; - if (s[0] === "\n") s = s.substring(1); - if (s.length === 0) return; - } - - insertToken(TEXT, s); - } - - function emitTag() { - if (is_end_tag) insertToken(ENDTAG, tagnamebuf); - else { - // Remember the last open tag we emitted - var tagname = tagnamebuf; - tagnamebuf = ""; - lasttagname = tagname; - insertToken(TAG, tagname, attributes); - } - } - - - // A shortcut: look ahead and if this is a open or close tag - // in lowercase with no spaces and no attributes, just emit it now. - function emitSimpleTag() { - if (nextchar === numchars) { return false; /* not even 1 char left */ } - SIMPLETAG.lastIndex = nextchar; - var matched = SIMPLETAG.exec(chars); - if (!matched) throw new Error("should never happen"); - var tagname = matched[2]; - if (!tagname) return false; - var endtag = matched[1]; - if (endtag) { - nextchar += (tagname.length+2); - insertToken(ENDTAG, tagname); - } - else { - nextchar += (tagname.length+1); - lasttagname = tagname; - insertToken(TAG, tagname, NOATTRS); - } - return true; - } - - function emitSelfClosingTag() { - if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true); - else { - insertToken(TAG, tagnamebuf, attributes, true); - } - } - - function emitDoctype() { - insertToken(DOCTYPE, - buf2str(doctypenamebuf), - doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined, - doctypesystembuf ? buf2str(doctypesystembuf) : undefined); - } - - function emitEOF() { - flushText(); - parser(EOF); // EOF never goes to insertForeignContent() - doc.modclock = 1; // Start tracking modifications - } - - // Insert a token, either using the current parser insertion mode - // (for HTML stuff) or using the insertForeignToken() method. - var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) { - flushText(); - var current = stack.top; - - if (!current || current.namespaceURI === NAMESPACE.HTML) { - // This is the common case - parser(t, value, arg3, arg4); - } - else { - // Otherwise we may need to insert this token as foreign content - if (t !== TAG && t !== TEXT) { - insertForeignToken(t, value, arg3, arg4); - } - else { - // But in some cases we treat it as regular content - if ((isMathmlTextIntegrationPoint(current) && - (t === TEXT || - (t === TAG && - value !== "mglyph" && value !== "malignmark"))) || - (t === TAG && - value === "svg" && - current.namespaceURI === NAMESPACE.MATHML && - current.localName === "annotation-xml") || - isHTMLIntegrationPoint(current)) { - - // XXX: the text_integration_mode stuff is an - // attempted bug workaround of mine - text_integration_mode = true; - parser(t, value, arg3, arg4); - text_integration_mode = false; - } - // Otherwise it is foreign content - else { - insertForeignToken(t, value, arg3, arg4); - } - } - } - }; - - - /*** - * Tree building utility functions - */ - function insertComment(data) { - var parent = stack.top; - if (foster_parent_mode && isA(parent, tablesectionrowSet)) { - fosterParent(function(doc) { return doc.createComment(data); }); - } else { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - parent._appendChild(parent.ownerDocument.createComment(data)); - } - } - - function insertText(s) { - var parent = stack.top; - if (foster_parent_mode && isA(parent, tablesectionrowSet)) { - fosterParent(function(doc) { return doc.createTextNode(s); }); - } else { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - // "If there is a Text node immediately before the adjusted insertion - // location, then append data to that Text node's data." - var lastChild = parent.lastChild; - if (lastChild && lastChild.nodeType === Node.TEXT_NODE) { - lastChild.appendData(s); - } else { - parent._appendChild(parent.ownerDocument.createTextNode(s)); - } - } - } - - function createHTMLElt(doc, name, attrs) { - // Create the element this way, rather than with - // doc.createElement because createElement() does error - // checking on the element name that we need to avoid here. - var elt = html.createElement(doc, name, null); - - if (attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - // Use the _ version to avoid testing the validity - // of the attribute name - elt._setAttribute(attrs[i][0], attrs[i][1]); - } - } - // XXX - // If the element is a resettable form element, - // run its reset algorithm now - // XXX - // handle case where form-element-pointer is not null - return elt; - } - - // The in_table insertion mode turns on this flag, and that makes - // insertHTMLElement use the foster parenting algorithm for elements - // tags inside a table - var foster_parent_mode = false; - - function insertHTMLElement(name, attrs) { - var elt = insertElement(function(doc) { - return createHTMLElt(doc, name, attrs); - }); - - // XXX - // If this is a form element, set its form attribute property here - if (isA(elt, formassociatedSet)) { - elt._form = form_element_pointer; - } - - return elt; - } - - // Insert the element into the open element or foster parent it - function insertElement(eltFunc) { - var elt; - if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) { - elt = fosterParent(eltFunc); - } - else if (stack.top instanceof impl.HTMLTemplateElement) { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - elt = eltFunc(stack.top.content.ownerDocument); - stack.top.content._appendChild(elt); - } else { - elt = eltFunc(stack.top.ownerDocument); - stack.top._appendChild(elt); - } - - stack.push(elt); - return elt; - } - - function insertForeignElement(name, attrs, ns) { - return insertElement(function(doc) { - // We need to prevent createElementNS from trying to parse `name` as a - // `qname`, so use an internal Document#_createElementNS() interface. - var elt = doc._createElementNS(name, ns, null); - if (attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - var attr = attrs[i]; - if (attr.length === 2) - elt._setAttribute(attr[0], attr[1]); - else { - elt._setAttributeNS(attr[2], attr[0], attr[1]); - } - } - } - return elt; - }); - } - - function lastElementOfType(type) { - for(var i = stack.elements.length-1; i >= 0; i--) { - if (stack.elements[i] instanceof type) { - return i; - } - } - return -1; - } - - function fosterParent(eltFunc) { - var parent, before, lastTable = -1, lastTemplate = -1, elt; - - lastTable = lastElementOfType(impl.HTMLTableElement); - lastTemplate = lastElementOfType(impl.HTMLTemplateElement); - - if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) { - parent = stack.elements[lastTemplate]; - } else if (lastTable >= 0) { - parent = stack.elements[lastTable].parentNode; - if (parent) { - before = stack.elements[lastTable]; - } else { - parent = stack.elements[lastTable - 1]; - } - } - if (!parent) parent = stack.elements[0]; // the `html` element. - - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - // Create element in the appropriate document. - elt = eltFunc(parent.ownerDocument); - - if (elt.nodeType === Node.TEXT_NODE) { - var prev; - if (before) prev = before.previousSibling; - else prev = parent.lastChild; - if (prev && prev.nodeType === Node.TEXT_NODE) { - prev.appendData(elt.data); - return elt; - } - } - if (before) - parent.insertBefore(elt, before); - else - parent._appendChild(elt); - return elt; - } - - - function resetInsertionMode() { - var last = false; - for(var i = stack.elements.length-1; i >= 0; i--) { - var node = stack.elements[i]; - if (i === 0) { - last = true; - if (fragment) { - node = fragmentContext; - } - } - if (node.namespaceURI === NAMESPACE.HTML) { - var tag = node.localName; - switch(tag) { - case "select": - for(var j = i; j > 0; ) { - var ancestor = stack.elements[--j]; - if (ancestor instanceof impl.HTMLTemplateElement) { - break; - } else if (ancestor instanceof impl.HTMLTableElement) { - parser = in_select_in_table_mode; - return; - } - } - parser = in_select_mode; - return; - case "tr": - parser = in_row_mode; - return; - case "tbody": - case "tfoot": - case "thead": - parser = in_table_body_mode; - return; - case "caption": - parser = in_caption_mode; - return; - case "colgroup": - parser = in_column_group_mode; - return; - case "table": - parser = in_table_mode; - return; - case "template": - parser = templateInsertionModes[templateInsertionModes.length-1]; - return; - case "body": - parser = in_body_mode; - return; - case "frameset": - parser = in_frameset_mode; - return; - case "html": - if (head_element_pointer === null) { - parser = before_head_mode; - } else { - parser = after_head_mode; - } - return; - default: - if (!last) { - if (tag === "head") { - parser = in_head_mode; - return; - } - if (tag === "td" || tag === "th") { - parser = in_cell_mode; - return; - } - } - } - } - if (last) { - parser = in_body_mode; - return; - } - } - } - - - function parseRawText(name, attrs) { - insertHTMLElement(name, attrs); - tokenizer = rawtext_state; - originalInsertionMode = parser; - parser = text_mode; - } - - function parseRCDATA(name, attrs) { - insertHTMLElement(name, attrs); - tokenizer = rcdata_state; - originalInsertionMode = parser; - parser = text_mode; - } - - // Make a copy of element i on the list of active formatting - // elements, using its original attributes, not current - // attributes (which may have been modified by a script) - function afeclone(doc, i) { - return { - elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]), - attrs: afe.attrs[i], - }; - } - - - function afereconstruct() { - if (afe.list.length === 0) return; - var entry = afe.list[afe.list.length-1]; - // If the last is a marker , do nothing - if (entry === afe.MARKER) return; - // Or if it is an open element, do nothing - if (stack.elements.lastIndexOf(entry) !== -1) return; - - // Loop backward through the list until we find a marker or an - // open element, and then move forward one from there. - for(var i = afe.list.length-2; i >= 0; i--) { - entry = afe.list[i]; - if (entry === afe.MARKER) break; - if (stack.elements.lastIndexOf(entry) !== -1) break; - } - - // Now loop forward, starting from the element after the current - // one, recreating formatting elements and pushing them back onto - // the list of open elements - for(i = i+1; i < afe.list.length; i++) { - var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; }); - afe.list[i] = newelt; - } - } - - // Used by the adoptionAgency() function - var BOOKMARK = {localName:"BM"}; - - function adoptionAgency(tag) { - // If the current node is an HTML element whose tag name is subject, - // and the current node is not in the list of active formatting - // elements, then pop the current node off the stack of open - // elements and abort these steps. - if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) { - stack.pop(); - return true; // no more handling required - } - - // Let outer loop counter be zero. - var outer = 0; - - // Outer loop: If outer loop counter is greater than or - // equal to eight, then abort these steps. - while(outer < 8) { - // Increment outer loop counter by one. - outer++; - - // Let the formatting element be the last element in the list - // of active formatting elements that: is between the end of - // the list and the last scope marker in the list, if any, or - // the start of the list otherwise, and has the same tag name - // as the token. - var fmtelt = afe.findElementByTag(tag); - - // If there is no such node, then abort these steps and instead - // act as described in the "any other end tag" entry below. - if (!fmtelt) { - return false; // false means handle by the default case - } - - // Otherwise, if there is such a node, but that node is not in - // the stack of open elements, then this is a parse error; - // remove the element from the list, and abort these steps. - var index = stack.elements.lastIndexOf(fmtelt); - if (index === -1) { - afe.remove(fmtelt); - return true; // true means no more handling required - } - - // Otherwise, if there is such a node, and that node is also in - // the stack of open elements, but the element is not in scope, - // then this is a parse error; ignore the token, and abort - // these steps. - if (!stack.elementInScope(fmtelt)) { - return true; - } - - // Let the furthest block be the topmost node in the stack of - // open elements that is lower in the stack than the formatting - // element, and is an element in the special category. There - // might not be one. - var furthestblock = null, furthestblockindex; - for(var i = index+1; i < stack.elements.length; i++) { - if (isA(stack.elements[i], specialSet)) { - furthestblock = stack.elements[i]; - furthestblockindex = i; - break; - } - } - - // If there is no furthest block, then the UA must skip the - // subsequent steps and instead just pop all the nodes from the - // bottom of the stack of open elements, from the current node - // up to and including the formatting element, and remove the - // formatting element from the list of active formatting - // elements. - if (!furthestblock) { - stack.popElement(fmtelt); - afe.remove(fmtelt); - return true; - } - else { - // Let the common ancestor be the element immediately above - // the formatting element in the stack of open elements. - var ancestor = stack.elements[index-1]; - - // Let a bookmark note the position of the formatting - // element in the list of active formatting elements - // relative to the elements on either side of it in the - // list. - afe.insertAfter(fmtelt, BOOKMARK); - - // Let node and last node be the furthest block. - var node = furthestblock; - var lastnode = furthestblock; - var nodeindex = furthestblockindex; - var nodeafeindex; - - // Let inner loop counter be zero. - var inner = 0; - - while (true) { - - // Increment inner loop counter by one. - inner++; - - // Let node be the element immediately above node in - // the stack of open elements, or if node is no longer - // in the stack of open elements (e.g. because it got - // removed by this algorithm), the element that was - // immediately above node in the stack of open elements - // before node was removed. - node = stack.elements[--nodeindex]; - - // If node is the formatting element, then go - // to the next step in the overall algorithm. - if (node === fmtelt) break; - - // If the inner loop counter is greater than three and node - // is in the list of active formatting elements, then remove - // node from the list of active formatting elements. - nodeafeindex = afe.indexOf(node); - if (inner > 3 && nodeafeindex !== -1) { - afe.remove(node); - nodeafeindex = -1; - } - - // If node is not in the list of active formatting - // elements, then remove node from the stack of open - // elements and then go back to the step labeled inner - // loop. - if (nodeafeindex === -1) { - stack.removeElement(node); - continue; - } - - // Create an element for the token for which the - // element node was created with common ancestor as - // the intended parent, replace the entry for node - // in the list of active formatting elements with an - // entry for the new element, replace the entry for - // node in the stack of open elements with an entry for - // the new element, and let node be the new element. - var newelt = afeclone(ancestor.ownerDocument, nodeafeindex); - afe.replace(node, newelt.elt, newelt.attrs); - stack.elements[nodeindex] = newelt.elt; - node = newelt.elt; - - // If last node is the furthest block, then move the - // aforementioned bookmark to be immediately after the - // new node in the list of active formatting elements. - if (lastnode === furthestblock) { - afe.remove(BOOKMARK); - afe.insertAfter(newelt.elt, BOOKMARK); - } - - // Insert last node into node, first removing it from - // its previous parent node if any. - node._appendChild(lastnode); - - // Let last node be node. - lastnode = node; - } - - // If the common ancestor node is a table, tbody, tfoot, - // thead, or tr element, then, foster parent whatever last - // node ended up being in the previous step, first removing - // it from its previous parent node if any. - if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) { - fosterParent(function() { return lastnode; }); - } - // Otherwise, append whatever last node ended up being in - // the previous step to the common ancestor node, first - // removing it from its previous parent node if any. - else if (ancestor instanceof impl.HTMLTemplateElement) { - ancestor.content._appendChild(lastnode); - } else { - ancestor._appendChild(lastnode); - } - - // Create an element for the token for which the - // formatting element was created, with furthest block - // as the intended parent. - var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt)); - - // Take all of the child nodes of the furthest block and - // append them to the element created in the last step. - while(furthestblock.hasChildNodes()) { - newelt2.elt._appendChild(furthestblock.firstChild); - } - - // Append that new element to the furthest block. - furthestblock._appendChild(newelt2.elt); - - // Remove the formatting element from the list of active - // formatting elements, and insert the new element into the - // list of active formatting elements at the position of - // the aforementioned bookmark. - afe.remove(fmtelt); - afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs); - - // Remove the formatting element from the stack of open - // elements, and insert the new element into the stack of - // open elements immediately below the position of the - // furthest block in that stack. - stack.removeElement(fmtelt); - var pos = stack.elements.lastIndexOf(furthestblock); - stack.elements.splice(pos+1, 0, newelt2.elt); - } - } - - return true; - } - - // We do this when we get /script in in_text_mode - function handleScriptEnd() { - // XXX: - // This is just a stub implementation right now and doesn't run scripts. - // Getting this method right involves the event loop, URL resolution - // script fetching etc. For now I just want to be able to parse - // documents and test the parser. - - //var script = stack.top; - stack.pop(); - parser = originalInsertionMode; - //script._prepare(); - return; - - // XXX: here is what this method is supposed to do - - // Provide a stable state. - - // Let script be the current node (which will be a script - // element). - - // Pop the current node off the stack of open elements. - - // Switch the insertion mode to the original insertion mode. - - // Let the old insertion point have the same value as the current - // insertion point. Let the insertion point be just before the - // next input character. - - // Increment the parser's script nesting level by one. - - // Prepare the script. This might cause some script to execute, - // which might cause new characters to be inserted into the - // tokenizer, and might cause the tokenizer to output more tokens, - // resulting in a reentrant invocation of the parser. - - // Decrement the parser's script nesting level by one. If the - // parser's script nesting level is zero, then set the parser - // pause flag to false. - - // Let the insertion point have the value of the old insertion - // point. (In other words, restore the insertion point to its - // previous value. This value might be the "undefined" value.) - - // At this stage, if there is a pending parsing-blocking script, - // then: - - // If the script nesting level is not zero: - - // Set the parser pause flag to true, and abort the processing - // of any nested invocations of the tokenizer, yielding - // control back to the caller. (Tokenization will resume when - // the caller returns to the "outer" tree construction stage.) - - // The tree construction stage of this particular parser is - // being called reentrantly, say from a call to - // document.write(). - - // Otherwise: - - // Run these steps: - - // Let the script be the pending parsing-blocking - // script. There is no longer a pending - // parsing-blocking script. - - // Block the tokenizer for this instance of the HTML - // parser, such that the event loop will not run tasks - // that invoke the tokenizer. - - // If the parser's Document has a style sheet that is - // blocking scripts or the script's "ready to be - // parser-executed" flag is not set: spin the event - // loop until the parser's Document has no style sheet - // that is blocking scripts and the script's "ready to - // be parser-executed" flag is set. - - // Unblock the tokenizer for this instance of the HTML - // parser, such that tasks that invoke the tokenizer - // can again be run. - - // Let the insertion point be just before the next - // input character. - - // Increment the parser's script nesting level by one - // (it should be zero before this step, so this sets - // it to one). - - // Execute the script. - - // Decrement the parser's script nesting level by - // one. If the parser's script nesting level is zero - // (which it always should be at this point), then set - // the parser pause flag to false. - - // Let the insertion point be undefined again. - - // If there is once again a pending parsing-blocking - // script, then repeat these steps from step 1. - - - } - - function stopParsing() { - // XXX This is just a temporary implementation to get the parser working. - // A full implementation involves scripts and events and the event loop. - - // Remove the link from document to parser. - // This is instead of "set the insertion point to undefined". - // It means that document.write() can't write into the doc anymore. - delete doc._parser; - - stack.elements.length = 0; // pop everything off - - // If there is a window object associated with the document - // then trigger an load event on it - if (doc.defaultView) { - doc.defaultView.dispatchEvent(new impl.Event("load",{})); - } - - } - - /**** - * Tokenizer states - */ - - /** - * This file was partially mechanically generated from - * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html - * - * After mechanical conversion, it was further converted from - * prose to JS by hand, but the intent is that it is a very - * faithful rendering of the HTML tokenization spec in - * JavaScript. - * - * It is not a goal of this tokenizer to detect or report - * parse errors. - * - * XXX The tokenizer is supposed to work with straight UTF32 - * codepoints. But I don't think it has any dependencies on - * any character outside of the BMP so I think it is safe to - * pass it UTF16 characters. I don't think it will ever change - * state in the middle of a surrogate pair. - */ - - /* - * Each state is represented by a function. For most states, the - * scanner simply passes the next character (as an integer - * codepoint) to the current state function and automatically - * consumes the character. If the state function can't process - * the character it can call pushback() to push it back to the - * scanner. - * - * Some states require lookahead, though. If a state function has - * a lookahead property, then it is invoked differently. In this - * case, the scanner invokes the function with 3 arguments: 1) the - * next codepoint 2) a string of lookahead text 3) a boolean that - * is true if the lookahead goes all the way to the EOF. (XXX - * actually maybe this third is not necessary... the lookahead - * could just include \uFFFF?) - * - * If the lookahead property of a state function is an integer, it - * specifies the number of characters required. If it is a string, - * then the scanner will scan for that string and return all - * characters up to and including that sequence, or up to EOF. If - * the lookahead property is a regexp, then the scanner will match - * the regexp at the current point and return the matching string. - * - * States that require lookahead are responsible for explicitly - * consuming the characters they process. They do this by - * incrementing nextchar by the number of processed characters. - */ - function reconsume(c, new_state) { - tokenizer = new_state; - nextchar--; // pushback - } - - function data_state(c) { - switch(c) { - case 0x0026: // AMPERSAND - return_state = data_state; - tokenizer = character_reference_state; - break; - case 0x003C: // LESS-THAN SIGN - if (emitSimpleTag()) // Shortcut for

,

, etc. - break; - tokenizer = tag_open_state; - break; - case 0x0000: // NULL - // Usually null characters emitted by the tokenizer will be - // ignored by the tree builder, but sometimes they'll be - // converted to \uFFFD. I don't want to have the search every - // string emitted to replace NULs, so I'll set a flag - // if I've emitted a NUL. - textrun.push(c); - textIncludesNUL = true; - break; - case -1: // EOF - emitEOF(); - break; - default: - // Instead of just pushing a single character and then - // coming back to the very same place, lookahead and - // emit everything we can at once. - /*jshint -W030 */ - emitCharsWhile(DATATEXT) || textrun.push(c); - break; - } - } - - function rcdata_state(c) { - // Save the open tag so we can find a matching close tag - switch(c) { - case 0x0026: // AMPERSAND - return_state = rcdata_state; - tokenizer = character_reference_state; - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = rcdata_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - textIncludesNUL = true; - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function rawtext_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - tokenizer = rawtext_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(RAWTEXT) || textrun.push(c); - break; - } - } - - function script_data_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(RAWTEXT) || textrun.push(c); - break; - } - } - - function plaintext_state(c) { - switch(c) { - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(PLAINTEXT) || textrun.push(c); - break; - } - } - - function tag_open_state(c) { - switch(c) { - case 0x0021: // EXCLAMATION MARK - tokenizer = markup_declaration_open_state; - break; - case 0x002F: // SOLIDUS - tokenizer = end_tag_open_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginTagName(); - reconsume(c, tag_name_state); - break; - case 0x003F: // QUESTION MARK - reconsume(c, bogus_comment_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, data_state); - break; - } - } - - function end_tag_open_state(c) { - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, tag_name_state); - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - break; - case -1: // EOF - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - emitEOF(); - break; - default: - reconsume(c, bogus_comment_state); - break; - } - } - - function tag_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_attribute_name_state; - break; - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - break; - case 0x0000: // NULL - tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - default: - tagnamebuf += getMatchingChars(TAGNAME); - break; - } - } - - function rcdata_less_than_sign_state(c) { - /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */ - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = rcdata_end_tag_open_state; - } - else { - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, rcdata_state); - } - } - - function rcdata_end_tag_open_state(c) { - /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, rcdata_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, rcdata_state); - break; - } - } - - function rcdata_end_tag_name_state(c) { - /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun, tempbuf); - reconsume(c, rcdata_state); - } - - function rawtext_less_than_sign_state(c) { - /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g - */ - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = rawtext_end_tag_open_state; - } - else { - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, rawtext_state); - } - } - - function rawtext_end_tag_open_state(c) { - /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, rawtext_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, rawtext_state); - break; - } - } - - function rawtext_end_tag_name_state(c) { - /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, rawtext_state); - } - - function script_data_less_than_sign_state(c) { - switch(c) { - case 0x002F: // SOLIDUS - beginTempBuf(); - tokenizer = script_data_end_tag_open_state; - break; - case 0x0021: // EXCLAMATION MARK - tokenizer = script_data_escape_start_state; - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x0021); // EXCLAMATION MARK - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_state); - break; - } - } - - function script_data_end_tag_open_state(c) { - /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, script_data_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, script_data_state); - break; - } - } - - function script_data_end_tag_name_state(c) { - /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, script_data_state); - } - - function script_data_escape_start_state(c) { - if (c === 0x002D) { // HYPHEN-MINUS - tokenizer = script_data_escape_start_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - } - else { - reconsume(c, script_data_state); - } - } - - function script_data_escape_start_dash_state(c) { - if (c === 0x002D) { // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - } - else { - reconsume(c, script_data_state); - } - } - - function script_data_escaped_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function script_data_escaped_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x0000: // NULL - tokenizer = script_data_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_escaped_dash_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = script_data_state; - textrun.push(0x003E); // GREATER-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_escaped_less_than_sign_state(c) { - switch(c) { - case 0x002F: // SOLIDUS - beginTempBuf(); - tokenizer = script_data_escaped_end_tag_open_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginTempBuf(); - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_double_escape_start_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_escaped_end_tag_open_state(c) { - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, script_data_escaped_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_escaped_end_tag_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // We get here in the default case, and if the closing tagname - // is not an appropriate tagname. - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, script_data_escaped_state); - } - - function script_data_double_escape_start_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - if (buf2str(tempbuf) === "script") { - tokenizer = script_data_double_escaped_state; - } - else { - tokenizer = script_data_escaped_state; - } - textrun.push(c); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tempbuf.push(c + 0x0020); - textrun.push(c); - break; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tempbuf.push(c); - textrun.push(c); - break; - default: - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_double_escaped_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_double_escaped_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function script_data_double_escaped_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_double_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_double_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_double_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_double_escaped_dash_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = script_data_state; - textrun.push(0x003E); // GREATER-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_double_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_double_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_double_escaped_less_than_sign_state(c) { - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = script_data_double_escape_end_state; - textrun.push(0x002F); // SOLIDUS - } - else { - reconsume(c, script_data_double_escaped_state); - } - } - - function script_data_double_escape_end_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - if (buf2str(tempbuf) === "script") { - tokenizer = script_data_escaped_state; - } - else { - tokenizer = script_data_double_escaped_state; - } - textrun.push(c); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tempbuf.push(c + 0x0020); - textrun.push(c); - break; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tempbuf.push(c); - textrun.push(c); - break; - default: - reconsume(c, script_data_double_escaped_state); - break; - } - } - - function before_attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says "reconsume in - // the after attribute name state", but in our implementation that - // state always has an active attribute in attrnamebuf. Just clone - // the rules here, without the addAttribute business. - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case -1: // EOF - emitEOF(); - break; - case 0x003D: // EQUALS SIGN - beginAttrName(); - attrnamebuf += String.fromCharCode(c); - tokenizer = attribute_name_state; - break; - default: - if (handleSimpleAttribute()) break; - beginAttrName(); - reconsume(c, attribute_name_state); - break; - } - } - - // beginAttrName() must have been called before this point - // There is an active attribute in attrnamebuf (but not attrvaluebuf) - function attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - case -1: // EOF - reconsume(c, after_attribute_name_state); - break; - case 0x003D: // EQUALS SIGN - tokenizer = before_attribute_value_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - attrnamebuf += String.fromCharCode(c + 0x0020); - break; - case 0x0000: // NULL - attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x0022: // QUOTATION MARK - case 0x0027: // APOSTROPHE - case 0x003C: // LESS-THAN SIGN - /* falls through */ - default: - attrnamebuf += getMatchingChars(ATTRNAME); - break; - } - } - - // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf. - function after_attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x002F: // SOLIDUS - // Keep in sync with before_attribute_name_state. - addAttribute(attrnamebuf); - tokenizer = self_closing_start_tag_state; - break; - case 0x003D: // EQUALS SIGN - tokenizer = before_attribute_value_state; - break; - case 0x003E: // GREATER-THAN SIGN - // Keep in sync with before_attribute_name_state. - tokenizer = data_state; - addAttribute(attrnamebuf); - emitTag(); - break; - case -1: // EOF - // Keep in sync with before_attribute_name_state. - addAttribute(attrnamebuf); - emitEOF(); - break; - default: - addAttribute(attrnamebuf); - beginAttrName(); - reconsume(c, attribute_name_state); - break; - } - } - - function before_attribute_value_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0022: // QUOTATION MARK - beginAttrValue(); - tokenizer = attribute_value_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginAttrValue(); - tokenizer = attribute_value_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - /* falls through */ - default: - beginAttrValue(); - reconsume(c, attribute_value_unquoted_state); - break; - } - } - - function attribute_value_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = after_attribute_value_quoted_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_double_quoted_state; - tokenizer = character_reference_state; - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - case 0x000A: // LF - // this could be a converted \r, so don't use getMatchingChars - attrvaluebuf += String.fromCharCode(c); - break; - default: - attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL); - break; - } - } - - function attribute_value_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = after_attribute_value_quoted_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_single_quoted_state; - tokenizer = character_reference_state; - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - case 0x000A: // LF - // this could be a converted \r, so don't use getMatchingChars - attrvaluebuf += String.fromCharCode(c); - break; - default: - attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL); - break; - } - } - - function attribute_value_unquoted_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = before_attribute_name_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_unquoted_state; - tokenizer = character_reference_state; - break; - case 0x003E: // GREATER-THAN SIGN - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = data_state; - emitTag(); - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - nextchar--; // pushback - tokenizer = data_state; - break; - case 0x0022: // QUOTATION MARK - case 0x0027: // APOSTROPHE - case 0x003C: // LESS-THAN SIGN - case 0x003D: // EQUALS SIGN - case 0x0060: // GRAVE ACCENT - /* falls through */ - default: - attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL); - break; - } - } - - function after_attribute_value_quoted_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_attribute_name_state; - break; - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case -1: // EOF - emitEOF(); - break; - default: - reconsume(c, before_attribute_name_state); - break; - } - } - - function self_closing_start_tag_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - // Set the self-closing flag of the current tag token. - tokenizer = data_state; - emitSelfClosingTag(true); - break; - case -1: // EOF - emitEOF(); - break; - default: - reconsume(c, before_attribute_name_state); - break; - } - } - - function bogus_comment_state(c, lookahead, eof) { - var len = lookahead.length; - - if (eof) { - nextchar += len-1; // don't consume the eof - } - else { - nextchar += len; - } - - var comment = lookahead.substring(0, len-1); - - comment = comment.replace(/\u0000/g,"\uFFFD"); - comment = comment.replace(/\u000D\u000A/g,"\u000A"); - comment = comment.replace(/\u000D/g,"\u000A"); - - insertToken(COMMENT, comment); - tokenizer = data_state; - } - bogus_comment_state.lookahead = ">"; - - function markup_declaration_open_state(c, lookahead, eof) { - if (lookahead[0] === "-" && lookahead[1] === "-") { - nextchar += 2; - beginComment(); - tokenizer = comment_start_state; - return; - } - - if (lookahead.toUpperCase() === "DOCTYPE") { - nextchar += 7; - tokenizer = doctype_state; - } - else if (lookahead === "[CDATA[" && cdataAllowed()) { - nextchar += 7; - tokenizer = cdata_section_state; - } - else { - tokenizer = bogus_comment_state; - } - } - markup_declaration_open_state.lookahead = 7; - - function comment_start_state(c) { - beginComment(); - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_start_dash_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; /* see comment in comment end state */ - default: - reconsume(c, comment_state); - break; - } - } - - function comment_start_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D /* HYPHEN-MINUS */); - reconsume(c, comment_state); - break; - } - } - - function comment_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - commentbuf.push(c); - tokenizer = comment_less_than_sign_state; - break; - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_dash_state; - break; - case 0x0000: // NULL - commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(c); - break; - } - } - - function comment_less_than_sign_state(c) { - switch(c) { - case 0x0021: // EXCLAMATION MARK - commentbuf.push(c); - tokenizer = comment_less_than_sign_bang_state; - break; - case 0x003C: // LESS-THAN SIGN - commentbuf.push(c); - break; - default: - reconsume(c, comment_state); - break; - } - } - - function comment_less_than_sign_bang_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_less_than_sign_bang_dash_state; - break; - default: - reconsume(c, comment_state); - break; - } - } - - function comment_less_than_sign_bang_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_less_than_sign_bang_dash_dash_state; - break; - default: - reconsume(c, comment_end_dash_state); - break; - } - } - - function comment_less_than_sign_bang_dash_dash_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - case -1: // EOF - reconsume(c, comment_end_state); - break; - default: - // parse error - reconsume(c, comment_end_state); - break; - } - } - - function comment_end_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_state; - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D /* HYPHEN-MINUS */); - reconsume(c, comment_state); - break; - } - } - - function comment_end_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case 0x0021: // EXCLAMATION MARK - tokenizer = comment_end_bang_state; - break; - case 0x002D: // HYPHEN-MINUS - commentbuf.push(0x002D); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */ - default: - commentbuf.push(0x002D); - commentbuf.push(0x002D); - reconsume(c, comment_state); - break; - } - } - - function comment_end_bang_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - commentbuf.push(0x002D); - commentbuf.push(0x002D); - commentbuf.push(0x0021); - tokenizer = comment_end_dash_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D); - commentbuf.push(0x002D); - commentbuf.push(0x0021); - reconsume(c, comment_state); - break; - } - } - - function doctype_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_name_state; - break; - case -1: // EOF - beginDoctype(); - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - reconsume(c, before_doctype_name_state); - break; - } - } - - function before_doctype_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - beginDoctype(); - doctypenamebuf.push(c + 0x0020); - tokenizer = doctype_name_state; - break; - case 0x0000: // NULL - beginDoctype(); - doctypenamebuf.push(0xFFFD); - tokenizer = doctype_name_state; - break; - case 0x003E: // GREATER-THAN SIGN - beginDoctype(); - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - beginDoctype(); - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - beginDoctype(); - doctypenamebuf.push(c); - tokenizer = doctype_name_state; - break; - } - } - - function doctype_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = after_doctype_name_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - doctypenamebuf.push(c + 0x0020); - break; - case 0x0000: // NULL - doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypenamebuf.push(c); - break; - } - } - - function after_doctype_name_state(c, lookahead, eof) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - nextchar += 1; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - nextchar += 1; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - lookahead = lookahead.toUpperCase(); - if (lookahead === "PUBLIC") { - nextchar += 6; - tokenizer = after_doctype_public_keyword_state; - } - else if (lookahead === "SYSTEM") { - nextchar += 6; - tokenizer = after_doctype_system_keyword_state; - } - else { - forcequirks(); - tokenizer = bogus_doctype_state; - } - break; - } - } - after_doctype_name_state.lookahead = 6; - - function after_doctype_public_keyword_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_public_identifier_state; - break; - case 0x0022: // QUOTATION MARK - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function before_doctype_public_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0022: // QUOTATION MARK - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function doctype_public_identifier_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - tokenizer = after_doctype_public_identifier_state; - break; - case 0x0000: // NULL - doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypepublicbuf.push(c); - break; - } - } - - function doctype_public_identifier_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - tokenizer = after_doctype_public_identifier_state; - break; - case 0x0000: // NULL - doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypepublicbuf.push(c); - break; - } - } - - function after_doctype_public_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = between_doctype_public_and_system_identifiers_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function between_doctype_public_and_system_identifiers_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE Ignore the character. - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function after_doctype_system_keyword_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_system_identifier_state; - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function before_doctype_system_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE Ignore the character. - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function doctype_system_identifier_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - tokenizer = after_doctype_system_identifier_state; - break; - case 0x0000: // NULL - doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypesystembuf.push(c); - break; - } - } - - function doctype_system_identifier_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - tokenizer = after_doctype_system_identifier_state; - break; - case 0x0000: // NULL - doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypesystembuf.push(c); - break; - } - } - - function after_doctype_system_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - tokenizer = bogus_doctype_state; - /* This does *not* set the DOCTYPE token's force-quirks flag. */ - break; - } - } - - function bogus_doctype_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - emitDoctype(); - emitEOF(); - break; - default: - /* Ignore the character. */ - break; - } - } - - function cdata_section_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - tokenizer = cdata_section_bracket_state; - break; - case -1: // EOF - emitEOF(); - break; - case 0x0000: // NULL - textIncludesNUL = true; - /* fall through */ - default: - // Instead of just pushing a single character and then - // coming back to the very same place, lookahead and - // emit everything we can at once. - /*jshint -W030 */ - emitCharsWhile(CDATATEXT) || textrun.push(c); - break; - } - } - - function cdata_section_bracket_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - tokenizer = cdata_section_end_state; - break; - default: - textrun.push(0x005D); - reconsume(c, cdata_section_state); - break; - } - } - - function cdata_section_end_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - textrun.push(0x005D); - break; - case 0x003E: // GREATER-THAN SIGN - flushText(); - tokenizer = data_state; - break; - default: - textrun.push(0x005D); - textrun.push(0x005D); - reconsume(c, cdata_section_state); - break; - } - } - - function character_reference_state(c) { - beginTempBuf(); - tempbuf.push(0x0026); - switch(c) { - case 0x0009: // TAB - case 0x000A: // LINE FEED - case 0x000C: // FORM FEED - case 0x0020: // SPACE - case 0x003C: // LESS-THAN SIGN - case 0x0026: // AMPERSAND - case -1: // EOF - reconsume(c, character_reference_end_state); - break; - case 0x0023: // NUMBER SIGN - tempbuf.push(c); - tokenizer = numeric_character_reference_state; - break; - default: - reconsume(c, named_character_reference_state); - break; - } - } - - function named_character_reference_state(c) { - NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed - var matched = NAMEDCHARREF.exec(chars); - if (!matched) throw new Error("should never happen"); - var name = matched[1]; - if (!name) { - // If no match can be made, switch to the character reference end state - tokenizer = character_reference_end_state; - return; - } - - // Consume the matched characters and append them to temporary buffer - nextchar += name.length; - pushAll(tempbuf, str2buf(name)); - - switch(return_state) { - case attribute_value_double_quoted_state: - case attribute_value_single_quoted_state: - case attribute_value_unquoted_state: - // If the character reference was consumed as part of an attribute... - if (name[name.length-1] !== ';') { // ...and the last char is not ; - if (/[=A-Za-z0-9]/.test(chars[nextchar])) { - tokenizer = character_reference_end_state; - return; - } - } - break; - default: - break; - } - - beginTempBuf(); - var rv = namedCharRefs[name]; - if (typeof rv === 'number') { - tempbuf.push(rv); - } else { - pushAll(tempbuf, rv); - } - tokenizer = character_reference_end_state; - } - // We might need to pause tokenization until we have enough characters - // in the buffer for longest possible character reference. - named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN; - - function numeric_character_reference_state(c) { - character_reference_code = 0; - switch(c) { - case 0x0078: // x - case 0x0058: // X - tempbuf.push(c); - tokenizer = hexadecimal_character_reference_start_state; - break; - default: - reconsume(c, decimal_character_reference_start_state); - break; - } - } - - function hexadecimal_character_reference_start_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045: - case 0x0046: // [A-F] - case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065: - case 0x0066: // [a-f] - reconsume(c, hexadecimal_character_reference_state); - break; - default: - reconsume(c, character_reference_end_state); - break; - } - } - - function decimal_character_reference_start_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - reconsume(c, decimal_character_reference_state); - break; - default: - reconsume(c, character_reference_end_state); - break; - } - } - - function hexadecimal_character_reference_state(c) { - switch(c) { - case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045: - case 0x0046: // [A-F] - character_reference_code *= 16; - character_reference_code += (c - 0x0037); - break; - case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065: - case 0x0066: // [a-f] - character_reference_code *= 16; - character_reference_code += (c - 0x0057); - break; - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - character_reference_code *= 16; - character_reference_code += (c - 0x0030); - break; - case 0x003B: // SEMICOLON - tokenizer = numeric_character_reference_end_state; - break; - default: - reconsume(c, numeric_character_reference_end_state); - break; - } - } - - function decimal_character_reference_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - character_reference_code *= 10; - character_reference_code += (c - 0x0030); - break; - case 0x003B: // SEMICOLON - tokenizer = numeric_character_reference_end_state; - break; - default: - reconsume(c, numeric_character_reference_end_state); - break; - } - } - - function numeric_character_reference_end_state(c) { - if (character_reference_code in numericCharRefReplacements) { - character_reference_code = numericCharRefReplacements[character_reference_code]; - } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) { - character_reference_code = 0xFFFD; - } - - beginTempBuf(); - if (character_reference_code <= 0xFFFF) { - tempbuf.push(character_reference_code); - } else { - character_reference_code = character_reference_code - 0x10000; - /* jshint bitwise: false */ - tempbuf.push(0xD800 + (character_reference_code >> 10)); - tempbuf.push(0xDC00 + (character_reference_code & 0x03FF)); - } - reconsume(c, character_reference_end_state); - } - - function character_reference_end_state(c) { - switch(return_state) { - case attribute_value_double_quoted_state: - case attribute_value_single_quoted_state: - case attribute_value_unquoted_state: - // append each character to the current attribute's value - attrvaluebuf += buf2str(tempbuf); - break; - default: - pushAll(textrun, tempbuf); - break; - } - reconsume(c, return_state); - } - - /*** - * The tree builder insertion modes - */ - - // 11.2.5.4.1 The "initial" insertion mode - function initial_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - var name = value; - var publicid = arg3; - var systemid = arg4; - // Use the constructor directly instead of - // implementation.createDocumentType because the create - // function throws errors on invalid characters, and - // we don't want the parser to throw them. - doc.appendChild(new DocumentType(doc, name, publicid, systemid)); - - // Note that there is no public API for setting quirks mode We can - // do this here because we have access to implementation details - if (force_quirks || - name.toLowerCase() !== "html" || - quirkyPublicIds.test(publicid) || - (systemid && systemid.toLowerCase() === quirkySystemId) || - (systemid === undefined && - conditionallyQuirkyPublicIds.test(publicid))) - doc._quirks = true; - else if (limitedQuirkyPublicIds.test(publicid) || - (systemid !== undefined && - conditionallyQuirkyPublicIds.test(publicid))) - doc._limitedQuirks = true; - parser = before_html_mode; - return; - } - - // tags or non-whitespace text - doc._quirks = true; - parser = before_html_mode; - parser(t,value,arg3,arg4); - } - - // 11.2.5.4.2 The "before html" insertion mode - function before_html_mode(t,value,arg3,arg4) { - var elt; - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 5: // DOCTYPE - /* ignore the token */ - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 2: // TAG - if (value === "html") { - elt = createHTMLElt(doc, value, arg3); - stack.push(elt); - doc.appendChild(elt); - // XXX: handle application cache here - parser = before_head_mode; - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "html": - case "head": - case "body": - case "br": - break; // fall through on these - default: - return; // ignore most end tags - } - } - - // Anything that didn't get handled above is handled like this: - elt = createHTMLElt(doc, "html", null); - stack.push(elt); - doc.appendChild(elt); - // XXX: handle application cache here - parser = before_head_mode; - parser(t,value,arg3,arg4); - } - - // 11.2.5.4.3 The "before head" insertion mode - function before_head_mode(t,value,arg3,arg4) { - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 5: // DOCTYPE - /* ignore the token */ - return; - case 4: // COMMENT - insertComment(value); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t,value,arg3,arg4); - return; - case "head": - var elt = insertHTMLElement(value, arg3); - head_element_pointer = elt; - parser = in_head_mode; - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "html": - case "head": - case "body": - case "br": - break; - default: - return; // ignore most end tags - } - } - - // If not handled explicitly above - before_head_mode(TAG, "head", null); // create a head tag - parser(t, value, arg3, arg4); // then try again with this token - } - - function in_head_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "meta": - // XXX: - // May need to change the encoding based on this tag - /* falls through */ - case "base": - case "basefont": - case "bgsound": - case "link": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "title": - parseRCDATA(value, arg3); - return; - case "noscript": - if (!scripting_enabled) { - insertHTMLElement(value, arg3); - parser = in_head_noscript_mode; - return; - } - // Otherwise, if scripting is enabled... - /* falls through */ - case "noframes": - case "style": - parseRawText(value,arg3); - return; - case "script": - insertElement(function(doc) { - var elt = createHTMLElt(doc, value, arg3); - elt._parser_inserted = true; - elt._force_async = false; - if (fragment) elt._already_started = true; - flushText(); - return elt; - }); - tokenizer = script_data_state; - originalInsertionMode = parser; - parser = text_mode; - return; - case "template": - insertHTMLElement(value, arg3); - afe.insertMarker(); - frameset_ok = false; - parser = in_template_mode; - templateInsertionModes.push(parser); - return; - case "head": - return; // ignore it - } - break; - case 3: // ENDTAG - switch(value) { - case "head": - stack.pop(); - parser = after_head_mode; - return; - case "body": - case "html": - case "br": - break; // handle these at the bottom of the function - case "template": - if (!stack.contains("template")) { - return; - } - stack.generateImpliedEndTags(null, "thorough"); - stack.popTag("template"); - afe.clearToMarker(); - templateInsertionModes.pop(); - resetInsertionMode(); - return; - default: - // ignore any other end tag - return; - } - break; - } - - // If not handled above - in_head_mode(ENDTAG, "head", null); // synthetic - parser(t, value, arg3, arg4); // Then redo this one - } - - // 13.2.5.4.5 The "in head noscript" insertion mode - function in_head_noscript_mode(t, value, arg3, arg4) { - switch(t) { - case 5: // DOCTYPE - return; - case 4: // COMMENT - in_head_mode(t, value); - return; - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - in_head_mode(t, ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; // no more text - break; // Handle non-whitespace below - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "style": - in_head_mode(t, value, arg3); - return; - case "head": - case "noscript": - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "noscript": - stack.pop(); - parser = in_head_mode; - return; - case "br": - break; // goes to the outer default - default: - return; // ignore other end tags - } - break; - } - - // If not handled above - in_head_noscript_mode(ENDTAG, "noscript", null); - parser(t, value, arg3, arg4); - } - - function after_head_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "body": - insertHTMLElement(value, arg3); - frameset_ok = false; - parser = in_body_mode; - return; - case "frameset": - insertHTMLElement(value, arg3); - parser = in_frameset_mode; - return; - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - stack.push(head_element_pointer); - in_head_mode(TAG, value, arg3); - stack.removeElement(head_element_pointer); - return; - case "head": - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "template": - return in_head_mode(t, value, arg3, arg4); - case "body": - case "html": - case "br": - break; - default: - return; // ignore any other end tag - } - break; - } - - after_head_mode(TAG, "body", null); - frameset_ok = true; - parser(t, value, arg3, arg4); - } - - // 13.2.5.4.7 The "in body" insertion mode - function in_body_mode(t,value,arg3,arg4) { - var body, i, node, elt; - switch(t) { - case 1: // TEXT - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - // If any non-space characters - if (frameset_ok && NONWS.test(value)) - frameset_ok = false; - afereconstruct(); - insertText(value); - return; - case 5: // DOCTYPE - return; - case 4: // COMMENT - insertComment(value); - return; - case -1: // EOF - if (templateInsertionModes.length) { - return in_template_mode(t); - } - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - if (stack.contains("template")) { - return; - } - transferAttributes(arg3, stack.elements[0]); - return; - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - in_head_mode(TAG, value, arg3); - return; - case "body": - body = stack.elements[1]; - if (!body || !(body instanceof impl.HTMLBodyElement) || - stack.contains("template")) - return; - frameset_ok = false; - transferAttributes(arg3, body); - return; - case "frameset": - if (!frameset_ok) return; - body = stack.elements[1]; - if (!body || !(body instanceof impl.HTMLBodyElement)) - return; - if (body.parentNode) body.parentNode.removeChild(body); - while(!(stack.top instanceof impl.HTMLHtmlElement)) - stack.pop(); - insertHTMLElement(value, arg3); - parser = in_frameset_mode; - return; - - case "address": - case "article": - case "aside": - case "blockquote": - case "center": - case "details": - case "dialog": - case "dir": - case "div": - case "dl": - case "fieldset": - case "figcaption": - case "figure": - case "footer": - case "header": - case "hgroup": - case "main": - case "nav": - case "ol": - case "p": - case "section": - case "summary": - case "ul": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "menu": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - insertHTMLElement(value, arg3); - return; - - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (stack.top instanceof impl.HTMLHeadingElement) - stack.pop(); - insertHTMLElement(value, arg3); - return; - - case "pre": - case "listing": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - ignore_linefeed = true; - frameset_ok = false; - return; - - case "form": - if (form_element_pointer && !stack.contains("template")) return; - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - elt = insertHTMLElement(value, arg3); - if (!stack.contains("template")) - form_element_pointer = elt; - return; - - case "li": - frameset_ok = false; - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (node instanceof impl.HTMLLIElement) { - in_body_mode(ENDTAG, "li"); - break; - } - if (isA(node, specialSet) && !isA(node, addressdivpSet)) - break; - } - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "dd": - case "dt": - frameset_ok = false; - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (isA(node, dddtSet)) { - in_body_mode(ENDTAG, node.localName); - break; - } - if (isA(node, specialSet) && !isA(node, addressdivpSet)) - break; - } - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "plaintext": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - tokenizer = plaintext_state; - return; - - case "button": - if (stack.inScope("button")) { - in_body_mode(ENDTAG, "button"); - parser(t, value, arg3, arg4); - } - else { - afereconstruct(); - insertHTMLElement(value, arg3); - frameset_ok = false; - } - return; - - case "a": - var activeElement = afe.findElementByTag("a"); - if (activeElement) { - in_body_mode(ENDTAG, value); - afe.remove(activeElement); - stack.removeElement(activeElement); - } - /* falls through */ - case "b": - case "big": - case "code": - case "em": - case "font": - case "i": - case "s": - case "small": - case "strike": - case "strong": - case "tt": - case "u": - afereconstruct(); - afe.push(insertHTMLElement(value,arg3), arg3); - return; - - case "nobr": - afereconstruct(); - - if (stack.inScope(value)) { - in_body_mode(ENDTAG, value); - afereconstruct(); - } - afe.push(insertHTMLElement(value,arg3), arg3); - return; - - case "applet": - case "marquee": - case "object": - afereconstruct(); - insertHTMLElement(value,arg3); - afe.insertMarker(); - frameset_ok = false; - return; - - case "table": - if (!doc._quirks && stack.inButtonScope("p")) { - in_body_mode(ENDTAG, "p"); - } - insertHTMLElement(value,arg3); - frameset_ok = false; - parser = in_table_mode; - return; - - case "area": - case "br": - case "embed": - case "img": - case "keygen": - case "wbr": - afereconstruct(); - insertHTMLElement(value,arg3); - stack.pop(); - frameset_ok = false; - return; - - case "input": - afereconstruct(); - elt = insertHTMLElement(value,arg3); - stack.pop(); - var type = elt.getAttribute("type"); - if (!type || type.toLowerCase() !== "hidden") - frameset_ok = false; - return; - - case "param": - case "source": - case "track": - insertHTMLElement(value,arg3); - stack.pop(); - return; - - case "hr": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - insertHTMLElement(value,arg3); - stack.pop(); - frameset_ok = false; - return; - - case "image": - in_body_mode(TAG, "img", arg3, arg4); - return; - - case "textarea": - insertHTMLElement(value,arg3); - ignore_linefeed = true; - frameset_ok = false; - tokenizer = rcdata_state; - originalInsertionMode = parser; - parser = text_mode; - return; - - case "xmp": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - afereconstruct(); - frameset_ok = false; - parseRawText(value, arg3); - return; - - case "iframe": - frameset_ok = false; - parseRawText(value, arg3); - return; - - case "noembed": - parseRawText(value,arg3); - return; - - case "select": - afereconstruct(); - insertHTMLElement(value,arg3); - frameset_ok = false; - if (parser === in_table_mode || - parser === in_caption_mode || - parser === in_table_body_mode || - parser === in_row_mode || - parser === in_cell_mode) - parser = in_select_in_table_mode; - else - parser = in_select_mode; - return; - - case "optgroup": - case "option": - if (stack.top instanceof impl.HTMLOptionElement) { - in_body_mode(ENDTAG, "option"); - } - afereconstruct(); - insertHTMLElement(value,arg3); - return; - - case "menuitem": - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - afereconstruct(); - insertHTMLElement(value, arg3); - return; - - case "rb": - case "rtc": - if (stack.inScope("ruby")) { - stack.generateImpliedEndTags(); - } - insertHTMLElement(value,arg3); - return; - - case "rp": - case "rt": - if (stack.inScope("ruby")) { - stack.generateImpliedEndTags("rtc"); - } - insertHTMLElement(value,arg3); - return; - - case "math": - afereconstruct(); - adjustMathMLAttributes(arg3); - adjustForeignAttributes(arg3); - insertForeignElement(value, arg3, NAMESPACE.MATHML); - if (arg4) // self-closing flag - stack.pop(); - return; - - case "svg": - afereconstruct(); - adjustSVGAttributes(arg3); - adjustForeignAttributes(arg3); - insertForeignElement(value, arg3, NAMESPACE.SVG); - if (arg4) // self-closing flag - stack.pop(); - return; - - case "caption": - case "col": - case "colgroup": - case "frame": - case "head": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - // Ignore table tags if we're not in_table mode - return; - } - - // Handle any other start tag here - // (and also noscript tags when scripting is disabled) - afereconstruct(); - insertHTMLElement(value,arg3); - return; - - case 3: // ENDTAG - switch(value) { - case "template": - in_head_mode(ENDTAG, value, arg3); - return; - case "body": - if (!stack.inScope("body")) return; - parser = after_body_mode; - return; - case "html": - if (!stack.inScope("body")) return; - parser = after_body_mode; - parser(t, value, arg3); - return; - - case "address": - case "article": - case "aside": - case "blockquote": - case "button": - case "center": - case "details": - case "dialog": - case "dir": - case "div": - case "dl": - case "fieldset": - case "figcaption": - case "figure": - case "footer": - case "header": - case "hgroup": - case "listing": - case "main": - case "menu": - case "nav": - case "ol": - case "pre": - case "section": - case "summary": - case "ul": - // Ignore if there is not a matching open tag - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - return; - - case "form": - if (!stack.contains("template")) { - var openform = form_element_pointer; - form_element_pointer = null; - if (!openform || !stack.elementInScope(openform)) return; - stack.generateImpliedEndTags(); - stack.removeElement(openform); - } else { - if (!stack.inScope("form")) return; - stack.generateImpliedEndTags(); - stack.popTag("form"); - } - return; - - case "p": - if (!stack.inButtonScope(value)) { - in_body_mode(TAG, value, null); - parser(t, value, arg3, arg4); - } - else { - stack.generateImpliedEndTags(value); - stack.popTag(value); - } - return; - - case "li": - if (!stack.inListItemScope(value)) return; - stack.generateImpliedEndTags(value); - stack.popTag(value); - return; - - case "dd": - case "dt": - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(value); - stack.popTag(value); - return; - - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return; - stack.generateImpliedEndTags(); - stack.popElementType(impl.HTMLHeadingElement); - return; - - case "sarcasm": - // Take a deep breath, and then: - break; - - case "a": - case "b": - case "big": - case "code": - case "em": - case "font": - case "i": - case "nobr": - case "s": - case "small": - case "strike": - case "strong": - case "tt": - case "u": - var result = adoptionAgency(value); - if (result) return; // If we did something we're done - break; // Go to the "any other end tag" case - - case "applet": - case "marquee": - case "object": - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - afe.clearToMarker(); - return; - - case "br": - in_body_mode(TAG, value, null); // Turn
into
- return; - } - - // Any other end tag goes here - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (isA(node, value)) { - stack.generateImpliedEndTags(value); - stack.popElement(node); - break; - } - else if (isA(node, specialSet)) { - return; - } - } - - return; - } - } - - function text_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - insertText(value); - return; - case -1: // EOF - if (stack.top instanceof impl.HTMLScriptElement) - stack.top._already_started = true; - stack.pop(); - parser = originalInsertionMode; - parser(t); - return; - case 3: // ENDTAG - if (value === "script") { - handleScriptEnd(); - } - else { - stack.pop(); - parser = originalInsertionMode; - } - return; - default: - // We should never get any other token types - return; - } - } - - function in_table_mode(t, value, arg3, arg4) { - function getTypeAttr(attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - if (attrs[i][0] === "type") - return attrs[i][1].toLowerCase(); - } - return null; - } - - switch(t) { - case 1: // TEXT - // XXX the text_integration_mode stuff is - // just a hack I made up - if (text_integration_mode) { - in_body_mode(t, value, arg3, arg4); - return; - } - else if (isA(stack.top, tablesectionrowSet)) { - pending_table_text = []; - originalInsertionMode = parser; - parser = in_table_text_mode; - parser(t, value, arg3, arg4); - return; - } - break; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "caption": - stack.clearToContext(tableContextSet); - afe.insertMarker(); - insertHTMLElement(value,arg3); - parser = in_caption_mode; - return; - case "colgroup": - stack.clearToContext(tableContextSet); - insertHTMLElement(value,arg3); - parser = in_column_group_mode; - return; - case "col": - in_table_mode(TAG, "colgroup", null); - parser(t, value, arg3, arg4); - return; - case "tbody": - case "tfoot": - case "thead": - stack.clearToContext(tableContextSet); - insertHTMLElement(value,arg3); - parser = in_table_body_mode; - return; - case "td": - case "th": - case "tr": - in_table_mode(TAG, "tbody", null); - parser(t, value, arg3, arg4); - return; - - case "table": - if (!stack.inTableScope(value)) { - return; // Ignore the token - } - in_table_mode(ENDTAG, value); - parser(t, value, arg3, arg4); - return; - - case "style": - case "script": - case "template": - in_head_mode(t, value, arg3, arg4); - return; - - case "input": - var type = getTypeAttr(arg3); - if (type !== "hidden") break; // to the anything else case - insertHTMLElement(value,arg3); - stack.pop(); - return; - - case "form": - if (form_element_pointer || stack.contains("template")) return; - form_element_pointer = insertHTMLElement(value, arg3); - stack.popElement(form_element_pointer); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "table": - if (!stack.inTableScope(value)) return; - stack.popTag(value); - resetInsertionMode(); - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - - break; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - } - - // This is the anything else case - foster_parent_mode = true; - in_body_mode(t, value, arg3, arg4); - foster_parent_mode = false; - } - - function in_table_text_mode(t, value, arg3, arg4) { - if (t === TEXT) { - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - pending_table_text.push(value); - } - else { - var s = pending_table_text.join(""); - pending_table_text.length = 0; - if (NONWS.test(s)) { // If any non-whitespace characters - // This must be the same code as the "anything else" - // case of the in_table mode above. - foster_parent_mode = true; - in_body_mode(TEXT, s); - foster_parent_mode = false; - } - else { - insertText(s); - } - parser = originalInsertionMode; - parser(t, value, arg3, arg4); - } - } - - - function in_caption_mode(t, value, arg3, arg4) { - function end_caption() { - if (!stack.inTableScope("caption")) return false; - stack.generateImpliedEndTags(); - stack.popTag("caption"); - afe.clearToMarker(); - parser = in_table_mode; - return true; - } - - switch(t) { - case 2: // TAG - switch(value) { - case "caption": - case "col": - case "colgroup": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - if (end_caption()) parser(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "caption": - end_caption(); - return; - case "table": - if (end_caption()) parser(t, value, arg3, arg4); - return; - case "body": - case "col": - case "colgroup": - case "html": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - return; - } - break; - } - - // The Anything Else case - in_body_mode(t, value, arg3, arg4); - } - - function in_column_group_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "col": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "colgroup": - if (!isA(stack.top, 'colgroup')) { - return; // Ignore the token. - } - stack.pop(); - parser = in_table_mode; - return; - case "col": - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - } - - // Anything else - if (!isA(stack.top, 'colgroup')) { - return; // Ignore the token. - } - in_column_group_mode(ENDTAG, "colgroup"); - parser(t, value, arg3, arg4); - } - - function in_table_body_mode(t, value, arg3, arg4) { - function endsect() { - if (!stack.inTableScope("tbody") && - !stack.inTableScope("thead") && - !stack.inTableScope("tfoot")) - return; - stack.clearToContext(tableBodyContextSet); - in_table_body_mode(ENDTAG, stack.top.localName, null); - parser(t, value, arg3, arg4); - } - - switch(t) { - case 2: // TAG - switch(value) { - case "tr": - stack.clearToContext(tableBodyContextSet); - insertHTMLElement(value, arg3); - parser = in_row_mode; - return; - case "th": - case "td": - in_table_body_mode(TAG, "tr", null); - parser(t, value, arg3, arg4); - return; - case "caption": - case "col": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - endsect(); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "table": - endsect(); - return; - case "tbody": - case "tfoot": - case "thead": - if (stack.inTableScope(value)) { - stack.clearToContext(tableBodyContextSet); - stack.pop(); - parser = in_table_mode; - } - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "td": - case "th": - case "tr": - return; - } - break; - } - - // Anything else: - in_table_mode(t, value, arg3, arg4); - } - - function in_row_mode(t, value, arg3, arg4) { - function endrow() { - if (!stack.inTableScope("tr")) return false; - stack.clearToContext(tableRowContextSet); - stack.pop(); - parser = in_table_body_mode; - return true; - } - - switch(t) { - case 2: // TAG - switch(value) { - case "th": - case "td": - stack.clearToContext(tableRowContextSet); - insertHTMLElement(value, arg3); - parser = in_cell_mode; - afe.insertMarker(); - return; - case "caption": - case "col": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - case "tr": - if (endrow()) parser(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "tr": - endrow(); - return; - case "table": - if (endrow()) parser(t, value, arg3, arg4); - return; - case "tbody": - case "tfoot": - case "thead": - if (stack.inTableScope(value)) { - if (endrow()) parser(t, value, arg3, arg4); - } - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "td": - case "th": - return; - } - break; - } - - // anything else - in_table_mode(t, value, arg3, arg4); - } - - function in_cell_mode(t, value, arg3, arg4) { - switch(t) { - case 2: // TAG - switch(value) { - case "caption": - case "col": - case "colgroup": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - if (stack.inTableScope("td")) { - in_cell_mode(ENDTAG, "td"); - parser(t, value, arg3, arg4); - } - else if (stack.inTableScope("th")) { - in_cell_mode(ENDTAG, "th"); - parser(t, value, arg3, arg4); - } - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "td": - case "th": - if (!stack.inTableScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - afe.clearToMarker(); - parser = in_row_mode; - return; - - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - return; - - case "table": - case "tbody": - case "tfoot": - case "thead": - case "tr": - if (!stack.inTableScope(value)) return; - in_cell_mode(ENDTAG, stack.inTableScope("td") ? "td" : "th"); - parser(t, value, arg3, arg4); - return; - } - break; - } - - // anything else - in_body_mode(t, value, arg3, arg4); - } - - function in_select_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "option": - if (stack.top instanceof impl.HTMLOptionElement) - in_select_mode(ENDTAG, value); - insertHTMLElement(value, arg3); - return; - case "optgroup": - if (stack.top instanceof impl.HTMLOptionElement) - in_select_mode(ENDTAG, "option"); - if (stack.top instanceof impl.HTMLOptGroupElement) - in_select_mode(ENDTAG, value); - insertHTMLElement(value, arg3); - return; - case "select": - in_select_mode(ENDTAG, value); // treat it as a close tag - return; - - case "input": - case "keygen": - case "textarea": - if (!stack.inSelectScope("select")) return; - in_select_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - return; - - case "script": - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "optgroup": - if (stack.top instanceof impl.HTMLOptionElement && - stack.elements[stack.elements.length-2] instanceof - impl.HTMLOptGroupElement) { - in_select_mode(ENDTAG, "option"); - } - if (stack.top instanceof impl.HTMLOptGroupElement) - stack.pop(); - - return; - - case "option": - if (stack.top instanceof impl.HTMLOptionElement) - stack.pop(); - return; - - case "select": - if (!stack.inSelectScope(value)) return; - stack.popTag(value); - resetInsertionMode(); - return; - - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - - break; - } - - // anything else: just ignore the token - } - - function in_select_in_table_mode(t, value, arg3, arg4) { - switch(value) { - case "caption": - case "table": - case "tbody": - case "tfoot": - case "thead": - case "tr": - case "td": - case "th": - switch(t) { - case 2: // TAG - in_select_in_table_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - return; - case 3: // ENDTAG - if (stack.inTableScope(value)) { - in_select_in_table_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - } - return; - } - } - - // anything else - in_select_mode(t, value, arg3, arg4); - } - - function in_template_mode(t, value, arg3, arg4) { - function switchModeAndReprocess(mode) { - parser = mode; - templateInsertionModes[templateInsertionModes.length-1] = parser; - parser(t, value, arg3, arg4); - } - switch(t) { - case 1: // TEXT - case 4: // COMMENT - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - if (!stack.contains("template")) { - stopParsing(); - } else { - stack.popTag("template"); - afe.clearToMarker(); - templateInsertionModes.pop(); - resetInsertionMode(); - parser(t, value, arg3, arg4); - } - return; - case 2: // TAG - switch(value) { - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - in_head_mode(t, value, arg3, arg4); - return; - case "caption": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - switchModeAndReprocess(in_table_mode); - return; - case "col": - switchModeAndReprocess(in_column_group_mode); - return; - case "tr": - switchModeAndReprocess(in_table_body_mode); - return; - case "td": - case "th": - switchModeAndReprocess(in_row_mode); - return; - } - switchModeAndReprocess(in_body_mode); - return; - case 3: // ENDTAG - switch(value) { - case "template": - in_head_mode(t, value, arg3, arg4); - return; - default: - return; - } - } - } - - function after_body_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // If any non-space chars, handle below - if (NONWS.test(value)) break; - in_body_mode(t, value); - return; - case 4: // COMMENT - // Append it to the element - stack.elements[0]._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - if (value === "html") { - in_body_mode(t, value, arg3, arg4); - return; - } - break; // for any other tags - case 3: // ENDTAG - if (value === "html") { - if (fragment) return; - parser = after_after_body_mode; - return; - } - break; // for any other tags - } - - // anything else - parser = in_body_mode; - parser(t, value, arg3, arg4); - } - - function in_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "frameset": - insertHTMLElement(value, arg3); - return; - case "frame": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - if (value === "frameset") { - if (fragment && stack.top instanceof impl.HTMLHtmlElement) - return; - stack.pop(); - if (!fragment && - !(stack.top instanceof impl.HTMLFrameSetElement)) - parser = after_frameset_mode; - return; - } - break; - } - - // ignore anything else - } - - function after_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - if (value === "html") { - parser = after_after_frameset_mode; - return; - } - break; - } - - // ignore anything else - } - - function after_after_body_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // If any non-space chars, handle below - if (NONWS.test(value)) break; - in_body_mode(t, value, arg3, arg4); - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - if (value === "html") { - in_body_mode(t, value, arg3, arg4); - return; - } - break; - } - - // anything else - parser = in_body_mode; - parser(t, value, arg3, arg4); - } - - function after_after_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) - in_body_mode(t, value, arg3, arg4); - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - } - - // ignore anything else - } - - - // 13.2.5.5 The rules for parsing tokens in foreign content - // - // This is like one of the insertion modes above, but is - // invoked somewhat differently when the current token is not HTML. - // See the insertToken() function. - function insertForeignToken(t, value, arg3, arg4) { - // A tag is an HTML font tag if it has a color, font, or size - // attribute. Otherwise we assume it is foreign content - function isHTMLFont(attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - switch(attrs[i][0]) { - case "color": - case "face": - case "size": - return true; - } - } - return false; - } - - var current; - - switch(t) { - case 1: // TEXT - // If any non-space, non-nul characters - if (frameset_ok && NONWSNONNUL.test(value)) - frameset_ok = false; - if (textIncludesNUL) { - value = value.replace(NULCHARS, "\uFFFD"); - } - insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - // ignore it - return; - case 2: // TAG - switch(value) { - case "font": - if (!isHTMLFont(arg3)) break; - /* falls through */ - case "b": - case "big": - case "blockquote": - case "body": - case "br": - case "center": - case "code": - case "dd": - case "div": - case "dl": - case "dt": - case "em": - case "embed": - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - case "head": - case "hr": - case "i": - case "img": - case "li": - case "listing": - case "menu": - case "meta": - case "nobr": - case "ol": - case "p": - case "pre": - case "ruby": - case "s": - case "small": - case "span": - case "strong": - case "strike": - case "sub": - case "sup": - case "table": - case "tt": - case "u": - case "ul": - case "var": - if (fragment) { - break; - } - do { - stack.pop(); - current = stack.top; - } while(current.namespaceURI !== NAMESPACE.HTML && - !isMathmlTextIntegrationPoint(current) && - !isHTMLIntegrationPoint(current)); - - insertToken(t, value, arg3, arg4); // reprocess - return; - } - - // Any other start tag case goes here - current = (stack.elements.length===1 && fragment) ? fragmentContext : - stack.top; - if (current.namespaceURI === NAMESPACE.MATHML) { - adjustMathMLAttributes(arg3); - } - else if (current.namespaceURI === NAMESPACE.SVG) { - value = adjustSVGTagName(value); - adjustSVGAttributes(arg3); - } - adjustForeignAttributes(arg3); - - insertForeignElement(value, arg3, current.namespaceURI); - if (arg4) { // the self-closing flag - if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) { - // XXX deal with SVG scripts here - } - stack.pop(); - } - return; - - case 3: // ENDTAG - current = stack.top; - if (value === "script" && - current.namespaceURI === NAMESPACE.SVG && - current.localName === "script") { - - stack.pop(); - - // XXX - // Deal with SVG scripts here - } - else { - // The any other end tag case - var i = stack.elements.length-1; - var node = stack.elements[i]; - for(;;) { - if (node.localName.toLowerCase() === value) { - stack.popElement(node); - break; - } - node = stack.elements[--i]; - // If non-html, keep looping - if (node.namespaceURI !== NAMESPACE.HTML) - continue; - // Otherwise process the end tag as html - parser(t, value, arg3, arg4); - break; - } - } - return; - } - } - - /*** - * Finally, this is the end of the HTMLParser() factory function. - * It returns the htmlparser object with the append() and end() methods. - */ - - // Sneak another method into the htmlparser object to allow us to run - // tokenizer tests. This can be commented out in production code. - // This is a hook for testing the tokenizer. It has to be here - // because the tokenizer details are all hidden away within the closure. - // It should return an array of tokens generated while parsing the - // input string. - htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) { - var tokens = []; - - switch(initialState) { - case "PCDATA state": - tokenizer = data_state; - break; - case "RCDATA state": - tokenizer = rcdata_state; - break; - case "RAWTEXT state": - tokenizer = rawtext_state; - break; - case "PLAINTEXT state": - tokenizer = plaintext_state; - break; - } - - if (lastStartTag) { - lasttagname = lastStartTag; - } - - insertToken = function(t, value, arg3, arg4) { - flushText(); - switch(t) { - case 1: // TEXT - if (tokens.length > 0 && - tokens[tokens.length-1][0] === "Character") { - tokens[tokens.length-1][1] += value; - } - else tokens.push(["Character", value]); - break; - case 4: // COMMENT - tokens.push(["Comment", value]); - break; - case 5: // DOCTYPE - tokens.push(["DOCTYPE", value, - arg3 === undefined ? null : arg3, - arg4 === undefined ? null : arg4, - !force_quirks]); - break; - case 2: // TAG - var attrs = Object.create(null); - for(var i = 0; i < arg3.length; i++) { - // XXX: does attribute order matter? - var a = arg3[i]; - if (a.length === 1) { - attrs[a[0]] = ""; - } - else { - attrs[a[0]] = a[1]; - } - } - var token = ["StartTag", value, attrs]; - if (arg4) token.push(true); - tokens.push(token); - break; - case 3: // ENDTAG - tokens.push(["EndTag", value]); - break; - case -1: // EOF - break; - } - }; - - if (!charbychar) { - this.parse(input, true); - } - else { - for(var i = 0; i < input.length; i++) { - this.parse(input[i]); - } - this.parse("", true); - } - return tokens; - }; - - // Return the parser object from the HTMLParser() factory function - return htmlparser; -} - - -/***/ }), - -/***/ 8161: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Leaf; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var utils = __webpack_require__(89076); -var HierarchyRequestError = utils.HierarchyRequestError; -var NotFoundError = utils.NotFoundError; - -// This class defines common functionality for node subtypes that -// can never have children -function Leaf() { - Node.call(this); -} - -Leaf.prototype = Object.create(Node.prototype, { - hasChildNodes: { value: function() { return false; }}, - firstChild: { value: null }, - lastChild: { value: null }, - insertBefore: { value: function(node, child) { - if (!node.nodeType) throw new TypeError('not a node'); - HierarchyRequestError(); - }}, - replaceChild: { value: function(node, child) { - if (!node.nodeType) throw new TypeError('not a node'); - HierarchyRequestError(); - }}, - removeChild: { value: function(node) { - if (!node.nodeType) throw new TypeError('not a node'); - NotFoundError(); - }}, - removeChildren: { value: function() { /* no op */ }}, - childNodes: { get: function() { - if (!this._childNodes) this._childNodes = new NodeList(); - return this._childNodes; - }} -}); - - -/***/ }), - -/***/ 41360: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -var LinkedList = module.exports = { - // basic validity tests on a circular linked list a - valid: function(a) { - utils.assert(a, "list falsy"); - utils.assert(a._previousSibling, "previous falsy"); - utils.assert(a._nextSibling, "next falsy"); - // xxx check that list is actually circular - return true; - }, - // insert a before b - insertBefore: function(a, b) { - utils.assert(LinkedList.valid(a) && LinkedList.valid(b)); - var a_first = a, a_last = a._previousSibling; - var b_first = b, b_last = b._previousSibling; - a_first._previousSibling = b_last; - a_last._nextSibling = b_first; - b_last._nextSibling = a_first; - b_first._previousSibling = a_last; - utils.assert(LinkedList.valid(a) && LinkedList.valid(b)); - }, - // replace a single node a with a list b (which could be null) - replace: function(a, b) { - utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b))); - if (b!==null) { - LinkedList.insertBefore(b, a); - } - LinkedList.remove(a); - utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b))); - }, - // remove single node a from its list - remove: function(a) { - utils.assert(LinkedList.valid(a)); - var prev = a._previousSibling; - if (prev === a) { return; } - var next = a._nextSibling; - prev._nextSibling = next; - next._previousSibling = prev; - a._previousSibling = a._nextSibling = a; - utils.assert(LinkedList.valid(a)); - } -}; - - -/***/ }), - -/***/ 63738: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var URL = __webpack_require__(85184); -var URLUtils = __webpack_require__(65531); - -module.exports = Location; - -function Location(window, href) { - this._window = window; - this._href = href; -} - -Location.prototype = Object.create(URLUtils.prototype, { - constructor: { value: Location }, - - // Special behavior when href is set - href: { - get: function() { return this._href; }, - set: function(v) { this.assign(v); } - }, - - assign: { value: function(url) { - // Resolve the new url against the current one - // XXX: - // This is not actually correct. It should be resolved against - // the URL of the document of the script. For now, though, I only - // support a single window and there is only one base url. - // So this is good enough for now. - var current = new URL(this._href); - var newurl = current.resolve(url); - - // Save the new url - this._href = newurl; - - // Start loading the new document! - // XXX - // This is just something hacked together. - // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate - }}, - - replace: { value: function(url) { - // XXX - // Since we aren't tracking history yet, replace is the same as assign - this.assign(url); - }}, - - reload: { value: function() { - // XXX: - // Actually, the spec is a lot more complicated than this - this.assign(this.href); - }}, - - toString: { value: function() { - return this.href; - }} - -}); - - -/***/ }), - -/***/ 21440: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var UIEvent = __webpack_require__(64259); - -module.exports = MouseEvent; - -function MouseEvent() { - // Just use the superclass constructor to initialize - UIEvent.call(this); - - this.screenX = this.screenY = this.clientX = this.clientY = 0; - this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false; - this.button = 0; - this.buttons = 1; - this.relatedTarget = null; -} -MouseEvent.prototype = Object.create(UIEvent.prototype, { - constructor: { value: MouseEvent }, - initMouseEvent: { value: function(type, bubbles, cancelable, - view, detail, - screenX, screenY, clientX, clientY, - ctrlKey, altKey, shiftKey, metaKey, - button, relatedTarget) { - - this.initEvent(type, bubbles, cancelable, view, detail); - this.screenX = screenX; - this.screenY = screenY; - this.clientX = clientX; - this.clientY = clientY; - this.ctrlKey = ctrlKey; - this.altKey = altKey; - this.shiftKey = shiftKey; - this.metaKey = metaKey; - this.button = button; - switch(button) { - case 0: this.buttons = 1; break; - case 1: this.buttons = 4; break; - case 2: this.buttons = 2; break; - default: this.buttons = 0; break; - } - this.relatedTarget = relatedTarget; - }}, - - getModifierState: { value: function(key) { - switch(key) { - case "Alt": return this.altKey; - case "Control": return this.ctrlKey; - case "Shift": return this.shiftKey; - case "Meta": return this.metaKey; - default: return false; - } - }} -}); - - -/***/ }), - -/***/ 40993: -/***/ ((module) => { - -"use strict"; - -module.exports = { - VALUE: 1, // The value of a Text, Comment or PI node changed - ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed - REMOVE_ATTR: 3, // An attribute was removed - REMOVE: 4, // A node was removed - MOVE: 5, // A node was moved - INSERT: 6 // A node (or a subtree of nodes) was inserted -}; - -/***/ }), - -/***/ 49492: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = NamedNodeMap; - -var utils = __webpack_require__(89076); - -/* This is a hacky implementation of NamedNodeMap, intended primarily to - * satisfy clients (like dompurify and the web-platform-tests) which check - * to ensure that Node#attributes instanceof NamedNodeMap. */ - -function NamedNodeMap(element) { - this.element = element; -} -Object.defineProperties(NamedNodeMap.prototype, { - length: { get: utils.shouldOverride }, - item: { value: utils.shouldOverride }, - - getNamedItem: { value: function getNamedItem(qualifiedName) { - return this.element.getAttributeNode(qualifiedName); - } }, - getNamedItemNS: { value: function getNamedItemNS(namespace, localName) { - return this.element.getAttributeNodeNS(namespace, localName); - } }, - setNamedItem: { value: utils.nyi }, - setNamedItemNS: { value: utils.nyi }, - removeNamedItem: { value: function removeNamedItem(qualifiedName) { - var attr = this.element.getAttributeNode(qualifiedName); - if (attr) { - this.element.removeAttribute(qualifiedName); - return attr; - } - utils.NotFoundError(); - } }, - removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) { - var attr = this.element.getAttributeNodeNS(ns, lname); - if (attr) { - this.element.removeAttributeNS(ns, lname); - return attr; - } - utils.NotFoundError(); - } }, -}); - - -/***/ }), - -/***/ 94993: -/***/ ((module) => { - -"use strict"; - - -// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid -var NavigatorID = Object.create(null, { - appCodeName: { value: "Mozilla" }, - appName: { value: "Netscape" }, - appVersion: { value: "4.0" }, - platform: { value: "" }, - product: { value: "Gecko" }, - productSub: { value: "20100101" }, - userAgent: { value: "" }, - vendor: { value: "" }, - vendorSub: { value: "" }, - taintEnabled: { value: function() { return false; } } -}); - -module.exports = NavigatorID; - - -/***/ }), - -/***/ 97537: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Node; - -var EventTarget = __webpack_require__(22356); -var LinkedList = __webpack_require__(41360); -var NodeUtils = __webpack_require__(41608); -var utils = __webpack_require__(89076); - -// All nodes have a nodeType and an ownerDocument. -// Once inserted, they also have a parentNode. -// This is an abstract class; all nodes in a document are instances -// of a subtype, so all the properties are defined by more specific -// constructors. -function Node() { - EventTarget.call(this); - this.parentNode = null; - this._nextSibling = this._previousSibling = this; - this._index = undefined; -} - -var ELEMENT_NODE = Node.ELEMENT_NODE = 1; -var ATTRIBUTE_NODE = Node.ATTRIBUTE_NODE = 2; -var TEXT_NODE = Node.TEXT_NODE = 3; -var CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE = 4; -var ENTITY_REFERENCE_NODE = Node.ENTITY_REFERENCE_NODE = 5; -var ENTITY_NODE = Node.ENTITY_NODE = 6; -var PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7; -var COMMENT_NODE = Node.COMMENT_NODE = 8; -var DOCUMENT_NODE = Node.DOCUMENT_NODE = 9; -var DOCUMENT_TYPE_NODE = Node.DOCUMENT_TYPE_NODE = 10; -var DOCUMENT_FRAGMENT_NODE = Node.DOCUMENT_FRAGMENT_NODE = 11; -var NOTATION_NODE = Node.NOTATION_NODE = 12; - -var DOCUMENT_POSITION_DISCONNECTED = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01; -var DOCUMENT_POSITION_PRECEDING = Node.DOCUMENT_POSITION_PRECEDING = 0x02; -var DOCUMENT_POSITION_FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING = 0x04; -var DOCUMENT_POSITION_CONTAINS = Node.DOCUMENT_POSITION_CONTAINS = 0x08; -var DOCUMENT_POSITION_CONTAINED_BY = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10; -var DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; - -Node.prototype = Object.create(EventTarget.prototype, { - - // Node that are not inserted into the tree inherit a null parent - - // XXX: the baseURI attribute is defined by dom core, but - // a correct implementation of it requires HTML features, so - // we'll come back to this later. - baseURI: { get: utils.nyi }, - - parentElement: { get: function() { - return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null; - }}, - - hasChildNodes: { value: utils.shouldOverride }, - - firstChild: { get: utils.shouldOverride }, - - lastChild: { get: utils.shouldOverride }, - - isConnected: { - get: function () { - let node = this; - while (node != null) { - if (node.nodeType === Node.DOCUMENT_NODE) { - return true; - } - - node = node.parentNode; - if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - node = node.host; - } - } - return false; - }, - }, - - previousSibling: { get: function() { - var parent = this.parentNode; - if (!parent) return null; - if (this === parent.firstChild) return null; - return this._previousSibling; - }}, - - nextSibling: { get: function() { - var parent = this.parentNode, next = this._nextSibling; - if (!parent) return null; - if (next === parent.firstChild) return null; - return next; - }}, - - textContent: { - // Should override for DocumentFragment/Element/Attr/Text/PI/Comment - get: function() { return null; }, - set: function(v) { /* do nothing */ }, - }, - - innerText: { - // Should override for DocumentFragment/Element/Attr/Text/PI/Comment - get: function() { return null; }, - set: function(v) { /* do nothing */ }, - }, - - _countChildrenOfType: { value: function(type) { - var sum = 0; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === type) sum++; - } - return sum; - }}, - - _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) { - var parent = this, i, kid; - if (!node.nodeType) throw new TypeError('not a node'); - // 1. If parent is not a Document, DocumentFragment, or Element - // node, throw a HierarchyRequestError. - switch (parent.nodeType) { - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - case ELEMENT_NODE: - break; - default: utils.HierarchyRequestError(); - } - // 2. If node is a host-including inclusive ancestor of parent, - // throw a HierarchyRequestError. - if (node.isAncestor(parent)) utils.HierarchyRequestError(); - // 3. If child is not null and its parent is not parent, then - // throw a NotFoundError. (replaceChild omits the 'child is not null' - // and throws a TypeError here if child is null.) - if (child !== null || !isPreinsert) { - if (child.parentNode !== parent) utils.NotFoundError(); - } - // 4. If node is not a DocumentFragment, DocumentType, Element, - // Text, ProcessingInstruction, or Comment node, throw a - // HierarchyRequestError. - switch (node.nodeType) { - case DOCUMENT_FRAGMENT_NODE: - case DOCUMENT_TYPE_NODE: - case ELEMENT_NODE: - case TEXT_NODE: - case PROCESSING_INSTRUCTION_NODE: - case COMMENT_NODE: - break; - default: utils.HierarchyRequestError(); - } - // 5. If either node is a Text node and parent is a document, or - // node is a doctype and parent is not a document, throw a - // HierarchyRequestError. - // 6. If parent is a document, and any of the statements below, switched - // on node, are true, throw a HierarchyRequestError. - if (parent.nodeType === DOCUMENT_NODE) { - switch (node.nodeType) { - case TEXT_NODE: - utils.HierarchyRequestError(); - break; - case DOCUMENT_FRAGMENT_NODE: - // 6a1. If node has more than one element child or has a Text - // node child. - if (node._countChildrenOfType(TEXT_NODE) > 0) - utils.HierarchyRequestError(); - switch (node._countChildrenOfType(ELEMENT_NODE)) { - case 0: - break; - case 1: - // 6a2. Otherwise, if node has one element child and either - // parent has an element child, child is a doctype, or child - // is not null and a doctype is following child. [preinsert] - // 6a2. Otherwise, if node has one element child and either - // parent has an element child that is not child or a - // doctype is following child. [replaceWith] - if (child !== null /* always true here for replaceWith */) { - if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(ELEMENT_NODE); - if (isPreinsert) { - // "parent has an element child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an element child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE)) - utils.HierarchyRequestError(); - } - break; - default: // 6a1, continued. (more than one Element child) - utils.HierarchyRequestError(); - } - break; - case ELEMENT_NODE: - // 6b. parent has an element child, child is a doctype, or - // child is not null and a doctype is following child. [preinsert] - // 6b. parent has an element child that is not child or a - // doctype is following child. [replaceWith] - if (child !== null /* always true here for replaceWith */) { - if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(ELEMENT_NODE); - if (isPreinsert) { - // "parent has an element child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an element child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE)) - utils.HierarchyRequestError(); - } - break; - case DOCUMENT_TYPE_NODE: - // 6c. parent has a doctype child, child is non-null and an - // element is preceding child, or child is null and parent has - // an element child. [preinsert] - // 6c. parent has a doctype child that is not child, or an - // element is preceding child. [replaceWith] - if (child === null) { - if (parent._countChildrenOfType(ELEMENT_NODE)) - utils.HierarchyRequestError(); - } else { - // child is always non-null for [replaceWith] case - for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid === child) break; - if (kid.nodeType === ELEMENT_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE); - if (isPreinsert) { - // "parent has an doctype child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an doctype child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE)) - utils.HierarchyRequestError(); - } - break; - } - } else { - // 5, continued: (parent is not a document) - if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError(); - } - }}, - - insertBefore: { value: function insertBefore(node, child) { - var parent = this; - // 1. Ensure pre-insertion validity - parent._ensureInsertValid(node, child, true); - // 2. Let reference child be child. - var refChild = child; - // 3. If reference child is node, set it to node's next sibling - if (refChild === node) { refChild = node.nextSibling; } - // 4. Adopt node into parent's node document. - parent.doc.adoptNode(node); - // 5. Insert node into parent before reference child. - node._insertOrReplace(parent, refChild, false); - // 6. Return node - return node; - }}, - - - appendChild: { value: function(child) { - // This invokes _appendChild after doing validity checks. - return this.insertBefore(child, null); - }}, - - _appendChild: { value: function(child) { - child._insertOrReplace(this, null, false); - }}, - - removeChild: { value: function removeChild(child) { - var parent = this; - if (!child.nodeType) throw new TypeError('not a node'); - if (child.parentNode !== parent) utils.NotFoundError(); - child.remove(); - return child; - }}, - - // To replace a `child` with `node` within a `parent` (this) - replaceChild: { value: function replaceChild(node, child) { - var parent = this; - // Ensure validity (slight differences from pre-insertion check) - parent._ensureInsertValid(node, child, false); - // Adopt node into parent's node document. - if (node.doc !== parent.doc) { - // XXX adoptNode has side-effect of removing node from its parent - // and generating a mutation event, thus causing the _insertOrReplace - // to generate two deletes and an insert instead of a 'move' - // event. It looks like the new MutationObserver stuff avoids - // this problem, but for now let's only adopt (ie, remove `node` - // from its parent) here if we need to. - parent.doc.adoptNode(node); - } - // Do the replace. - node._insertOrReplace(parent, child, true); - return child; - }}, - - // See: http://ejohn.org/blog/comparing-document-position/ - contains: { value: function contains(node) { - if (node === null) { return false; } - if (this === node) { return true; /* inclusive descendant */ } - /* jshint bitwise: false */ - return (this.compareDocumentPosition(node) & - DOCUMENT_POSITION_CONTAINED_BY) !== 0; - }}, - - compareDocumentPosition: { value: function compareDocumentPosition(that){ - // Basic algorithm for finding the relative position of two nodes. - // Make a list the ancestors of each node, starting with the - // document element and proceeding down to the nodes themselves. - // Then, loop through the lists, looking for the first element - // that differs. The order of those two elements give the - // order of their descendant nodes. Or, if one list is a prefix - // of the other one, then that node contains the other. - - if (this === that) return 0; - - // If they're not owned by the same document or if one is rooted - // and one is not, then they're disconnected. - if (this.doc !== that.doc || - this.rooted !== that.rooted) - return (DOCUMENT_POSITION_DISCONNECTED + - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC); - - // Get arrays of ancestors for this and that - var these = [], those = []; - for(var n = this; n !== null; n = n.parentNode) these.push(n); - for(n = that; n !== null; n = n.parentNode) those.push(n); - these.reverse(); // So we start with the outermost - those.reverse(); - - if (these[0] !== those[0]) // No common ancestor - return (DOCUMENT_POSITION_DISCONNECTED + - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC); - - n = Math.min(these.length, those.length); - for(var i = 1; i < n; i++) { - if (these[i] !== those[i]) { - // We found two different ancestors, so compare - // their positions - if (these[i].index < those[i].index) - return DOCUMENT_POSITION_FOLLOWING; - else - return DOCUMENT_POSITION_PRECEDING; - } - } - - // If we get to here, then one of the nodes (the one with the - // shorter list of ancestors) contains the other one. - if (these.length < those.length) - return (DOCUMENT_POSITION_FOLLOWING + - DOCUMENT_POSITION_CONTAINED_BY); - else - return (DOCUMENT_POSITION_PRECEDING + - DOCUMENT_POSITION_CONTAINS); - }}, - - isSameNode: {value : function isSameNode(node) { - return this === node; - }}, - - - // This method implements the generic parts of node equality testing - // and defers to the (non-recursive) type-specific isEqual() method - // defined by subclasses - isEqualNode: { value: function isEqualNode(node) { - if (!node) return false; - if (node.nodeType !== this.nodeType) return false; - - // Check type-specific properties for equality - if (!this.isEqual(node)) return false; - - // Now check children for number and equality - for (var c1 = this.firstChild, c2 = node.firstChild; - c1 && c2; - c1 = c1.nextSibling, c2 = c2.nextSibling) { - if (!c1.isEqualNode(c2)) return false; - } - return c1 === null && c2 === null; - }}, - - // This method delegates shallow cloning to a clone() method - // that each concrete subclass must implement - cloneNode: { value: function(deep) { - // Clone this node - var clone = this.clone(); - - // Handle the recursive case if necessary - if (deep) { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - clone._appendChild(kid.cloneNode(true)); - } - } - - return clone; - }}, - - lookupPrefix: { value: function lookupPrefix(ns) { - var e; - if (ns === '' || ns === null || ns === undefined) return null; - switch(this.nodeType) { - case ELEMENT_NODE: - return this._lookupNamespacePrefix(ns, this); - case DOCUMENT_NODE: - e = this.documentElement; - return e ? e.lookupPrefix(ns) : null; - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_FRAGMENT_NODE: - case DOCUMENT_TYPE_NODE: - return null; - case ATTRIBUTE_NODE: - e = this.ownerElement; - return e ? e.lookupPrefix(ns) : null; - default: - e = this.parentElement; - return e ? e.lookupPrefix(ns) : null; - } - }}, - - - lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) { - if (prefix === '' || prefix === undefined) { prefix = null; } - var e; - switch(this.nodeType) { - case ELEMENT_NODE: - return utils.shouldOverride(); - case DOCUMENT_NODE: - e = this.documentElement; - return e ? e.lookupNamespaceURI(prefix) : null; - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_TYPE_NODE: - case DOCUMENT_FRAGMENT_NODE: - return null; - case ATTRIBUTE_NODE: - e = this.ownerElement; - return e ? e.lookupNamespaceURI(prefix) : null; - default: - e = this.parentElement; - return e ? e.lookupNamespaceURI(prefix) : null; - } - }}, - - isDefaultNamespace: { value: function isDefaultNamespace(ns) { - if (ns === '' || ns === undefined) { ns = null; } - var defaultNamespace = this.lookupNamespaceURI(null); - return (defaultNamespace === ns); - }}, - - // Utility methods for nodes. Not part of the DOM - - // Return the index of this node in its parent. - // Throw if no parent, or if this node is not a child of its parent - index: { get: function() { - var parent = this.parentNode; - if (this === parent.firstChild) return 0; // fast case - var kids = parent.childNodes; - if (this._index === undefined || kids[this._index] !== this) { - // Ensure that we don't have an O(N^2) blowup if none of the - // kids have defined indices yet and we're traversing via - // nextSibling or previousSibling - for (var i=0; i 2 ? spliceArgs[2] : null); - } else if (len > 2 && n !== null) { - LinkedList.insertBefore(spliceArgs[2], n); - } - if (parent._childNodes) { - spliceArgs[0] = (before === null) ? - parent._childNodes.length : before._index; - parent._childNodes.splice.apply(parent._childNodes, spliceArgs); - for (i=2; i 2) { - parent._firstChild = spliceArgs[2]; - } else if (isReplace) { - parent._firstChild = null; - } - } - // Remove all nodes from the document fragment - if (child._childNodes) { - child._childNodes.length = 0; - } else { - child._firstChild = null; - } - // Call the mutation handlers - // Use spliceArgs since the original array has been destroyed. The - // liveness guarantee requires us to clone the array so that - // references to the childNodes of the DocumentFragment will be empty - // when the insertion handlers are called. - if (parent.rooted) { - parent.modify(); - for (i = 2; i < len; i++) { - parent.doc.mutateInsert(spliceArgs[i]); - } - } - } else { - if (before === child) { return; } - if (bothRooted) { - // Remove the child from its current position in the tree - // without calling remove(), since we don't want to uproot it. - child._remove(); - } else if (child.parentNode) { - child.remove(); - } - - // Insert it as a child of its new parent - child.parentNode = parent; - if (isReplace) { - LinkedList.replace(n, child); - if (parent._childNodes) { - child._index = before_index; - parent._childNodes[before_index] = child; - } else if (parent._firstChild === before) { - parent._firstChild = child; - } - } else { - if (n !== null) { - LinkedList.insertBefore(child, n); - } - if (parent._childNodes) { - child._index = before_index; - parent._childNodes.splice(before_index, 0, child); - } else if (parent._firstChild === before) { - parent._firstChild = child; - } - } - if (bothRooted) { - parent.modify(); - // Generate a move mutation event - parent.doc.mutateMove(child); - } else if (parent.rooted) { - parent.modify(); - parent.doc.mutateInsert(child); - } - } - }}, - - - // Return the lastModTime value for this node. (For use as a - // cache invalidation mechanism. If the node does not already - // have one, initialize it from the owner document's modclock - // property. (Note that modclock does not return the actual - // time; it is simply a counter incremented on each document - // modification) - lastModTime: { get: function() { - if (!this._lastModTime) { - this._lastModTime = this.doc.modclock; - } - return this._lastModTime; - }}, - - // Increment the owner document's modclock and use the new - // value to update the lastModTime value for this node and - // all of its ancestors. Nodes that have never had their - // lastModTime value queried do not need to have a - // lastModTime property set on them since there is no - // previously queried value to ever compare the new value - // against, so only update nodes that already have a - // _lastModTime property. - modify: { value: function() { - if (this.doc.modclock) { // Skip while doc.modclock == 0 - var time = ++this.doc.modclock; - for(var n = this; n; n = n.parentElement) { - if (n._lastModTime) { - n._lastModTime = time; - } - } - } - }}, - - // This attribute is not part of the DOM but is quite helpful. - // It returns the document with which a node is associated. Usually - // this is the ownerDocument. But ownerDocument is null for the - // document object itself, so this is a handy way to get the document - // regardless of the node type - doc: { get: function() { - return this.ownerDocument || this; - }}, - - - // If the node has a nid (node id), then it is rooted in a document - rooted: { get: function() { - return !!this._nid; - }}, - - normalize: { value: function() { - var next; - for (var child=this.firstChild; child !== null; child=next) { - next = child.nextSibling; - - if (child.normalize) { - child.normalize(); - } - - if (child.nodeType !== Node.TEXT_NODE) { - continue; - } - - if (child.nodeValue === "") { - this.removeChild(child); - continue; - } - - var prevChild = child.previousSibling; - if (prevChild === null) { - continue; - } else if (prevChild.nodeType === Node.TEXT_NODE) { - // merge this with previous and remove the child - prevChild.appendData(child.nodeValue); - this.removeChild(child); - } - } - }}, - - // Convert the children of a node to an HTML string. - // This is used by the innerHTML getter - // The serialization spec is at: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments - // - // The serialization logic is intentionally implemented in a separate - // `NodeUtils` helper instead of the more obvious choice of a private - // `_serializeOne()` method on the `Node.prototype` in order to avoid - // the megamorphic `this._serializeOne` property access, which reduces - // performance unnecessarily. If you need specialized behavior for a - // certain subclass, you'll need to implement that in `NodeUtils`. - // See https://github.com/fgnass/domino/pull/142 for more information. - serialize: { value: function() { - if (this._innerHTML) { - return this._innerHTML; - } - var s = ''; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - s += NodeUtils.serializeOne(kid, this); - } - return s; - }}, - - // Non-standard, but often useful for debugging. - outerHTML: { - get: function() { - return NodeUtils.serializeOne(this, { nodeType: 0 }); - }, - set: utils.nyi, - }, - - // mirror node type properties in the prototype, so they are present - // in instances of Node (and subclasses) - ELEMENT_NODE: { value: ELEMENT_NODE }, - ATTRIBUTE_NODE: { value: ATTRIBUTE_NODE }, - TEXT_NODE: { value: TEXT_NODE }, - CDATA_SECTION_NODE: { value: CDATA_SECTION_NODE }, - ENTITY_REFERENCE_NODE: { value: ENTITY_REFERENCE_NODE }, - ENTITY_NODE: { value: ENTITY_NODE }, - PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE }, - COMMENT_NODE: { value: COMMENT_NODE }, - DOCUMENT_NODE: { value: DOCUMENT_NODE }, - DOCUMENT_TYPE_NODE: { value: DOCUMENT_TYPE_NODE }, - DOCUMENT_FRAGMENT_NODE: { value: DOCUMENT_FRAGMENT_NODE }, - NOTATION_NODE: { value: NOTATION_NODE }, - - DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED }, - DOCUMENT_POSITION_PRECEDING: { value: DOCUMENT_POSITION_PRECEDING }, - DOCUMENT_POSITION_FOLLOWING: { value: DOCUMENT_POSITION_FOLLOWING }, - DOCUMENT_POSITION_CONTAINS: { value: DOCUMENT_POSITION_CONTAINS }, - DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY }, - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC }, -}); - - -/***/ }), - -/***/ 383: -/***/ ((module) => { - -"use strict"; - -var NodeFilter = { - // Constants for acceptNode() - FILTER_ACCEPT: 1, - FILTER_REJECT: 2, - FILTER_SKIP: 3, - - // Constants for whatToShow - SHOW_ALL: 0xFFFFFFFF, - SHOW_ELEMENT: 0x1, - SHOW_ATTRIBUTE: 0x2, // historical - SHOW_TEXT: 0x4, - SHOW_CDATA_SECTION: 0x8, // historical - SHOW_ENTITY_REFERENCE: 0x10, // historical - SHOW_ENTITY: 0x20, // historical - SHOW_PROCESSING_INSTRUCTION: 0x40, - SHOW_COMMENT: 0x80, - SHOW_DOCUMENT: 0x100, - SHOW_DOCUMENT_TYPE: 0x200, - SHOW_DOCUMENT_FRAGMENT: 0x400, - SHOW_NOTATION: 0x800 // historical -}; - -module.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter); - - -/***/ }), - -/***/ 30419: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = NodeIterator; - -var NodeFilter = __webpack_require__(383); -var NodeTraversal = __webpack_require__(72059); -var utils = __webpack_require__(89076); - -/* Private methods and helpers */ - -/** - * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51 - */ -function move(node, stayWithin, directionIsNext) { - if (directionIsNext) { - return NodeTraversal.next(node, stayWithin); - } else { - if (node === stayWithin) { - return null; - } - return NodeTraversal.previous(node, null); - } -} - -function isInclusiveAncestor(node, possibleChild) { - for ( ; possibleChild; possibleChild = possibleChild.parentNode) { - if (node === possibleChild) { return true; } - } - return false; -} - -/** - * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse - * @method - * @access private - * @param {NodeIterator} ni - * @param {string} direction One of 'next' or 'previous'. - * @return {Node|null} - */ -function traverse(ni, directionIsNext) { - var node, beforeNode; - node = ni._referenceNode; - beforeNode = ni._pointerBeforeReferenceNode; - while (true) { - if (beforeNode === directionIsNext) { - beforeNode = !beforeNode; - } else { - node = move(node, ni._root, directionIsNext); - if (node === null) { - return null; - } - } - var result = ni._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - break; - } - } - ni._referenceNode = node; - ni._pointerBeforeReferenceNode = beforeNode; - return node; -} - -/* Public API */ - -/** - * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator - * Latest version: http://www.w3.org/TR/dom/#nodeiterator - * - * @constructor - * @param {Node} root - * @param {number} whatToShow [optional] - * @param {Function|NodeFilter} filter [optional] - * @throws Error - */ -function NodeIterator(root, whatToShow, filter) { - if (!root || !root.nodeType) { - utils.NotSupportedError(); - } - - // Read-only properties - this._root = root; - this._referenceNode = root; - this._pointerBeforeReferenceNode = true; - this._whatToShow = Number(whatToShow) || 0; - this._filter = filter || null; - this._active = false; - // Record active node iterators in the document, in order to perform - // "node iterator pre-removal steps". - root.doc._attachNodeIterator(this); -} - -Object.defineProperties(NodeIterator.prototype, { - root: { get: function root() { - return this._root; - } }, - referenceNode: { get: function referenceNode() { - return this._referenceNode; - } }, - pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() { - return this._pointerBeforeReferenceNode; - } }, - whatToShow: { get: function whatToShow() { - return this._whatToShow; - } }, - filter: { get: function filter() { - return this._filter; - } }, - - /** - * @method - * @param {Node} node - * @return {Number} Constant NodeFilter.FILTER_ACCEPT, - * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP. - */ - _internalFilter: { value: function _internalFilter(node) { - /* jshint bitwise: false */ - var result, filter; - if (this._active) { - utils.InvalidStateError(); - } - - // Maps nodeType to whatToShow - if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) { - return NodeFilter.FILTER_SKIP; - } - - filter = this._filter; - if (filter === null) { - result = NodeFilter.FILTER_ACCEPT; - } else { - this._active = true; - try { - if (typeof filter === 'function') { - result = filter(node); - } else { - result = filter.acceptNode(node); - } - } finally { - this._active = false; - } - } - - // Note that coercing to a number means that - // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT) - // `false` becomes `0` (neither accept, reject, or skip) - return (+result); - } }, - - /** - * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps - * @method - * @return void - */ - _preremove: { value: function _preremove(toBeRemovedNode) { - if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; } - if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; } - if (this._pointerBeforeReferenceNode) { - var next = toBeRemovedNode; - while (next.lastChild) { - next = next.lastChild; - } - next = NodeTraversal.next(next, this.root); - if (next) { - this._referenceNode = next; - return; - } - this._pointerBeforeReferenceNode = false; - // fall through - } - if (toBeRemovedNode.previousSibling === null) { - this._referenceNode = toBeRemovedNode.parentNode; - } else { - this._referenceNode = toBeRemovedNode.previousSibling; - var lastChild; - for (lastChild = this._referenceNode.lastChild; - lastChild; - lastChild = this._referenceNode.lastChild) { - this._referenceNode = lastChild; - } - } - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode - * @method - * @return {Node|null} - */ - nextNode: { value: function nextNode() { - return traverse(this, true); - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode - * @method - * @return {Node|null} - */ - previousNode: { value: function previousNode() { - return traverse(this, false); - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach - * @method - * @return void - */ - detach: { value: function detach() { - /* "The detach() method must do nothing. - * Its functionality (disabling a NodeIterator object) was removed, - * but the method itself is preserved for compatibility. - */ - } }, - - /** For compatibility with web-platform-tests. */ - toString: { value: function toString() { - return "[object NodeIterator]"; - } }, -}); - - -/***/ }), - -/***/ 52516: -/***/ ((module) => { - -"use strict"; - - -// No support for subclassing array, return an actual Array object. -function item(i) { - /* jshint validthis: true */ - return this[i] || null; -} - -function NodeList(a) { - if (!a) a = []; - a.item = item; - return a; -} - -module.exports = NodeList; - - -/***/ }), - -/***/ 77101: -/***/ ((module) => { - -"use strict"; -/* jshint esversion: 6 */ - - -module.exports = class NodeList extends Array { - constructor(a) { - super((a && a.length) || 0); - if (a) { - for (var idx in a) { this[idx] = a[idx]; } - } - } - item(i) { return this[i] || null; } -}; - - -/***/ }), - -/***/ 64965: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var NodeList; - -try { - // Attempt to use ES6-style Array subclass if possible. - NodeList = __webpack_require__(77101); -} catch (e) { - // No support for subclassing array, return an actual Array object. - NodeList = __webpack_require__(52516); -} - -module.exports = NodeList; - - -/***/ }), - -/***/ 72059: -/***/ ((module) => { - -"use strict"; - -/* exported NodeTraversal */ -var NodeTraversal = module.exports = { - nextSkippingChildren: nextSkippingChildren, - nextAncestorSibling: nextAncestorSibling, - next: next, - previous: previous, - deepLastChild: deepLastChild -}; - -/** - * @based on WebKit's NodeTraversal::nextSkippingChildren - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109 - */ -function nextSkippingChildren(node, stayWithin) { - if (node === stayWithin) { - return null; - } - if (node.nextSibling !== null) { - return node.nextSibling; - } - return nextAncestorSibling(node, stayWithin); -} - -/** - * @based on WebKit's NodeTraversal::nextAncestorSibling - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93 - */ -function nextAncestorSibling(node, stayWithin) { - for (node = node.parentNode; node !== null; node = node.parentNode) { - if (node === stayWithin) { - return null; - } - if (node.nextSibling !== null) { - return node.nextSibling; - } - } - return null; -} - -/** - * @based on WebKit's NodeTraversal::next - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99 - */ -function next(node, stayWithin) { - var n; - n = node.firstChild; - if (n !== null) { - return n; - } - if (node === stayWithin) { - return null; - } - n = node.nextSibling; - if (n !== null) { - return n; - } - return nextAncestorSibling(node, stayWithin); -} - -/** - * @based on WebKit's NodeTraversal::deepLastChild - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116 - */ -function deepLastChild(node) { - while (node.lastChild) { - node = node.lastChild; - } - return node; -} - -/** - * @based on WebKit's NodeTraversal::previous - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121 - */ -function previous(node, stayWithin) { - var p; - p = node.previousSibling; - if (p !== null) { - return deepLastChild(p); - } - p = node.parentNode; - if (p === stayWithin) { - return null; - } - return p; -} - - -/***/ }), - -/***/ 41608: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = { - // NOTE: The `serializeOne()` function used to live on the `Node.prototype` - // as a private method `Node#_serializeOne(child)`, however that requires - // a megamorphic property access `this._serializeOne` just to get to the - // method, and this is being done on lots of different `Node` subclasses, - // which puts a lot of pressure on V8's megamorphic stub cache. So by - // moving the helper off of the `Node.prototype` and into a separate - // function in this helper module, we get a monomorphic property access - // `NodeUtils.serializeOne` to get to the function and reduce pressure - // on the megamorphic stub cache. - // See https://github.com/fgnass/domino/pull/142 for more information. - serializeOne: serializeOne, - - // Export util functions so that we can run extra test for them. - // Note: we prefix function names with `ɵ`, similar to what we do - // with internal functions in Angular packages. - ɵescapeMatchingClosingTag: escapeMatchingClosingTag, - ɵescapeClosingCommentTag: escapeClosingCommentTag, - ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent -}; - -var utils = __webpack_require__(89076); -var NAMESPACE = utils.NAMESPACE; - -var hasRawContent = { - STYLE: true, - SCRIPT: true, - XMP: true, - IFRAME: true, - NOEMBED: true, - NOFRAMES: true, - PLAINTEXT: true -}; - -var emptyElements = { - area: true, - base: true, - basefont: true, - bgsound: true, - br: true, - col: true, - embed: true, - frame: true, - hr: true, - img: true, - input: true, - keygen: true, - link: true, - meta: true, - param: true, - source: true, - track: true, - wbr: true -}; - -var extraNewLine = { - /* Removed in https://github.com/whatwg/html/issues/944 - pre: true, - textarea: true, - listing: true - */ -}; - -const ESCAPE_REGEXP = /[&<>\u00A0]/g; -const ESCAPE_ATTR_REGEXP = /[&"<>\u00A0]/g; - -function escape(s) { - if (!ESCAPE_REGEXP.test(s)) { - // nothing to do, fast path - return s; - } - - return s.replace(ESCAPE_REGEXP, (c) => { - switch (c) { - case "&": - return "&"; - case "<": - return "<"; - case ">": - return ">"; - case "\u00A0": - return " "; - } - }); -} - -function escapeAttr(s) { - if (!ESCAPE_ATTR_REGEXP.test(s)) { - // nothing to do, fast path - return s; - } - - return s.replace(ESCAPE_ATTR_REGEXP, (c) => { - switch (c) { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case '"': - return """; - case "\u00A0": - return " "; - } - }); -} - -function attrname(a) { - var ns = a.namespaceURI; - if (!ns) - return a.localName; - if (ns === NAMESPACE.XML) - return 'xml:' + a.localName; - if (ns === NAMESPACE.XLINK) - return 'xlink:' + a.localName; - - if (ns === NAMESPACE.XMLNS) { - if (a.localName === 'xmlns') return 'xmlns'; - else return 'xmlns:' + a.localName; - } - return a.name; -} - -/** - * Escapes matching closing tag in a raw text. - * - * For example, given `)`, - * the parent tag would by "style" and the raw text is - * "". If we come across a matching closing tag - * (in out case ``) - replace `<` with `<` to avoid unexpected - * and unsafe behavior after de-serialization. - */ -function escapeMatchingClosingTag(rawText, parentTag) { - const parentClosingTag = '/; - -/** - * Escapes closing comment tag in a comment content. - * - * For example, given `#comment('-->')`, the content of a comment would be - * updated to `-->` to avoid unexpected and unsafe behavior after - * de-serialization. - */ -function escapeClosingCommentTag(rawContent) { - if (!CLOSING_COMMENT_REGEXP.test(rawContent)) { - return rawContent; // fast path - } - return rawContent.replace(/(--\!?)>/g, '$1>'); -} - -/** - * Escapes processing instruction content by replacing `>` with `>`. - */ -function escapeProcessingInstructionContent(rawContent) { - return rawContent.includes('>') - ? rawContent.replaceAll('>', '>') - : rawContent; -} - -function serializeOne(kid, parent) { - var s = ''; - switch(kid.nodeType) { - case 1: //ELEMENT_NODE - var ns = kid.namespaceURI; - var html = ns === NAMESPACE.HTML; - var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName; - - s += '<' + tagname; - - for(var j = 0, k = kid._numattrs; j < k; j++) { - var a = kid._attr(j); - s += ' ' + attrname(a); - if (a.value !== undefined) s += '="' + escapeAttr(a.value) + '"'; - } - s += '>'; - - if (!(html && emptyElements[tagname])) { - var ss = kid.serialize(); - // If an element can have raw content, this content may - // potentially require escaping to avoid XSS. - if (hasRawContent[tagname.toUpperCase()]) { - ss = escapeMatchingClosingTag(ss, tagname); - } - if (html && extraNewLine[tagname] && ss.charAt(0)==='\n') s += '\n'; - // Serialize children and add end tag for all others - s += ss; - s += ''; - } - break; - case 3: //TEXT_NODE - case 4: //CDATA_SECTION_NODE - var parenttag; - if (parent.nodeType === 1 /*ELEMENT_NODE*/ && - parent.namespaceURI === NAMESPACE.HTML) - parenttag = parent.tagName; - else - parenttag = ''; - - if (hasRawContent[parenttag] || - (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) { - s += kid.data; - } else { - s += escape(kid.data); - } - break; - case 8: //COMMENT_NODE - s += ''; - break; - case 7: //PROCESSING_INSTRUCTION_NODE - const content = escapeProcessingInstructionContent(kid.data); - s += ''; - break; - case 10: //DOCUMENT_TYPE_NODE - s += ''; - break; - default: - utils.InvalidStateError(); - } - return s; -} - - -/***/ }), - -/***/ 32001: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Node = __webpack_require__(97537); - -var NonDocumentTypeChildNode = { - - nextElementSibling: { get: function() { - if (this.parentNode) { - for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - } - return null; - }}, - - previousElementSibling: { get: function() { - if (this.parentNode) { - for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - } - return null; - }} - -}; - -module.exports = NonDocumentTypeChildNode; - - -/***/ }), - -/***/ 81248: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = ProcessingInstruction; - -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function ProcessingInstruction(doc, target, data) { - CharacterData.call(this); - this.nodeType = Node.PROCESSING_INSTRUCTION_NODE; - this.ownerDocument = doc; - this.target = target; - this._data = data; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - this._data = v; - if (this.rooted) this.ownerDocument.mutateValue(this); - } -}; - -ProcessingInstruction.prototype = Object.create(CharacterData.prototype, { - nodeName: { get: function() { return this.target; }}, - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - // Utility methods - clone: { value: function clone() { - return new ProcessingInstruction(this.ownerDocument, this.target, this._data); - }}, - isEqual: { value: function isEqual(n) { - return this.target === n.target && this._data === n._data; - }} - -}); - - -/***/ }), - -/***/ 58210: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Text; - -var utils = __webpack_require__(89076); -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function Text(doc, data) { - CharacterData.call(this); - this.nodeType = Node.TEXT_NODE; - this.ownerDocument = doc; - this._data = data; - this._index = undefined; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - if (v === this._data) return; - this._data = v; - if (this.rooted) - this.ownerDocument.mutateValue(this); - if (this.parentNode && - this.parentNode._textchangehook) - this.parentNode._textchangehook(this); - } -}; - -Text.prototype = Object.create(CharacterData.prototype, { - nodeName: { value: "#text" }, - // These three attributes are all the same. - // The data attribute has a [TreatNullAs=EmptyString] but we'll - // implement that at the interface level - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - splitText: { value: function splitText(offset) { - if (offset > this._data.length || offset < 0) utils.IndexSizeError(); - - var newdata = this._data.substring(offset), - newnode = this.ownerDocument.createTextNode(newdata); - this.data = this.data.substring(0, offset); - - var parent = this.parentNode; - if (parent !== null) - parent.insertBefore(newnode, this.nextSibling); - - return newnode; - }}, - - wholeText: { get: function wholeText() { - var result = this.textContent; - for (var next = this.nextSibling; next; next = next.nextSibling) { - if (next.nodeType !== Node.TEXT_NODE) { break; } - result += next.textContent; - } - return result; - }}, - // Obsolete, removed from spec. - replaceWholeText: { value: utils.nyi }, - - // Utility methods - clone: { value: function clone() { - return new Text(this.ownerDocument, this._data); - }}, - -}); - - -/***/ }), - -/***/ 44507: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = TreeWalker; - -var Node = __webpack_require__(97537); -var NodeFilter = __webpack_require__(383); -var NodeTraversal = __webpack_require__(72059); -var utils = __webpack_require__(89076); - -var mapChild = { - first: 'firstChild', - last: 'lastChild', - next: 'firstChild', - previous: 'lastChild' -}; - -var mapSibling = { - first: 'nextSibling', - last: 'previousSibling', - next: 'nextSibling', - previous: 'previousSibling' -}; - -/* Private methods and helpers */ - -/** - * @spec https://dom.spec.whatwg.org/#concept-traverse-children - * @method - * @access private - * @param {TreeWalker} tw - * @param {string} type One of 'first' or 'last'. - * @return {Node|null} - */ -function traverseChildren(tw, type) { - var child, node, parent, result, sibling; - node = tw._currentNode[mapChild[type]]; - while (node !== null) { - result = tw._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - tw._currentNode = node; - return node; - } - if (result === NodeFilter.FILTER_SKIP) { - child = node[mapChild[type]]; - if (child !== null) { - node = child; - continue; - } - } - while (node !== null) { - sibling = node[mapSibling[type]]; - if (sibling !== null) { - node = sibling; - break; - } - parent = node.parentNode; - if (parent === null || parent === tw.root || parent === tw._currentNode) { - return null; - } else { - node = parent; - } - } - } - return null; -} - -/** - * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings - * @method - * @access private - * @param {TreeWalker} tw - * @param {TreeWalker} type One of 'next' or 'previous'. - * @return {Node|nul} - */ -function traverseSiblings(tw, type) { - var node, result, sibling; - node = tw._currentNode; - if (node === tw.root) { - return null; - } - while (true) { - sibling = node[mapSibling[type]]; - while (sibling !== null) { - node = sibling; - result = tw._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - tw._currentNode = node; - return node; - } - sibling = node[mapChild[type]]; - if (result === NodeFilter.FILTER_REJECT || sibling === null) { - sibling = node[mapSibling[type]]; - } - } - node = node.parentNode; - if (node === null || node === tw.root) { - return null; - } - if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - return null; - } - } -} - - -/* Public API */ - -/** - * Latest version: https://dom.spec.whatwg.org/#treewalker - * - * @constructor - * @param {Node} root - * @param {number} whatToShow [optional] - * @param {Function|NodeFilter} filter [optional] - * @throws Error - */ -function TreeWalker(root, whatToShow, filter) { - if (!root || !root.nodeType) { - utils.NotSupportedError(); - } - - // Read-only properties - this._root = root; - this._whatToShow = Number(whatToShow) || 0; - this._filter = filter || null; - this._active = false; - // Read-write property - this._currentNode = root; -} - -Object.defineProperties(TreeWalker.prototype, { - root: { get: function() { return this._root; } }, - whatToShow: { get: function() { return this._whatToShow; } }, - filter: { get: function() { return this._filter; } }, - - currentNode: { - get: function currentNode() { - return this._currentNode; - }, - set: function setCurrentNode(v) { - if (!(v instanceof Node)) { - throw new TypeError("Not a Node"); // `null` is also not a node - } - this._currentNode = v; - }, - }, - - /** - * @method - * @param {Node} node - * @return {Number} Constant NodeFilter.FILTER_ACCEPT, - * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP. - */ - _internalFilter: { value: function _internalFilter(node) { - /* jshint bitwise: false */ - var result, filter; - if (this._active) { - utils.InvalidStateError(); - } - - // Maps nodeType to whatToShow - if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) { - return NodeFilter.FILTER_SKIP; - } - - filter = this._filter; - if (filter === null) { - result = NodeFilter.FILTER_ACCEPT; - } else { - this._active = true; - try { - if (typeof filter === 'function') { - result = filter(node); - } else { - result = filter.acceptNode(node); - } - } finally { - this._active = false; - } - } - - // Note that coercing to a number means that - // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT) - // `false` becomes `0` (neither accept, reject, or skip) - return (+result); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode - * @based on WebKit's TreeWalker::parentNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50 - * @method - * @return {Node|null} - */ - parentNode: { value: function parentNode() { - var node = this._currentNode; - while (node !== this.root) { - node = node.parentNode; - if (node === null) { - return null; - } - if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - return null; - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild - * @method - * @return {Node|null} - */ - firstChild: { value: function firstChild() { - return traverseChildren(this, 'first'); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild - * @method - * @return {Node|null} - */ - lastChild: { value: function lastChild() { - return traverseChildren(this, 'last'); - }}, - - /** - * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling - * @method - * @return {Node|null} - */ - previousSibling: { value: function previousSibling() { - return traverseSiblings(this, 'previous'); - }}, - - /** - * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling - * @method - * @return {Node|null} - */ - nextSibling: { value: function nextSibling() { - return traverseSiblings(this, 'next'); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode - * @based on WebKit's TreeWalker::previousNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181 - * @method - * @return {Node|null} - */ - previousNode: { value: function previousNode() { - var node, result, previousSibling, lastChild; - node = this._currentNode; - while (node !== this._root) { - for (previousSibling = node.previousSibling; - previousSibling; - previousSibling = node.previousSibling) { - node = previousSibling; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_REJECT) { - continue; - } - for (lastChild = node.lastChild; - lastChild; - lastChild = node.lastChild) { - node = lastChild; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_REJECT) { - break; - } - } - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - if (node === this.root || node.parentNode === null) { - return null; - } - node = node.parentNode; - if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - return null; - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode - * @based on WebKit's TreeWalker::nextNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228 - * @method - * @return {Node|null} - */ - nextNode: { value: function nextNode() { - var node, result, firstChild, nextSibling; - node = this._currentNode; - result = NodeFilter.FILTER_ACCEPT; - - CHILDREN: - while (true) { - for (firstChild = node.firstChild; - firstChild; - firstChild = node.firstChild) { - node = firstChild; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } else if (result === NodeFilter.FILTER_REJECT) { - break; - } - } - for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root); - nextSibling; - nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) { - node = nextSibling; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } else if (result === NodeFilter.FILTER_SKIP) { - continue CHILDREN; - } - } - return null; - } - }}, - - /** For compatibility with web-platform-tests. */ - toString: { value: function toString() { - return "[object TreeWalker]"; - }}, -}); - - -/***/ }), - -/***/ 64259: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Event = __webpack_require__(13441); - -module.exports = UIEvent; - -function UIEvent() { - // Just use the superclass constructor to initialize - Event.call(this); - this.view = null; // FF uses the current window - this.detail = 0; -} -UIEvent.prototype = Object.create(Event.prototype, { - constructor: { value: UIEvent }, - initUIEvent: { value: function(type, bubbles, cancelable, view, detail) { - this.initEvent(type, bubbles, cancelable); - this.view = view; - this.detail = detail; - }} -}); - - -/***/ }), - -/***/ 85184: -/***/ ((module) => { - -"use strict"; - -module.exports = URL; - -function URL(url) { - if (!url) return Object.create(URL.prototype); - // Can't use String.trim() since it defines whitespace differently than HTML - this.url = url.replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g, ""); - - // See http://tools.ietf.org/html/rfc3986#appendix-B - // and https://url.spec.whatwg.org/#parsing - var match = URL.pattern.exec(this.url); - if (match) { - if (match[2]) this.scheme = match[2]; - if (match[4]) { - // parse username/password - var userinfo = match[4].match(URL.userinfoPattern); - if (userinfo) { - this.username = userinfo[1]; - this.password = userinfo[3]; - match[4] = match[4].substring(userinfo[0].length); - } - if (match[4].match(URL.portPattern)) { - var pos = match[4].lastIndexOf(':'); - this.host = match[4].substring(0, pos); - this.port = match[4].substring(pos+1); - } - else { - this.host = match[4]; - } - } - if (match[5]) this.path = match[5]; - if (match[6]) this.query = match[7]; - if (match[8]) this.fragment = match[9]; - } -} - -URL.pattern = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/; -URL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/; -URL.portPattern = /:\d+$/; -URL.authorityPattern = /^[^:\/?#]+:\/\//; -URL.hierarchyPattern = /^[^:\/?#]+:\//; - -// Return a percentEncoded version of s. -// S should be a single-character string -// XXX: needs to do utf-8 encoding? -URL.percentEncode = function percentEncode(s) { - var c = s.charCodeAt(0); - if (c < 256) return "%" + c.toString(16); - else throw Error("can't percent-encode codepoints > 255 yet"); -}; - -URL.prototype = { - constructor: URL, - - // XXX: not sure if this is the precise definition of absolute - isAbsolute: function() { return !!this.scheme; }, - isAuthorityBased: function() { - return URL.authorityPattern.test(this.url); - }, - isHierarchical: function() { - return URL.hierarchyPattern.test(this.url); - }, - - toString: function() { - var s = ""; - if (this.scheme !== undefined) s += this.scheme + ":"; - if (this.isAbsolute()) { - s += '//'; - if (this.username || this.password) { - s += this.username || ''; - if (this.password) { - s += ':' + this.password; - } - s += '@'; - } - if (this.host) { - s += this.host; - } - } - if (this.port !== undefined) s += ":" + this.port; - if (this.path !== undefined) s += this.path; - if (this.query !== undefined) s += "?" + this.query; - if (this.fragment !== undefined) s += "#" + this.fragment; - return s; - }, - - // See: http://tools.ietf.org/html/rfc3986#section-5.2 - // and https://url.spec.whatwg.org/#constructors - resolve: function(relative) { - var base = this; // The base url we're resolving against - var r = new URL(relative); // The relative reference url to resolve - var t = new URL(); // The absolute target url we will return - - if (r.scheme !== undefined) { - t.scheme = r.scheme; - t.username = r.username; - t.password = r.password; - t.host = r.host; - t.port = r.port; - t.path = remove_dot_segments(r.path); - t.query = r.query; - } - else { - t.scheme = base.scheme; - if (r.host !== undefined) { - t.username = r.username; - t.password = r.password; - t.host = r.host; - t.port = r.port; - t.path = remove_dot_segments(r.path); - t.query = r.query; - } - else { - t.username = base.username; - t.password = base.password; - t.host = base.host; - t.port = base.port; - if (!r.path) { // undefined or empty - t.path = base.path; - if (r.query !== undefined) - t.query = r.query; - else - t.query = base.query; - } - else { - if (r.path.charAt(0) === "/") { - t.path = remove_dot_segments(r.path); - } - else { - t.path = merge(base.path, r.path); - t.path = remove_dot_segments(t.path); - } - t.query = r.query; - } - } - } - t.fragment = r.fragment; - - return t.toString(); - - - function merge(basepath, refpath) { - if (base.host !== undefined && !base.path) - return "/" + refpath; - - var lastslash = basepath.lastIndexOf("/"); - if (lastslash === -1) - return refpath; - else - return basepath.substring(0, lastslash+1) + refpath; - } - - function remove_dot_segments(path) { - if (!path) return path; // For "" or undefined - - var output = ""; - while(path.length > 0) { - if (path === "." || path === "..") { - path = ""; - break; - } - - var twochars = path.substring(0,2); - var threechars = path.substring(0,3); - var fourchars = path.substring(0,4); - if (threechars === "../") { - path = path.substring(3); - } - else if (twochars === "./") { - path = path.substring(2); - } - else if (threechars === "/./") { - path = "/" + path.substring(3); - } - else if (twochars === "/." && path.length === 2) { - path = "/"; - } - else if (fourchars === "/../" || - (threechars === "/.." && path.length === 3)) { - path = "/" + path.substring(4); - - output = output.replace(/\/?[^\/]*$/, ""); - } - else { - var segment = path.match(/(\/?([^\/]*))/)[0]; - output += segment; - path = path.substring(segment.length); - } - } - - return output; - } - }, -}; - - -/***/ }), - -/***/ 65531: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var URL = __webpack_require__(85184); - -module.exports = URLUtils; - -// Allow the `x == null` pattern. This is eslint's "null: 'ignore'" option, -// but jshint doesn't support this. -/* jshint eqeqeq: false */ - -// This is an abstract superclass for Location, HTMLAnchorElement and -// other types that have the standard complement of "URL decomposition -// IDL attributes". This is now standardized as URLUtils, see: -// https://url.spec.whatwg.org/#urlutils -// Subclasses must define a getter/setter on href. -// The getter and setter methods parse and rebuild the URL on each -// invocation; there is no attempt to cache the value and be more efficient -function URLUtils() {} -URLUtils.prototype = Object.create(Object.prototype, { - - _url: { get: function() { - // XXX: this should do the "Reinitialize url" steps, and "null" should - // be a valid return value. - return new URL(this.href); - } }, - - protocol: { - get: function() { - var url = this._url; - if (url && url.scheme) return url.scheme + ":"; - else return ":"; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - v = v.replace(/:+$/, ""); - v = v.replace(/[^-+\.a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.scheme = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - host: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased()) - return url.host + (url.port ? (":" + url.port) : ""); - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = v.replace(/[^-+\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.host = v; - delete url.port; - output = url.toString(); - } - } - this.href = output; - }, - }, - - hostname: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased()) - return url.host; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = v.replace(/^\/+/, ""); - v = v.replace(/[^-+\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.host = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - port: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined) - return url.port; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = '' + v; - v = v.replace(/[^0-9].*$/, ""); - v = v.replace(/^0+/, ""); - if (v.length === 0) v = "0"; - if (parseInt(v, 10) <= 65535) { - url.port = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - pathname: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isHierarchical()) - return url.path; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isHierarchical()) { - if (v.charAt(0) !== "/") - v = "/" + v; - v = v.replace(/[^-+\._~!$&'()*,;:=@\/a-zA-Z0-9]/g, URL.percentEncode); - url.path = v; - output = url.toString(); - } - this.href = output; - }, - }, - - search: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined) - return "?" + url.query; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isHierarchical()) { - if (v.charAt(0) === "?") v = v.substring(1); - v = v.replace(/[^-+\._~!$&'()*,;:=@\/?a-zA-Z0-9]/g, URL.percentEncode); - url.query = v; - output = url.toString(); - } - this.href = output; - }, - }, - - hash: { - get: function() { - var url = this._url; - if (url == null || url.fragment == null || url.fragment === '') { - return ""; - } else { - return "#" + url.fragment; - } - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - - if (v.charAt(0) === "#") v = v.substring(1); - v = v.replace(/[^-+\._~!$&'()*,;:=@\/?a-zA-Z0-9]/g, URL.percentEncode); - url.fragment = v; - output = url.toString(); - - this.href = output; - }, - }, - - username: { - get: function() { - var url = this._url; - return url.username || ''; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - v = v.replace(/[\x00-\x1F\x7F-\uFFFF "#<>?`\/@\\:]/g, URL.percentEncode); - url.username = v; - output = url.toString(); - } - this.href = output; - }, - }, - - password: { - get: function() { - var url = this._url; - return url.password || ''; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - if (v==='') { - url.password = null; - } else { - v = v.replace(/[\x00-\x1F\x7F-\uFFFF "#<>?`\/@\\]/g, URL.percentEncode); - url.password = v; - } - output = url.toString(); - } - this.href = output; - }, - }, - - origin: { get: function() { - var url = this._url; - if (url == null) { return ''; } - var originForPort = function(defaultPort) { - var origin = [url.scheme, url.host, +url.port || defaultPort]; - // XXX should be "unicode serialization" - return origin[0] + '://' + origin[1] + - (origin[2] === defaultPort ? '' : (':' + origin[2])); - }; - switch (url.scheme) { - case 'ftp': - return originForPort(21); - case 'gopher': - return originForPort(70); - case 'http': - case 'ws': - return originForPort(80); - case 'https': - case 'wss': - return originForPort(443); - default: - // this is what chrome does - return url.scheme + '://'; - } - } }, - - /* - searchParams: { - get: function() { - var url = this._url; - // XXX - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - // XXX - this.href = output; - }, - }, - */ -}); - -URLUtils._inherit = function(proto) { - // copy getters/setters from URLUtils to o. - Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) { - if (p==='constructor' || p==='href') { return; } - var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p); - Object.defineProperty(proto, p, desc); - }); -}; - - -/***/ }), - -/***/ 21865: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var DOMImplementation = __webpack_require__(80931); -var EventTarget = __webpack_require__(22356); -var Location = __webpack_require__(63738); -var utils = __webpack_require__(89076); - -module.exports = Window; - -function Window(document) { - this.document = document || new DOMImplementation(null).createHTMLDocument(""); - this.document._scripting_enabled = true; - this.document.defaultView = this; - this.location = new Location(this, this.document._address || 'about:blank'); -} - -Window.prototype = Object.create(EventTarget.prototype, { - console: { value: console }, - history: { value: { - back: utils.nyi, - forward: utils.nyi, - go: utils.nyi - }}, - navigator: { value: __webpack_require__(94993) }, - - // Self-referential properties - window: { get: function() { return this; }}, - self: { get: function() { return this; }}, - frames: { get: function() { return this; }}, - - // Self-referential properties for a top-level window - parent: { get: function() { return this; }}, - top: { get: function() { return this; }}, - - // We don't support any other windows for now - length: { value: 0 }, // no frames - frameElement: { value: null }, // not part of a frame - opener: { value: null }, // not opened by another window - - // The onload event handler. - // XXX: need to support a bunch of other event types, too, - // and have them interoperate with document.body. - - onload: { - get: function() { - return this._getEventHandler("load"); - }, - set: function(v) { - this._setEventHandler("load", v); - } - }, - - // XXX This is a completely broken implementation - getComputedStyle: { value: function getComputedStyle(elt) { - return elt.style; - }} - -}); - -utils.expose(__webpack_require__(23811), Window); -utils.expose(__webpack_require__(31575), Window); - - -/***/ }), - -/***/ 23811: -/***/ ((module) => { - -"use strict"; - - -// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers -var WindowTimers = { - setTimeout: setTimeout, - clearTimeout: clearTimeout, - setInterval: setInterval, - clearInterval: clearInterval -}; - -module.exports = WindowTimers; - - -/***/ }), - -/***/ 6548: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -exports.property = function(attr) { - if (Array.isArray(attr.type)) { - var valid = Object.create(null); - attr.type.forEach(function(val) { - valid[val.value || val] = val.alias || val; - }); - var missingValueDefault = attr.missing; - if (missingValueDefault===undefined) { missingValueDefault = null; } - var invalidValueDefault = attr.invalid; - if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; } - return { - get: function() { - var v = this._getattr(attr.name); - if (v === null) return missingValueDefault; - - v = valid[v.toLowerCase()]; - if (v !== undefined) return v; - if (invalidValueDefault !== null) return invalidValueDefault; - return v; - }, - set: function(v) { - this._setattr(attr.name, v); - } - }; - } - else if (attr.type === Boolean) { - return { - get: function() { - return this.hasAttribute(attr.name); - }, - set: function(v) { - if (v) { - this._setattr(attr.name, ''); - } - else { - this.removeAttribute(attr.name); - } - } - }; - } - else if (attr.type === Number || - attr.type === "long" || - attr.type === "unsigned long" || - attr.type === "limited unsigned long with fallback") { - return numberPropDesc(attr); - } - else if (!attr.type || attr.type === String) { - return { - get: function() { return this._getattr(attr.name) || ''; }, - set: function(v) { - if (attr.treatNullAsEmptyString && v === null) { v = ''; } - this._setattr(attr.name, v); - } - }; - } - else if (typeof attr.type === 'function') { - return attr.type(attr.name, attr); - } - throw new Error('Invalid attribute definition'); -}; - -// See http://www.whatwg.org/specs/web-apps/current-work/#reflect -// -// defval is the default value. If it is a function, then that function -// will be invoked as a method of the element to obtain the default. -// If no default is specified for a given attribute, then the default -// depends on the type of the attribute, but since this function handles -// 4 integer cases, you must specify the default value in each call -// -// min and max define a valid range for getting the attribute. -// -// setmin defines a minimum value when setting. If the value is less -// than that, then throw INDEX_SIZE_ERR. -// -// Conveniently, JavaScript's parseInt function appears to be -// compatible with HTML's 'rules for parsing integers' -function numberPropDesc(a) { - var def; - if(typeof a.default === 'function') { - def = a.default; - } - else if(typeof a.default === 'number') { - def = function() { return a.default; }; - } - else { - def = function() { utils.assert(false, typeof a.default); }; - } - var unsigned_long = (a.type === 'unsigned long'); - var signed_long = (a.type === 'long'); - var unsigned_fallback = (a.type === 'limited unsigned long with fallback'); - var min = a.min, max = a.max, setmin = a.setmin; - if (min === undefined) { - if (unsigned_long) min = 0; - if (signed_long) min = -0x80000000; - if (unsigned_fallback) min = 1; - } - if (max === undefined) { - if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF; - } - - return { - get: function() { - var v = this._getattr(a.name); - var n = a.float ? parseFloat(v) : parseInt(v, 10); - if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) { - return def.call(this); - } - if (unsigned_long || signed_long || unsigned_fallback) { - if (!/^[ \t\n\f\r]*[-+]?[0-9]/.test(v)) { return def.call(this); } - n = n|0; // jshint ignore:line - } - return n; - }, - set: function(v) { - if (!a.float) { v = Math.floor(v); } - if (setmin !== undefined && v < setmin) { - utils.IndexSizeError(a.name + ' set to ' + v); - } - if (unsigned_long) { - v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } else if (unsigned_fallback) { - v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } else if (signed_long) { - v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } - this._setattr(a.name, String(v)); - } - }; -} - -// This is a utility function for setting up change handler functions -// for attributes like 'id' that require special handling when they change. -exports.registerChangeHandler = function(c, name, handler) { - var p = c.prototype; - - // If p does not already have its own _attributeChangeHandlers - // then create one for it, inheriting from the inherited - // _attributeChangeHandlers. At the top (for the Element class) the - // _attributeChangeHandlers object will be created with a null prototype. - if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) { - p._attributeChangeHandlers = - Object.create(p._attributeChangeHandlers || null); - } - - p._attributeChangeHandlers[name] = handler; -}; - - -/***/ }), - -/***/ 66139: -/***/ ((__unused_webpack_module, exports) => { - -/* - * This file defines Domino behaviour that can be externally configured. - * To change these settings, set the relevant global property *before* - * you call `require("domino")`. - */ - -exports.h = !globalThis.__domino_frozen__; - - -/***/ }), - -/***/ 5244: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var attributes = __webpack_require__(6548); -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -module.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) { - var c = spec.ctor; - if (c) { - var props = spec.props || {}; - - if (spec.attributes) { - for (var n in spec.attributes) { - var attr = spec.attributes[n]; - if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr}; - if (!attr.name) attr.name = n.toLowerCase(); - props[n] = attributes.property(attr); - } - } - - props.constructor = { value : c, writable: isApiWritable }; - c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props); - if (spec.events) { - addEventHandlers(c, spec.events); - } - tagList[spec.name] = c; - } - else { - c = defaultConstructor; - } - - (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) { - tagNameToImpl[tag] = c; - }); - - return c; -}; - -function EventHandlerBuilder(body, document, form, element) { - this.body = body; - this.document = document; - this.form = form; - this.element = element; -} - -EventHandlerBuilder.prototype.build = function () { - return () => {}; -}; - -function EventHandlerChangeHandler(elt, name, oldval, newval) { - var doc = elt.ownerDocument || Object.create(null); - var form = elt.form || Object.create(null); - elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build(); -} - -function addEventHandlers(c, eventHandlerTypes) { - var p = c.prototype; - eventHandlerTypes.forEach(function(type) { - // Define the event handler registration IDL attribute for this type - Object.defineProperty(p, "on" + type, { - get: function() { - return this._getEventHandler(type); - }, - set: function(v) { - this._setEventHandler(type, v); - }, - }); - - // Define special behavior for the content attribute as well - attributes.registerChangeHandler(c, "on" + type, EventHandlerChangeHandler); - }); -} - - -/***/ }), - -/***/ 18196: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = { - Event: __webpack_require__(13441), - UIEvent: __webpack_require__(64259), - MouseEvent: __webpack_require__(21440), - CustomEvent: __webpack_require__(22112) -}; - - -/***/ }), - -/***/ 96324: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var Node = __webpack_require__(97537); -var Element = __webpack_require__(77301); -var CSSStyleDeclaration = __webpack_require__(53141); -var utils = __webpack_require__(89076); -var URLUtils = __webpack_require__(65531); -var defineElement = __webpack_require__(5244); - -var htmlElements = exports.elements = {}; -var htmlNameToImpl = Object.create(null); - -exports.createElement = function(doc, localName, prefix) { - var impl = htmlNameToImpl[localName] || HTMLUnknownElement; - return new impl(doc, localName, prefix); -}; - -function define(spec) { - return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl); -} - -function URL(attr) { - return { - get: function() { - var v = this._getattr(attr); - if (v === null) { return ''; } - var url = this.doc._resolve(v); - return (url === null) ? v : url; - }, - set: function(value) { - this._setattr(attr, value); - } - }; -} - -function CORS(attr) { - return { - get: function() { - var v = this._getattr(attr); - if (v === null) { return null; } - if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; } - return 'anonymous'; - }, - set: function(value) { - if (value===null || value===undefined) { - this.removeAttribute(attr); - } else { - this._setattr(attr, value); - } - } - }; -} - -const REFERRER = { - type: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"], - missing: '', -}; - - -// XXX: the default value for tabIndex should be 0 if the element is -// focusable and -1 if it is not. But the full definition of focusable -// is actually hard to compute, so for now, I'll follow Firefox and -// just base the default value on the type of the element. -var focusableElements = { - "A":true, "LINK":true, "BUTTON":true, "INPUT":true, - "SELECT":true, "TEXTAREA":true, "COMMAND":true -}; - -var HTMLFormElement = function(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - this._form = null; // Prevent later deoptimization -}; - -var HTMLElement = exports.HTMLElement = define({ - superclass: Element, - name: 'HTMLElement', - ctor: function HTMLElement(doc, localName, prefix) { - Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix); - }, - props: { - dangerouslySetInnerHTML: { - set: function (v) { - this._innerHTML = v; - }, - }, - innerHTML: { - get: function() { - return this.serialize(); - }, - set: function(v) { - var parser = this.ownerDocument.implementation.mozHTMLParser( - this.ownerDocument._address, - this); - parser.parse(v===null ? '' : String(v), true); - - // Remove any existing children of this node - var target = (this instanceof htmlNameToImpl.template) ? - this.content : this; - while(target.hasChildNodes()) - target.removeChild(target.firstChild); - - // Now copy newly parsed children to this node - target.appendChild(parser._asDocumentFragment()); - } - }, - style: { get: function() { - if (!this._style) - this._style = new CSSStyleDeclaration(this); - return this._style; - }, set: function(v) { - if (v===null||v===undefined) { v = ''; } - this._setattr('style', String(v)); - }}, - - // These can't really be implemented server-side in a reasonable way. - blur: { value: function() {}}, - focus: { value: function() {}}, - forceSpellCheck: { value: function() {}}, - - click: { value: function() { - if (this._click_in_progress) return; - this._click_in_progress = true; - try { - if (this._pre_click_activation_steps) - this._pre_click_activation_steps(); - - var event = this.ownerDocument.createEvent("MouseEvent"); - event.initMouseEvent("click", true, true, - this.ownerDocument.defaultView, 1, - 0, 0, 0, 0, - // These 4 should be initialized with - // the actually current keyboard state - // somehow... - false, false, false, false, - 0, null - ); - - // Dispatch this as an untrusted event since it is synthetic - var success = this.dispatchEvent(event); - - if (success) { - if (this._post_click_activation_steps) - this._post_click_activation_steps(event); - } - else { - if (this._cancelled_activation_steps) - this._cancelled_activation_steps(); - } - } - finally { - this._click_in_progress = false; - } - }}, - submit: { value: utils.nyi }, - }, - attributes: { - title: String, - lang: String, - dir: {type: ["ltr", "rtl", "auto"], missing: ''}, - draggable: {type: ["true", "false"], treatNullAsEmptyString: true }, - spellcheck: {type: ["true", "false"], missing: ''}, - enterKeyHint: {type: ["enter", "done", "go", "next", "previous", "search", "send"], missing: ''}, - autoCapitalize: {type: ["off", "on", "none", "sentences", "words", "characters"], missing: '' }, - autoFocus: Boolean, - accessKey: String, - nonce: String, - hidden: Boolean, - translate: {type: ["no", "yes"], missing: '' }, - tabIndex: {type: "long", default: function() { - if (this.tagName in focusableElements || - this.contentEditable) - return 0; - else - return -1; - }} - }, - events: [ - "abort", "canplay", "canplaythrough", "change", "click", "contextmenu", - "cuechange", "dblclick", "drag", "dragend", "dragenter", "dragleave", - "dragover", "dragstart", "drop", "durationchange", "emptied", "ended", - "input", "invalid", "keydown", "keypress", "keyup", "loadeddata", - "loadedmetadata", "loadstart", "mousedown", "mousemove", "mouseout", - "mouseover", "mouseup", "mousewheel", "pause", "play", "playing", - "progress", "ratechange", "readystatechange", "reset", "seeked", - "seeking", "select", "show", "stalled", "submit", "suspend", - "timeupdate", "volumechange", "waiting", - - // These last 5 event types will be overriden by HTMLBodyElement - "blur", "error", "focus", "load", "scroll" - ] -}); - - -// XXX: reflect contextmenu as contextMenu, with element type - - -// style: the spec doesn't call this a reflected attribute. -// may want to handle it manually. - -// contentEditable: enumerated, not clear if it is actually -// reflected or requires custom getter/setter. Not listed as -// "limited to known values". Raises syntax_err on bad setting, -// so I think this is custom. - -// contextmenu: content is element id, idl type is an element -// draggable: boolean, but not a reflected attribute -// dropzone: reflected SettableTokenList, experimental, so don't -// implement it right away. - -// data-* attributes: need special handling in setAttribute? -// Or maybe that isn't necessary. Can I just scan the attribute list -// when building the dataset? Liveness and caching issues? - -// microdata attributes: many are simple reflected attributes, but -// I'm not going to implement this now. - - -var HTMLUnknownElement = define({ - name: 'HTMLUnknownElement', - ctor: function HTMLUnknownElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - - -var formAssociatedProps = { - // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner - form: { get: function() { - return this._form; - }} -}; - -define({ - tag: 'a', - name: 'HTMLAnchorElement', - ctor: function HTMLAnchorElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - _post_click_activation_steps: { value: function(e) { - if (this.href) { - // Follow the link - // XXX: this is just a quick hack - // XXX: the HTML spec probably requires more than this - this.ownerDocument.defaultView.location = this.href; - } - }}, - }, - attributes: { - href: URL, - ping: String, - download: String, - target: String, - rel: String, - media: String, - hreflang: String, - type: String, - referrerPolicy: REFERRER, - // Obsolete - coords: String, - charset: String, - name: String, - rev: String, - shape: String, - } -}); -// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils -URLUtils._inherit(htmlNameToImpl.a.prototype); - -define({ - tag: 'area', - name: 'HTMLAreaElement', - ctor: function HTMLAreaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - alt: String, - target: String, - download: String, - rel: String, - media: String, - href: URL, - hreflang: String, - type: String, - shape: String, - coords: String, - ping: String, - // XXX: also reflect relList - referrerPolicy: REFERRER, - // Obsolete - noHref: Boolean, - } -}); -// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils -URLUtils._inherit(htmlNameToImpl.area.prototype); - -define({ - tag: 'br', - name: 'HTMLBRElement', - ctor: function HTMLBRElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - clear: String - }, -}); - -define({ - tag: 'base', - name: 'HTMLBaseElement', - ctor: function HTMLBaseElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - "target": String - } -}); - - -define({ - tag: 'body', - name: 'HTMLBodyElement', - ctor: function HTMLBodyElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - // Certain event handler attributes on a tag actually set - // handlers for the window rather than just that element. Define - // getters and setters for those here. Note that some of these override - // properties on HTMLElement.prototype. - // XXX: If I add support for , these have to go there, too - // XXX - // When the Window object is implemented, these attribute will have - // to work with the same-named attributes on the Window. - events: [ - "afterprint", "beforeprint", "beforeunload", "blur", "error", - "focus","hashchange", "load", "message", "offline", "online", - "pagehide", "pageshow","popstate","resize","scroll","storage","unload", - ], - attributes: { - // Obsolete - text: { type: String, treatNullAsEmptyString: true }, - link: { type: String, treatNullAsEmptyString: true }, - vLink: { type: String, treatNullAsEmptyString: true }, - aLink: { type: String, treatNullAsEmptyString: true }, - bgColor: { type: String, treatNullAsEmptyString: true }, - background: String, - } -}); - -define({ - tag: 'button', - name: 'HTMLButtonElement', - ctor: function HTMLButtonElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - name: String, - value: String, - disabled: Boolean, - autofocus: Boolean, - type: { type:["submit", "reset", "button", "menu"], missing: 'submit' }, - formTarget: String, - formAction: URL, - formNoValidate: Boolean, - formMethod: { type: ["get", "post", "dialog"], invalid: 'get', missing: '' }, - formEnctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: '' }, - } -}); - -define({ - tag: 'dl', - name: 'HTMLDListElement', - ctor: function HTMLDListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'data', - name: 'HTMLDataElement', - ctor: function HTMLDataElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - value: String, - } -}); - -define({ - tag: 'datalist', - name: 'HTMLDataListElement', - ctor: function HTMLDataListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'details', - name: 'HTMLDetailsElement', - ctor: function HTMLDetailsElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - "open": Boolean - } -}); - -define({ - tag: 'div', - name: 'HTMLDivElement', - ctor: function HTMLDivElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - } -}); - -define({ - tag: 'embed', - name: 'HTMLEmbedElement', - ctor: function HTMLEmbedElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - type: String, - width: String, - height: String, - // Obsolete - align: String, - name: String, - } -}); - -define({ - tag: 'fieldset', - name: 'HTMLFieldSetElement', - ctor: function HTMLFieldSetElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - disabled: Boolean, - name: String - } -}); - -define({ - tag: 'form', - name: 'HTMLFormElement', - ctor: function HTMLFormElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - action: String, - autocomplete: {type:['on', 'off'], missing: 'on'}, - name: String, - acceptCharset: {name: "accept-charset"}, - target: String, - noValidate: Boolean, - method: { type: ["get", "post", "dialog"], invalid: 'get', missing: 'get' }, - // Both enctype and encoding reflect the enctype content attribute - enctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: "application/x-www-form-urlencoded" }, - encoding: {name: 'enctype', type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: "application/x-www-form-urlencoded" }, - } -}); - -define({ - tag: 'hr', - name: 'HTMLHRElement', - ctor: function HTMLHRElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - color: String, - noShade: Boolean, - size: String, - width: String, - }, -}); - -define({ - tag: 'head', - name: 'HTMLHeadElement', - ctor: function HTMLHeadElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tags: ['h1','h2','h3','h4','h5','h6'], - name: 'HTMLHeadingElement', - ctor: function HTMLHeadingElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - }, -}); - -define({ - tag: 'html', - name: 'HTMLHtmlElement', - ctor: function HTMLHtmlElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - xmlns: URL, - // Obsolete - version: String - } -}); - -define({ - tag: 'iframe', - name: 'HTMLIFrameElement', - ctor: function HTMLIFrameElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - srcdoc: String, - name: String, - width: String, - height: String, - // XXX: sandbox is a reflected settable token list - seamless: Boolean, - allow: Boolean, - allowFullscreen: Boolean, - allowUserMedia: Boolean, - allowPaymentRequest: Boolean, - referrerPolicy: REFERRER, - loading: { type:['eager','lazy'], treatNullAsEmptyString: true }, - // Obsolete - align: String, - scrolling: String, - frameBorder: String, - longDesc: URL, - marginHeight: { type: String, treatNullAsEmptyString: true }, - marginWidth: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'img', - name: 'HTMLImageElement', - ctor: function HTMLImageElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - alt: String, - src: URL, - srcset: String, - crossOrigin: CORS, - useMap: String, - isMap: Boolean, - sizes: String, - height: { type: "unsigned long", default: 0 }, - width: { type: "unsigned long", default: 0 }, - referrerPolicy: REFERRER, - loading: { type:['eager','lazy'], missing: '' }, - // Obsolete: - name: String, - lowsrc: URL, - align: String, - hspace: { type: "unsigned long", default: 0 }, - vspace: { type: "unsigned long", default: 0 }, - longDesc: URL, - border: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'input', - name: 'HTMLInputElement', - ctor: function HTMLInputElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - _post_click_activation_steps: { value: function(e) { - if (this.type === 'checkbox') { - this.checked = !this.checked; - } - else if (this.type === 'radio') { - var group = this.form.getElementsByName(this.name); - for (var i=group.length-1; i >= 0; i--) { - var el = group[i]; - el.checked = (el === this); - } - } - }}, - }, - attributes: { - name: String, - disabled: Boolean, - autofocus: Boolean, - accept: String, - alt: String, - max: String, - min: String, - pattern: String, - placeholder: String, - step: String, - dirName: String, - defaultValue: {name: 'value'}, - multiple: Boolean, - required: Boolean, - readOnly: Boolean, - checked: Boolean, - value: String, - src: URL, - defaultChecked: {name: 'checked', type: Boolean}, - size: {type: 'unsigned long', default: 20, min: 1, setmin: 1}, - width: {type: 'unsigned long', min: 0, setmin: 0, default: 0}, - height: {type: 'unsigned long', min: 0, setmin: 0, default: 0}, - minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - autocomplete: String, // It's complicated - type: { type: - ["text", "hidden", "search", "tel", "url", "email", "password", - "datetime", "date", "month", "week", "time", "datetime-local", - "number", "range", "color", "checkbox", "radio", "file", "submit", - "image", "reset", "button"], - missing: 'text' }, - formTarget: String, - formNoValidate: Boolean, - formMethod: { type: ["get", "post"], invalid: 'get', missing: '' }, - formEnctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: '' }, - inputMode: { type: [ "verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "kana-name", "katakana", "numeric", "tel", "email", "url" ], missing: '' }, - // Obsolete - align: String, - useMap: String, - } -}); - -define({ - tag: 'keygen', - name: 'HTMLKeygenElement', - ctor: function HTMLKeygenElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - name: String, - disabled: Boolean, - autofocus: Boolean, - challenge: String, - keytype: { type:["rsa"], missing: '' }, - } -}); - -define({ - tag: 'li', - name: 'HTMLLIElement', - ctor: function HTMLLIElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - value: {type: "long", default: 0}, - // Obsolete - type: String, - } -}); - -define({ - tag: 'label', - name: 'HTMLLabelElement', - ctor: function HTMLLabelElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - htmlFor: {name: 'for', type: String} - } -}); - -define({ - tag: 'legend', - name: 'HTMLLegendElement', - ctor: function HTMLLegendElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - }, -}); - -define({ - tag: 'link', - name: 'HTMLLinkElement', - ctor: function HTMLLinkElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList - href: URL, - rel: String, - media: String, - hreflang: String, - type: String, - crossOrigin: CORS, - nonce: String, - integrity: String, - referrerPolicy: REFERRER, - imageSizes: String, - imageSrcset: String, - // Obsolete - charset: String, - rev: String, - target: String, - } -}); - -define({ - tag: 'map', - name: 'HTMLMapElement', - ctor: function HTMLMapElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String - } -}); - -define({ - tag: 'menu', - name: 'HTMLMenuElement', - ctor: function HTMLMenuElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // XXX: not quite right, default should be popup if parent element is - // popup. - type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' }, - label: String, - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'meta', - name: 'HTMLMetaElement', - ctor: function HTMLMetaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String, - content: String, - httpEquiv: {name: 'http-equiv', type: String}, - // Obsolete - scheme: String, - } -}); - -define({ - tag: 'meter', - name: 'HTMLMeterElement', - ctor: function HTMLMeterElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps -}); - -define({ - tags: ['ins', 'del'], - name: 'HTMLModElement', - ctor: function HTMLModElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - cite: URL, - dateTime: String - } -}); - -define({ - tag: 'ol', - name: 'HTMLOListElement', - ctor: function HTMLOListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - // Utility function (see the start attribute default value). Returns - // the number of
  • children of this element - _numitems: { get: function() { - var items = 0; - this.childNodes.forEach(function(n) { - if (n.nodeType === Node.ELEMENT_NODE && n.tagName === "LI") - items++; - }); - return items; - }} - }, - attributes: { - type: String, - reversed: Boolean, - start: { - type: "long", - default: function() { - // The default value of the start attribute is 1 unless the list is - // reversed. Then it is the # of li children - if (this.reversed) - return this._numitems; - else - return 1; - } - }, - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'object', - name: 'HTMLObjectElement', - ctor: function HTMLObjectElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - data: URL, - type: String, - name: String, - useMap: String, - typeMustMatch: Boolean, - width: String, - height: String, - // Obsolete - align: String, - archive: String, - code: String, - declare: Boolean, - hspace: { type: "unsigned long", default: 0 }, - standby: String, - vspace: { type: "unsigned long", default: 0 }, - codeBase: URL, - codeType: String, - border: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'optgroup', - name: 'HTMLOptGroupElement', - ctor: function HTMLOptGroupElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - disabled: Boolean, - label: String - } -}); - -define({ - tag: 'option', - name: 'HTMLOptionElement', - ctor: function HTMLOptionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - form: { get: function() { - var p = this.parentNode; - while (p && p.nodeType === Node.ELEMENT_NODE) { - if (p.localName === 'select') return p.form; - p = p.parentNode; - } - }}, - value: { - get: function() { return this._getattr('value') || this.text; }, - set: function(v) { this._setattr('value', v); }, - }, - text: { - get: function() { - // Strip and collapse whitespace - return this.textContent.replace(/[ \t\n\f\r]+/g, ' ').trim(); - }, - set: function(v) { this.textContent = v; }, - }, - // missing: index - }, - attributes: { - disabled: Boolean, - defaultSelected: {name: 'selected', type: Boolean}, - label: String, - } -}); - -define({ - tag: 'output', - name: 'HTMLOutputElement', - ctor: function HTMLOutputElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - // XXX Reflect for/htmlFor as a settable token list - name: String - } -}); - -define({ - tag: 'p', - name: 'HTMLParagraphElement', - ctor: function HTMLParagraphElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - } -}); - -define({ - tag: 'param', - name: 'HTMLParamElement', - ctor: function HTMLParamElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String, - value: String, - // Obsolete - type: String, - valueType: String, - } -}); - -define({ - tags: ['pre',/*legacy elements:*/'listing','xmp'], - name: 'HTMLPreElement', - ctor: function HTMLPreElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - width: { type: "long", default: 0 }, - } -}); - -define({ - tag: 'progress', - name: 'HTMLProgressElement', - ctor: function HTMLProgressElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - max: {type: Number, float: true, default: 1.0, min: 0} - } -}); - -define({ - tags: ['q', 'blockquote'], - name: 'HTMLQuoteElement', - ctor: function HTMLQuoteElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - cite: URL - } -}); - -define({ - tag: 'script', - name: 'HTMLScriptElement', - ctor: function HTMLScriptElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - text: { - get: function() { - var s = ""; - for(var i = 0, n = this.childNodes.length; i < n; i++) { - var child = this.childNodes[i]; - if (child.nodeType === Node.TEXT_NODE) - s += child._data; - } - return s; - }, - set: function(value) { - this.removeChildren(); - if (value !== null && value !== "") { - this.appendChild(this.ownerDocument.createTextNode(value)); - } - } - } - }, - attributes: { - src: URL, - type: String, - charset: String, - referrerPolicy: REFERRER, - defer: Boolean, - async: Boolean, - nomodule: Boolean, - crossOrigin: CORS, - nonce: String, - integrity: String, - } -}); - -define({ - tag: 'select', - name: 'HTMLSelectElement', - ctor: function HTMLSelectElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - options: { get: function() { - return this.getElementsByTagName('option'); - }} - }, - attributes: { - autocomplete: String, // It's complicated - name: String, - disabled: Boolean, - autofocus: Boolean, - multiple: Boolean, - required: Boolean, - size: {type: "unsigned long", default: 0} - } -}); - -define({ - tag: 'span', - name: 'HTMLSpanElement', - ctor: function HTMLSpanElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'style', - name: 'HTMLStyleElement', - ctor: function HTMLStyleElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - media: String, - type: String, - scoped: Boolean - } -}); - -define({ - tag: 'caption', - name: 'HTMLTableCaptionElement', - ctor: function HTMLTableCaptionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - } -}); - - -define({ - name: 'HTMLTableCellElement', - ctor: function HTMLTableCellElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - colSpan: {type: "unsigned long", default: 1}, - rowSpan: {type: "unsigned long", default: 1}, - //XXX Also reflect settable token list headers - scope: { type: ['row','col','rowgroup','colgroup'], missing: '' }, - abbr: String, - // Obsolete - align: String, - axis: String, - height: String, - width: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - noWrap: Boolean, - vAlign: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tags: ['col', 'colgroup'], - name: 'HTMLTableColElement', - ctor: function HTMLTableColElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - span: {type: 'limited unsigned long with fallback', default: 1, min: 1}, - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - width: String, - } -}); - -define({ - tag: 'table', - name: 'HTMLTableElement', - ctor: function HTMLTableElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - rows: { get: function() { - return this.getElementsByTagName('tr'); - }} - }, - attributes: { - // Obsolete - align: String, - border: String, - frame: String, - rules: String, - summary: String, - width: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - cellPadding: { type: String, treatNullAsEmptyString: true }, - cellSpacing: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'template', - name: 'HTMLTemplateElement', - ctor: function HTMLTemplateElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - this._contentFragment = doc._templateDoc.createDocumentFragment(); - }, - props: { - content: { get: function() { return this._contentFragment; } }, - serialize: { value: function() { return this.content.serialize(); } } - } -}); - -define({ - tag: 'tr', - name: 'HTMLTableRowElement', - ctor: function HTMLTableRowElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - cells: { get: function() { - return this.querySelectorAll('td,th'); - }} - }, - attributes: { - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - }, -}); - -define({ - tags: ['thead', 'tfoot', 'tbody'], - name: 'HTMLTableSectionElement', - ctor: function HTMLTableSectionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - rows: { get: function() { - return this.getElementsByTagName('tr'); - }} - }, - attributes: { - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - } -}); - -define({ - tag: 'textarea', - name: 'HTMLTextAreaElement', - ctor: function HTMLTextAreaElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - type: { get: function() { return 'textarea'; } }, - defaultValue: { - get: function() { return this.textContent; }, - set: function(v) { this.textContent = v; }, - }, - value: { - get: function() { return this.defaultValue; /* never dirty */ }, - set: function(v) { - // This isn't completely correct: according to the spec, this - // should "dirty" the API value, and result in - // `this.value !== this.defaultValue`. But for most of what - // folks want to do, this implementation should be fine: - this.defaultValue = v; - }, - }, - textLength: { get: function() { return this.value.length; } }, - }, - attributes: { - autocomplete: String, // It's complicated - name: String, - disabled: Boolean, - autofocus: Boolean, - placeholder: String, - wrap: String, - dirName: String, - required: Boolean, - readOnly: Boolean, - rows: {type: 'limited unsigned long with fallback', default: 2 }, - cols: {type: 'limited unsigned long with fallback', default: 20 }, - maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - inputMode: { type: [ "verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "kana-name", "katakana", "numeric", "tel", "email", "url" ], missing: '' }, - } -}); - -define({ - tag: 'time', - name: 'HTMLTimeElement', - ctor: function HTMLTimeElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - dateTime: String, - pubDate: Boolean - } -}); - -define({ - tag: 'title', - name: 'HTMLTitleElement', - ctor: function HTMLTitleElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - text: { get: function() { - return this.textContent; - }} - } -}); - -define({ - tag: 'ul', - name: 'HTMLUListElement', - ctor: function HTMLUListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - type: String, - // Obsolete - compact: Boolean, - } -}); - -define({ - name: 'HTMLMediaElement', - ctor: function HTMLMediaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - crossOrigin: CORS, - preload: { type:["metadata", "none", "auto", {value: "", alias: "auto"}], missing: 'auto' }, - loop: Boolean, - autoplay: Boolean, - mediaGroup: String, - controls: Boolean, - defaultMuted: {name: "muted", type: Boolean} - } -}); - -define({ - name: 'HTMLAudioElement', - tag: 'audio', - superclass: htmlElements.HTMLMediaElement, - ctor: function HTMLAudioElement(doc, localName, prefix) { - htmlElements.HTMLMediaElement.call(this, doc, localName, prefix); - } -}); - -define({ - name: 'HTMLVideoElement', - tag: 'video', - superclass: htmlElements.HTMLMediaElement, - ctor: function HTMLVideoElement(doc, localName, prefix) { - htmlElements.HTMLMediaElement.call(this, doc, localName, prefix); - }, - attributes: { - poster: URL, - width: {type: "unsigned long", min: 0, default: 0 }, - height: {type: "unsigned long", min: 0, default: 0 } - } -}); - -define({ - tag: 'td', - name: 'HTMLTableDataCellElement', - superclass: htmlElements.HTMLTableCellElement, - ctor: function HTMLTableDataCellElement(doc, localName, prefix) { - htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'th', - name: 'HTMLTableHeaderCellElement', - superclass: htmlElements.HTMLTableCellElement, - ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) { - htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix); - }, -}); - -define({ - tag: 'frameset', - name: 'HTMLFrameSetElement', - ctor: function HTMLFrameSetElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'frame', - name: 'HTMLFrameElement', - ctor: function HTMLFrameElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'canvas', - name: 'HTMLCanvasElement', - ctor: function HTMLCanvasElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - getContext: { value: utils.nyi }, - probablySupportsContext: { value: utils.nyi }, - setContext: { value: utils.nyi }, - transferControlToProxy: { value: utils.nyi }, - toDataURL: { value: utils.nyi }, - toBlob: { value: utils.nyi } - }, - attributes: { - width: { type: "unsigned long", default: 300}, - height: { type: "unsigned long", default: 150} - } -}); - -define({ - tag: 'dialog', - name: 'HTMLDialogElement', - ctor: function HTMLDialogElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - show: { value: utils.nyi }, - showModal: { value: utils.nyi }, - close: { value: utils.nyi } - }, - attributes: { - open: Boolean, - returnValue: String - } -}); - -define({ - tag: 'menuitem', - name: 'HTMLMenuItemElement', - ctor: function HTMLMenuItemElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - // The menuitem's label - _label: { - get: function() { - var val = this._getattr('label'); - if (val !== null && val !== '') { return val; } - val = this.textContent; - // Strip and collapse whitespace - return val.replace(/[ \t\n\f\r]+/g, ' ').trim(); - } - }, - // The menuitem label IDL attribute - label: { - get: function() { - var val = this._getattr('label'); - if (val !== null) { return val; } - return this._label; - }, - set: function(v) { - this._setattr('label', v); - }, - } - }, - attributes: { - type: { type: ["command","checkbox","radio"], missing: 'command' }, - icon: URL, - disabled: Boolean, - checked: Boolean, - radiogroup: String, - default: Boolean - } -}); - -define({ - tag: 'source', - name: 'HTMLSourceElement', - ctor: function HTMLSourceElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - srcset: String, - sizes: String, - media: String, - src: URL, - type: String, - width: String, - height: String, - } -}); - -define({ - tag: 'track', - name: 'HTMLTrackElement', - ctor: function HTMLTrackElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - srclang: String, - label: String, - default: Boolean, - kind: { type: ["subtitles", "captions", "descriptions", "chapters", "metadata"], missing: 'subtitles', invalid: 'metadata' }, - }, - props: { - NONE: { get: function() { return 0; } }, - LOADING: { get: function() { return 1; } }, - LOADED: { get: function() { return 2; } }, - ERROR: { get: function() { return 3; } }, - readyState: { get: utils.nyi }, - track: { get: utils.nyi } - } -}); - -define({ - // obsolete - tag: 'font', - name: 'HTMLFontElement', - ctor: function HTMLFontElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - color: { type: String, treatNullAsEmptyString: true }, - face: { type: String }, - size: { type: String }, - }, -}); - -define({ - // obsolete - tag: 'dir', - name: 'HTMLDirectoryElement', - ctor: function HTMLDirectoryElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - compact: Boolean, - }, -}); - -define({ - tags: [ - "abbr", "address", "article", "aside", "b", "bdi", "bdo", "cite", "content", "code", - "dd", "dfn", "dt", "em", "figcaption", "figure", "footer", "header", "hgroup", "i", "kbd", - "main", "mark", "nav", "noscript", "rb", "rp", "rt", "rtc", - "ruby", "s", "samp", "section", "small", "strong", "sub", "summary", "sup", "u", "var", "wbr", - // Legacy elements - "acronym", "basefont", "big", "center", "nobr", "noembed", "noframes", - "plaintext", "strike", "tt" - ] -}); - - -/***/ }), - -/***/ 31575: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -exports = module.exports = { - CSSStyleDeclaration: __webpack_require__(53141), - CharacterData: __webpack_require__(90086), - Comment: __webpack_require__(17548), - DOMException: __webpack_require__(46364), - DOMImplementation: __webpack_require__(80931), - DOMTokenList: __webpack_require__(82840), - Document: __webpack_require__(35452), - DocumentFragment: __webpack_require__(17948), - DocumentType: __webpack_require__(73092), - Element: __webpack_require__(77301), - HTMLParser: __webpack_require__(91895), - NamedNodeMap: __webpack_require__(49492), - Node: __webpack_require__(97537), - NodeList: __webpack_require__(64965), - NodeFilter: __webpack_require__(383), - ProcessingInstruction: __webpack_require__(81248), - Text: __webpack_require__(58210), - Window: __webpack_require__(21865) -}; - -utils.merge(exports, __webpack_require__(18196)); -utils.merge(exports, (__webpack_require__(96324).elements)); -utils.merge(exports, (__webpack_require__(967).elements)); - - -/***/ }), - -/***/ 31993: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var DOMImplementation = __webpack_require__(80931); -var HTMLParser = __webpack_require__(91895); -var Window = __webpack_require__(21865); -var impl = __webpack_require__(31575); - -exports.createDOMImplementation = function() { - return new DOMImplementation(null); -}; - -exports.createDocument = function(html, force) { - // Previous API couldn't let you pass '' as a document, and that - // yields a slightly different document than createHTMLDocument('') - // does. The new `force` parameter lets you pass '' if you want to. - if (html || force) { - var parser = new HTMLParser(); - parser.parse(html || '', true); - return parser.document(); - } - return new DOMImplementation(null).createHTMLDocument(""); -}; - -exports.createIncrementalHTMLParser = function() { - var parser = new HTMLParser(); - /** API for incremental parser. */ - return { - /** Provide an additional chunk of text to be parsed. */ - write: function(s) { - if (s.length > 0) { - parser.parse(s, false, function() { return true; }); - } - }, - /** - * Signal that we are done providing input text, optionally - * providing one last chunk as a parameter. - */ - end: function(s) { - parser.parse(s || '', true, function() { return true; }); - }, - /** - * Performs a chunk of parsing work, returning at the end of - * the next token as soon as shouldPauseFunc() returns true. - * Returns true iff there is more work to do. - * - * For example: - * ``` - * var incrParser = domino.createIncrementalHTMLParser(); - * incrParser.end('...long html document...'); - * while (true) { - * // Pause every 10ms - * var start = Date.now(); - * var pauseIn10 = function() { return (Date.now() - start) >= 10; }; - * if (!incrParser.process(pauseIn10)) { - * break; - * } - * ...yield to other tasks, do other housekeeping, etc... - * } - * ``` - */ - process: function(shouldPauseFunc) { - return parser.parse('', false, shouldPauseFunc); - }, - /** - * Returns the result of the incremental parse. Valid after - * `this.end()` has been called and `this.process()` has returned - * false. - */ - document: function() { - return parser.document(); - }, - }; -}; - -exports.createWindow = function(html, address) { - var document = exports.createDocument(html); - if (address !== undefined) { document._address = address; } - return new impl.Window(document); -}; - -exports.impl = impl; - -/***/ }), - -/***/ 23509: -/***/ ((module, exports) => { - -"use strict"; - -/* jshint eqnull: true */ -/** - * Zest (https://github.com/chjj/zest) - * A css selector engine. - * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed) - * Domino version based on Zest v0.1.3 with bugfixes applied. - */ - -/** - * Helpers - */ - -var window = Object.create(null, { - location: { get: function() { - throw new Error('window.location is not supported.'); - } } -}); - -var compareDocumentPosition = function(a, b) { - return a.compareDocumentPosition(b); -}; - -var order = function(a, b) { - /* jshint bitwise: false */ - return compareDocumentPosition(a, b) & 2 ? 1 : -1; -}; - -var next = function(el) { - while ((el = el.nextSibling) - && el.nodeType !== 1); - return el; -}; - -var prev = function(el) { - while ((el = el.previousSibling) - && el.nodeType !== 1); - return el; -}; - -var child = function(el) { - /*jshint -W084 */ - if (el = el.firstChild) { - while (el.nodeType !== 1 - && (el = el.nextSibling)); - } - return el; -}; - -var lastChild = function(el) { - /*jshint -W084 */ - if (el = el.lastChild) { - while (el.nodeType !== 1 - && (el = el.previousSibling)); - } - return el; -}; - -var parentIsElement = function(n) { - if (!n.parentNode) { return false; } - var nodeType = n.parentNode.nodeType; - // The root `html` element can be a first- or last-child, too. - return nodeType === 1 || nodeType === 9; -}; - -var unquote = function(str) { - if (!str) return str; - var ch = str[0]; - if (ch === '"' || ch === '\'') { - if (str[str.length-1] === ch) { - str = str.slice(1, -1); - } else { - // bad string. - str = str.slice(1); - } - return str.replace(rules.str_escape, function(s) { - var m = /^\\(?:([0-9A-Fa-f]+)|([\r\n\f]+))/.exec(s); - if (!m) { return s.slice(1); } - if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ } - var cp = parseInt(m[1], 16); - return String.fromCodePoint ? String.fromCodePoint(cp) : - // Not all JavaScript implementations have String.fromCodePoint yet. - String.fromCharCode(cp); - }); - } else if (rules.ident.test(str)) { - return decodeid(str); - } else { - // NUMBER, PERCENTAGE, DIMENSION, etc - return str; - } -}; - -var decodeid = function(str) { - return str.replace(rules.escape, function(s) { - var m = /^\\([0-9A-Fa-f]+)/.exec(s); - if (!m) { return s[1]; } - var cp = parseInt(m[1], 16); - return String.fromCodePoint ? String.fromCodePoint(cp) : - // Not all JavaScript implementations have String.fromCodePoint yet. - String.fromCharCode(cp); - }); -}; - -var indexOf = (function() { - if (Array.prototype.indexOf) { - return Array.prototype.indexOf; - } - return function(obj, item) { - var i = this.length; - while (i--) { - if (this[i] === item) return i; - } - return -1; - }; -})(); - -var makeInside = function(start, end) { - var regex = rules.inside.source - .replace(//g, end); - - return new RegExp(regex); -}; - -var replace = function(regex, name, val) { - regex = regex.source; - regex = regex.replace(name, val.source || val); - return new RegExp(regex); -}; - -var truncateUrl = function(url, num) { - return url - .replace(/^(?:\w+:\/\/|\/+)/, '') - .replace(/(?:\/+|\/*#.*?)$/, '') - .split('/', num) - .join('/'); -}; - -/** - * Handle `nth` Selectors - */ - -var parseNth = function(param_, test) { - var param = param_.replace(/\s+/g, '') - , cap; - - if (param === 'even') { - param = '2n+0'; - } else if (param === 'odd') { - param = '2n+1'; - } else if (param.indexOf('n') === -1) { - param = '0n' + param; - } - - cap = /^([+-])?(\d+)?n([+-])?(\d+)?$/.exec(param); - - return { - group: cap[1] === '-' - ? -(cap[2] || 1) - : +(cap[2] || 1), - offset: cap[4] - ? (cap[3] === '-' ? -cap[4] : +cap[4]) - : 0 - }; -}; - -var nth = function(param_, test, last) { - var param = parseNth(param_) - , group = param.group - , offset = param.offset - , find = !last ? child : lastChild - , advance = !last ? next : prev; - - return function(el) { - if (!parentIsElement(el)) return; - - var rel = find(el.parentNode) - , pos = 0; - - while (rel) { - if (test(rel, el)) pos++; - if (rel === el) { - pos -= offset; - return group && pos - ? (pos % group) === 0 && (pos < 0 === group < 0) - : !pos; - } - rel = advance(rel); - } - }; -}; - -/** - * Simple Selectors - */ - -var selectors = { - '*': (function() { - if (false/*function() { - var el = document.createElement('div'); - el.appendChild(document.createComment('')); - return !!el.getElementsByTagName('*')[0]; - }()*/) {} - return function() { - return true; - }; - })(), - 'type': function(type) { - type = type.toLowerCase(); - return function(el) { - return el.nodeName.toLowerCase() === type; - }; - }, - 'attr': function(key, op, val, i) { - op = operators[op]; - return function(el) { - var attr; - switch (key) { - case 'for': - attr = el.htmlFor; - break; - case 'class': - // className is '' when non-existent - // getAttribute('class') is null - attr = el.className; - if (attr === '' && el.getAttribute('class') == null) { - attr = null; - } - break; - case 'href': - case 'src': - attr = el.getAttribute(key, 2); - break; - case 'title': - // getAttribute('title') can be '' when non-existent sometimes? - attr = el.getAttribute('title') || null; - break; - // careful with attributes with special getter functions - case 'id': - case 'lang': - case 'dir': - case 'accessKey': - case 'hidden': - case 'tabIndex': - case 'style': - if (el.getAttribute) { - attr = el.getAttribute(key); - break; - } - /* falls through */ - default: - if (el.hasAttribute && !el.hasAttribute(key)) { - break; - } - attr = el[key] != null - ? el[key] - : el.getAttribute && el.getAttribute(key); - break; - } - if (attr == null) return; - attr = attr + ''; - if (i) { - attr = attr.toLowerCase(); - val = val.toLowerCase(); - } - return op(attr, val); - }; - }, - ':first-child': function(el) { - return !prev(el) && parentIsElement(el); - }, - ':last-child': function(el) { - return !next(el) && parentIsElement(el); - }, - ':only-child': function(el) { - return !prev(el) && !next(el) && parentIsElement(el); - }, - ':nth-child': function(param, last) { - return nth(param, function() { - return true; - }, last); - }, - ':nth-last-child': function(param) { - return selectors[':nth-child'](param, true); - }, - ':root': function(el) { - return el.ownerDocument.documentElement === el; - }, - ':empty': function(el) { - return !el.firstChild; - }, - ':not': function(sel) { - var test = compileGroup(sel); - return function(el) { - return !test(el); - }; - }, - ':first-of-type': function(el) { - if (!parentIsElement(el)) return; - var type = el.nodeName; - /*jshint -W084 */ - while (el = prev(el)) { - if (el.nodeName === type) return; - } - return true; - }, - ':last-of-type': function(el) { - if (!parentIsElement(el)) return; - var type = el.nodeName; - /*jshint -W084 */ - while (el = next(el)) { - if (el.nodeName === type) return; - } - return true; - }, - ':only-of-type': function(el) { - return selectors[':first-of-type'](el) - && selectors[':last-of-type'](el); - }, - ':nth-of-type': function(param, last) { - return nth(param, function(rel, el) { - return rel.nodeName === el.nodeName; - }, last); - }, - ':nth-last-of-type': function(param) { - return selectors[':nth-of-type'](param, true); - }, - ':checked': function(el) { - return !!(el.checked || el.selected); - }, - ':indeterminate': function(el) { - return !selectors[':checked'](el); - }, - ':enabled': function(el) { - return !el.disabled && el.type !== 'hidden'; - }, - ':disabled': function(el) { - return !!el.disabled; - }, - ':target': function(el) { - return el.id === window.location.hash.substring(1); - }, - ':focus': function(el) { - return el === el.ownerDocument.activeElement; - }, - ':is': function(sel) { - return compileGroup(sel); - }, - // :matches is an older name for :is; see - // https://github.com/w3c/csswg-drafts/issues/3258 - ':matches': function(sel) { - return selectors[':is'](sel); - }, - ':nth-match': function(param, last) { - var args = param.split(/\s*,\s*/) - , arg = args.shift() - , test = compileGroup(args.join(',')); - - return nth(arg, test, last); - }, - ':nth-last-match': function(param) { - return selectors[':nth-match'](param, true); - }, - ':links-here': function(el) { - return el + '' === window.location + ''; - }, - ':lang': function(param) { - return function(el) { - while (el) { - if (el.lang) return el.lang.indexOf(param) === 0; - el = el.parentNode; - } - }; - }, - ':dir': function(param) { - return function(el) { - while (el) { - if (el.dir) return el.dir === param; - el = el.parentNode; - } - }; - }, - ':scope': function(el, con) { - var context = con || el.ownerDocument; - if (context.nodeType === 9) { - return el === context.documentElement; - } - return el === context; - }, - ':any-link': function(el) { - return typeof el.href === 'string'; - }, - ':local-link': function(el) { - if (el.nodeName) { - return el.href && el.host === window.location.host; - } - var param = +el + 1; - return function(el) { - if (!el.href) return; - - var url = window.location + '' - , href = el + ''; - - return truncateUrl(url, param) === truncateUrl(href, param); - }; - }, - ':default': function(el) { - return !!el.defaultSelected; - }, - ':valid': function(el) { - return el.willValidate || (el.validity && el.validity.valid); - }, - ':invalid': function(el) { - return !selectors[':valid'](el); - }, - ':in-range': function(el) { - return el.value > el.min && el.value <= el.max; - }, - ':out-of-range': function(el) { - return !selectors[':in-range'](el); - }, - ':required': function(el) { - return !!el.required; - }, - ':optional': function(el) { - return !el.required; - }, - ':read-only': function(el) { - if (el.readOnly) return true; - - var attr = el.getAttribute('contenteditable') - , prop = el.contentEditable - , name = el.nodeName.toLowerCase(); - - name = name !== 'input' && name !== 'textarea'; - - return (name || el.disabled) && attr == null && prop !== 'true'; - }, - ':read-write': function(el) { - return !selectors[':read-only'](el); - }, - ':hover': function() { - throw new Error(':hover is not supported.'); - }, - ':active': function() { - throw new Error(':active is not supported.'); - }, - ':link': function() { - throw new Error(':link is not supported.'); - }, - ':visited': function() { - throw new Error(':visited is not supported.'); - }, - ':column': function() { - throw new Error(':column is not supported.'); - }, - ':nth-column': function() { - throw new Error(':nth-column is not supported.'); - }, - ':nth-last-column': function() { - throw new Error(':nth-last-column is not supported.'); - }, - ':current': function() { - throw new Error(':current is not supported.'); - }, - ':past': function() { - throw new Error(':past is not supported.'); - }, - ':future': function() { - throw new Error(':future is not supported.'); - }, - // Non-standard, for compatibility purposes. - ':contains': function(param) { - return function(el) { - var text = el.innerText || el.textContent || el.value || ''; - return text.indexOf(param) !== -1; - }; - }, - ':has': function(param) { - return function(el) { - return find(param, el).length > 0; - }; - } - // Potentially add more pseudo selectors for - // compatibility with sizzle and most other - // selector engines (?). -}; - -/** - * Attribute Operators - */ - -var operators = { - '-': function() { - return true; - }, - '=': function(attr, val) { - return attr === val; - }, - '*=': function(attr, val) { - return attr.indexOf(val) !== -1; - }, - '~=': function(attr, val) { - var i - , s - , f - , l; - - for (s = 0; true; s = i + 1) { - i = attr.indexOf(val, s); - if (i === -1) return false; - f = attr[i - 1]; - l = attr[i + val.length]; - if ((!f || f === ' ') && (!l || l === ' ')) return true; - } - }, - '|=': function(attr, val) { - var i = attr.indexOf(val) - , l; - - if (i !== 0) return; - l = attr[i + val.length]; - - return l === '-' || !l; - }, - '^=': function(attr, val) { - return attr.indexOf(val) === 0; - }, - '$=': function(attr, val) { - var i = attr.lastIndexOf(val); - return i !== -1 && i + val.length === attr.length; - }, - // non-standard - '!=': function(attr, val) { - return attr !== val; - } -}; - -/** - * Combinator Logic - */ - -var combinators = { - ' ': function(test) { - return function(el) { - /*jshint -W084 */ - while (el = el.parentNode) { - if (test(el)) return el; - } - }; - }, - '>': function(test) { - return function(el) { - /*jshint -W084 */ - if (el = el.parentNode) { - return test(el) && el; - } - }; - }, - '+': function(test) { - return function(el) { - /*jshint -W084 */ - if (el = prev(el)) { - return test(el) && el; - } - }; - }, - '~': function(test) { - return function(el) { - /*jshint -W084 */ - while (el = prev(el)) { - if (test(el)) return el; - } - }; - }, - 'noop': function(test) { - return function(el) { - return test(el) && el; - }; - }, - 'ref': function(test, name) { - var node; - - function ref(el) { - var doc = el.ownerDocument - , nodes = doc.getElementsByTagName('*') - , i = nodes.length; - - while (i--) { - node = nodes[i]; - if (ref.test(el)) { - node = null; - return true; - } - } - - node = null; - } - - ref.combinator = function(el) { - if (!node || !node.getAttribute) return; - - var attr = node.getAttribute(name) || ''; - if (attr[0] === '#') attr = attr.substring(1); - - if (attr === el.id && test(node)) { - return node; - } - }; - - return ref; - } -}; - -/** - * Grammar - */ - -var rules = { - escape: /\\(?:[^0-9A-Fa-f\r\n]|[0-9A-Fa-f]{1,6}[\r\n\t ]?)/g, - str_escape: /(escape)|\\(\n|\r\n?|\f)/g, - nonascii: /[\u00A0-\uFFFF]/, - cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/, - qname: /^ *(cssid|\*)/, - simple: /^(?:([.#]cssid)|pseudo|attr)/, - ref: /^ *\/(cssid)\/ */, - combinator: /^(?: +([^ \w*.#\\]) +|( )+|([^ \w*.#\\]))(?! *$)/, - attr: /^\[(cssid)(?:([^\w]?=)(inside))?\]/, - pseudo: /^(:cssid)(?:\((inside)\))?/, - inside: /(?:"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|<[^"'>]*>|\\["'>]|[^"'>])*/, - ident: /^(cssid)$/ -}; - -rules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii); -rules.cssid = replace(rules.cssid, 'escape', rules.escape); -rules.qname = replace(rules.qname, 'cssid', rules.cssid); -rules.simple = replace(rules.simple, 'cssid', rules.cssid); -rules.ref = replace(rules.ref, 'cssid', rules.cssid); -rules.attr = replace(rules.attr, 'cssid', rules.cssid); -rules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid); -rules.inside = replace(rules.inside, '[^"\'>]*', rules.inside); -rules.attr = replace(rules.attr, 'inside', makeInside('\\[', '\\]')); -rules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\(', '\\)')); -rules.simple = replace(rules.simple, 'pseudo', rules.pseudo); -rules.simple = replace(rules.simple, 'attr', rules.attr); -rules.ident = replace(rules.ident, 'cssid', rules.cssid); -rules.str_escape = replace(rules.str_escape, 'escape', rules.escape); - -/** - * Compiling - */ - -var compile = function(sel_) { - var sel = sel_.replace(/^\s+|\s+$/g, '') - , test - , filter = [] - , buff = [] - , subject - , qname - , cap - , op - , ref; - - /*jshint -W084 */ - while (sel) { - if (cap = rules.qname.exec(sel)) { - sel = sel.substring(cap[0].length); - qname = decodeid(cap[1]); - buff.push(tok(qname, true)); - } else if (cap = rules.simple.exec(sel)) { - sel = sel.substring(cap[0].length); - qname = '*'; - buff.push(tok(qname, true)); - buff.push(tok(cap)); - } else { - throw new SyntaxError('Invalid selector.'); - } - - while (cap = rules.simple.exec(sel)) { - sel = sel.substring(cap[0].length); - buff.push(tok(cap)); - } - - if (sel[0] === '!') { - sel = sel.substring(1); - subject = makeSubject(); - subject.qname = qname; - buff.push(subject.simple); - } - - if (cap = rules.ref.exec(sel)) { - sel = sel.substring(cap[0].length); - ref = combinators.ref(makeSimple(buff), decodeid(cap[1])); - filter.push(ref.combinator); - buff = []; - continue; - } - - if (cap = rules.combinator.exec(sel)) { - sel = sel.substring(cap[0].length); - op = cap[1] || cap[2] || cap[3]; - if (op === ',') { - filter.push(combinators.noop(makeSimple(buff))); - break; - } - } else { - op = 'noop'; - } - - if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); } - filter.push(combinators[op](makeSimple(buff))); - buff = []; - } - - test = makeTest(filter); - test.qname = qname; - test.sel = sel; - - if (subject) { - subject.lname = test.qname; - - subject.test = test; - subject.qname = subject.qname; - subject.sel = test.sel; - test = subject; - } - - if (ref) { - ref.test = test; - ref.qname = test.qname; - ref.sel = test.sel; - test = ref; - } - - return test; -}; - -var tok = function(cap, qname) { - // qname - if (qname) { - return cap === '*' - ? selectors['*'] - : selectors.type(cap); - } - - // class/id - if (cap[1]) { - return cap[1][0] === '.' - // XXX unescape here? or in attr? - ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false) - : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false); - } - - // pseudo-name - // inside-pseudo - if (cap[2]) { - return cap[3] - ? selectors[decodeid(cap[2])](unquote(cap[3])) - : selectors[decodeid(cap[2])]; - } - - // attr name - // attr op - // attr value - if (cap[4]) { - var value = cap[6]; - var i = /["'\s]\s*I$/i.test(value); - if (i) { - value = value.replace(/\s*I$/i, ''); - } - return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i); - } - - throw new SyntaxError('Unknown Selector.'); -}; - -var makeSimple = function(func) { - var l = func.length - , i; - - // Potentially make sure - // `el` is truthy. - if (l < 2) return func[0]; - - return function(el) { - if (!el) return; - for (i = 0; i < l; i++) { - if (!func[i](el)) return; - } - return true; - }; -}; - -var makeTest = function(func) { - if (func.length < 2) { - return function(el) { - return !!func[0](el); - }; - } - return function(el) { - var i = func.length; - while (i--) { - if (!(el = func[i](el))) return; - } - return true; - }; -}; - -var makeSubject = function() { - var target; - - function subject(el) { - var node = el.ownerDocument - , scope = node.getElementsByTagName(subject.lname) - , i = scope.length; - - while (i--) { - if (subject.test(scope[i]) && target === el) { - target = null; - return true; - } - } - - target = null; - } - - subject.simple = function(el) { - target = el; - return true; - }; - - return subject; -}; - -var compileGroup = function(sel) { - var test = compile(sel) - , tests = [ test ]; - - while (test.sel) { - test = compile(test.sel); - tests.push(test); - } - - if (tests.length < 2) return test; - - return function(el) { - var l = tests.length - , i = 0; - - for (; i < l; i++) { - if (tests[i](el)) return true; - } - }; -}; - -/** - * Selection - */ - -var find = function(sel, node) { - var results = [] - , test = compile(sel) - , scope = node.getElementsByTagName(test.qname) - , i = 0 - , el; - - /*jshint -W084 */ - while (el = scope[i++]) { - if (test(el)) results.push(el); - } - - if (test.sel) { - while (test.sel) { - test = compile(test.sel); - scope = node.getElementsByTagName(test.qname); - i = 0; - /*jshint -W084 */ - while (el = scope[i++]) { - if (test(el) && indexOf.call(results, el) === -1) { - results.push(el); - } - } - } - results.sort(order); - } - - return results; -}; - -/** - * Expose - */ - -module.exports = exports = function(sel, context) { - /* when context isn't a DocumentFragment and the selector is simple: */ - var id, r; - if (context.nodeType !== 11 && sel.indexOf(' ') === -1) { - if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) { - if (context.doc._hasMultipleElementsWithId) { - id = sel.substring(1); - if (!context.doc._hasMultipleElementsWithId(id)) { - r = context.doc.getElementById(id); - return r ? [r] : []; - } - } - } - if (sel[0] === '.' && /^\.\w+$/.test(sel)) { - return context.getElementsByClassName(sel.substring(1)); - } - if (/^\w+$/.test(sel)) { - return context.getElementsByTagName(sel); - } - } - /* do things the hard/slow way */ - return find(sel, context); -}; - -exports.selectors = selectors; -exports.operators = operators; -exports.combinators = combinators; - -exports.matches = function(el, sel) { - var test = { sel: sel }; - do { - test = compile(test.sel); - if (test(el)) { return true; } - } while (test.sel); - return false; -}; - - -/***/ }), - -/***/ 72636: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.hyphenate = exports.parse = void 0; -/** - * Parses string representation of a style and converts it into object literal. - * - * @param value string representation of style as used in the `style` attribute in HTML. - * Example: `color: red; height: auto`. - * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height', - * 'auto']` - */ -function parse(value) { - // we use a string array here instead of a string map - // because a string-map is not guaranteed to retain the - // order of the entries whereas a string array can be - // constructed in a [key, value, key, value] format. - const styles = []; - let i = 0; - let parenDepth = 0; - let quote = 0; /* Char.QuoteNone */ - let valueStart = 0; - let propStart = 0; - let currentProp = null; - while (i < value.length) { - const token = value.charCodeAt(i++); - switch (token) { - case 40 /* Char.OpenParen */: - parenDepth++; - break; - case 41 /* Char.CloseParen */: - parenDepth--; - break; - case 39 /* Char.QuoteSingle */: - // valueStart needs to be there since prop values don't - // have quotes in CSS - if (quote === 0 /* Char.QuoteNone */) { - quote = 39 /* Char.QuoteSingle */; - } else if ( - quote === 39 /* Char.QuoteSingle */ && - value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */ - ) { - quote = 0 /* Char.QuoteNone */; - } - break; - case 34 /* Char.QuoteDouble */: - // same logic as above - if (quote === 0 /* Char.QuoteNone */) { - quote = 34 /* Char.QuoteDouble */; - } else if ( - quote === 34 /* Char.QuoteDouble */ && - value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */ - ) { - quote = 0 /* Char.QuoteNone */; - } - break; - case 58 /* Char.Colon */: - if ( - !currentProp && - parenDepth === 0 && - quote === 0 /* Char.QuoteNone */ - ) { - currentProp = hyphenate(value.substring(propStart, i - 1).trim()); - valueStart = i; - } - break; - case 59 /* Char.Semicolon */: - if ( - currentProp && - valueStart > 0 && - parenDepth === 0 && - quote === 0 /* Char.QuoteNone */ - ) { - const styleVal = value.substring(valueStart, i - 1).trim(); - styles.push(currentProp, styleVal); - propStart = i; - valueStart = 0; - currentProp = null; - } - break; - } - } - if (currentProp && valueStart) { - const styleVal = value.slice(valueStart).trim(); - styles.push(currentProp, styleVal); - } - return styles; -} -exports.parse = parse; -function hyphenate(value) { - return value - .replace(/[a-z][A-Z]/g, (v) => { - return v.charAt(0) + "-" + v.charAt(1); - }) - .toLowerCase(); -} -exports.hyphenate = hyphenate; - - -/***/ }), - -/***/ 967: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var Element = __webpack_require__(77301); -var defineElement = __webpack_require__(5244); -var utils = __webpack_require__(89076); -var CSSStyleDeclaration = __webpack_require__(53141); - -var svgElements = exports.elements = {}; -var svgNameToImpl = Object.create(null); - -exports.createElement = function(doc, localName, prefix) { - var impl = svgNameToImpl[localName] || SVGElement; - return new impl(doc, localName, prefix); -}; - -function define(spec) { - return defineElement(spec, SVGElement, svgElements, svgNameToImpl); -} - -var SVGElement = define({ - superclass: Element, - name: 'SVGElement', - ctor: function SVGElement(doc, localName, prefix) { - Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix); - }, - props: { - style: { get: function() { - if (!this._style) - this._style = new CSSStyleDeclaration(this); - return this._style; - }} - } -}); - -define({ - name: 'SVGSVGElement', - ctor: function SVGSVGElement(doc, localName, prefix) { - SVGElement.call(this, doc, localName, prefix); - }, - tag: 'svg', - props: { - createSVGRect: { value: function () { - return exports.createElement(this.ownerDocument, 'rect', null); - } } - } -}); - -define({ - tags: [ - 'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', - 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', - 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', - 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', - 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', - 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g', - 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph', - 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', - 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern' - ] -}); - - -/***/ }), - -/***/ 89076: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var DOMException = __webpack_require__(46364); -var ERR = DOMException; -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -exports.NAMESPACE = { - HTML: 'http://www.w3.org/1999/xhtml', - XML: 'http://www.w3.org/XML/1998/namespace', - XMLNS: 'http://www.w3.org/2000/xmlns/', - MATHML: 'http://www.w3.org/1998/Math/MathML', - SVG: 'http://www.w3.org/2000/svg', - XLINK: 'http://www.w3.org/1999/xlink' -}; - -// -// Shortcut functions for throwing errors of various types. -// -exports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); }; -exports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); }; -exports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); }; -exports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); }; -exports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); }; -exports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); }; -exports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); }; -exports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); }; -exports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); }; -exports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); }; -exports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); }; -exports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); }; -exports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); }; -exports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); }; -exports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); }; -exports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); }; -exports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); }; -exports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); }; -exports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); }; -exports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); }; -exports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); }; - -exports.nyi = function() { - throw new Error("NotYetImplemented"); -}; - -exports.shouldOverride = function() { - throw new Error("Abstract function; should be overriding in subclass."); -}; - -exports.assert = function(expr, msg) { - if (!expr) { - throw new Error("Assertion failed: " + (msg || "") + "\n" + new Error().stack); - } -}; - -exports.expose = function(src, c) { - for (var n in src) { - Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable }); - } -}; - -exports.merge = function(a, b) { - for (var n in b) { - a[n] = b[n]; - } -}; - -// Compare two nodes based on their document order. This function is intended -// to be passed to sort(). Assumes that the array being sorted does not -// contain duplicates. And that all nodes are connected and comparable. -// Clever code by ppk via jeresig. -exports.documentOrder = function(n,m) { - /* jshint bitwise: false */ - return 3 - (n.compareDocumentPosition(m) & 6); -}; - -exports.toASCIILowerCase = function(s) { - return s.replace(/[A-Z]+/g, function(c) { - return c.toLowerCase(); - }); -}; - -exports.toASCIIUpperCase = function(s) { - return s.replace(/[a-z]+/g, function(c) { - return c.toUpperCase(); - }); -}; - - -/***/ }), - -/***/ 66798: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -// This grammar is from the XML and XML Namespace specs. It specifies whether -// a string (such as an element or attribute name) is a valid Name or QName. -// -// Name ::= NameStartChar (NameChar)* -// NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | -// [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | -// [#x370-#x37D] | [#x37F-#x1FFF] | -// [#x200C-#x200D] | [#x2070-#x218F] | -// [#x2C00-#x2FEF] | [#x3001-#xD7FF] | -// [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | -// [#x10000-#xEFFFF] -// -// NameChar ::= NameStartChar | "-" | "." | [0-9] | -// #xB7 | [#x0300-#x036F] | [#x203F-#x2040] -// -// QName ::= PrefixedName| UnprefixedName -// PrefixedName ::= Prefix ':' LocalPart -// UnprefixedName ::= LocalPart -// Prefix ::= NCName -// LocalPart ::= NCName -// NCName ::= Name - (Char* ':' Char*) -// # An XML Name, minus the ":" -// - -exports.isValidName = isValidName; -exports.isValidQName = isValidQName; - -// Most names will be ASCII only. Try matching against simple regexps first -var simplename = /^[_:A-Za-z][-.:\w]+$/; -var simpleqname = /^([_A-Za-z][-.\w]+|[_A-Za-z][-.\w]+:[_A-Za-z][-.\w]+)$/; - -// If the regular expressions above fail, try more complex ones that work -// for any identifiers using codepoints from the Unicode BMP -var ncnamestartchars = "_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; -var ncnamechars = "-._A-Za-z0-9\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0300-\u037D\u037F-\u1FFF\u200C\u200D\u203f\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - -var ncname = "[" + ncnamestartchars + "][" + ncnamechars + "]*"; -var namestartchars = ncnamestartchars + ":"; -var namechars = ncnamechars + ":"; -var name = new RegExp("^[" + namestartchars + "]" + "[" + namechars + "]*$"); -var qname = new RegExp("^(" + ncname + "|" + ncname + ":" + ncname + ")$"); - -// XML says that these characters are also legal: -// [#x10000-#xEFFFF]. So if the patterns above fail, and the -// target string includes surrogates, then try the following -// patterns that allow surrogates and then run an extra validation -// step to make sure that the surrogates are in valid pairs and in -// the right range. Note that since the characters \uf0000 to \u1f0000 -// are not allowed, it means that the high surrogate can only go up to -// \uDB7f instead of \uDBFF. -var hassurrogates = /[\uD800-\uDB7F\uDC00-\uDFFF]/; -var surrogatechars = /[\uD800-\uDB7F\uDC00-\uDFFF]/g; -var surrogatepairs = /[\uD800-\uDB7F][\uDC00-\uDFFF]/g; - -// Modify the variables above to allow surrogates -ncnamestartchars += "\uD800-\uDB7F\uDC00-\uDFFF"; -ncnamechars += "\uD800-\uDB7F\uDC00-\uDFFF"; -ncname = "[" + ncnamestartchars + "][" + ncnamechars + "]*"; -namestartchars = ncnamestartchars + ":"; -namechars = ncnamechars + ":"; - -// Build another set of regexps that include surrogates -var surrogatename = new RegExp("^[" + namestartchars + "]" + "[" + namechars + "]*$"); -var surrogateqname = new RegExp("^(" + ncname + "|" + ncname + ":" + ncname + ")$"); - -function isValidName(s) { - if (simplename.test(s)) return true; // Plain ASCII - if (name.test(s)) return true; // Unicode BMP - - // Maybe the tests above failed because s includes surrogate pairs - // Most likely, though, they failed for some more basic syntax problem - if (!hassurrogates.test(s)) return false; - - // Is the string a valid name if we allow surrogates? - if (!surrogatename.test(s)) return false; - - // Finally, are the surrogates all correctly paired up? - var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs); - return pairs !== null && 2*pairs.length === chars.length; -} - -function isValidQName(s) { - if (simpleqname.test(s)) return true; // Plain ASCII - if (qname.test(s)) return true; // Unicode BMP - - if (!hassurrogates.test(s)) return false; - if (!surrogateqname.test(s)) return false; - var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs); - return pairs !== null && 2*pairs.length === chars.length; -} - - /***/ }), /***/ 43295: @@ -21419,234 +4289,6 @@ function range(a, b, str) { } -/***/ }), - -/***/ 79272: -/***/ ((module, exports, __webpack_require__) => { - -/** - * Module dependencies. - */ - -var fs = __webpack_require__(79896), - path = __webpack_require__(16928), - fileURLToPath = __webpack_require__(25241), - join = path.join, - dirname = path.dirname, - exists = - (fs.accessSync && - function(path) { - try { - fs.accessSync(path); - } catch (e) { - return false; - } - return true; - }) || - fs.existsSync || - path.existsSync, - defaults = { - arrow: process.env.NODE_BINDINGS_ARROW || ' → ', - compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled', - platform: process.platform, - arch: process.arch, - nodePreGyp: - 'node-v' + - process.versions.modules + - '-' + - process.platform + - '-' + - process.arch, - version: process.versions.node, - bindings: 'bindings.node', - try: [ - // node-gyp's linked version in the "build" dir - ['module_root', 'build', 'bindings'], - // node-waf and gyp_addon (a.k.a node-gyp) - ['module_root', 'build', 'Debug', 'bindings'], - ['module_root', 'build', 'Release', 'bindings'], - // Debug files, for development (legacy behavior, remove for node v0.9) - ['module_root', 'out', 'Debug', 'bindings'], - ['module_root', 'Debug', 'bindings'], - // Release files, but manually compiled (legacy behavior, remove for node v0.9) - ['module_root', 'out', 'Release', 'bindings'], - ['module_root', 'Release', 'bindings'], - // Legacy from node-waf, node <= 0.4.x - ['module_root', 'build', 'default', 'bindings'], - // Production "Release" buildtype binary (meh...) - ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'], - // node-qbs builds - ['module_root', 'addon-build', 'release', 'install-root', 'bindings'], - ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'], - ['module_root', 'addon-build', 'default', 'install-root', 'bindings'], - // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch} - ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings'] - ] - }; - -/** - * The main `bindings()` function loads the compiled bindings for a given module. - * It uses V8's Error API to determine the parent filename that this function is - * being invoked from, which is then used to find the root directory. - */ - -function bindings(opts) { - // Argument surgery - if (typeof opts == 'string') { - opts = { bindings: opts }; - } else if (!opts) { - opts = {}; - } - - // maps `defaults` onto `opts` object - Object.keys(defaults).map(function(i) { - if (!(i in opts)) opts[i] = defaults[i]; - }); - - // Get the module root - if (!opts.module_root) { - opts.module_root = exports.getRoot(exports.getFileName()); - } - - // Ensure the given bindings name ends with .node - if (path.extname(opts.bindings) != '.node') { - opts.bindings += '.node'; - } - - // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035 - var requireFunc = - true - ? require - : 0; - - var tries = [], - i = 0, - l = opts.try.length, - n, - b, - err; - - for (; i < l; i++) { - n = join.apply( - null, - opts.try[i].map(function(p) { - return opts[p] || p; - }) - ); - tries.push(n); - try { - b = opts.path ? requireFunc.resolve(n) : requireFunc(n); - if (!opts.path) { - b.path = n; - } - return b; - } catch (e) { - if (e.code !== 'MODULE_NOT_FOUND' && - e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' && - !/not find/i.test(e.message)) { - throw e; - } - } - } - - err = new Error( - 'Could not locate the bindings file. Tried:\n' + - tries - .map(function(a) { - return opts.arrow + a; - }) - .join('\n') - ); - err.tries = tries; - throw err; -} -module.exports = exports = bindings; - -/** - * Gets the filename of the JavaScript file that invokes this function. - * Used to help find the root directory of a module. - * Optionally accepts an filename argument to skip when searching for the invoking filename - */ - -exports.getFileName = function getFileName(calling_file) { - var origPST = Error.prepareStackTrace, - origSTL = Error.stackTraceLimit, - dummy = {}, - fileName; - - Error.stackTraceLimit = 10; - - Error.prepareStackTrace = function(e, st) { - for (var i = 0, l = st.length; i < l; i++) { - fileName = st[i].getFileName(); - if (fileName !== __filename) { - if (calling_file) { - if (fileName !== calling_file) { - return; - } - } else { - return; - } - } - } - }; - - // run the 'prepareStackTrace' function above - Error.captureStackTrace(dummy); - dummy.stack; - - // cleanup - Error.prepareStackTrace = origPST; - Error.stackTraceLimit = origSTL; - - // handle filename that starts with "file://" - var fileSchema = 'file://'; - if (fileName.indexOf(fileSchema) === 0) { - fileName = fileURLToPath(fileName); - } - - return fileName; -}; - -/** - * Gets the root directory of a module, given an arbitrary filename - * somewhere in the module tree. The "root directory" is the directory - * containing the `package.json` file. - * - * In: /home/nate/node-native-module/lib/index.js - * Out: /home/nate/node-native-module - */ - -exports.getRoot = function getRoot(file) { - var dir = dirname(file), - prev; - while (true) { - if (dir === '.') { - // Avoids an infinite loop in rare cases, like the REPL - dir = process.cwd(); - } - if ( - exists(join(dir, 'package.json')) || - exists(join(dir, 'node_modules')) - ) { - // Found the 'package.json' file or 'node_modules' dir; we're done - return dir; - } - if (prev === dir) { - // Got to the top - throw new Error( - 'Could not find module root given file: "' + - file + - '". Do you have a `package.json` file? ' - ); - } - // Try the parent dir next - prev = dir; - dir = join(dir, '..'); - } -}; - - /***/ }), /***/ 96586: @@ -28961,79 +11603,6 @@ var fecha = { //# sourceMappingURL=fecha.js.map -/***/ }), - -/***/ 25241: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - - -/** - * Module dependencies. - */ - -var sep = (__webpack_require__(16928).sep) || '/'; - -/** - * Module exports. - */ - -module.exports = fileUriToPath; - -/** - * File URI to Path function. - * - * @param {String} uri - * @return {String} path - * @api public - */ - -function fileUriToPath (uri) { - if ('string' != typeof uri || - uri.length <= 7 || - 'file://' != uri.substring(0, 7)) { - throw new TypeError('must pass in a file:// URI to convert to a file path'); - } - - var rest = decodeURI(uri.substring(7)); - var firstSlash = rest.indexOf('/'); - var host = rest.substring(0, firstSlash); - var path = rest.substring(firstSlash + 1); - - // 2. Scheme Definition - // As a special case, can be the string "localhost" or the empty - // string; this is interpreted as "the machine from which the URL is - // being interpreted". - if ('localhost' == host) host = ''; - - if (host) { - host = sep + sep + host; - } - - // 3.2 Drives, drive letters, mount points, file system root - // Drive letters are mapped into the top of a file URI in various ways, - // depending on the implementation; some applications substitute - // vertical bar ("|") for the colon after the drive letter, yielding - // "file:///c|/tmp/test.txt". In some cases, the colon is left - // unchanged, as in "file:///c:/tmp/test.txt". In other cases, the - // colon is simply omitted, as in "file:///c/tmp/test.txt". - path = path.replace(/^(.+)\|/, '$1:'); - - // for Windows, we need to invert the path separators from what a URI uses - if (sep == '\\') { - path = path.replace(/\//g, '\\'); - } - - if (/^.+\:/.test(path)) { - // has Windows drive at beginning of path - } else { - // unix path… - path = sep + path; - } - - return host + path; -} - - /***/ }), /***/ 67027: @@ -29084,6 +11653,2157 @@ module.exports = function name(fn) { }; +/***/ }), + +/***/ 95270: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) + +const BUF_LENGTH = 64 * 1024 +const _buff = __webpack_require__(34549)(BUF_LENGTH) + +function copyFileSync (srcFile, destFile, options) { + const overwrite = options.overwrite + const errorOnExist = options.errorOnExist + const preserveTimestamps = options.preserveTimestamps + + if (fs.existsSync(destFile)) { + if (overwrite) { + fs.unlinkSync(destFile) + } else if (errorOnExist) { + throw new Error(`${destFile} already exists`) + } else return + } + + const fdr = fs.openSync(srcFile, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(destFile, 'w', stat.mode) + let bytesRead = 1 + let pos = 0 + + while (bytesRead > 0) { + bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) + fs.writeSync(fdw, _buff, 0, bytesRead) + pos += bytesRead + } + + if (preserveTimestamps) { + fs.futimesSync(fdw, stat.atime, stat.mtime) + } + + fs.closeSync(fdr) + fs.closeSync(fdw) +} + +module.exports = copyFileSync + + +/***/ }), + +/***/ 86793: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const copyFileSync = __webpack_require__(95270) +const mkdir = __webpack_require__(60327) + +function copySync (src, dest, options) { + if (typeof options === 'function' || options instanceof RegExp) { + options = {filter: options} + } + + options = options || {} + options.recursive = !!options.recursive + + // default to true for now + options.clobber = 'clobber' in options ? !!options.clobber : true + // overwrite falls back to clobber + options.overwrite = 'overwrite' in options ? !!options.overwrite : options.clobber + options.dereference = 'dereference' in options ? !!options.dereference : false + options.preserveTimestamps = 'preserveTimestamps' in options ? !!options.preserveTimestamps : false + + options.filter = options.filter || function () { return true } + + // Warn about using preserveTimestamps on 32-bit node: + if (options.preserveTimestamps && process.arch === 'ia32') { + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) + } + + const stats = (options.recursive && !options.dereference) ? fs.lstatSync(src) : fs.statSync(src) + const destFolder = path.dirname(dest) + const destFolderExists = fs.existsSync(destFolder) + let performCopy = false + + if (options.filter instanceof RegExp) { + console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') + performCopy = options.filter.test(src) + } else if (typeof options.filter === 'function') performCopy = options.filter(src, dest) + + if (stats.isFile() && performCopy) { + if (!destFolderExists) mkdir.mkdirsSync(destFolder) + copyFileSync(src, dest, { + overwrite: options.overwrite, + errorOnExist: options.errorOnExist, + preserveTimestamps: options.preserveTimestamps + }) + } else if (stats.isDirectory() && performCopy) { + if (!fs.existsSync(dest)) mkdir.mkdirsSync(dest) + const contents = fs.readdirSync(src) + contents.forEach(content => { + const opts = options + opts.recursive = true + copySync(path.join(src, content), path.join(dest, content), opts) + }) + } else if (options.recursive && stats.isSymbolicLink() && performCopy) { + const srcPath = fs.readlinkSync(src) + fs.symlinkSync(srcPath, dest) + } +} + +module.exports = copySync + + +/***/ }), + +/***/ 88510: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = { + copySync: __webpack_require__(86793) +} + + +/***/ }), + +/***/ 20881: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const ncp = __webpack_require__(57967) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function copy (src, dest, options, callback) { + if (typeof options === 'function' && !callback) { + callback = options + options = {} + } else if (typeof options === 'function' || options instanceof RegExp) { + options = {filter: options} + } + callback = callback || function () {} + options = options || {} + + // Warn about using preserveTimestamps on 32-bit node: + if (options.preserveTimestamps && process.arch === 'ia32') { + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) + } + + // don't allow src and dest to be the same + const basePath = process.cwd() + const currentPath = path.resolve(basePath, src) + const targetPath = path.resolve(basePath, dest) + if (currentPath === targetPath) return callback(new Error('Source and destination must not be the same.')) + + fs.lstat(src, (err, stats) => { + if (err) return callback(err) + + let dir = null + if (stats.isDirectory()) { + const parts = dest.split(path.sep) + parts.pop() + dir = parts.join(path.sep) + } else { + dir = path.dirname(dest) + } + + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return ncp(src, dest, options, callback) + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + ncp(src, dest, options, callback) + }) + }) + }) +} + +module.exports = copy + + +/***/ }), + +/***/ 33430: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +module.exports = { + copy: u(__webpack_require__(20881)) +} + + +/***/ }), + +/***/ 57967: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// imported from ncp (this is temporary, will rewrite) + +var fs = __webpack_require__(71174) +var path = __webpack_require__(16928) +var utimes = __webpack_require__(90348) + +function ncp (source, dest, options, callback) { + if (!callback) { + callback = options + options = {} + } + + var basePath = process.cwd() + var currentPath = path.resolve(basePath, source) + var targetPath = path.resolve(basePath, dest) + + var filter = options.filter + var transform = options.transform + var overwrite = options.overwrite + // If overwrite is undefined, use clobber, otherwise default to true: + if (overwrite === undefined) overwrite = options.clobber + if (overwrite === undefined) overwrite = true + var errorOnExist = options.errorOnExist + var dereference = options.dereference + var preserveTimestamps = options.preserveTimestamps === true + + var started = 0 + var finished = 0 + var running = 0 + + var errored = false + + startCopy(currentPath) + + function startCopy (source) { + started++ + if (filter) { + if (filter instanceof RegExp) { + console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') + if (!filter.test(source)) { + return doneOne(true) + } + } else if (typeof filter === 'function') { + if (!filter(source, dest)) { + return doneOne(true) + } + } + } + return getStats(source) + } + + function getStats (source) { + var stat = dereference ? fs.stat : fs.lstat + running++ + stat(source, function (err, stats) { + if (err) return onError(err) + + // We need to get the mode from the stats object and preserve it. + var item = { + name: source, + mode: stats.mode, + mtime: stats.mtime, // modified time + atime: stats.atime, // access time + stats: stats // temporary + } + + if (stats.isDirectory()) { + return onDir(item) + } else if (stats.isFile() || stats.isCharacterDevice() || stats.isBlockDevice()) { + return onFile(item) + } else if (stats.isSymbolicLink()) { + // Symlinks don't really need to know about the mode. + return onLink(source) + } + }) + } + + function onFile (file) { + var target = file.name.replace(currentPath, targetPath.replace('$', '$$$$')) // escapes '$' with '$$' + isWritable(target, function (writable) { + if (writable) { + copyFile(file, target) + } else { + if (overwrite) { + rmFile(target, function () { + copyFile(file, target) + }) + } else if (errorOnExist) { + onError(new Error(target + ' already exists')) + } else { + doneOne() + } + } + }) + } + + function copyFile (file, target) { + var readStream = fs.createReadStream(file.name) + var writeStream = fs.createWriteStream(target, { mode: file.mode }) + + readStream.on('error', onError) + writeStream.on('error', onError) + + if (transform) { + transform(readStream, writeStream, file) + } else { + writeStream.on('open', function () { + readStream.pipe(writeStream) + }) + } + + writeStream.once('close', function () { + fs.chmod(target, file.mode, function (err) { + if (err) return onError(err) + if (preserveTimestamps) { + utimes.utimesMillis(target, file.atime, file.mtime, function (err) { + if (err) return onError(err) + return doneOne() + }) + } else { + doneOne() + } + }) + }) + } + + function rmFile (file, done) { + fs.unlink(file, function (err) { + if (err) return onError(err) + return done() + }) + } + + function onDir (dir) { + var target = dir.name.replace(currentPath, targetPath.replace('$', '$$$$')) // escapes '$' with '$$' + isWritable(target, function (writable) { + if (writable) { + return mkDir(dir, target) + } + copyDir(dir.name) + }) + } + + function mkDir (dir, target) { + fs.mkdir(target, dir.mode, function (err) { + if (err) return onError(err) + // despite setting mode in fs.mkdir, doesn't seem to work + // so we set it here. + fs.chmod(target, dir.mode, function (err) { + if (err) return onError(err) + copyDir(dir.name) + }) + }) + } + + function copyDir (dir) { + fs.readdir(dir, function (err, items) { + if (err) return onError(err) + items.forEach(function (item) { + startCopy(path.join(dir, item)) + }) + return doneOne() + }) + } + + function onLink (link) { + var target = link.replace(currentPath, targetPath) + fs.readlink(link, function (err, resolvedPath) { + if (err) return onError(err) + checkLink(resolvedPath, target) + }) + } + + function checkLink (resolvedPath, target) { + if (dereference) { + resolvedPath = path.resolve(basePath, resolvedPath) + } + isWritable(target, function (writable) { + if (writable) { + return makeLink(resolvedPath, target) + } + fs.readlink(target, function (err, targetDest) { + if (err) return onError(err) + + if (dereference) { + targetDest = path.resolve(basePath, targetDest) + } + if (targetDest === resolvedPath) { + return doneOne() + } + return rmFile(target, function () { + makeLink(resolvedPath, target) + }) + }) + }) + } + + function makeLink (linkPath, target) { + fs.symlink(linkPath, target, function (err) { + if (err) return onError(err) + return doneOne() + }) + } + + function isWritable (path, done) { + fs.lstat(path, function (err) { + if (err) { + if (err.code === 'ENOENT') return done(true) + return done(false) + } + return done(false) + }) + } + + function onError (err) { + // ensure callback is defined & called only once: + if (!errored && callback !== undefined) { + errored = true + return callback(err) + } + } + + function doneOne (skipped) { + if (!skipped) running-- + finished++ + if ((started === finished) && (running === 0)) { + if (callback !== undefined) { + return callback(null) + } + } + } +} + +module.exports = ncp + + +/***/ }), + +/***/ 53760: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(79896) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const remove = __webpack_require__(16195) + +const emptyDir = u(function emptyDir (dir, callback) { + callback = callback || function () {} + fs.readdir(dir, (err, items) => { + if (err) return mkdir.mkdirs(dir, callback) + + items = items.map(item => path.join(dir, item)) + + deleteItem() + + function deleteItem () { + const item = items.pop() + if (!item) return callback() + remove.remove(item, err => { + if (err) return callback(err) + deleteItem() + }) + } + }) +}) + +function emptyDirSync (dir) { + let items + try { + items = fs.readdirSync(dir) + } catch (err) { + return mkdir.mkdirsSync(dir) + } + + items.forEach(item => { + item = path.join(dir, item) + remove.removeSync(item) + }) +} + +module.exports = { + emptyDirSync, + emptydirSync: emptyDirSync, + emptyDir, + emptydir: emptyDir +} + + +/***/ }), + +/***/ 23771: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function createFile (file, callback) { + function makeFile () { + fs.writeFile(file, '', err => { + if (err) return callback(err) + callback() + }) + } + + fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err + if (!err && stats.isFile()) return callback() + const dir = path.dirname(file) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return makeFile() + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeFile() + }) + }) + }) +} + +function createFileSync (file) { + let stats + try { + stats = fs.statSync(file) + } catch (e) {} + if (stats && stats.isFile()) return + + const dir = path.dirname(file) + if (!fs.existsSync(dir)) { + mkdir.mkdirsSync(dir) + } + + fs.writeFileSync(file, '') +} + +module.exports = { + createFile: u(createFile), + createFileSync +} + + +/***/ }), + +/***/ 29081: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const file = __webpack_require__(23771) +const link = __webpack_require__(44181) +const symlink = __webpack_require__(98950) + +module.exports = { + // file + createFile: file.createFile, + createFileSync: file.createFileSync, + ensureFile: file.createFile, + ensureFileSync: file.createFileSync, + // link + createLink: link.createLink, + createLinkSync: link.createLinkSync, + ensureLink: link.createLink, + ensureLinkSync: link.createLinkSync, + // symlink + createSymlink: symlink.createSymlink, + createSymlinkSync: symlink.createSymlinkSync, + ensureSymlink: symlink.createSymlink, + ensureSymlinkSync: symlink.createSymlinkSync +} + + +/***/ }), + +/***/ 44181: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function createLink (srcpath, dstpath, callback) { + function makeLink (srcpath, dstpath) { + fs.link(srcpath, dstpath, err => { + if (err) return callback(err) + callback(null) + }) + } + + pathExists(dstpath, (err, destinationExists) => { + if (err) return callback(err) + if (destinationExists) return callback(null) + fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureLink') + return callback(err) + } + + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return makeLink(srcpath, dstpath) + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeLink(srcpath, dstpath) + }) + }) + }) + }) +} + +function createLinkSync (srcpath, dstpath, callback) { + const destinationExists = fs.existsSync(dstpath) + if (destinationExists) return undefined + + try { + fs.lstatSync(srcpath) + } catch (err) { + err.message = err.message.replace('lstat', 'ensureLink') + throw err + } + + const dir = path.dirname(dstpath) + const dirExists = fs.existsSync(dir) + if (dirExists) return fs.linkSync(srcpath, dstpath) + mkdir.mkdirsSync(dir) + + return fs.linkSync(srcpath, dstpath) +} + +module.exports = { + createLink: u(createLink), + createLinkSync +} + + +/***/ }), + +/***/ 57979: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const pathExists = (__webpack_require__(49767).pathExists) + +/** + * Function that returns two types of paths, one relative to symlink, and one + * relative to the current working directory. Checks if path is absolute or + * relative. If the path is relative, this function checks if the path is + * relative to symlink or relative to current working directory. This is an + * initiative to find a smarter `srcpath` to supply when building symlinks. + * This allows you to determine which path to use out of one of three possible + * types of source paths. The first is an absolute path. This is detected by + * `path.isAbsolute()`. When an absolute path is provided, it is checked to + * see if it exists. If it does it's used, if not an error is returned + * (callback)/ thrown (sync). The other two options for `srcpath` are a + * relative url. By default Node's `fs.symlink` works by creating a symlink + * using `dstpath` and expects the `srcpath` to be relative to the newly + * created symlink. If you provide a `srcpath` that does not exist on the file + * system it results in a broken symlink. To minimize this, the function + * checks to see if the 'relative to symlink' source file exists, and if it + * does it will use it. If it does not, it checks if there's a file that + * exists that is relative to the current working directory, if does its used. + * This preserves the expectations of the original fs.symlink spec and adds + * the ability to pass in `relative to current working direcotry` paths. + */ + +function symlinkPaths (srcpath, dstpath, callback) { + if (path.isAbsolute(srcpath)) { + return fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + 'toCwd': srcpath, + 'toDst': srcpath + }) + }) + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + return pathExists(relativeToDst, (err, exists) => { + if (err) return callback(err) + if (exists) { + return callback(null, { + 'toCwd': relativeToDst, + 'toDst': srcpath + }) + } else { + return fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + 'toCwd': srcpath, + 'toDst': path.relative(dstdir, srcpath) + }) + }) + } + }) + } +} + +function symlinkPathsSync (srcpath, dstpath) { + let exists + if (path.isAbsolute(srcpath)) { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('absolute srcpath does not exist') + return { + 'toCwd': srcpath, + 'toDst': srcpath + } + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + exists = fs.existsSync(relativeToDst) + if (exists) { + return { + 'toCwd': relativeToDst, + 'toDst': srcpath + } + } else { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('relative srcpath does not exist') + return { + 'toCwd': srcpath, + 'toDst': path.relative(dstdir, srcpath) + } + } + } +} + +module.exports = { + symlinkPaths, + symlinkPathsSync +} + + +/***/ }), + +/***/ 44127: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) + +function symlinkType (srcpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + if (type) return callback(null, type) + fs.lstat(srcpath, (err, stats) => { + if (err) return callback(null, 'file') + type = (stats && stats.isDirectory()) ? 'dir' : 'file' + callback(null, type) + }) +} + +function symlinkTypeSync (srcpath, type) { + let stats + + if (type) return type + try { + stats = fs.lstatSync(srcpath) + } catch (e) { + return 'file' + } + return (stats && stats.isDirectory()) ? 'dir' : 'file' +} + +module.exports = { + symlinkType, + symlinkTypeSync +} + + +/***/ }), + +/***/ 98950: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const _mkdirs = __webpack_require__(60327) +const mkdirs = _mkdirs.mkdirs +const mkdirsSync = _mkdirs.mkdirsSync + +const _symlinkPaths = __webpack_require__(57979) +const symlinkPaths = _symlinkPaths.symlinkPaths +const symlinkPathsSync = _symlinkPaths.symlinkPathsSync + +const _symlinkType = __webpack_require__(44127) +const symlinkType = _symlinkType.symlinkType +const symlinkTypeSync = _symlinkType.symlinkTypeSync + +const pathExists = (__webpack_require__(49767).pathExists) + +function createSymlink (srcpath, dstpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + + pathExists(dstpath, (err, destinationExists) => { + if (err) return callback(err) + if (destinationExists) return callback(null) + symlinkPaths(srcpath, dstpath, (err, relative) => { + if (err) return callback(err) + srcpath = relative.toDst + symlinkType(relative.toCwd, type, (err, type) => { + if (err) return callback(err) + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) + mkdirs(dir, err => { + if (err) return callback(err) + fs.symlink(srcpath, dstpath, type, callback) + }) + }) + }) + }) + }) +} + +function createSymlinkSync (srcpath, dstpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + + const destinationExists = fs.existsSync(dstpath) + if (destinationExists) return undefined + + const relative = symlinkPathsSync(srcpath, dstpath) + srcpath = relative.toDst + type = symlinkTypeSync(relative.toCwd, type) + const dir = path.dirname(dstpath) + const exists = fs.existsSync(dir) + if (exists) return fs.symlinkSync(srcpath, dstpath, type) + mkdirsSync(dir) + return fs.symlinkSync(srcpath, dstpath, type) +} + +module.exports = { + createSymlink: u(createSymlink), + createSymlinkSync +} + + +/***/ }), + +/***/ 46596: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +// This is adapted from https://github.com/normalize/mz +// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) + +const api = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'close', + 'copyFile', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'mkdtemp', + 'open', + 'readFile', + 'readdir', + 'readlink', + 'realpath', + 'rename', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'writeFile' +].filter(key => { + // Some commands are not available on some systems. Ex: + // fs.copyFile was added in Node.js v8.5.0 + // fs.mkdtemp was added in Node.js v5.10.0 + // fs.lchown is not available on at least some Linux + return typeof fs[key] === 'function' +}) + +// Export all keys: +Object.keys(fs).forEach(key => { + exports[key] = fs[key] +}) + +// Universalify async methods: +api.forEach(method => { + exports[method] = u(fs[method]) +}) + +// We differ from mz/fs in that we still ship the old, broken, fs.exists() +// since we are a drop-in replacement for the native module +exports.exists = function (filename, callback) { + if (typeof callback === 'function') { + return fs.exists(filename, callback) + } + return new Promise(resolve => { + return fs.exists(filename, resolve) + }) +} + +// fs.read() & fs.write need special treatment due to multiple callback args + +exports.read = function (fd, buffer, offset, length, position, callback) { + if (typeof callback === 'function') { + return fs.read(fd, buffer, offset, length, position, callback) + } + return new Promise((resolve, reject) => { + fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => { + if (err) return reject(err) + resolve({ bytesRead, buffer }) + }) + }) +} + +// Function signature can be +// fs.write(fd, buffer[, offset[, length[, position]]], callback) +// OR +// fs.write(fd, string[, position[, encoding]], callback) +// so we need to handle both cases +exports.write = function (fd, buffer, a, b, c, callback) { + if (typeof arguments[arguments.length - 1] === 'function') { + return fs.write(fd, buffer, a, b, c, callback) + } + + // Check for old, depricated fs.write(fd, string[, position[, encoding]], callback) + if (typeof buffer === 'string') { + return new Promise((resolve, reject) => { + fs.write(fd, buffer, a, b, (err, bytesWritten, buffer) => { + if (err) return reject(err) + resolve({ bytesWritten, buffer }) + }) + }) + } + + return new Promise((resolve, reject) => { + fs.write(fd, buffer, a, b, c, (err, bytesWritten, buffer) => { + if (err) return reject(err) + resolve({ bytesWritten, buffer }) + }) + }) +} + + +/***/ }), + +/***/ 56922: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const assign = __webpack_require__(3762) + +const fs = {} + +// Export graceful-fs: +assign(fs, __webpack_require__(46596)) +// Export extra methods: +assign(fs, __webpack_require__(33430)) +assign(fs, __webpack_require__(88510)) +assign(fs, __webpack_require__(60327)) +assign(fs, __webpack_require__(16195)) +assign(fs, __webpack_require__(5793)) +assign(fs, __webpack_require__(68126)) +assign(fs, __webpack_require__(2566)) +assign(fs, __webpack_require__(53760)) +assign(fs, __webpack_require__(29081)) +assign(fs, __webpack_require__(79858)) +assign(fs, __webpack_require__(49767)) + +module.exports = fs + + +/***/ }), + +/***/ 5793: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const jsonFile = __webpack_require__(71461) + +jsonFile.outputJson = u(__webpack_require__(58147)) +jsonFile.outputJsonSync = __webpack_require__(36275) +// aliases +jsonFile.outputJSON = jsonFile.outputJson +jsonFile.outputJSONSync = jsonFile.outputJsonSync +jsonFile.writeJSON = jsonFile.writeJson +jsonFile.writeJSONSync = jsonFile.writeJsonSync +jsonFile.readJSON = jsonFile.readJson +jsonFile.readJSONSync = jsonFile.readJsonSync + +module.exports = jsonFile + + +/***/ }), + +/***/ 71461: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const jsonFile = __webpack_require__(82162) + +module.exports = { + // jsonfile exports + readJson: u(jsonFile.readFile), + readJsonSync: jsonFile.readFileSync, + writeJson: u(jsonFile.writeFile), + writeJsonSync: jsonFile.writeFileSync +} + + +/***/ }), + +/***/ 36275: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const jsonFile = __webpack_require__(71461) + +function outputJsonSync (file, data, options) { + const dir = path.dirname(file) + + if (!fs.existsSync(dir)) { + mkdir.mkdirsSync(dir) + } + + jsonFile.writeJsonSync(file, data, options) +} + +module.exports = outputJsonSync + + +/***/ }), + +/***/ 58147: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) +const jsonFile = __webpack_require__(71461) + +function outputJson (file, data, options, callback) { + if (typeof options === 'function') { + callback = options + options = {} + } + + const dir = path.dirname(file) + + pathExists(dir, (err, itDoes) => { + if (err) return callback(err) + if (itDoes) return jsonFile.writeJson(file, data, options, callback) + + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + jsonFile.writeJson(file, data, options, callback) + }) + }) +} + +module.exports = outputJson + + +/***/ }), + +/***/ 60327: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const mkdirs = u(__webpack_require__(42987)) +const mkdirsSync = __webpack_require__(56891) + +module.exports = { + mkdirs: mkdirs, + mkdirsSync: mkdirsSync, + // alias + mkdirp: mkdirs, + mkdirpSync: mkdirsSync, + ensureDir: mkdirs, + ensureDirSync: mkdirsSync +} + + +/***/ }), + +/***/ 56891: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const invalidWin32Path = (__webpack_require__(54752).invalidWin32Path) + +const o777 = parseInt('0777', 8) + +function mkdirsSync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts } + } + + let mode = opts.mode + const xfs = opts.fs || fs + + if (process.platform === 'win32' && invalidWin32Path(p)) { + const errInval = new Error(p + ' contains invalid WIN32 path characters.') + errInval.code = 'EINVAL' + throw errInval + } + + if (mode === undefined) { + mode = o777 & (~process.umask()) + } + if (!made) made = null + + p = path.resolve(p) + + try { + xfs.mkdirSync(p, mode) + made = made || p + } catch (err0) { + switch (err0.code) { + case 'ENOENT': + if (path.dirname(p) === p) throw err0 + made = mkdirsSync(path.dirname(p), opts, made) + mkdirsSync(p, opts, made) + break + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + let stat + try { + stat = xfs.statSync(p) + } catch (err1) { + throw err0 + } + if (!stat.isDirectory()) throw err0 + break + } + } + + return made +} + +module.exports = mkdirsSync + + +/***/ }), + +/***/ 42987: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const invalidWin32Path = (__webpack_require__(54752).invalidWin32Path) + +const o777 = parseInt('0777', 8) + +function mkdirs (p, opts, callback, made) { + if (typeof opts === 'function') { + callback = opts + opts = {} + } else if (!opts || typeof opts !== 'object') { + opts = { mode: opts } + } + + if (process.platform === 'win32' && invalidWin32Path(p)) { + const errInval = new Error(p + ' contains invalid WIN32 path characters.') + errInval.code = 'EINVAL' + return callback(errInval) + } + + let mode = opts.mode + const xfs = opts.fs || fs + + if (mode === undefined) { + mode = o777 & (~process.umask()) + } + if (!made) made = null + + callback = callback || function () {} + p = path.resolve(p) + + xfs.mkdir(p, mode, er => { + if (!er) { + made = made || p + return callback(null, made) + } + switch (er.code) { + case 'ENOENT': + if (path.dirname(p) === p) return callback(er) + mkdirs(path.dirname(p), opts, (er, made) => { + if (er) callback(er, made) + else mkdirs(p, opts, callback, made) + }) + break + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, (er2, stat) => { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) callback(er, made) + else callback(null, made) + }) + break + } + }) +} + +module.exports = mkdirs + + +/***/ }), + +/***/ 54752: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) + +// get drive on windows +function getRootPath (p) { + p = path.normalize(path.resolve(p)).split(path.sep) + if (p.length > 0) return p[0] + return null +} + +// http://stackoverflow.com/a/62888/10333 contains more accurate +// TODO: expand to include the rest +const INVALID_PATH_CHARS = /[<>:"|?*]/ + +function invalidWin32Path (p) { + const rp = getRootPath(p) + p = p.replace(rp, '') + return INVALID_PATH_CHARS.test(p) +} + +module.exports = { + getRootPath, + invalidWin32Path +} + + +/***/ }), + +/***/ 2566: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const copySync = (__webpack_require__(88510).copySync) +const removeSync = (__webpack_require__(16195).removeSync) +const mkdirpSync = (__webpack_require__(60327).mkdirsSync) +const buffer = __webpack_require__(34549) + +function moveSync (src, dest, options) { + options = options || {} + const overwrite = options.overwrite || options.clobber || false + + src = path.resolve(src) + dest = path.resolve(dest) + + if (src === dest) return fs.accessSync(src) + + if (isSrcSubdir(src, dest)) throw new Error(`Cannot move '${src}' into itself '${dest}'.`) + + mkdirpSync(path.dirname(dest)) + tryRenameSync() + + function tryRenameSync () { + if (overwrite) { + try { + return fs.renameSync(src, dest) + } catch (err) { + if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST' || err.code === 'EPERM') { + removeSync(dest) + options.overwrite = false // just overwriteed it, no need to do it again + return moveSync(src, dest, options) + } + + if (err.code !== 'EXDEV') throw err + return moveSyncAcrossDevice(src, dest, overwrite) + } + } else { + try { + fs.linkSync(src, dest) + return fs.unlinkSync(src) + } catch (err) { + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + return moveSyncAcrossDevice(src, dest, overwrite) + } + throw err + } + } + } +} + +function moveSyncAcrossDevice (src, dest, overwrite) { + const stat = fs.statSync(src) + + if (stat.isDirectory()) { + return moveDirSyncAcrossDevice(src, dest, overwrite) + } else { + return moveFileSyncAcrossDevice(src, dest, overwrite) + } +} + +function moveFileSyncAcrossDevice (src, dest, overwrite) { + const BUF_LENGTH = 64 * 1024 + const _buff = buffer(BUF_LENGTH) + + const flags = overwrite ? 'w' : 'wx' + + const fdr = fs.openSync(src, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(dest, flags, stat.mode) + let bytesRead = 1 + let pos = 0 + + while (bytesRead > 0) { + bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) + fs.writeSync(fdw, _buff, 0, bytesRead) + pos += bytesRead + } + + fs.closeSync(fdr) + fs.closeSync(fdw) + return fs.unlinkSync(src) +} + +function moveDirSyncAcrossDevice (src, dest, overwrite) { + const options = { + overwrite: false + } + + if (overwrite) { + removeSync(dest) + tryCopySync() + } else { + tryCopySync() + } + + function tryCopySync () { + copySync(src, dest, options) + return removeSync(src) + } +} + +// return true if dest is a subdir of src, otherwise false. +// extract dest base dir and check if that is the same as src basename +function isSrcSubdir (src, dest) { + try { + return fs.statSync(src).isDirectory() && + src !== dest && + dest.indexOf(src) > -1 && + dest.split(path.dirname(src) + path.sep)[1].split(path.sep)[0] === path.basename(src) + } catch (e) { + return false + } +} + +module.exports = { + moveSync +} + + +/***/ }), + +/***/ 68126: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +// most of this code was written by Andrew Kelley +// licensed under the BSD license: see +// https://github.com/andrewrk/node-mv/blob/master/package.json + +// this needs a cleanup + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) +const ncp = __webpack_require__(57967) +const path = __webpack_require__(16928) +const remove = (__webpack_require__(16195).remove) +const mkdirp = (__webpack_require__(60327).mkdirs) + +function move (src, dest, options, callback) { + if (typeof options === 'function') { + callback = options + options = {} + } + + const overwrite = options.overwrite || options.clobber || false + + isSrcSubdir(src, dest, (err, itIs) => { + if (err) return callback(err) + if (itIs) return callback(new Error(`Cannot move '${src}' to a subdirectory of itself, '${dest}'.`)) + mkdirp(path.dirname(dest), err => { + if (err) return callback(err) + doRename() + }) + }) + + function doRename () { + if (path.resolve(src) === path.resolve(dest)) { + fs.access(src, callback) + } else if (overwrite) { + fs.rename(src, dest, err => { + if (!err) return callback() + + if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST') { + remove(dest, err => { + if (err) return callback(err) + options.overwrite = false // just overwriteed it, no need to do it again + move(src, dest, options, callback) + }) + return + } + + // weird Windows shit + if (err.code === 'EPERM') { + setTimeout(() => { + remove(dest, err => { + if (err) return callback(err) + options.overwrite = false + move(src, dest, options, callback) + }) + }, 200) + return + } + + if (err.code !== 'EXDEV') return callback(err) + moveAcrossDevice(src, dest, overwrite, callback) + }) + } else { + fs.link(src, dest, err => { + if (err) { + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + return moveAcrossDevice(src, dest, overwrite, callback) + } + return callback(err) + } + return fs.unlink(src, callback) + }) + } + } +} + +function moveAcrossDevice (src, dest, overwrite, callback) { + fs.stat(src, (err, stat) => { + if (err) return callback(err) + + if (stat.isDirectory()) { + moveDirAcrossDevice(src, dest, overwrite, callback) + } else { + moveFileAcrossDevice(src, dest, overwrite, callback) + } + }) +} + +function moveFileAcrossDevice (src, dest, overwrite, callback) { + const flags = overwrite ? 'w' : 'wx' + const ins = fs.createReadStream(src) + const outs = fs.createWriteStream(dest, { flags }) + + ins.on('error', err => { + ins.destroy() + outs.destroy() + outs.removeListener('close', onClose) + + // may want to create a directory but `out` line above + // creates an empty file for us: See #108 + // don't care about error here + fs.unlink(dest, () => { + // note: `err` here is from the input stream errror + if (err.code === 'EISDIR' || err.code === 'EPERM') { + moveDirAcrossDevice(src, dest, overwrite, callback) + } else { + callback(err) + } + }) + }) + + outs.on('error', err => { + ins.destroy() + outs.destroy() + outs.removeListener('close', onClose) + callback(err) + }) + + outs.once('close', onClose) + ins.pipe(outs) + + function onClose () { + fs.unlink(src, callback) + } +} + +function moveDirAcrossDevice (src, dest, overwrite, callback) { + const options = { + overwrite: false + } + + if (overwrite) { + remove(dest, err => { + if (err) return callback(err) + startNcp() + }) + } else { + startNcp() + } + + function startNcp () { + ncp(src, dest, options, err => { + if (err) return callback(err) + remove(src, callback) + }) + } +} + +// return true if dest is a subdir of src, otherwise false. +// extract dest base dir and check if that is the same as src basename +function isSrcSubdir (src, dest, cb) { + fs.stat(src, (err, st) => { + if (err) return cb(err) + if (st.isDirectory()) { + const baseDir = dest.split(path.dirname(src) + path.sep)[1] + if (baseDir) { + const destBasename = baseDir.split(path.sep)[0] + if (destBasename) return cb(null, src !== dest && dest.indexOf(src) > -1 && destBasename === path.basename(src)) + return cb(null, false) + } + return cb(null, false) + } + return cb(null, false) + }) +} + +module.exports = { + move: u(move) +} + + +/***/ }), + +/***/ 79858: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function outputFile (file, data, encoding, callback) { + if (typeof encoding === 'function') { + callback = encoding + encoding = 'utf8' + } + + const dir = path.dirname(file) + pathExists(dir, (err, itDoes) => { + if (err) return callback(err) + if (itDoes) return fs.writeFile(file, data, encoding, callback) + + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + + fs.writeFile(file, data, encoding, callback) + }) + }) +} + +function outputFileSync (file, data, encoding) { + const dir = path.dirname(file) + if (fs.existsSync(dir)) { + return fs.writeFileSync.apply(fs, arguments) + } + mkdir.mkdirsSync(dir) + fs.writeFileSync.apply(fs, arguments) +} + +module.exports = { + outputFile: u(outputFile), + outputFileSync +} + + +/***/ }), + +/***/ 49767: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const u = (__webpack_require__(55399)/* .fromPromise */ .z) +const fs = __webpack_require__(46596) + +function pathExists (path) { + return fs.access(path).then(() => true).catch(() => false) +} + +module.exports = { + pathExists: u(pathExists), + pathExistsSync: fs.existsSync +} + + +/***/ }), + +/***/ 16195: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const rimraf = __webpack_require__(54322) + +module.exports = { + remove: u(rimraf), + removeSync: rimraf.sync +} + + +/***/ }), + +/***/ 54322: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const assert = __webpack_require__(42613) + +const isWindows = (process.platform === 'win32') + +function defaults (options) { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 +} + +function rimraf (p, options, cb) { + let busyTries = 0 + + if (typeof options === 'function') { + cb = options + options = {} + } + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + defaults(options) + + rimraf_(p, options, function CB (er) { + if (er) { + if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') && + busyTries < options.maxBusyTries) { + busyTries++ + let time = busyTries * 100 + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), time) + } + + // already gone + if (er.code === 'ENOENT') er = null + } + + cb(er) + }) +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +function rimraf_ (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === 'ENOENT') { + return cb(null) + } + + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === 'EPERM' && isWindows) { + return fixWinEPERM(p, options, er, cb) + } + + if (st && st.isDirectory()) { + return rmdir(p, options, er, cb) + } + + options.unlink(p, er => { + if (er) { + if (er.code === 'ENOENT') { + return cb(null) + } + if (er.code === 'EPERM') { + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + } + if (er.code === 'EISDIR') { + return rmdir(p, options, er, cb) + } + } + return cb(er) + }) + }) +} + +function fixWinEPERM (p, options, er, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + if (er) { + assert(er instanceof Error) + } + + options.chmod(p, 0o666, er2 => { + if (er2) { + cb(er2.code === 'ENOENT' ? null : er) + } else { + options.stat(p, (er3, stats) => { + if (er3) { + cb(er3.code === 'ENOENT' ? null : er) + } else if (stats.isDirectory()) { + rmdir(p, options, er, cb) + } else { + options.unlink(p, cb) + } + }) + } + }) +} + +function fixWinEPERMSync (p, options, er) { + let stats + + assert(p) + assert(options) + if (er) { + assert(er instanceof Error) + } + + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === 'ENOENT') { + return + } else { + throw er + } + } + + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === 'ENOENT') { + return + } else { + throw er + } + } + + if (stats.isDirectory()) { + rmdirSync(p, options, er) + } else { + options.unlinkSync(p) + } +} + +function rmdir (p, options, originalEr, cb) { + assert(p) + assert(options) + if (originalEr) { + assert(originalEr instanceof Error) + } + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) { + rmkids(p, options, cb) + } else if (er && er.code === 'ENOTDIR') { + cb(originalEr) + } else { + cb(er) + } + }) +} + +function rmkids (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, (er, files) => { + if (er) return cb(er) + + let n = files.length + let errState + + if (n === 0) return options.rmdir(p, cb) + + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) { + return + } + if (er) return cb(errState = er) + if (--n === 0) { + options.rmdir(p, cb) + } + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +function rimrafSync (p, options) { + let st + + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === 'ENOENT') { + return + } + + // Windows can EPERM on stat. Life is suffering. + if (er.code === 'EPERM' && isWindows) { + fixWinEPERMSync(p, options, er) + } + } + + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) { + rmdirSync(p, options, null) + } else { + options.unlinkSync(p) + } + } catch (er) { + if (er.code === 'ENOENT') { + return + } else if (er.code === 'EPERM') { + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + } else if (er.code !== 'EISDIR') { + throw er + } + rmdirSync(p, options, er) + } +} + +function rmdirSync (p, options, originalEr) { + assert(p) + assert(options) + if (originalEr) { + assert(originalEr instanceof Error) + } + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === 'ENOTDIR') { + throw originalEr + } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { + rmkidsSync(p, options) + } else if (er.code !== 'ENOENT') { + throw er + } + } +} + +function rmkidsSync (p, options) { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) continue // eslint-disable-line + } + } while (true) +} + +module.exports = rimraf +rimraf.sync = rimrafSync + + +/***/ }), + +/***/ 3762: +/***/ ((module) => { + +"use strict"; + + +// simple mutable assign +function assign () { + const args = [].slice.call(arguments).filter(i => i) + const dest = args.shift() + args.forEach(src => { + Object.keys(src).forEach(key => { + dest[key] = src[key] + }) + }) + + return dest +} + +module.exports = assign + + +/***/ }), + +/***/ 34549: +/***/ ((module) => { + +/* eslint-disable node/no-deprecated-api */ +module.exports = function (size) { + if (typeof Buffer.allocUnsafe === 'function') { + try { + return Buffer.allocUnsafe(size) + } catch (e) { + return new Buffer(size) + } + } + return new Buffer(size) +} + + +/***/ }), + +/***/ 90348: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const os = __webpack_require__(70857) +const path = __webpack_require__(16928) + +// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not +function hasMillisResSync () { + let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2)) + tmpfile = path.join(os.tmpdir(), tmpfile) + + // 550 millis past UNIX epoch + const d = new Date(1435410243862) + fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141') + const fd = fs.openSync(tmpfile, 'r+') + fs.futimesSync(fd, d, d) + fs.closeSync(fd) + return fs.statSync(tmpfile).mtime > 1435410243000 +} + +function hasMillisRes (callback) { + let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2)) + tmpfile = path.join(os.tmpdir(), tmpfile) + + // 550 millis past UNIX epoch + const d = new Date(1435410243862) + fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => { + if (err) return callback(err) + fs.open(tmpfile, 'r+', (err, fd) => { + if (err) return callback(err) + fs.futimes(fd, d, d, err => { + if (err) return callback(err) + fs.close(fd, err => { + if (err) return callback(err) + fs.stat(tmpfile, (err, stats) => { + if (err) return callback(err) + callback(null, stats.mtime > 1435410243000) + }) + }) + }) + }) + }) +} + +function timeRemoveMillis (timestamp) { + if (typeof timestamp === 'number') { + return Math.floor(timestamp / 1000) * 1000 + } else if (timestamp instanceof Date) { + return new Date(Math.floor(timestamp.getTime() / 1000) * 1000) + } else { + throw new Error('fs-extra: timeRemoveMillis() unknown parameter type') + } +} + +function utimesMillis (path, atime, mtime, callback) { + // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) + fs.open(path, 'r+', (err, fd) => { + if (err) return callback(err) + fs.futimes(fd, atime, mtime, futimesErr => { + fs.close(fd, closeErr => { + if (callback) callback(futimesErr || closeErr) + }) + }) + }) +} + +module.exports = { + hasMillisRes, + hasMillisResSync, + timeRemoveMillis, + utimesMillis +} + + /***/ }), /***/ 63423: @@ -29294,6 +14014,979 @@ function expand(str, isTop) { +/***/ }), + +/***/ 77398: +/***/ ((module) => { + +"use strict"; + + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} + + +/***/ }), + +/***/ 71174: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fs = __webpack_require__(79896) +var polyfills = __webpack_require__(19023) +var legacy = __webpack_require__(76244) +var clone = __webpack_require__(77398) + +var util = __webpack_require__(39023) + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __webpack_require__(42613).equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} + + +/***/ }), + +/***/ 76244: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Stream = (__webpack_require__(2203).Stream) + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} + + +/***/ }), + +/***/ 19023: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var constants = __webpack_require__(49140) + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} + + /***/ }), /***/ 53972: @@ -29438,6 +15131,656 @@ isStream.transform = stream => module.exports = isStream; +/***/ }), + +/***/ 82162: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _fs +try { + _fs = __webpack_require__(71174) +} catch (_) { + _fs = __webpack_require__(79896) +} + +function readFile (file, options, callback) { + if (callback == null) { + callback = options + options = {} + } + + if (typeof options === 'string') { + options = {encoding: options} + } + + options = options || {} + var fs = options.fs || _fs + + var shouldThrow = true + if ('throws' in options) { + shouldThrow = options.throws + } + + fs.readFile(file, options, function (err, data) { + if (err) return callback(err) + + data = stripBom(data) + + var obj + try { + obj = JSON.parse(data, options ? options.reviver : null) + } catch (err2) { + if (shouldThrow) { + err2.message = file + ': ' + err2.message + return callback(err2) + } else { + return callback(null, null) + } + } + + callback(null, obj) + }) +} + +function readFileSync (file, options) { + options = options || {} + if (typeof options === 'string') { + options = {encoding: options} + } + + var fs = options.fs || _fs + + var shouldThrow = true + if ('throws' in options) { + shouldThrow = options.throws + } + + try { + var content = fs.readFileSync(file, options) + content = stripBom(content) + return JSON.parse(content, options.reviver) + } catch (err) { + if (shouldThrow) { + err.message = file + ': ' + err.message + throw err + } else { + return null + } + } +} + +function stringify (obj, options) { + var spaces + var EOL = '\n' + if (typeof options === 'object' && options !== null) { + if (options.spaces) { + spaces = options.spaces + } + if (options.EOL) { + EOL = options.EOL + } + } + + var str = JSON.stringify(obj, options ? options.replacer : null, spaces) + + return str.replace(/\n/g, EOL) + EOL +} + +function writeFile (file, obj, options, callback) { + if (callback == null) { + callback = options + options = {} + } + options = options || {} + var fs = options.fs || _fs + + var str = '' + try { + str = stringify(obj, options) + } catch (err) { + // Need to return whether a callback was passed or not + if (callback) callback(err, null) + return + } + + fs.writeFile(file, str, options, callback) +} + +function writeFileSync (file, obj, options) { + options = options || {} + var fs = options.fs || _fs + + var str = stringify(obj, options) + // not sure if fs.writeFileSync returns anything, but just in case + return fs.writeFileSync(file, str, options) +} + +function stripBom (content) { + // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified + if (Buffer.isBuffer(content)) content = content.toString('utf8') + content = content.replace(/^\uFEFF/, '') + return content +} + +var jsonfile = { + readFile: readFile, + readFileSync: readFileSync, + writeFile: writeFile, + writeFileSync: writeFileSync +} + +module.exports = jsonfile + + +/***/ }), + +/***/ 58538: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; + +__webpack_unused_export__ = ({ value: true }); +__webpack_unused_export__ = exports.Sk = exports.Ur = void 0; +__webpack_unused_export__ = makeField; +const tslib_1 = __webpack_require__(94914); +const os = tslib_1.__importStar(__webpack_require__(70857)); +const fs = tslib_1.__importStar(__webpack_require__(56922)); +const events_1 = tslib_1.__importDefault(__webpack_require__(24434)); +const serialize_1 = __webpack_require__(77283); +exports.Ur = { + deserialize: serialize_1.defaultDeserialize, + dialect: 'redis', + expiredCheckDelay: 24 * 3600 * 1000, // ms + filename: `${os.tmpdir()}/keyv-file/default.json`, + serialize: serialize_1.defaultSerialize, + writeDelay: 100, // ms + checkFileLock: false, +}; +function isNumber(val) { + return typeof val === 'number'; +} +class KeyvFile extends events_1.default { + constructor(options) { + super(); + this.ttlSupport = true; + this.opts = Object.assign({}, exports.Ur, options); + if (this.opts.checkFileLock) { + this.acquireFileLock(); + } + try { + const data = this.opts.deserialize(fs.readFileSync(this.opts.filename, 'utf8')); + if (!Array.isArray(data.cache)) { + const _cache = data.cache; + data.cache = []; + for (const key in _cache) { + if (_cache.hasOwnProperty(key)) { + data.cache.push([key, _cache[key]]); + } + } + } + this._cache = new Map(data.cache); + this._lastExpire = data.lastExpire; + } + catch (e) { + this._cache = new Map(); + this._lastExpire = Date.now(); + } + } + get _lockFile() { + return this.opts.filename + '.lock'; + } + acquireFileLock() { + try { + let fd = fs.openSync(this._lockFile, 'wx'); + fs.closeSync(fd); + process.on('SIGINT', () => { + this.releaseFileLock(); + process.exit(0); + }); + process.on('exit', () => { + this.releaseFileLock(); + }); + } + catch (error) { + console.error(`[keyv-file] There is another process using this file`); + throw error; + } + } + releaseFileLock() { + try { + fs.unlinkSync(this._lockFile); + } + catch (_a) { + //pass + } + } + get(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + return Promise.resolve(this.getSync(key)); + }); + } + getSync(key) { + try { + const data = this._cache.get(key); + if (!data) { + return undefined; + } + else if (this.isExpired(data)) { + this.delete(key); + return undefined; + } + else { + return data.value; + } + } + catch (error) { + // do nothing; + } + } + getMany(keys) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const results = yield Promise.all(keys.map((key) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield this.get(key); + return value; + }))); + return results; + }); + } + set(key, value, ttl) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if (ttl === 0) { + ttl = undefined; + } + this._cache.set(key, { + expire: isNumber(ttl) ? Date.now() + ttl : undefined, + value: value, + }); + return this.save(); + }); + } + delete(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const ret = this._cache.delete(key); + yield this.save(); + return ret; + }); + } + deleteMany(keys) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const deletePromises = keys.map((key) => this.delete(key)); + const results = yield Promise.all(deletePromises); + return results.every((result) => result); + }); + } + clear() { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + this._cache = new Map(); + this._lastExpire = Date.now(); + return this.save(); + }); + } + has(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield this.get(key); + return value !== undefined; + }); + } + isExpired(data) { + return isNumber(data.expire) && data.expire <= Date.now(); + } + clearExpire() { + const now = Date.now(); + if (now - this._lastExpire <= this.opts.expiredCheckDelay) { + return; + } + for (const key of this._cache.keys()) { + const data = this._cache.get(key); + if (this.isExpired(data)) { + this._cache.delete(key); + } + } + this._lastExpire = now; + } + saveToDisk() { + const cache = []; + for (const [key, val] of this._cache) { + cache.push([key, val]); + } + const data = this.opts.serialize({ + cache, + lastExpire: this._lastExpire, + }); + return new Promise((resolve, reject) => { + fs.outputFile(this.opts.filename, data, (err) => { + if (err) { + reject(err); + } + else { + resolve(); + } + }); + }); + } + save() { + this.clearExpire(); + if (this._savePromise) { + return this._savePromise; + } + this._savePromise = new Promise((resolve, reject) => { + setTimeout(() => { + this.saveToDisk() + .then(resolve, reject) + .finally(() => { + this._savePromise = void 0; + }); + }, this.opts.writeDelay); + }); + return this._savePromise; + } + disconnect() { + return Promise.resolve(); + } + iterator(namespace) { + return tslib_1.__asyncGenerator(this, arguments, function* iterator_1() { + for (const [key, data] of this._cache.entries()) { + if (key === undefined) { + continue; + } + // Filter by namespace if provided + if (!namespace || key.includes(namespace)) { + yield yield tslib_1.__await([key, data.value]); + } + } + }); + } +} +exports.Sk = KeyvFile; +__webpack_unused_export__ = KeyvFile; +class Field { + constructor(kv, key, defaults) { + this.kv = kv; + this.key = key; + this.defaults = defaults; + } + get() { + return tslib_1.__awaiter(this, arguments, void 0, function* (def = this.defaults) { + var _a; + return (_a = (yield this.kv.get(this.key))) !== null && _a !== void 0 ? _a : def; + }); + } + getSync(def = this.defaults) { + var _a; + if ('getSync' in this.kv) { + return (_a = this.kv.getSync(this.key)) !== null && _a !== void 0 ? _a : def; + } + throw new Error('kv does not support getSync'); + } + set(val, ttl) { + return this.kv.set(this.key, val, ttl); + } + delete() { + return this.kv.delete(this.key); + } +} +__webpack_unused_export__ = Field; +function makeField(kv, key, defaults) { + return new Field(kv, key, defaults); +} + + +/***/ }), + +/***/ 94914: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ __assign: () => (/* binding */ __assign), +/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator), +/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator), +/* harmony export */ __asyncValues: () => (/* binding */ __asyncValues), +/* harmony export */ __await: () => (/* binding */ __await), +/* harmony export */ __awaiter: () => (/* binding */ __awaiter), +/* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet), +/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet), +/* harmony export */ __createBinding: () => (/* binding */ __createBinding), +/* harmony export */ __decorate: () => (/* binding */ __decorate), +/* harmony export */ __exportStar: () => (/* binding */ __exportStar), +/* harmony export */ __extends: () => (/* binding */ __extends), +/* harmony export */ __generator: () => (/* binding */ __generator), +/* harmony export */ __importDefault: () => (/* binding */ __importDefault), +/* harmony export */ __importStar: () => (/* binding */ __importStar), +/* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject), +/* harmony export */ __metadata: () => (/* binding */ __metadata), +/* harmony export */ __param: () => (/* binding */ __param), +/* harmony export */ __read: () => (/* binding */ __read), +/* harmony export */ __rest: () => (/* binding */ __rest), +/* harmony export */ __spread: () => (/* binding */ __spread), +/* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays), +/* harmony export */ __values: () => (/* binding */ __values) +/* harmony export */ }); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __createBinding(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +} + +function __exportStar(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p]; +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); +} + +function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; +} + + /***/ }), /***/ 61747: @@ -37415,273 +23758,6 @@ const removeCirculars = (obj, branch = new Map(), path = "root") => { }; -/***/ }), - -/***/ 67322: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(79272)('node_sqlite3.node'); - - -/***/ }), - -/***/ 45430: -/***/ ((module, exports, __webpack_require__) => { - -const path = __webpack_require__(16928); -const sqlite3 = __webpack_require__(67322); -const EventEmitter = (__webpack_require__(24434).EventEmitter); -module.exports = exports = sqlite3; - -function normalizeMethod (fn) { - return function (sql) { - let errBack; - const args = Array.prototype.slice.call(arguments, 1); - - if (typeof args[args.length - 1] === 'function') { - const callback = args[args.length - 1]; - errBack = function(err) { - if (err) { - callback(err); - } - }; - } - const statement = new Statement(this, sql, errBack); - return fn.call(this, statement, args); - }; -} - -function inherits(target, source) { - for (const k in source.prototype) - target.prototype[k] = source.prototype[k]; -} - -sqlite3.cached = { - Database: function(file, a, b) { - if (file === '' || file === ':memory:') { - // Don't cache special databases. - return new Database(file, a, b); - } - - let db; - file = path.resolve(file); - - if (!sqlite3.cached.objects[file]) { - db = sqlite3.cached.objects[file] = new Database(file, a, b); - } - else { - // Make sure the callback is called. - db = sqlite3.cached.objects[file]; - const callback = (typeof a === 'number') ? b : a; - if (typeof callback === 'function') { - function cb() { callback.call(db, null); } - if (db.open) process.nextTick(cb); - else db.once('open', cb); - } - } - - return db; - }, - objects: {} -}; - - -const Database = sqlite3.Database; -const Statement = sqlite3.Statement; -const Backup = sqlite3.Backup; - -inherits(Database, EventEmitter); -inherits(Statement, EventEmitter); -inherits(Backup, EventEmitter); - -// Database#prepare(sql, [bind1, bind2, ...], [callback]) -Database.prototype.prepare = normalizeMethod(function(statement, params) { - return params.length - ? statement.bind.apply(statement, params) - : statement; -}); - -// Database#run(sql, [bind1, bind2, ...], [callback]) -Database.prototype.run = normalizeMethod(function(statement, params) { - statement.run.apply(statement, params).finalize(); - return this; -}); - -// Database#get(sql, [bind1, bind2, ...], [callback]) -Database.prototype.get = normalizeMethod(function(statement, params) { - statement.get.apply(statement, params).finalize(); - return this; -}); - -// Database#all(sql, [bind1, bind2, ...], [callback]) -Database.prototype.all = normalizeMethod(function(statement, params) { - statement.all.apply(statement, params).finalize(); - return this; -}); - -// Database#each(sql, [bind1, bind2, ...], [callback], [complete]) -Database.prototype.each = normalizeMethod(function(statement, params) { - statement.each.apply(statement, params).finalize(); - return this; -}); - -Database.prototype.map = normalizeMethod(function(statement, params) { - statement.map.apply(statement, params).finalize(); - return this; -}); - -// Database#backup(filename, [callback]) -// Database#backup(filename, destName, sourceName, filenameIsDest, [callback]) -Database.prototype.backup = function() { - let backup; - if (arguments.length <= 2) { - // By default, we write the main database out to the main database of the named file. - // This is the most likely use of the backup api. - backup = new Backup(this, arguments[0], 'main', 'main', true, arguments[1]); - } else { - // Otherwise, give the user full control over the sqlite3_backup_init arguments. - backup = new Backup(this, arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - } - // Per the sqlite docs, exclude the following errors as non-fatal by default. - backup.retryErrors = [sqlite3.BUSY, sqlite3.LOCKED]; - return backup; -}; - -Statement.prototype.map = function() { - const params = Array.prototype.slice.call(arguments); - const callback = params.pop(); - params.push(function(err, rows) { - if (err) return callback(err); - const result = {}; - if (rows.length) { - const keys = Object.keys(rows[0]); - const key = keys[0]; - if (keys.length > 2) { - // Value is an object - for (let i = 0; i < rows.length; i++) { - result[rows[i][key]] = rows[i]; - } - } else { - const value = keys[1]; - // Value is a plain value - for (let i = 0; i < rows.length; i++) { - result[rows[i][key]] = rows[i][value]; - } - } - } - callback(err, result); - }); - return this.all.apply(this, params); -}; - -let isVerbose = false; - -const supportedEvents = [ 'trace', 'profile', 'change' ]; - -Database.prototype.addListener = Database.prototype.on = function(type) { - const val = EventEmitter.prototype.addListener.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0) { - this.configure(type, true); - } - return val; -}; - -Database.prototype.removeListener = function(type) { - const val = EventEmitter.prototype.removeListener.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0 && !this._events[type]) { - this.configure(type, false); - } - return val; -}; - -Database.prototype.removeAllListeners = function(type) { - const val = EventEmitter.prototype.removeAllListeners.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0) { - this.configure(type, false); - } - return val; -}; - -// Save the stack trace over EIO callbacks. -sqlite3.verbose = function() { - if (!isVerbose) { - const trace = __webpack_require__(60738); - [ - 'prepare', - 'get', - 'run', - 'all', - 'each', - 'map', - 'close', - 'exec' - ].forEach(function (name) { - trace.extendTrace(Database.prototype, name); - }); - [ - 'bind', - 'get', - 'run', - 'all', - 'each', - 'map', - 'reset', - 'finalize', - ].forEach(function (name) { - trace.extendTrace(Statement.prototype, name); - }); - isVerbose = true; - } - - return sqlite3; -}; - - -/***/ }), - -/***/ 60738: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -// Inspired by https://github.com/tlrobinson/long-stack-traces -const util = __webpack_require__(39023); - -function extendTrace(object, property, pos) { - const old = object[property]; - object[property] = function() { - const error = new Error(); - const name = object.constructor.name + '#' + property + '(' + - Array.prototype.slice.call(arguments).map(function(el) { - return util.inspect(el, false, 0); - }).join(', ') + ')'; - - if (typeof pos === 'undefined') pos = -1; - if (pos < 0) pos += arguments.length; - const cb = arguments[pos]; - if (typeof arguments[pos] === 'function') { - arguments[pos] = function replacement() { - const err = arguments[0]; - if (err && err.stack && !err.__augmented) { - err.stack = filter(err).join('\n'); - err.stack += '\n--> in ' + name; - err.stack += '\n' + filter(error).slice(1).join('\n'); - err.__augmented = true; - } - return cb.apply(this, arguments); - }; - } - return old.apply(this, arguments); - }; -} -exports.extendTrace = extendTrace; - - -function filter(error) { - return error.stack.split('\n').filter(function(line) { - return line.indexOf(__filename) < 0; - }); -} - - /***/ }), /***/ 91370: @@ -38980,6 +25056,39 @@ Object.defineProperty(exports, "configs", ({ })); +/***/ }), + +/***/ 55399: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +exports.S = function (fn) { + return Object.defineProperty(function () { + if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments) + else { + return new Promise((resolve, reject) => { + arguments[arguments.length] = (err, res) => { + if (err) return reject(err) + resolve(res) + } + arguments.length++ + fn.apply(this, arguments) + }) + } + }, 'name', { value: fn.name }) +} + +exports.z = function (fn) { + return Object.defineProperty(function () { + const cb = arguments[arguments.length - 1] + if (typeof cb !== 'function') return fn.apply(this, arguments) + else fn.apply(this, arguments).then(r => cb(null, r), cb) + }, 'name', { value: fn.name }) +} + + /***/ }), /***/ 32926: @@ -135808,6 +121917,14 @@ module.exports = require("child_process"); /***/ }), +/***/ 49140: +/***/ ((module) => { + +"use strict"; +module.exports = require("constants"); + +/***/ }), + /***/ 76982: /***/ ((module) => { @@ -136006,6 +122123,90 @@ module.exports = require("worker_threads"); "use strict"; module.exports = require("zlib"); +/***/ }), + +/***/ 77283: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var index_exports = {}; +__export(index_exports, { + defaultDeserialize: () => defaultDeserialize, + defaultSerialize: () => defaultSerialize +}); +module.exports = __toCommonJS(index_exports); +var import_node_buffer = __webpack_require__(20181); +var defaultSerialize = (data) => { + if (data === void 0 || data === null) { + return "null"; + } + if (typeof data === "string") { + return JSON.stringify(data.startsWith(":") ? ":" + data : data); + } + if (import_node_buffer.Buffer.isBuffer(data)) { + return JSON.stringify(":base64:" + data.toString("base64")); + } + if (data?.toJSON) { + data = data.toJSON(); + } + if (typeof data === "object") { + let s = ""; + const array = Array.isArray(data); + s = array ? "[" : "{"; + let first = true; + for (const k in data) { + const ignore = typeof data[k] === "function" || !array && data[k] === void 0; + if (!Object.hasOwn(data, k) || ignore) { + continue; + } + if (!first) { + s += ","; + } + first = false; + if (array) { + s += defaultSerialize(data[k]); + } else if (data[k] !== void 0) { + s += defaultSerialize(k) + ":" + defaultSerialize(data[k]); + } + } + s += array ? "]" : "}"; + return s; + } + return JSON.stringify(data); +}; +var defaultDeserialize = (data) => JSON.parse(data, (_, value) => { + if (typeof value === "string") { + if (value.startsWith(":base64:")) { + return import_node_buffer.Buffer.from(value.slice(8), "base64"); + } + return value.startsWith(":") ? value.slice(1) : value; + } + return value; +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + /***/ }), /***/ 47892: @@ -166150,11 +152351,10 @@ const createClient = (options) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { - X4: () => (/* binding */ default_sort), eF: () => (/* binding */ run) }); -// UNUSED EXPORTS: complete_messages, complete_options, complete_params, execute_request, processRun +// UNUSED EXPORTS: complete_messages, complete_options, complete_params, default_sort, execute_request, processRun // EXTERNAL MODULE: external "node:path" var external_node_path_ = __webpack_require__(76760); @@ -168483,8 +154683,8 @@ const load = async (options) => { return profile.variables; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFJbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDLE1BQU0sUUFBUSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQ3JDLElBQUcsQ0FBQyxXQUFXLEVBQUMsQ0FBQztRQUNiLE9BQU07SUFDVixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEUsSUFBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxPQUFrQixFQUFtQyxFQUFFO0lBQzlFLElBQUksT0FBTyxHQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ3JGLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ2hHLElBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQztRQUM3RCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFBO0lBQ25GLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQTtBQUM1QixDQUFDLENBQUEifQ== -// EXTERNAL MODULE: ./dist-in/tools.js + 88 modules -var tools = __webpack_require__(49315); +// EXTERNAL MODULE: ./dist-in/tools.js + 84 modules +var tools = __webpack_require__(3043); ;// ./dist-in/utils/content.js const content = (result) => { return result?.choices?.[0]?.message?.content || ""; @@ -169473,8 +155673,21 @@ var E_OPENAI_MODEL; ;// ./dist-in/models/cache/openrouter-models.js var E_OPENROUTER_MODEL; (function (E_OPENROUTER_MODEL) { + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_NEXT_80B_A3B_THINKING"] = "qwen/qwen3-next-80b-a3b-thinking"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_NEXT_80B_A3B_INSTRUCT"] = "qwen/qwen3-next-80b-a3b-instruct"; + E_OPENROUTER_MODEL["MODEL_MEITUAN_LONGCAT_FLASH_CHAT"] = "meituan/longcat-flash-chat"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_PLUS_2025_07_28"] = "qwen/qwen-plus-2025-07-28"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_PLUS_2025_07_28_THINKING"] = "qwen/qwen-plus-2025-07-28:thinking"; + E_OPENROUTER_MODEL["MODEL_NVIDIA_NEMOTRON_NANO_9B_V2_FREE"] = "nvidia/nemotron-nano-9b-v2:free"; + E_OPENROUTER_MODEL["MODEL_NVIDIA_NEMOTRON_NANO_9B_V2"] = "nvidia/nemotron-nano-9b-v2"; + E_OPENROUTER_MODEL["MODEL_OPENROUTER_SONOMA_DUSK_ALPHA"] = "openrouter/sonoma-dusk-alpha"; + E_OPENROUTER_MODEL["MODEL_OPENROUTER_SONOMA_SKY_ALPHA"] = "openrouter/sonoma-sky-alpha"; + E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_MAX"] = "qwen/qwen3-max"; + E_OPENROUTER_MODEL["MODEL_MOONSHOTAI_KIMI_K2_0905"] = "moonshotai/kimi-k2-0905"; + E_OPENROUTER_MODEL["MODEL_BYTEDANCE_SEED_OSS_36B_INSTRUCT"] = "bytedance/seed-oss-36b-instruct"; E_OPENROUTER_MODEL["MODEL_DEEPCOGITO_COGITO_V2_PREVIEW_LLAMA_109B_MOE"] = "deepcogito/cogito-v2-preview-llama-109b-moe"; E_OPENROUTER_MODEL["MODEL_DEEPCOGITO_COGITO_V2_PREVIEW_DEEPSEEK_671B"] = "deepcogito/cogito-v2-preview-deepseek-671b"; + E_OPENROUTER_MODEL["MODEL_STEPFUN_AI_STEP3"] = "stepfun-ai/step3"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN3_30B_A3B_THINKING_2507"] = "qwen/qwen3-30b-a3b-thinking-2507"; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_CODE_FAST_1"] = "x-ai/grok-code-fast-1"; E_OPENROUTER_MODEL["MODEL_NOUSRESEARCH_HERMES_4_70B"] = "nousresearch/hermes-4-70b"; @@ -169602,14 +155815,13 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MOONSHOTAI_KIMI_VL_A3B_THINKING"] = "moonshotai/kimi-vl-a3b-thinking"; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_3_MINI_BETA"] = "x-ai/grok-3-mini-beta"; E_OPENROUTER_MODEL["MODEL_X_AI_GROK_3_BETA"] = "x-ai/grok-3-beta"; - E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_3_NEMOTRON_SUPER_49B_V1"] = "nvidia/llama-3.3-nemotron-super-49b-v1"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_MAVERICK_FREE"] = "meta-llama/llama-4-maverick:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_MAVERICK"] = "meta-llama/llama-4-maverick"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_SCOUT_FREE"] = "meta-llama/llama-4-scout:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_4_SCOUT"] = "meta-llama/llama-4-scout"; - E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_2_5_PRO_EXP_03_25"] = "google/gemini-2.5-pro-exp-03-25"; + E_OPENROUTER_MODEL["MODEL_ALLENAI_MOLMO_7B_D"] = "allenai/molmo-7b-d"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-32b-instruct:free"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN2_5_VL_32B_INSTRUCT"] = "qwen/qwen2.5-vl-32b-instruct"; E_OPENROUTER_MODEL["MODEL_DEEPSEEK_DEEPSEEK_CHAT_V3_0324_FREE"] = "deepseek/deepseek-chat-v3-0324:free"; @@ -169617,6 +155829,7 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_OPENAI_O1_PRO"] = "openai/o1-pro"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT_FREE"] = "mistralai/mistral-small-3.1-24b-instruct:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT"] = "mistralai/mistral-small-3.1-24b-instruct"; + E_OPENROUTER_MODEL["MODEL_ALLENAI_OLMO_2_0325_32B_INSTRUCT"] = "allenai/olmo-2-0325-32b-instruct"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_3_4B_IT_FREE"] = "google/gemma-3-4b-it:free"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_3_4B_IT"] = "google/gemma-3-4b-it"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMMA_3_12B_IT_FREE"] = "google/gemma-3-12b-it:free"; @@ -169693,38 +155906,36 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_LARGE_2411"] = "mistralai/mistral-large-2411"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_LARGE_2407"] = "mistralai/mistral-large-2407"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_PIXTRAL_LARGE_2411"] = "mistralai/pixtral-large-2411"; - E_OPENROUTER_MODEL["MODEL_X_AI_GROK_VISION_BETA"] = "x-ai/grok-vision-beta"; - E_OPENROUTER_MODEL["MODEL_INFERMATIC_MN_INFEROR_12B"] = "infermatic/mn-inferor-12b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_CODER_32B_INSTRUCT_FREE"] = "qwen/qwen-2.5-coder-32b-instruct:free"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_CODER_32B_INSTRUCT"] = "qwen/qwen-2.5-coder-32b-instruct"; E_OPENROUTER_MODEL["MODEL_RAIFLE_SORCERERLM_8X22B"] = "raifle/sorcererlm-8x22b"; E_OPENROUTER_MODEL["MODEL_THEDRUMMER_UNSLOPNEMO_12B"] = "thedrummer/unslopnemo-12b"; - E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022"] = "anthropic/claude-3.5-haiku-20241022"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU"] = "anthropic/claude-3.5-haiku"; + E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_HAIKU_20241022"] = "anthropic/claude-3.5-haiku-20241022"; E_OPENROUTER_MODEL["MODEL_ANTHRACITE_ORG_MAGNUM_V4_72B"] = "anthracite-org/magnum-v4-72b"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_5_SONNET"] = "anthropic/claude-3.5-sonnet"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MINISTRAL_3B"] = "mistralai/ministral-3b"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MINISTRAL_8B"] = "mistralai/ministral-8b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_7B_INSTRUCT"] = "qwen/qwen-2.5-7b-instruct"; E_OPENROUTER_MODEL["MODEL_NVIDIA_LLAMA_3_1_NEMOTRON_70B_INSTRUCT"] = "nvidia/llama-3.1-nemotron-70b-instruct"; - E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY"] = "inflection/inflection-3-productivity"; E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PI"] = "inflection/inflection-3-pi"; + E_OPENROUTER_MODEL["MODEL_INFLECTION_INFLECTION_3_PRODUCTIVITY"] = "inflection/inflection-3-productivity"; E_OPENROUTER_MODEL["MODEL_GOOGLE_GEMINI_FLASH_1_5_8B"] = "google/gemini-flash-1.5-8b"; - E_OPENROUTER_MODEL["MODEL_ANTHRACITE_ORG_MAGNUM_V2_72B"] = "anthracite-org/magnum-v2-72b"; E_OPENROUTER_MODEL["MODEL_THEDRUMMER_ROCINANTE_12B"] = "thedrummer/rocinante-12b"; - E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-11b-vision-instruct"; + E_OPENROUTER_MODEL["MODEL_ANTHRACITE_ORG_MAGNUM_V2_72B"] = "anthracite-org/magnum-v2-72b"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_90B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-90b-vision-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_1B_INSTRUCT"] = "meta-llama/llama-3.2-1b-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT_FREE"] = "meta-llama/llama-3.2-3b-instruct:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_3B_INSTRUCT"] = "meta-llama/llama-3.2-3b-instruct"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_2_11B_VISION_INSTRUCT"] = "meta-llama/llama-3.2-11b-vision-instruct"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_72B_INSTRUCT_FREE"] = "qwen/qwen-2.5-72b-instruct:free"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_72B_INSTRUCT"] = "qwen/qwen-2.5-72b-instruct"; E_OPENROUTER_MODEL["MODEL_NEVERSLEEP_LLAMA_3_1_LUMIMAID_8B"] = "neversleep/llama-3.1-lumimaid-8b"; - E_OPENROUTER_MODEL["MODEL_OPENAI_O1_MINI_2024_09_12"] = "openai/o1-mini-2024-09-12"; E_OPENROUTER_MODEL["MODEL_OPENAI_O1_MINI"] = "openai/o1-mini"; + E_OPENROUTER_MODEL["MODEL_OPENAI_O1_MINI_2024_09_12"] = "openai/o1-mini-2024-09-12"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_PIXTRAL_12B"] = "mistralai/pixtral-12b"; - E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_08_2024"] = "cohere/command-r-08-2024"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS_08_2024"] = "cohere/command-r-plus-08-2024"; + E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_08_2024"] = "cohere/command-r-08-2024"; E_OPENROUTER_MODEL["MODEL_SAO10K_L3_1_EURYALE_70B"] = "sao10k/l3.1-euryale-70b"; E_OPENROUTER_MODEL["MODEL_QWEN_QWEN_2_5_VL_7B_INSTRUCT"] = "qwen/qwen-2.5-vl-7b-instruct"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_5_MINI_128K_INSTRUCT"] = "microsoft/phi-3.5-mini-128k-instruct"; @@ -169734,9 +155945,9 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_SAO10K_L3_LUNARIS_8B"] = "sao10k/l3-lunaris-8b"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4O_2024_08_06"] = "openai/gpt-4o-2024-08-06"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_405B"] = "meta-llama/llama-3.1-405b"; + E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_8B_INSTRUCT"] = "meta-llama/llama-3.1-8b-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_405B_INSTRUCT_FREE"] = "meta-llama/llama-3.1-405b-instruct:free"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_405B_INSTRUCT"] = "meta-llama/llama-3.1-405b-instruct"; - E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_8B_INSTRUCT"] = "meta-llama/llama-3.1-8b-instruct"; E_OPENROUTER_MODEL["MODEL_META_LLAMA_LLAMA_3_1_70B_INSTRUCT"] = "meta-llama/llama-3.1-70b-instruct"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_NEMO_FREE"] = "mistralai/mistral-nemo:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_NEMO"] = "mistralai/mistral-nemo"; @@ -169749,9 +155960,9 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_SAO10K_L3_EURYALE_70B"] = "sao10k/l3-euryale-70b"; E_OPENROUTER_MODEL["MODEL_COGNITIVECOMPUTATIONS_DOLPHIN_MIXTRAL_8X22B"] = "cognitivecomputations/dolphin-mixtral-8x22b"; E_OPENROUTER_MODEL["MODEL_NOUSRESEARCH_HERMES_2_PRO_LLAMA_3_8B"] = "nousresearch/hermes-2-pro-llama-3-8b"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3"] = "mistralai/mistral-7b-instruct-v0.3"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE"] = "mistralai/mistral-7b-instruct:free"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT"] = "mistralai/mistral-7b-instruct"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_3"] = "mistralai/mistral-7b-instruct-v0.3"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_MINI_128K_INSTRUCT"] = "microsoft/phi-3-mini-128k-instruct"; E_OPENROUTER_MODEL["MODEL_MICROSOFT_PHI_3_MEDIUM_128K_INSTRUCT"] = "microsoft/phi-3-medium-128k-instruct"; E_OPENROUTER_MODEL["MODEL_NEVERSLEEP_LLAMA_3_LUMIMAID_70B"] = "neversleep/llama-3-lumimaid-70b"; @@ -169769,36 +155980,38 @@ var E_OPENROUTER_MODEL; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS"] = "cohere/command-r-plus"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_PLUS_04_2024"] = "cohere/command-r-plus-04-2024"; E_OPENROUTER_MODEL["MODEL_SOPHOSYMPATHEIA_MIDNIGHT_ROSE_70B"] = "sophosympatheia/midnight-rose-70b"; - E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R"] = "cohere/command-r"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND"] = "cohere/command"; + E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R"] = "cohere/command-r"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_HAIKU"] = "anthropic/claude-3-haiku"; E_OPENROUTER_MODEL["MODEL_ANTHROPIC_CLAUDE_3_OPUS"] = "anthropic/claude-3-opus"; E_OPENROUTER_MODEL["MODEL_COHERE_COMMAND_R_03_2024"] = "cohere/command-r-03-2024"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_LARGE"] = "mistralai/mistral-large"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_TURBO_PREVIEW"] = "openai/gpt-4-turbo-preview"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO_0613"] = "openai/gpt-3.5-turbo-0613"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL"] = "mistralai/mistral-small"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_TINY"] = "mistralai/mistral-tiny"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_SMALL"] = "mistralai/mistral-small"; E_OPENROUTER_MODEL["MODEL_MISTRALAI_MIXTRAL_8X7B_INSTRUCT"] = "mistralai/mixtral-8x7b-instruct"; E_OPENROUTER_MODEL["MODEL_NEVERSLEEP_NOROMAID_20B"] = "neversleep/noromaid-20b"; E_OPENROUTER_MODEL["MODEL_ALPINDALE_GOLIATH_120B"] = "alpindale/goliath-120b"; E_OPENROUTER_MODEL["MODEL_OPENROUTER_AUTO"] = "openrouter/auto"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_1106_PREVIEW"] = "openai/gpt-4-1106-preview"; - E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_1"] = "mistralai/mistral-7b-instruct-v0.1"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO_INSTRUCT"] = "openai/gpt-3.5-turbo-instruct"; - E_OPENROUTER_MODEL["MODEL_PYGMALIONAI_MYTHALION_13B"] = "pygmalionai/mythalion-13b"; + E_OPENROUTER_MODEL["MODEL_MISTRALAI_MISTRAL_7B_INSTRUCT_V0_1"] = "mistralai/mistral-7b-instruct-v0.1"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO_16K"] = "openai/gpt-3.5-turbo-16k"; E_OPENROUTER_MODEL["MODEL_MANCER_WEAVER"] = "mancer/weaver"; E_OPENROUTER_MODEL["MODEL_UNDI95_REMM_SLERP_L2_13B"] = "undi95/remm-slerp-l2-13b"; E_OPENROUTER_MODEL["MODEL_GRYPHE_MYTHOMAX_L2_13B"] = "gryphe/mythomax-l2-13b"; - E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_0314"] = "openai/gpt-4-0314"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_3_5_TURBO"] = "openai/gpt-3.5-turbo"; + E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4_0314"] = "openai/gpt-4-0314"; E_OPENROUTER_MODEL["MODEL_OPENAI_GPT_4"] = "openai/gpt-4"; })(E_OPENROUTER_MODEL || (E_OPENROUTER_MODEL = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQWtVWDtBQWxVRCxXQUFZLGtCQUFrQjtJQUM1Qix1SEFBaUcsQ0FBQTtJQUNqRyxxSEFBK0YsQ0FBQTtJQUMvRixpR0FBMkUsQ0FBQTtJQUMzRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCwyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtJQUM3QyxtRUFBNkMsQ0FBQTtJQUM3QyxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSxpR0FBMkUsQ0FBQTtJQUMzRSx5REFBbUMsQ0FBQTtJQUNuQywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxxR0FBK0UsQ0FBQTtJQUMvRSw2REFBdUMsQ0FBQTtJQUN2QywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwySkFBcUksQ0FBQTtJQUNySSx1REFBaUMsQ0FBQTtJQUNqQyx1RkFBaUUsQ0FBQTtJQUNqRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRUFBNkMsQ0FBQTtJQUM3QywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixxRUFBK0MsQ0FBQTtJQUMvQyxxSEFBK0YsQ0FBQTtJQUMvRiwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyxpRUFBMkMsQ0FBQTtJQUMzQyx1REFBaUMsQ0FBQTtJQUNqQyw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpSEFBMkYsQ0FBQTtJQUMzRiwyRkFBcUUsQ0FBQTtJQUNyRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3QywyR0FBcUYsQ0FBQTtJQUNyRiwySEFBcUcsQ0FBQTtJQUNyRyxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRixxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRUFBK0MsQ0FBQTtJQUMvQywyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCw2REFBdUMsQ0FBQTtJQUN2Qyw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6Qyx1RUFBaUQsQ0FBQTtJQUNqRCxtREFBNkIsQ0FBQTtJQUM3Qiw2REFBdUMsQ0FBQTtJQUN2Qyx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyw2R0FBdUYsQ0FBQTtJQUN2Rix5SEFBbUcsQ0FBQTtJQUNuRywrR0FBeUYsQ0FBQTtJQUN6RixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCwrRkFBeUUsQ0FBQTtJQUN6RSxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtSUFBNkcsQ0FBQTtJQUM3RyxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCwrSEFBeUcsQ0FBQTtJQUN6RyxtSUFBNkcsQ0FBQTtJQUM3Ryx5SEFBbUcsQ0FBQTtJQUNuRyx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSxtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RiwyR0FBcUYsQ0FBQTtJQUNyRixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3QiwrRUFBeUQsQ0FBQTtJQUN6RCxpRUFBMkMsQ0FBQTtJQUMzQyxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRixxRkFBK0QsQ0FBQTtJQUMvRCx5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCxtRkFBNkQsQ0FBQTtJQUM3RCw2R0FBdUYsQ0FBQTtJQUN2Rix5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxxRkFBK0QsQ0FBQTtJQUMvRCx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCxpSEFBMkYsQ0FBQTtJQUMzRixpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCw2REFBdUMsQ0FBQTtJQUN2QywyRUFBcUQsQ0FBQTtJQUNyRCxpRkFBMkQsQ0FBQTtJQUMzRCwyRkFBcUUsQ0FBQTtJQUNyRSwrRUFBeUQsQ0FBQTtJQUN6RCx5RkFBbUUsQ0FBQTtJQUNuRSx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxpR0FBMkUsQ0FBQTtJQUMzRSxtR0FBNkUsQ0FBQTtJQUM3RSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCwyRkFBcUUsQ0FBQTtJQUNyRSxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx1SEFBaUcsQ0FBQTtJQUNqRyx5R0FBbUYsQ0FBQTtJQUNuRixxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSwrRkFBeUUsQ0FBQTtJQUN6RSw2RkFBdUUsQ0FBQTtJQUN2RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtR0FBNkUsQ0FBQTtJQUM3RSxpRUFBMkMsQ0FBQTtJQUMzQyw2REFBdUMsQ0FBQTtJQUN2QyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyxpRkFBMkQsQ0FBQTtJQUMzRCw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3Qyx5RUFBbUQsQ0FBQTtJQUNuRCx5REFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBbFVXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFrVTdCIn0= +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbW9kZWxzL2NhY2hlL29wZW5yb3V0ZXItbW9kZWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sQ0FBTixJQUFZLGtCQTRVWDtBQTVVRCxXQUFZLGtCQUFrQjtJQUM1QixpR0FBMkUsQ0FBQTtJQUMzRSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCx5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2REFBdUMsQ0FBQTtJQUN2QywrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSx1SEFBaUcsQ0FBQTtJQUNqRyxxSEFBK0YsQ0FBQTtJQUMvRixpRUFBMkMsQ0FBQTtJQUMzQyxpR0FBMkUsQ0FBQTtJQUMzRSwyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCwyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtRUFBNkMsQ0FBQTtJQUM3QyxtRUFBNkMsQ0FBQTtJQUM3QyxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCxtR0FBNkUsQ0FBQTtJQUM3RSxpR0FBMkUsQ0FBQTtJQUMzRSx5REFBbUMsQ0FBQTtJQUNuQywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxxR0FBK0UsQ0FBQTtJQUMvRSw2REFBdUMsQ0FBQTtJQUN2QywyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCxpRkFBMkQsQ0FBQTtJQUMzRCwySkFBcUksQ0FBQTtJQUNySSx1REFBaUMsQ0FBQTtJQUNqQyx1RkFBaUUsQ0FBQTtJQUNqRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5RUFBbUQsQ0FBQTtJQUNuRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RkFBbUUsQ0FBQTtJQUNuRSxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRUFBNkMsQ0FBQTtJQUM3QywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixxRUFBK0MsQ0FBQTtJQUMvQyxxSEFBK0YsQ0FBQTtJQUMvRiwrRUFBeUQsQ0FBQTtJQUN6RCwyRUFBcUQsQ0FBQTtJQUNyRCx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCwyREFBcUMsQ0FBQTtJQUNyQyxpRUFBMkMsQ0FBQTtJQUMzQyx1REFBaUMsQ0FBQTtJQUNqQyw2RkFBdUUsQ0FBQTtJQUN2RSwrRkFBeUUsQ0FBQTtJQUN6RSxpSEFBMkYsQ0FBQTtJQUMzRiwyRkFBcUUsQ0FBQTtJQUNyRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSw2RkFBdUUsQ0FBQTtJQUN2RSxtRkFBNkQsQ0FBQTtJQUM3RCwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCxtRUFBNkMsQ0FBQTtJQUM3QywyR0FBcUYsQ0FBQTtJQUNyRiwySEFBcUcsQ0FBQTtJQUNyRyxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRixxRUFBK0MsQ0FBQTtJQUMvQyxxRkFBK0QsQ0FBQTtJQUMvRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyx1RkFBaUUsQ0FBQTtJQUNqRSx5RkFBbUUsQ0FBQTtJQUNuRSwrRUFBeUQsQ0FBQTtJQUN6RCxxRUFBK0MsQ0FBQTtJQUMvQyxxRUFBK0MsQ0FBQTtJQUMvQywyREFBcUMsQ0FBQTtJQUNyQyx1RUFBaUQsQ0FBQTtJQUNqRCw2REFBdUMsQ0FBQTtJQUN2Qyw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCx1RUFBaUQsQ0FBQTtJQUNqRCxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6Qyx1RUFBaUQsQ0FBQTtJQUNqRCxtREFBNkIsQ0FBQTtJQUM3Qiw2REFBdUMsQ0FBQTtJQUN2Qyx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSw2REFBdUMsQ0FBQTtJQUN2Qyx1RUFBaUQsQ0FBQTtJQUNqRCx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxtSEFBNkYsQ0FBQTtJQUM3RixtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyx5SEFBbUcsQ0FBQTtJQUNuRywrR0FBeUYsQ0FBQTtJQUN6RixpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRUFBK0MsQ0FBQTtJQUMvQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSwyREFBcUMsQ0FBQTtJQUNyQywySEFBcUcsQ0FBQTtJQUNyRyxpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxpRUFBMkMsQ0FBQTtJQUMzQyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSxpRkFBMkQsQ0FBQTtJQUMzRCxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtRkFBNkQsQ0FBQTtJQUM3RCx1R0FBaUYsQ0FBQTtJQUNqRiw2RkFBdUUsQ0FBQTtJQUN2RSx5RUFBbUQsQ0FBQTtJQUNuRCw2RkFBdUUsQ0FBQTtJQUN2RSxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtJQUNuQyxtSUFBNkcsQ0FBQTtJQUM3RyxpR0FBMkUsQ0FBQTtJQUMzRSx1RkFBaUUsQ0FBQTtJQUNqRSx5R0FBbUYsQ0FBQTtJQUNuRixxRUFBK0MsQ0FBQTtJQUMvQyw2RUFBdUQsQ0FBQTtJQUN2RCx5SUFBbUgsQ0FBQTtJQUNuSCwrSEFBeUcsQ0FBQTtJQUN6RyxtSUFBNkcsQ0FBQTtJQUM3Ryx5SEFBbUcsQ0FBQTtJQUNuRyx1RkFBaUUsQ0FBQTtJQUNqRSx1RUFBaUQsQ0FBQTtJQUNqRCwyR0FBcUYsQ0FBQTtJQUNyRix1RkFBaUUsQ0FBQTtJQUNqRSxtRUFBNkMsQ0FBQTtJQUM3QyxxRUFBK0MsQ0FBQTtJQUMvQywrRUFBeUQsQ0FBQTtJQUN6RCw2RkFBdUUsQ0FBQTtJQUN2RSxpRUFBMkMsQ0FBQTtJQUMzQywrREFBeUMsQ0FBQTtJQUN6QyxtR0FBNkUsQ0FBQTtJQUM3RSx5RkFBbUUsQ0FBQTtJQUNuRSw2REFBdUMsQ0FBQTtJQUN2QywyREFBcUMsQ0FBQTtJQUNyQyw2REFBdUMsQ0FBQTtJQUN2Qyw2SEFBdUcsQ0FBQTtJQUN2RyxtSEFBNkYsQ0FBQTtJQUM3RiwyR0FBcUYsQ0FBQTtJQUNyRixxSEFBK0YsQ0FBQTtJQUMvRiwyR0FBcUYsQ0FBQTtJQUNyRixxRkFBK0QsQ0FBQTtJQUMvRCxpRUFBMkMsQ0FBQTtJQUMzQywyREFBcUMsQ0FBQTtJQUNyQywyREFBcUMsQ0FBQTtJQUNyQyx1SEFBaUcsQ0FBQTtJQUNqRyw2R0FBdUYsQ0FBQTtJQUN2RixtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyxpRkFBMkQsQ0FBQTtJQUMzRCwrREFBeUMsQ0FBQTtJQUN6Qyw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCxtREFBNkIsQ0FBQTtJQUM3QiwrRUFBeUQsQ0FBQTtJQUN6RCxpRUFBMkMsQ0FBQTtJQUMzQyxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2R0FBdUYsQ0FBQTtJQUN2RixtR0FBNkUsQ0FBQTtJQUM3RSx1RUFBaUQsQ0FBQTtJQUNqRCx5RUFBbUQsQ0FBQTtJQUNuRCxxRUFBK0MsQ0FBQTtJQUMvQyx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSx5RkFBbUUsQ0FBQTtJQUNuRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSwrRUFBeUQsQ0FBQTtJQUN6RCxtRkFBNkQsQ0FBQTtJQUM3RCxxRkFBK0QsQ0FBQTtJQUMvRCx1R0FBaUYsQ0FBQTtJQUNqRix5RkFBbUUsQ0FBQTtJQUNuRSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCw2RUFBdUQsQ0FBQTtJQUN2RCxtRkFBNkQsQ0FBQTtJQUM3RCw2R0FBdUYsQ0FBQTtJQUN2RixxRkFBK0QsQ0FBQTtJQUMvRCx5R0FBbUYsQ0FBQTtJQUNuRixxRkFBK0QsQ0FBQTtJQUMvRCxpRkFBMkQsQ0FBQTtJQUMzRCx5RkFBbUUsQ0FBQTtJQUNuRSxpSEFBMkYsQ0FBQTtJQUMzRixpR0FBMkUsQ0FBQTtJQUMzRSwyR0FBcUYsQ0FBQTtJQUNyRixpR0FBMkUsQ0FBQTtJQUMzRSxpSEFBMkYsQ0FBQTtJQUMzRiwrRkFBeUUsQ0FBQTtJQUN6RSxxRkFBK0QsQ0FBQTtJQUMvRCxpR0FBMkUsQ0FBQTtJQUMzRSw2REFBdUMsQ0FBQTtJQUN2QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCx5RkFBbUUsQ0FBQTtJQUNuRSx5R0FBbUYsQ0FBQTtJQUNuRix1R0FBaUYsQ0FBQTtJQUNqRix5R0FBbUYsQ0FBQTtJQUNuRixpRkFBMkQsQ0FBQTtJQUMzRCx5RUFBbUQsQ0FBQTtJQUNuRCxpRkFBMkQsQ0FBQTtJQUMzRCxtRkFBNkQsQ0FBQTtJQUM3RCxpR0FBMkUsQ0FBQTtJQUMzRSwrR0FBeUYsQ0FBQTtJQUN6RixxR0FBK0UsQ0FBQTtJQUMvRSxtR0FBNkUsQ0FBQTtJQUM3RSx1RkFBaUUsQ0FBQTtJQUNqRSw2RUFBdUQsQ0FBQTtJQUN2RCwyRkFBcUUsQ0FBQTtJQUNyRSxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCxtRkFBNkQsQ0FBQTtJQUM3RCx5RUFBbUQsQ0FBQTtJQUNuRCx5R0FBbUYsQ0FBQTtJQUNuRiwyRUFBcUQsQ0FBQTtJQUNyRCx1SEFBaUcsQ0FBQTtJQUNqRyx5R0FBbUYsQ0FBQTtJQUNuRixxR0FBK0UsQ0FBQTtJQUMvRSxxR0FBK0UsQ0FBQTtJQUMvRSwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSx5R0FBbUYsQ0FBQTtJQUNuRiwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyw2RUFBdUQsQ0FBQTtJQUN2RCx1RkFBaUUsQ0FBQTtJQUNqRSwrRkFBeUUsQ0FBQTtJQUN6RSw2RkFBdUUsQ0FBQTtJQUN2RSxpR0FBMkUsQ0FBQTtJQUMzRSxxRkFBK0QsQ0FBQTtJQUMvRCwyRUFBcUQsQ0FBQTtJQUNyRCxxRUFBK0MsQ0FBQTtJQUMvQywyRUFBcUQsQ0FBQTtJQUNyRCwyRkFBcUUsQ0FBQTtJQUNyRSxtR0FBNkUsQ0FBQTtJQUM3RSw2REFBdUMsQ0FBQTtJQUN2QyxpRUFBMkMsQ0FBQTtJQUMzQyxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxpRkFBMkQsQ0FBQTtJQUMzRCwrRUFBeUQsQ0FBQTtJQUN6RCxxRkFBK0QsQ0FBQTtJQUMvRCxtRkFBNkQsQ0FBQTtJQUM3RCw2RUFBdUQsQ0FBQTtJQUN2RCwrRUFBeUQsQ0FBQTtJQUN6RCwrRkFBeUUsQ0FBQTtJQUN6RSwrRUFBeUQsQ0FBQTtJQUN6RCw2RUFBdUQsQ0FBQTtJQUN2RCwrREFBeUMsQ0FBQTtJQUN6QyxtRkFBNkQsQ0FBQTtJQUM3RCwyRkFBcUUsQ0FBQTtJQUNyRSxxR0FBK0UsQ0FBQTtJQUMvRSxpRkFBMkQsQ0FBQTtJQUMzRCwyREFBcUMsQ0FBQTtJQUNyQyxpRkFBMkQsQ0FBQTtJQUMzRCw2RUFBdUQsQ0FBQTtJQUN2RCx5RUFBbUQsQ0FBQTtJQUNuRCxtRUFBNkMsQ0FBQTtJQUM3Qyx5REFBbUMsQ0FBQTtBQUNyQyxDQUFDLEVBNVVXLGtCQUFrQixLQUFsQixrQkFBa0IsUUE0VTdCIn0= ;// ./dist-in/models/cache/openrouter-models-free.js var E_OPENROUTER_MODEL_FREE; (function (E_OPENROUTER_MODEL_FREE) { + E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_NEMOTRON_NANO_9B_V2_FREE"] = "nvidia/nemotron-nano-9b-v2:free"; + E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENROUTER_SONOMA_DUSK_ALPHA"] = "openrouter/sonoma-dusk-alpha"; + E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENROUTER_SONOMA_SKY_ALPHA"] = "openrouter/sonoma-sky-alpha"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_CHAT_V3_1_FREE"] = "deepseek/deepseek-chat-v3.1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENAI_GPT_OSS_120B_FREE"] = "openai/gpt-oss-120b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENAI_GPT_OSS_20B_FREE"] = "openai/gpt-oss-20b:free"; @@ -169830,7 +156043,6 @@ var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_MAVERICK_FREE"] = "meta-llama/llama-4-maverick:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_SCOUT_FREE"] = "meta-llama/llama-4-scout:free"; - E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMINI_2_5_PRO_EXP_03_25"] = "google/gemini-2.5-pro-exp-03-25"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-32b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_CHAT_V3_0324_FREE"] = "deepseek/deepseek-chat-v3-0324:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT_FREE"] = "mistralai/mistral-small-3.1-24b-instruct:free"; @@ -169857,7 +156069,7 @@ var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_2_9B_IT_FREE"] = "google/gemma-2-9b-it:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE"] = "mistralai/mistral-7b-instruct:free"; })(E_OPENROUTER_MODEL_FREE || (E_OPENROUTER_MODEL_FREE = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkEwRFg7QUExREQsV0FBWSx1QkFBdUI7SUFDakMsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsbUlBQXdHLENBQUE7SUFDeEcsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUseUdBQThFLENBQUE7SUFDOUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQTFEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBMERsQyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkE0RFg7QUE1REQsV0FBWSx1QkFBdUI7SUFDakMseUdBQThFLENBQUE7SUFDOUUsbUdBQXdFLENBQUE7SUFDeEUsaUdBQXNFLENBQUE7SUFDdEUsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsbUlBQXdHLENBQUE7SUFDeEcsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQTVEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBNERsQyJ9 ;// ./dist-in/index.js @@ -170239,7 +156451,7 @@ function listModelsAsStrings(models) { /***/ }), -/***/ 49315: +/***/ 3043: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -188070,1055 +174282,6 @@ const search_tools = (target, options) => { ]; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7cUJBQzVCO29CQUNELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDdEI7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFXLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQTtvQkFDeEIsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFTLENBQUE7b0JBQ3RDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFBO29CQUNwQyxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDNUIsTUFBTSxDQUFDLEtBQUssQ0FDUiw4Q0FBOEM7NEJBQzlDLHdFQUF3RTs0QkFDeEUsRUFBRSxDQUNMLENBQUM7d0JBQ0YsT0FBTyxTQUFTLENBQUE7cUJBQ25CO29CQUNELE1BQU0sR0FBRyxHQUFHLE1BQU0sS0FBSyxDQUNuQixrREFBa0QsTUFBTSxPQUFPLEdBQUcsTUFBTSxrQkFBa0IsQ0FDdEYsS0FBSyxDQUNSLEVBQUUsQ0FDTixDQUFBO29CQUNELE1BQU0sSUFBSSxHQUFHLE1BQU0sR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDO29CQUM5QixJQUFJLE9BQU8sR0FDUCxJQUFJLENBQUMsS0FBSyxFQUFFLEdBQUcsQ0FBQyxDQUFDLElBQXlELEVBQUUsRUFBRSxDQUFDLENBQUM7d0JBQzVFLEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzt3QkFDakIsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJO3dCQUNmLE9BQU8sRUFBRSxJQUFJLENBQUMsT0FBTzt3QkFDckIsR0FBRyxJQUFJO3FCQUNWLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztvQkFDZCxPQUFPLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLENBQUE7Z0JBQ2xDLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCO1NBQ3lCO1FBQzlCO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxTQUFTO2dCQUNmLFdBQVcsRUFBRSx1SEFBdUg7Z0JBQ3BJLFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRTt3QkFDekIsTUFBTSxFQUFFLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFO3FCQUNoRDtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxPQUFPLENBQUM7aUJBQ3RCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLE1BQU0sRUFBRSxLQUFLLEVBQUUsTUFBTSxFQUFFLEdBQUcsTUFBTSxDQUFBO29CQUNoQyxNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQVMsQ0FBQTtvQkFDdEMsSUFBSSxNQUFNLEdBQUcsTUFBTSxFQUFFLE9BQU8sRUFBRSxHQUFHLElBQUksTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLENBQUE7b0JBQzdELElBQUksQ0FBQyxNQUFNLElBQUksQ0FBQyxNQUFNLEVBQUU7d0JBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQ1IsOENBQThDOzRCQUM5Qyx3RUFBd0U7NEJBQ3hFLEVBQUUsQ0FDTCxDQUFDO3dCQUNGLE9BQU8sU0FBUyxDQUFBO3FCQUNuQjtvQkFDRCxNQUFNLEdBQUcsR0FBRyxzQ0FBc0MsTUFBTSxXQUFXLE1BQU0sSUFBSSxRQUFRLE1BQU0sa0JBQWtCLENBQUMsS0FBSyxDQUFDLDJCQUEyQixDQUFBO29CQUMvSSxNQUFNLEdBQUcsR0FBRyxNQUFNLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQTtvQkFDNUIsTUFBTSxDQUFDLEtBQUssQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUE7b0JBQ2hDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFO3dCQUNULE1BQU0sSUFBSSxLQUFLLENBQUMsdUJBQXVCLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxDQUFDO3FCQUN4RDtvQkFDRCxNQUFNLElBQUksR0FBRyxNQUFNLEdBQUcsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtvQkFDN0IsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLGVBQWUsSUFBSSxJQUFJLENBQUMsYUFBYSxJQUFJLElBQUksQ0FBQyxhQUFhLElBQUksSUFBSSxDQUFDLE1BQU0sSUFBSSxJQUFJLENBQUMsWUFBWSxJQUFJLEVBQUUsQ0FBQTtvQkFDdEgsSUFBSSxLQUFLLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUU7d0JBQzFCLEtBQUssR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFBO3FCQUNsQjtvQkFDRCxJQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBUyxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNwQyxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7d0JBQ2pCLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSTt3QkFDZixPQUFPLEVBQUUsSUFBSSxDQUFDLE9BQU87d0JBQ3JCLEdBQUcsSUFBSTtxQkFDVixDQUFDLENBQUMsSUFBSSxFQUFFLENBQUE7b0JBQ1QsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFBO2dCQUNsQyxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFBO0FBQ0wsQ0FBQyxDQUFDIn0= -;// external "require('puppeteer')" -const external_require_puppeteer_namespaceObject = require('puppeteer'); -;// ../ai-tools/node_modules/turndown/lib/turndown.es.js -function extend (destination) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (source.hasOwnProperty(key)) destination[key] = source[key]; - } - } - return destination -} - -function repeat (character, count) { - return Array(count + 1).join(character) -} - -function trimLeadingNewlines (string) { - return string.replace(/^\n*/, '') -} - -function trimTrailingNewlines (string) { - // avoid match-at-end regexp bottleneck, see #370 - var indexEnd = string.length; - while (indexEnd > 0 && string[indexEnd - 1] === '\n') indexEnd--; - return string.substring(0, indexEnd) -} - -var blockElements = [ - 'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS', - 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', - 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', - 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES', - 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD', - 'TFOOT', 'TH', 'THEAD', 'TR', 'UL' -]; - -function isBlock (node) { - return is(node, blockElements) -} - -var voidElements = [ - 'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT', - 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR' -]; - -function isVoid (node) { - return is(node, voidElements) -} - -function hasVoid (node) { - return has(node, voidElements) -} - -var meaningfulWhenBlankElements = [ - 'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT', - 'AUDIO', 'VIDEO' -]; - -function isMeaningfulWhenBlank (node) { - return is(node, meaningfulWhenBlankElements) -} - -function hasMeaningfulWhenBlank (node) { - return has(node, meaningfulWhenBlankElements) -} - -function is (node, tagNames) { - return tagNames.indexOf(node.nodeName) >= 0 -} - -function has (node, tagNames) { - return ( - node.getElementsByTagName && - tagNames.some(function (tagName) { - return node.getElementsByTagName(tagName).length - }) - ) -} - -var rules = {}; - -rules.paragraph = { - filter: 'p', - - replacement: function (content) { - return '\n\n' + content + '\n\n' - } -}; - -rules.lineBreak = { - filter: 'br', - - replacement: function (content, node, options) { - return options.br + '\n' - } -}; - -rules.heading = { - filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], - - replacement: function (content, node, options) { - var hLevel = Number(node.nodeName.charAt(1)); - - if (options.headingStyle === 'setext' && hLevel < 3) { - var underline = repeat((hLevel === 1 ? '=' : '-'), content.length); - return ( - '\n\n' + content + '\n' + underline + '\n\n' - ) - } else { - return '\n\n' + repeat('#', hLevel) + ' ' + content + '\n\n' - } - } -}; - -rules.blockquote = { - filter: 'blockquote', - - replacement: function (content) { - content = content.replace(/^\n+|\n+$/g, ''); - content = content.replace(/^/gm, '> '); - return '\n\n' + content + '\n\n' - } -}; - -rules.list = { - filter: ['ul', 'ol'], - - replacement: function (content, node) { - var parent = node.parentNode; - if (parent.nodeName === 'LI' && parent.lastElementChild === node) { - return '\n' + content - } else { - return '\n\n' + content + '\n\n' - } - } -}; - -rules.listItem = { - filter: 'li', - - replacement: function (content, node, options) { - content = content - .replace(/^\n+/, '') // remove leading newlines - .replace(/\n+$/, '\n') // replace trailing newlines with just a single one - .replace(/\n/gm, '\n '); // indent - var prefix = options.bulletListMarker + ' '; - var parent = node.parentNode; - if (parent.nodeName === 'OL') { - var start = parent.getAttribute('start'); - var index = Array.prototype.indexOf.call(parent.children, node); - prefix = (start ? Number(start) + index : index + 1) + '. '; - } - return ( - prefix + content + (node.nextSibling && !/\n$/.test(content) ? '\n' : '') - ) - } -}; - -rules.indentedCodeBlock = { - filter: function (node, options) { - return ( - options.codeBlockStyle === 'indented' && - node.nodeName === 'PRE' && - node.firstChild && - node.firstChild.nodeName === 'CODE' - ) - }, - - replacement: function (content, node, options) { - return ( - '\n\n ' + - node.firstChild.textContent.replace(/\n/g, '\n ') + - '\n\n' - ) - } -}; - -rules.fencedCodeBlock = { - filter: function (node, options) { - return ( - options.codeBlockStyle === 'fenced' && - node.nodeName === 'PRE' && - node.firstChild && - node.firstChild.nodeName === 'CODE' - ) - }, - - replacement: function (content, node, options) { - var className = node.firstChild.getAttribute('class') || ''; - var language = (className.match(/language-(\S+)/) || [null, ''])[1]; - var code = node.firstChild.textContent; - - var fenceChar = options.fence.charAt(0); - var fenceSize = 3; - var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm'); - - var match; - while ((match = fenceInCodeRegex.exec(code))) { - if (match[0].length >= fenceSize) { - fenceSize = match[0].length + 1; - } - } - - var fence = repeat(fenceChar, fenceSize); - - return ( - '\n\n' + fence + language + '\n' + - code.replace(/\n$/, '') + - '\n' + fence + '\n\n' - ) - } -}; - -rules.horizontalRule = { - filter: 'hr', - - replacement: function (content, node, options) { - return '\n\n' + options.hr + '\n\n' - } -}; - -rules.inlineLink = { - filter: function (node, options) { - return ( - options.linkStyle === 'inlined' && - node.nodeName === 'A' && - node.getAttribute('href') - ) - }, - - replacement: function (content, node) { - var href = node.getAttribute('href'); - if (href) href = href.replace(/([()])/g, '\\$1'); - var title = cleanAttribute(node.getAttribute('title')); - if (title) title = ' "' + title.replace(/"/g, '\\"') + '"'; - return '[' + content + '](' + href + title + ')' - } -}; - -rules.referenceLink = { - filter: function (node, options) { - return ( - options.linkStyle === 'referenced' && - node.nodeName === 'A' && - node.getAttribute('href') - ) - }, - - replacement: function (content, node, options) { - var href = node.getAttribute('href'); - var title = cleanAttribute(node.getAttribute('title')); - if (title) title = ' "' + title + '"'; - var replacement; - var reference; - - switch (options.linkReferenceStyle) { - case 'collapsed': - replacement = '[' + content + '][]'; - reference = '[' + content + ']: ' + href + title; - break - case 'shortcut': - replacement = '[' + content + ']'; - reference = '[' + content + ']: ' + href + title; - break - default: - var id = this.references.length + 1; - replacement = '[' + content + '][' + id + ']'; - reference = '[' + id + ']: ' + href + title; - } - - this.references.push(reference); - return replacement - }, - - references: [], - - append: function (options) { - var references = ''; - if (this.references.length) { - references = '\n\n' + this.references.join('\n') + '\n\n'; - this.references = []; // Reset references - } - return references - } -}; - -rules.emphasis = { - filter: ['em', 'i'], - - replacement: function (content, node, options) { - if (!content.trim()) return '' - return options.emDelimiter + content + options.emDelimiter - } -}; - -rules.strong = { - filter: ['strong', 'b'], - - replacement: function (content, node, options) { - if (!content.trim()) return '' - return options.strongDelimiter + content + options.strongDelimiter - } -}; - -rules.code = { - filter: function (node) { - var hasSiblings = node.previousSibling || node.nextSibling; - var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings; - - return node.nodeName === 'CODE' && !isCodeBlock - }, - - replacement: function (content) { - if (!content) return '' - content = content.replace(/\r?\n|\r/g, ' '); - - var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : ''; - var delimiter = '`'; - var matches = content.match(/`+/gm) || []; - while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`'; - - return delimiter + extraSpace + content + extraSpace + delimiter - } -}; - -rules.image = { - filter: 'img', - - replacement: function (content, node) { - var alt = cleanAttribute(node.getAttribute('alt')); - var src = node.getAttribute('src') || ''; - var title = cleanAttribute(node.getAttribute('title')); - var titlePart = title ? ' "' + title + '"' : ''; - return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : '' - } -}; - -function cleanAttribute (attribute) { - return attribute ? attribute.replace(/(\n+\s*)+/g, '\n') : '' -} - -/** - * Manages a collection of rules used to convert HTML to Markdown - */ - -function Rules (options) { - this.options = options; - this._keep = []; - this._remove = []; - - this.blankRule = { - replacement: options.blankReplacement - }; - - this.keepReplacement = options.keepReplacement; - - this.defaultRule = { - replacement: options.defaultReplacement - }; - - this.array = []; - for (var key in options.rules) this.array.push(options.rules[key]); -} - -Rules.prototype = { - add: function (key, rule) { - this.array.unshift(rule); - }, - - keep: function (filter) { - this._keep.unshift({ - filter: filter, - replacement: this.keepReplacement - }); - }, - - remove: function (filter) { - this._remove.unshift({ - filter: filter, - replacement: function () { - return '' - } - }); - }, - - forNode: function (node) { - if (node.isBlank) return this.blankRule - var rule; - - if ((rule = findRule(this.array, node, this.options))) return rule - if ((rule = findRule(this._keep, node, this.options))) return rule - if ((rule = findRule(this._remove, node, this.options))) return rule - - return this.defaultRule - }, - - forEach: function (fn) { - for (var i = 0; i < this.array.length; i++) fn(this.array[i], i); - } -}; - -function findRule (rules, node, options) { - for (var i = 0; i < rules.length; i++) { - var rule = rules[i]; - if (filterValue(rule, node, options)) return rule - } - return void 0 -} - -function filterValue (rule, node, options) { - var filter = rule.filter; - if (typeof filter === 'string') { - if (filter === node.nodeName.toLowerCase()) return true - } else if (Array.isArray(filter)) { - if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true - } else if (typeof filter === 'function') { - if (filter.call(rule, node, options)) return true - } else { - throw new TypeError('`filter` needs to be a string, array, or function') - } -} - -/** - * The collapseWhitespace function is adapted from collapse-whitespace - * by Luc Thevenard. - * - * The MIT License (MIT) - * - * Copyright (c) 2014 Luc Thevenard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * collapseWhitespace(options) removes extraneous whitespace from an the given element. - * - * @param {Object} options - */ -function collapseWhitespace (options) { - var element = options.element; - var isBlock = options.isBlock; - var isVoid = options.isVoid; - var isPre = options.isPre || function (node) { - return node.nodeName === 'PRE' - }; - - if (!element.firstChild || isPre(element)) return - - var prevText = null; - var keepLeadingWs = false; - - var prev = null; - var node = turndown_es_next(prev, element, isPre); - - while (node !== element) { - if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE - var text = node.data.replace(/[ \r\n\t]+/g, ' '); - - if ((!prevText || / $/.test(prevText.data)) && - !keepLeadingWs && text[0] === ' ') { - text = text.substr(1); - } - - // `text` might be empty at this point. - if (!text) { - node = turndown_es_remove(node); - continue - } - - node.data = text; - - prevText = node; - } else if (node.nodeType === 1) { // Node.ELEMENT_NODE - if (isBlock(node) || node.nodeName === 'BR') { - if (prevText) { - prevText.data = prevText.data.replace(/ $/, ''); - } - - prevText = null; - keepLeadingWs = false; - } else if (isVoid(node) || isPre(node)) { - // Avoid trimming space around non-block, non-BR void elements and inline PRE. - prevText = null; - keepLeadingWs = true; - } else if (prevText) { - // Drop protection if set previously. - keepLeadingWs = false; - } - } else { - node = turndown_es_remove(node); - continue - } - - var nextNode = turndown_es_next(prev, node, isPre); - prev = node; - node = nextNode; - } - - if (prevText) { - prevText.data = prevText.data.replace(/ $/, ''); - if (!prevText.data) { - turndown_es_remove(prevText); - } - } -} - -/** - * remove(node) removes the given node from the DOM and returns the - * next node in the sequence. - * - * @param {Node} node - * @return {Node} node - */ -function turndown_es_remove (node) { - var next = node.nextSibling || node.parentNode; - - node.parentNode.removeChild(node); - - return next -} - -/** - * next(prev, current, isPre) returns the next node in the sequence, given the - * current and previous nodes. - * - * @param {Node} prev - * @param {Node} current - * @param {Function} isPre - * @return {Node} - */ -function turndown_es_next (prev, current, isPre) { - if ((prev && prev.parentNode === current) || isPre(current)) { - return current.nextSibling || current.parentNode - } - - return current.firstChild || current.nextSibling || current.parentNode -} - -/* - * Set up window for Node.js - */ - -var root = (typeof window !== 'undefined' ? window : {}); - -/* - * Parsing HTML strings - */ - -function canParseHTMLNatively () { - var Parser = root.DOMParser; - var canParse = false; - - // Adapted from https://gist.github.com/1129031 - // Firefox/Opera/IE throw errors on unsupported types - try { - // WebKit returns null on unsupported types - if (new Parser().parseFromString('', 'text/html')) { - canParse = true; - } - } catch (e) {} - - return canParse -} - -function createHTMLParser () { - var Parser = function () {}; - - { - var domino = __webpack_require__(31993); - Parser.prototype.parseFromString = function (string) { - return domino.createDocument(string) - }; - } - return Parser -} - -var HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser(); - -function RootNode (input, options) { - var root; - if (typeof input === 'string') { - var doc = htmlParser().parseFromString( - // DOM parsers arrange elements in the and . - // Wrapping in a custom element ensures elements are reliably arranged in - // a single element. - '' + input + '', - 'text/html' - ); - root = doc.getElementById('turndown-root'); - } else { - root = input.cloneNode(true); - } - collapseWhitespace({ - element: root, - isBlock: isBlock, - isVoid: isVoid, - isPre: options.preformattedCode ? isPreOrCode : null - }); - - return root -} - -var _htmlParser; -function htmlParser () { - _htmlParser = _htmlParser || new HTMLParser(); - return _htmlParser -} - -function isPreOrCode (node) { - return node.nodeName === 'PRE' || node.nodeName === 'CODE' -} - -function Node (node, options) { - node.isBlock = isBlock(node); - node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode; - node.isBlank = isBlank(node); - node.flankingWhitespace = flankingWhitespace(node, options); - return node -} - -function isBlank (node) { - return ( - !isVoid(node) && - !isMeaningfulWhenBlank(node) && - /^\s*$/i.test(node.textContent) && - !hasVoid(node) && - !hasMeaningfulWhenBlank(node) - ) -} - -function flankingWhitespace (node, options) { - if (node.isBlock || (options.preformattedCode && node.isCode)) { - return { leading: '', trailing: '' } - } - - var edges = edgeWhitespace(node.textContent); - - // abandon leading ASCII WS if left-flanked by ASCII WS - if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) { - edges.leading = edges.leadingNonAscii; - } - - // abandon trailing ASCII WS if right-flanked by ASCII WS - if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) { - edges.trailing = edges.trailingNonAscii; - } - - return { leading: edges.leading, trailing: edges.trailing } -} - -function edgeWhitespace (string) { - var m = string.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/); - return { - leading: m[1], // whole string for whitespace-only strings - leadingAscii: m[2], - leadingNonAscii: m[3], - trailing: m[4], // empty for whitespace-only strings - trailingNonAscii: m[5], - trailingAscii: m[6] - } -} - -function isFlankedByWhitespace (side, node, options) { - var sibling; - var regExp; - var isFlanked; - - if (side === 'left') { - sibling = node.previousSibling; - regExp = / $/; - } else { - sibling = node.nextSibling; - regExp = /^ /; - } - - if (sibling) { - if (sibling.nodeType === 3) { - isFlanked = regExp.test(sibling.nodeValue); - } else if (options.preformattedCode && sibling.nodeName === 'CODE') { - isFlanked = false; - } else if (sibling.nodeType === 1 && !isBlock(sibling)) { - isFlanked = regExp.test(sibling.textContent); - } - } - return isFlanked -} - -var reduce = Array.prototype.reduce; -var escapes = [ - [/\\/g, '\\\\'], - [/\*/g, '\\*'], - [/^-/g, '\\-'], - [/^\+ /g, '\\+ '], - [/^(=+)/g, '\\$1'], - [/^(#{1,6}) /g, '\\$1 '], - [/`/g, '\\`'], - [/^~~~/g, '\\~~~'], - [/\[/g, '\\['], - [/\]/g, '\\]'], - [/^>/g, '\\>'], - [/_/g, '\\_'], - [/^(\d+)\. /g, '$1\\. '] -]; - -function TurndownService (options) { - if (!(this instanceof TurndownService)) return new TurndownService(options) - - var defaults = { - rules: rules, - headingStyle: 'setext', - hr: '* * *', - bulletListMarker: '*', - codeBlockStyle: 'indented', - fence: '```', - emDelimiter: '_', - strongDelimiter: '**', - linkStyle: 'inlined', - linkReferenceStyle: 'full', - br: ' ', - preformattedCode: false, - blankReplacement: function (content, node) { - return node.isBlock ? '\n\n' : '' - }, - keepReplacement: function (content, node) { - return node.isBlock ? '\n\n' + node.outerHTML + '\n\n' : node.outerHTML - }, - defaultReplacement: function (content, node) { - return node.isBlock ? '\n\n' + content + '\n\n' : content - } - }; - this.options = extend({}, defaults, options); - this.rules = new Rules(this.options); -} - -TurndownService.prototype = { - /** - * The entry point for converting a string or DOM node to Markdown - * @public - * @param {String|HTMLElement} input The string or DOM node to convert - * @returns A Markdown representation of the input - * @type String - */ - - turndown: function (input) { - if (!canConvert(input)) { - throw new TypeError( - input + ' is not a string, or an element/document/fragment node.' - ) - } - - if (input === '') return '' - - var output = turndown_es_process.call(this, new RootNode(input, this.options)); - return postProcess.call(this, output) - }, - - /** - * Add one or more plugins - * @public - * @param {Function|Array} plugin The plugin or array of plugins to add - * @returns The Turndown instance for chaining - * @type Object - */ - - use: function (plugin) { - if (Array.isArray(plugin)) { - for (var i = 0; i < plugin.length; i++) this.use(plugin[i]); - } else if (typeof plugin === 'function') { - plugin(this); - } else { - throw new TypeError('plugin must be a Function or an Array of Functions') - } - return this - }, - - /** - * Adds a rule - * @public - * @param {String} key The unique key of the rule - * @param {Object} rule The rule - * @returns The Turndown instance for chaining - * @type Object - */ - - addRule: function (key, rule) { - this.rules.add(key, rule); - return this - }, - - /** - * Keep a node (as HTML) that matches the filter - * @public - * @param {String|Array|Function} filter The unique key of the rule - * @returns The Turndown instance for chaining - * @type Object - */ - - keep: function (filter) { - this.rules.keep(filter); - return this - }, - - /** - * Remove a node that matches the filter - * @public - * @param {String|Array|Function} filter The unique key of the rule - * @returns The Turndown instance for chaining - * @type Object - */ - - remove: function (filter) { - this.rules.remove(filter); - return this - }, - - /** - * Escapes Markdown syntax - * @public - * @param {String} string The string to escape - * @returns A string with Markdown syntax escaped - * @type String - */ - - escape: function (string) { - return escapes.reduce(function (accumulator, escape) { - return accumulator.replace(escape[0], escape[1]) - }, string) - } -}; - -/** - * Reduces a DOM node down to its Markdown string equivalent - * @private - * @param {HTMLElement} parentNode The node to convert - * @returns A Markdown representation of the node - * @type String - */ - -function turndown_es_process (parentNode) { - var self = this; - return reduce.call(parentNode.childNodes, function (output, node) { - node = new Node(node, self.options); - - var replacement = ''; - if (node.nodeType === 3) { - replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue); - } else if (node.nodeType === 1) { - replacement = replacementForNode.call(self, node); - } - - return join(output, replacement) - }, '') -} - -/** - * Appends strings as each rule requires and trims the output - * @private - * @param {String} output The conversion output - * @returns A trimmed version of the ouput - * @type String - */ - -function postProcess (output) { - var self = this; - this.rules.forEach(function (rule) { - if (typeof rule.append === 'function') { - output = join(output, rule.append(self.options)); - } - }); - - return output.replace(/^[\t\r\n]+/, '').replace(/[\t\r\n\s]+$/, '') -} - -/** - * Converts an element node to its Markdown equivalent - * @private - * @param {HTMLElement} node The node to convert - * @returns A Markdown representation of the node - * @type String - */ - -function replacementForNode (node) { - var rule = this.rules.forNode(node); - var content = turndown_es_process.call(this, node); - var whitespace = node.flankingWhitespace; - if (whitespace.leading || whitespace.trailing) content = content.trim(); - return ( - whitespace.leading + - rule.replacement(content, node, this.options) + - whitespace.trailing - ) -} - -/** - * Joins replacement to the current output with appropriate number of new lines - * @private - * @param {String} output The current conversion output - * @param {String} replacement The string to append to the output - * @returns Joined output - * @type String - */ - -function join (output, replacement) { - var s1 = trimTrailingNewlines(output); - var s2 = trimLeadingNewlines(replacement); - var nls = Math.max(output.length - s1.length, replacement.length - s2.length); - var separator = '\n\n'.substring(0, nls); - - return s1 + separator + s2 -} - -/** - * Determines whether an input can be converted - * @private - * @param {String|HTMLElement} input Describe this parameter - * @returns Describe what it returns - * @type String|Object|Array|Boolean|Number - */ - -function canConvert (input) { - return ( - input != null && ( - typeof input === 'string' || - (input.nodeType && ( - input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11 - )) - ) - ) -} - -/* harmony default export */ const turndown_es = (TurndownService); - -;// ../ai-tools/dist/lib/tools/web.js - - - -const turndown = new turndown_es(); -const web_tools = (target, options) => { - const logger = (0,ai_tools_dist/* toolLogger */.bw)('web', options); - return [ - { - type: 'function', - function: { - name: 'browse_page', - description: 'Browse a webpage and return its content as markdown, all links, images and pages main image', - parameters: { - type: 'object', - properties: { - url: { - type: 'string', - description: 'URL of the webpage to browse' - } - }, - required: ['url'] - }, - function: async (params) => { - try { - logger.debug(`Tool::BrowsePage Browsing ${params.url}`); - const browser = await external_require_puppeteer_namespaceObject.launch({ - headless: true, - args: ['--no-sandbox', '--disable-setuid-sandbox'] - }); - try { - const page = await browser.newPage(); - logger.debug(`Tool::Web::BrowsePage Opening page ${params.url}`); - await page.goto(params.url, { - waitUntil: 'networkidle2' - }); - const pageData = await page.evaluate((selector) => { - const elementsToRemove = document.querySelectorAll('script, style, link, meta, noscript, iframe, [style*="display:none"],[style*="display: none"], .hidden'); - elementsToRemove.forEach(el => el.remove()); - const links = Array.from(document.querySelectorAll('a')) - .map(a => ({ - text: a.textContent?.trim() || '', - href: a.href - })) - .filter(link => link.href && link.href.startsWith('http')) - .slice(0, 20); - const images = Array.from(document.querySelectorAll('img')) - .map(img => ({ - src: img.src, - alt: img.alt || '', - width: img.width, - height: img.height - })) - .filter(img => img.src && img.src.startsWith('http')) - .slice(0, 20); - const mainImage = document.querySelector('meta[property="og:image"]')?.getAttribute('content') || - document.querySelector('meta[name="og:image"]')?.getAttribute('content'); - let content; - const body = document.body; - content = body ? body.innerHTML : ''; - return { - content, - links, - images, - ogImage: mainImage - }; - }, null); - const markdown = turndown.turndown(pageData.content); - await browser.close(); - const ret = { - success: true, - markdown: markdown, - links: pageData.links, - images: pageData.images, - mainImage: pageData.ogImage, - url: params.url - }; - return ret; - } - catch (error) { - logger.debug('Error browsing page:', error.message, error); - await browser.close(); - throw error; - } - } - catch (error) { - logger.debug('Error browsing page:', error.message); - return { - success: false, - error: error.message, - url: params.url - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFVBQVUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBa0IsRUFBYyxFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsNkZBQTZGO2dCQUMxRyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsOEJBQThCO3lCQUM5QztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQzs0QkFDbkMsUUFBUSxFQUFFLElBQUk7NEJBQ2QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDO3lCQUNyRCxDQUFDLENBQUE7d0JBRUYsSUFBSTs0QkFDQSxN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 // EXTERNAL MODULE: external "buffer" var external_buffer_ = __webpack_require__(20181); ;// ../ai-tools/node_modules/@keyv/serialize/dist/index.js @@ -189379,7 +174542,7 @@ var iterableAdapters = [ "valkey", "etcd" ]; -var dist_Keyv = class extends event_manager_default { +var Keyv = class extends event_manager_default { opts; iterator; hooks = new hooks_manager_default(); @@ -190048,151 +175211,22 @@ var dist_Keyv = class extends event_manager_default { return void 0; } }; -var index_default = dist_Keyv; - - -// EXTERNAL MODULE: external "events" -var external_events_ = __webpack_require__(24434); -// EXTERNAL MODULE: ../ai-tools/node_modules/sqlite3/lib/sqlite3.js -var sqlite3 = __webpack_require__(45430); -;// ../ai-tools/node_modules/@keyv/sqlite/dist/index.js -// src/index.ts - - - - -var dist_toString = (input) => String(input).search(/^[a-zA-Z]+$/) < 0 ? "_" + input : input; -var KeyvSqlite = class extends external_events_ { - ttlSupport; - opts; - namespace; - close; - query; - constructor(keyvOptions) { - super(); - this.ttlSupport = false; - let options = { - dialect: "sqlite", - uri: "sqlite://:memory:" - }; - if (typeof keyvOptions === "string") { - options.uri = keyvOptions; - } else { - options = { - ...options, - ...keyvOptions - }; - } - options.db = options.uri.replace(/^sqlite:\/\//, ""); - options.connect = async () => new Promise((resolve, reject) => { - const database = new sqlite3.Database(options.db, (error) => { - if (error) { - reject(error); - } else { - if (options.busyTimeout) { - database.configure("busyTimeout", options.busyTimeout); - } - resolve(database); - } - }); - }).then((database) => ({ query: (0,external_util_.promisify)(database.all).bind(database), close: (0,external_util_.promisify)(database.close).bind(database) })); - this.opts = { - table: "keyv", - keySize: 255, - ...options - }; - this.opts.table = dist_toString(this.opts.table); - const createTable = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(key VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT )`; - const connected = this.opts.connect().then(async (database) => database.query(createTable).then(() => database)).catch((error) => this.emit("error", error)); - this.query = async (sqlString, ...parameter) => connected.then(async (database) => database.query(sqlString, ...parameter)); - this.close = async () => connected.then((database) => database.close()); - } - async get(key) { - const select = `SELECT * FROM ${this.opts.table} WHERE key = ?`; - const rows = await this.query(select, key); - const row = rows[0]; - if (row === void 0) { - return void 0; - } - return row.value; - } - async getMany(keys) { - const select = `SELECT * FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`; - const rows = await this.query(select, JSON.stringify(keys)); - return keys.map((key) => { - const row = rows.find((row2) => row2.key === key); - return row ? row.value : void 0; - }); - } - async set(key, value) { - const upsert = `INSERT INTO ${this.opts.table} (key, value) - VALUES(?, ?) - ON CONFLICT(key) - DO UPDATE SET value=excluded.value;`; - return this.query(upsert, key, value); - } - async delete(key) { - const select = `SELECT * FROM ${this.opts.table} WHERE key = ?`; - const del = `DELETE FROM ${this.opts.table} WHERE key = ?`; - const rows = await this.query(select, key); - const row = rows[0]; - if (row === void 0) { - return false; - } - await this.query(del, key); - return true; - } - async deleteMany(keys) { - const del = `DELETE FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`; - const results = await this.getMany(keys); - if (results.every((x) => x === void 0)) { - return false; - } - await this.query(del, JSON.stringify(keys)); - return true; - } - async clear() { - const del = `DELETE FROM ${this.opts.table} WHERE key LIKE ?`; - await this.query(del, this.namespace ? `${this.namespace}:%` : "%"); - } - async *iterator(namespace) { - const limit = Number.parseInt(this.opts.iterationLimit, 10) || 10; - async function* iterate(offset, options, query) { - const select = `SELECT * FROM ${options.table} WHERE key LIKE ? LIMIT ? OFFSET ?`; - const iterator = await query(select, [`${namespace ? namespace + ":" : ""}%`, limit, offset]); - const entries = [...iterator]; - if (entries.length === 0) { - return; - } - for (const entry of entries) { - offset += 1; - yield [entry.key, entry.value]; - } - yield* iterate(offset, options, query); - } - yield* iterate(0, this.opts, this.query); - } - async has(key) { - const exists = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE key = ? )`; - const result = await this.query(exists, key); - return Object.values(result[0])[0] === 1; - } - async disconnect() { - await this.close(); - } -}; -var createKeyv = (keyvOptions) => new Keyv({ store: new KeyvSqlite(keyvOptions) }); -var dist_index_default = KeyvSqlite; +var index_default = Keyv; +// EXTERNAL MODULE: ../ai-tools/node_modules/keyv-file/lib/index.js +var keyv_file_lib = __webpack_require__(58538); ;// ../ai-tools/dist/lib/tools/keyv.js const store = (storePath, ns = 'ns-unknown', opts = {}) => { - const keyvSqlite = new dist_index_default(external_path_.resolve((0,dist/* resolve */.hd)(storePath))); - return new index_default({ store: keyvSqlite, ttl: 5000, namespace: ns, ...opts }); + const keyvFile = new keyv_file_lib/* KeyvFile */.Sk({ + filename: external_path_.resolve((0,dist/* resolve */.hd)(storePath)), + writeDelay: 100, // ms + }); + return new index_default({ store: keyvFile, namespace: ns, ...opts }); }; const get = async (key, storePath, ns = 'ns-unknown', opts = {}) => { const keyv = store(storePath, ns, opts); @@ -190202,11 +175236,7 @@ const set = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { const keyv = store(storePath, ns, opts); return await keyv.set(key, value); }; -const list = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { - const keyv = store(storePath, ns, opts); - return await keyv.set(key, value); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5di5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMva2V5di50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFBO0FBRXJDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUE7QUFDN0UsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ25HLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDL0csTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDaEgsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQSJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5di5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMva2V5di50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO1FBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ25HLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDL0csTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQSJ9 ;// ../ai-tools/dist/lib/tools/memory.js @@ -190214,7 +175244,7 @@ const list = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { // Helper function to get storage path const getStoragePath = (options) => { // For now, use default path. Later this can be configured via options - return external_path_.join(process.cwd(), 'memory.sqlite'); + return external_path_.join(process.cwd(), 'memory.json'); }; // Default collection name when none provided const DEFAULT_COLLECTION = 'no-collection'; @@ -190561,7 +175591,7 @@ Returns: { } ]; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUk7Z0JBQ0EsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNuRDtRQUNMLEtBQUssUUFBUTtZQUNULDRDQUE0QztZQUM1QyxJQUFJO2dCQUNBLGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1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 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUk7Z0JBQ0EsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNuRDtRQUNMLEtBQUssUUFBUTtZQUNULDRDQUE0QztZQUM1QyxJQUFJO2dCQUNBLGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1Q0FBdUMsQ0FBQyxDQUFDO2FBQzVEO1FBQ0wsS0FBSyxNQUFNLENBQUM7UUFDWjtZQUNJLE9BQU8sS0FBSyxDQUFDO0tBQ3BCO0FBQ0wsQ0FBQyxDQUFDO0FBRUYseUNBQXlDO0FBQ3pDLE1BQU0saUJBQWlCLEdBQUcsQ0FBQyxLQUFhLEVBQUUsTUFBa0IsRUFBZSxFQUFFO0lBQ3pFLE1BQU0sR0FBRyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDckMsT0FBTztRQUNILEtBQUssRUFBRSxzQkFBc0IsQ0FBQyxLQUFLLEVBQUUsTUFBTSxDQUFDO1FBQzVDLElBQUksRUFBRTtZQUNGLElBQUksRUFBRSxNQUFNO1lBQ1osT0FBTyxFQUFFLEdBQUc7WUFDWixPQUFPLEVBQUUsR0FBRztTQUNmO0tBQ0osQ0FBQztBQUNOLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxDQUFDLE1BQWMsRUFBRSxPQUFrQixFQUFjLEVBQUU7SUFDcEUsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxPQUFPLENBQUMsQ0FBQTtJQUM1QyxNQUFNLFdBQVcsR0FBRyxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7SUFFNUMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxVQUFVO2dCQUNoQixXQUFXLEVBQUU7Ozs7Ozs7Ozs7RUFVM0I7Z0JBQ2MsVUFBVSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDUixVQUFVLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLGdIQUFnSDs0QkFDN0gsUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3dCQUNELEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUseUVBQXlFO3lCQUN6Rjt3QkFDRCxLQUFLLEVBQUU7NEJBQ0gsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLG1JQUFtSTt5QkFDbko7d0JBQ0QsTUFBTSxFQUFFOzRCQUNKLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSx5SUFBeUk7NEJBQ3RKLElBQUksRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxDQUFDOzRCQUNoQyxRQUFRLEVBQUUsSUFBSTt5QkFDakI7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQztpQkFDN0I7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFXLEVBQUUsRUFBRTtvQkFDNUIsSUFBSTt3QkFDQSxNQUFNLEVBQUUsVUFBVSxHQUFHLGtCQUFrQixFQUFFLEdBQUcsRUFBRSxLQUFLLEVBQUUsTUFBTSxHQUFHLE1BQU0sRUFBRSxHQUFHLE1BQU0sQ0FBQzt3QkFDaEYsTUFBTSxDQUFDLEtBQUssQ0FBQywwQkFBMEIsR0FBRyxrQkFBa0IsVUFBVSxPQUFPLE1BQU0sRUFBRSxDQUFDLENBQUM7d0JBRXZGLE1BQU0sV0FBVyxHQUFHLGlCQUFpQixDQUFDLEtBQUssRUFBRSxNQUFvQixDQUFDLENBQUM7d0JBQ25FLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsVUFBVSxDQUFDLENBQUM7d0JBRXhFLE9BQU87NEJBQ0gsT0FBTyxFQUFFLElBQUk7NEJBQ2IsT0FBTyxFQUFFLFVBQVUsR0FBRyxrQkFBa0IsVUFBVSxPQUFPLE1BQU0sRUFBRTs0QkFDakUsSUFBSSxFQUFFLFdBQVcsQ0FBQyxJQUFJO3lCQUN6QixDQUFDO3FCQUNMO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsc0JBQXNCLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQzVDLE9BQU87NEJBQ0gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdCQUF3Qjt5QkFDN0UsQ0FBQztxQkFDTDtnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtRQUM5QjtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUU7Ozs7Ozs7Ozs7Ozs7RUFhM0I7Z0JBQ2MsVUFBVSxFQUFFO29CQUNSLElBQUksRUFBRSxRQUFRO29CQUNkLFVBQVUsRUFBRTt3QkFDUixVQUFVLEVBQUU7NEJBQ1IsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLDhIQUE4SDs0QkFDM0ksUUFBUSxFQUFFLElBQUk7eUJBQ2pCO3dCQUNELEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsc0ZBQXNGO3lCQUN0RztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxFQUFFLFVBQVUsR0FBRyxrQkFBa0IsRUFBRSxHQUFHLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBQ3hELE1BQU0sQ0FBQyxLQUFLLENBQUMsMkJBQTJCLEdBQUcsb0JBQW9CLFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBRTdFLE1BQU0sVUFBVSxHQUFHLE1BQU0sR0FBRyxDQUFDLEdBQUcsVUFBVSxJQUFJLEdBQUcsRUFBRSxFQUFFLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQzt3QkFDOUUsSUFBSSxVQUFVLEtBQUssU0FBUyxFQUFFOzRCQUMxQixPQUFPLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsT0FBTyxHQUFHLDRCQUE0QixVQUFVLEVBQUUsRUFBRSxDQUFDO3lCQUMxRjt3QkFFRCxxRUFBcUU7d0JBQ3JFLElBQUksV0FBd0IsQ0FBQzt3QkFDN0IsSUFBSSxPQUFPLFVBQVUsS0FBSyxRQUFRLEVBQUU7NEJBQ2hDLHdDQUF3Qzs0QkFDeEMsV0FBVyxHQUFHO2dDQUNWLEtBQUssRUFBRSxVQUFVO2dDQUNqQixJQUFJLEVBQUU7b0NBQ0YsSUFBSSxFQUFFLE1BQU07b0NBQ1osT0FBTyxFQUFFLElBQUksSUFBSSxFQUFFLENBQUMsV0FBVyxFQUFFO29DQUNqQyxPQUFPLEVBQUUsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7aUNBQ3BDOzZCQUNKLENBQUM7eUJBQ0w7NkJBQU07NEJBQ0gsV0FBVyxHQUFHLFVBQXlCLENBQUM7eUJBQzNDO3dCQUVELE9BQU87NEJBQ0gsT0FBTyxFQUFFLElBQUk7NEJBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLOzRCQUN4QixJQUFJLEVBQUUsV0FBVyxDQUFDLElBQUk7NEJBQ3RCLEdBQUc7NEJBQ0gsVUFBVTt5QkFDYixDQUFDO3FCQUNMO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQy9DLE9BQU87NEJBQ0gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdCQUF3Qjt5QkFDN0UsQ0FBQztxQkFDTDtnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtRQUM5QjtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUU7Ozs7O0VBSzNCO2dCQUNjLFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSxtSUFBbUk7NEJBQ2hKLFFBQVEsRUFBRSxJQUFJO3lCQUNqQjt3QkFDRCxHQUFHLEVBQUU7NEJBQ0QsSUFBSSxFQUFFLFFBQVE7NEJBQ2QsV0FBVyxFQUFFLDRGQUE0Rjt5QkFDNUc7cUJBQ0o7b0JBQ0QsUUFBUSxFQUFFLENBQUMsS0FBSyxDQUFDO2lCQUNwQjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJO3dCQUNBLE1BQU0sRUFBRSxVQUFVLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxFQUFFLEdBQUcsTUFBTSxDQUFDO3dCQUN4RCxNQUFNLENBQUMsS0FBSyxDQUFDLHlCQUF5QixHQUFHLG9CQUFvQixVQUFVLEVBQUUsQ0FBQyxDQUFDO3dCQUUzRSxNQUFNLElBQUksR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLFVBQVUsQ0FBQyxDQUFDO3dCQUM1QyxNQUFNLE9BQU8sR0FBRyxNQUFNLElBQUksQ0FBQyxNQUFNLENBQUMsR0FBRyxVQUFVLElBQUksR0FBRyxFQUFFLENBQUMsQ0FBQzt3QkFDMUQsT0FBTyxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUMsV0FBVyxHQUFHLFNBQVMsVUFBVSxFQUFFLENBQUMsQ0FBQyxDQUFDLE9BQU8sR0FBRyxpQkFBaUIsVUFBVSxFQUFFLEVBQUUsQ0FBQztxQkFDakk7b0JBQUMsT0FBTyxLQUFLLEVBQUU7d0JBQ1osTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLENBQUMsQ0FBQzt3QkFDbEQsT0FBTzs0QkFDSCxPQUFPLEVBQUUsS0FBSzs0QkFDZCxPQUFPLEVBQUUsS0FBSyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsd0JBQXdCO3lCQUM3RSxDQUFDO3FCQUNMO2dCQUNMLENBQUM7Z0JBQ0QsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLO2FBQ3BCO1NBQ3lCO1FBQzlCO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxlQUFlO2dCQUNyQixXQUFXLEVBQUU7Ozs7Ozs7Ozs7Ozs7Ozs7RUFnQjNCO2dCQUNjLFVBQVUsRUFBRTtvQkFDUixJQUFJLEVBQUUsUUFBUTtvQkFDZCxVQUFVLEVBQUU7d0JBQ1IsVUFBVSxFQUFFOzRCQUNSLElBQUksRUFBRSxRQUFROzRCQUNkLFdBQVcsRUFBRSw0SUFBNEk7NEJBQ3pKLFFBQVEsRUFBRSxJQUFJO3lCQUNqQjtxQkFDSjtvQkFDRCxRQUFRLEVBQUUsRUFBRTtpQkFDZjtnQkFDRCxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQVcsRUFBRSxFQUFFO29CQUM1QixJQUFJO3dCQUNBLE1BQU0sRUFBRSxVQUFVLEdBQUcsa0JBQWtCLEVBQUUsR0FBRyxNQUFNLENBQUM7d0JBRW5ELE1BQU0sQ0FBQyxLQUFLLENBQUMsaURBQWlELFVBQVUsRUFBRSxDQUFDLENBQUM7d0JBRTVFLHFFQUFxRTt3QkFDckUsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFdBQVcsRUFBRSxVQUFVLENBQUMsQ0FBQzt3QkFDNUMsTUFBTSxJQUFJLEdBQWEsRUFBRSxDQUFDO3dCQUMxQixNQUFNLE9BQU8sR0FBa0MsRUFBRSxDQUFDO3dCQUVsRCxJQUFJOzRCQUNBLDZDQUE2Qzs0QkFDN0MsSUFBSSxPQUFPLElBQUksQ0FBQyxRQUFRLEtBQUssVUFBVSxFQUFFO2dDQUNyQyxJQUFJO29DQUNBLCtDQUErQztvQ0FDL0MsTUFBTSxRQUFRLEdBQUksSUFBWSxDQUFDLFFBQVEsRUFBRSxDQUFDO29DQUMxQyxJQUFJLEtBQUssRUFBRSxNQUFNLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxJQUFJLFFBQVEsRUFBRTt3Q0FDdkMsc0VBQXNFO3dDQUN0RSxNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsVUFBVSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUM7d0NBQ25ELElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7d0NBRXBCLGdEQUFnRDt3Q0FDaEQsSUFBSSxJQUFJLEdBQUcsU0FBUyxDQUFDO3dDQUNyQixJQUFJLEtBQUssSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLElBQUksS0FBSyxDQUFDLElBQUksRUFBRTs0Q0FDbEQsSUFBSSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUM7eUNBQ3JCO3dDQUVELE9BQU8sQ0FBQyxJQUFJLENBQUMsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7cUNBQ3pDO2lDQUNKO2dDQUFDLE9BQU8saUJBQWlCLEVBQUU7b0NBQ3hCLE1BQU0sQ0FBQyxJQUFJLENBQUMsMENBQTBDLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztvQ0FDM0UseUNBQXlDO29DQUN6QyxPQUFPO3dDQUNILE9BQU8sRUFBRSxJQUFJO3dDQUNiLFVBQVU7d0NBQ1YsSUFBSSxFQUFFLEVBQUU7d0NBQ1IsT0FBTyxFQUFFLEVBQUU7d0NBQ1gsS0FBSyxFQUFFLENBQUM7d0NBQ1IsT0FBTyxFQUFFLDRDQUE0QztxQ0FDeEQsQ0FBQztpQ0FDTDs2QkFDSjtpQ0FBTTtnQ0FDSCxrREFBa0Q7Z0NBQ2xELE1BQU0sQ0FBQyxJQUFJLENBQUMsb0VBQW9FLENBQUMsQ0FBQztnQ0FDbEYsT0FBTztvQ0FDSCxPQUFPLEVBQUUsSUFBSTtvQ0FDYixVQUFVO29DQUNWLElBQUksRUFBRSxFQUFFO29DQUNSLE9BQU8sRUFBRSxFQUFFO29DQUNYLEtBQUssRUFBRSxDQUFDO29DQUNSLE9BQU8sRUFBRSw0RkFBNEY7aUNBQ3hHLENBQUM7NkJBQ0w7NEJBRUQsT0FBTztnQ0FDSCxPQUFPLEVBQUUsSUFBSTtnQ0FDYixVQUFVO2dDQUNWLElBQUk7Z0NBQ0osT0FBTztnQ0FDUCxLQUFLLEVBQUUsSUFBSSxDQUFDLE1BQU07NkJBQ3JCLENBQUM7eUJBQ0w7d0JBQUMsT0FBTyxhQUFhLEVBQUU7NEJBQ3BCLHVEQUF1RDs0QkFDdkQsTUFBTSxDQUFDLElBQUksQ0FBQyxxREFBcUQsVUFBVSxHQUFHLEVBQUUsYUFBYSxDQUFDLENBQUM7NEJBQy9GLE9BQU87Z0NBQ0gsT0FBTyxFQUFFLElBQUk7Z0NBQ2IsVUFBVTtnQ0FDVixJQUFJLEVBQUUsRUFBRTtnQ0FDUixPQUFPLEVBQUUsRUFBRTtnQ0FDWCxLQUFLLEVBQUUsQ0FBQztnQ0FDUixPQUFPLEVBQUUsd0NBQXdDOzZCQUNwRCxDQUFDO3lCQUNMO3FCQUNKO29CQUFDLE9BQU8sS0FBSyxFQUFFO3dCQUNaLE1BQU0sQ0FBQyxLQUFLLENBQUMsd0JBQXdCLEVBQUUsS0FBSyxDQUFDLENBQUM7d0JBQzlDLE9BQU87NEJBQ0gsT0FBTyxFQUFFLEtBQUs7NEJBQ2QsT0FBTyxFQUFFLEtBQUssWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLHdCQUF3Qjt5QkFDN0UsQ0FBQztxQkFDTDtnQkFDTCxDQUFDO2dCQUNELEtBQUssRUFBRSxJQUFJLENBQUMsS0FBSzthQUNwQjtTQUN5QjtLQUNqQyxDQUFBO0FBQ0wsQ0FBQyxDQUFDIn0= ;// ../ai-tools/dist/lib/tools/tools.js @@ -190570,9 +175600,9 @@ Returns: { +//import { tools as webTools } from './web.js' - -//import { tools as emailTools } from './email' +// import { tools as emailTools } from './email' const tools_tools = { fs: tools, npm: npm_tools, @@ -190581,11 +175611,11 @@ const tools_tools = { interact: interact_tools, user: user_tools, search: search_tools, - web: web_tools, - memory: memory_tools, + // web: webTools, + memory: memory_tools // email: emailTools }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELCtDQUErQztBQUUvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDakIsRUFBRSxFQUFFLE9BQU87SUFDWCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxRQUFRO0lBQ2IsUUFBUSxFQUFFLGFBQWE7SUFDdkIsUUFBUSxFQUFFLGFBQWE7SUFDdkIsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsTUFBTTtJQUNkLEdBQUcsRUFBRSxRQUFRO0lBQ2IsTUFBTSxFQUFFLFdBQVc7SUFDbkIsb0JBQW9CO0NBQ3ZCLENBQUEifQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsS0FBSyxJQUFJLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxnREFBZ0Q7QUFFaEQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLEVBQUUsRUFBRSxPQUFPO0lBQ1gsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsUUFBUTtJQUNiLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLElBQUksRUFBRSxTQUFTO0lBQ2YsTUFBTSxFQUFFLE1BQU07SUFDZCxpQkFBaUI7SUFDakIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsb0JBQW9CO0NBQ3ZCLENBQUEifQ== // EXTERNAL MODULE: ./dist-in/index.js + 3 modules var dist_in = __webpack_require__(88022); ;// ../core/dist/aspects_simple.js @@ -190962,7 +175992,7 @@ const variables = (options) => { /* harmony import */ var json_schema_to_zod__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(47571); /* harmony import */ var _filters_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(98152); /* harmony import */ var _models_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(45000); -/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(49315); +/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(3043); /* harmony import */ var _models_openrouter_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(2761); /* harmony import */ var _models_openai_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(53382); @@ -230226,8 +215256,293 @@ const main_fetch = async () => { //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWxELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtJQUU5QixNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQVMsQ0FBQTtJQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUE7WUFDbkUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxZQUFZLENBQUMsTUFBTSxzQkFBc0IsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBQ3JGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JFLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDM0UsS0FBSyxDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLGdCQUFnQixDQUFDLE1BQU0sMEJBQTBCLG9CQUFvQixFQUFFLENBQUMsQ0FBQTtBQUNqRyxDQUFDLENBQUEifQ== // EXTERNAL MODULE: ./dist-in/commands/run.js + 21 modules var main_run = __webpack_require__(98177); +// EXTERNAL MODULE: external "node:fs" +var main_external_node_fs_ = __webpack_require__(73024); // EXTERNAL MODULE: ../core/dist/primitives.js var main_primitives = __webpack_require__(78275); +;// ./node_modules/p-map/index.js +async function main_pMap( + iterable, + mapper, + { + concurrency = Number.POSITIVE_INFINITY, + stopOnError = true, + signal, + } = {}, +) { + return new Promise((resolve_, reject_) => { + if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) { + throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`); + } + + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } + + if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`); + } + + const result = []; + const errors = []; + const skippedIndexesMap = new Map(); + let isRejected = false; + let isResolved = false; + let isIterableDone = false; + let resolvingCount = 0; + let currentIndex = 0; + const iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator](); + + const signalListener = () => { + reject(signal.reason); + }; + + const cleanup = () => { + signal?.removeEventListener('abort', signalListener); + }; + + const resolve = value => { + resolve_(value); + cleanup(); + }; + + const reject = reason => { + isRejected = true; + isResolved = true; + reject_(reason); + cleanup(); + }; + + if (signal) { + if (signal.aborted) { + reject(signal.reason); + } + + signal.addEventListener('abort', signalListener, {once: true}); + } + + const next = async () => { + if (isResolved) { + return; + } + + const nextItem = await iterator.next(); + + const index = currentIndex; + currentIndex++; + + // Note: `iterator.next()` can be called many times in parallel. + // This can cause multiple calls to this `next()` function to + // receive a `nextItem` with `done === true`. + // The shutdown logic that rejects/resolves must be protected + // so it runs only one time as the `skippedIndex` logic is + // non-idempotent. + if (nextItem.done) { + isIterableDone = true; + + if (resolvingCount === 0 && !isResolved) { + if (!stopOnError && errors.length > 0) { + reject(new AggregateError(errors)); // eslint-disable-line unicorn/error-message + return; + } + + isResolved = true; + + if (skippedIndexesMap.size === 0) { + resolve(result); + return; + } + + const pureResult = []; + + // Support multiple `pMapSkip`'s. + for (const [index, value] of result.entries()) { + if (skippedIndexesMap.get(index) === main_pMapSkip) { + continue; + } + + pureResult.push(value); + } + + resolve(pureResult); + } + + return; + } + + resolvingCount++; + + // Intentionally detached + (async () => { + try { + const element = await nextItem.value; + + if (isResolved) { + return; + } + + const value = await mapper(element, index); + + // Use Map to stage the index of the element. + if (value === main_pMapSkip) { + skippedIndexesMap.set(index, value); + } + + result[index] = value; + + resolvingCount--; + await next(); + } catch (error) { + if (stopOnError) { + reject(error); + } else { + errors.push(error); + resolvingCount--; + + // In that case we can't really continue regardless of `stopOnError` state + // since an iterable is likely to continue throwing after it throws once. + // If we continue calling `next()` indefinitely we will likely end up + // in an infinite loop of failed iteration. + try { + await next(); + } catch (error) { + reject(error); + } + } + } + })(); + }; + + // Create the concurrent runners in a detached (non-awaited) + // promise. We need this so we can await the `next()` calls + // to stop creating runners before hitting the concurrency limit + // if the iterable has already been marked as done. + // NOTE: We *must* do this for async iterators otherwise we'll spin up + // infinite `next()` calls by default and never start the event loop. + (async () => { + for (let index = 0; index < concurrency; index++) { + try { + // eslint-disable-next-line no-await-in-loop + await next(); + } catch (error) { + reject(error); + break; + } + + if (isIterableDone || isRejected) { + break; + } + } + })(); + }); +} + +function main_pMapIterable( + iterable, + mapper, + { + concurrency = Number.POSITIVE_INFINITY, + backpressure = concurrency, + } = {}, +) { + if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) { + throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`); + } + + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } + + if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`); + } + + if (!((Number.isSafeInteger(backpressure) && backpressure >= concurrency) || backpressure === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`backpressure\` to be an integer from \`concurrency\` (${concurrency}) and up or \`Infinity\`, got \`${backpressure}\` (${typeof backpressure})`); + } + + return { + async * [Symbol.asyncIterator]() { + const iterator = iterable[Symbol.asyncIterator] === undefined ? iterable[Symbol.iterator]() : iterable[Symbol.asyncIterator](); + + const promises = []; + let runningMappersCount = 0; + let isDone = false; + let index = 0; + + function trySpawn() { + if (isDone || !(runningMappersCount < concurrency && promises.length < backpressure)) { + return; + } + + const promise = (async () => { + const {done, value} = await iterator.next(); + + if (done) { + return {done: true}; + } + + runningMappersCount++; + + // Spawn if still below concurrency and backpressure limit + trySpawn(); + + try { + const returnValue = await mapper(await value, index++); + + runningMappersCount--; + + if (returnValue === main_pMapSkip) { + const index = promises.indexOf(promise); + + if (index > 0) { + promises.splice(index, 1); + } + } + + // Spawn if still below backpressure limit and just dropped below concurrency limit + trySpawn(); + + return {done: false, value: returnValue}; + } catch (error) { + isDone = true; + return {error}; + } + })(); + + promises.push(promise); + } + + trySpawn(); + + while (promises.length > 0) { + const {error, done, value} = await promises[0]; // eslint-disable-line no-await-in-loop + + promises.shift(); + + if (error) { + throw error; + } + + if (done) { + return; + } + + // Spawn if just dropped below backpressure limit and below the concurrency limit + trySpawn(); + + if (value === main_pMapSkip) { + continue; + } + + yield value; + } + }, + }; +} + +const main_pMapSkip = Symbol('skip'); + // EXTERNAL MODULE: ./node_modules/glob/dist/esm/index.js + 15 modules var main_glob_dist_esm = __webpack_require__(59795); // EXTERNAL MODULE: ./node_modules/openai/index.mjs + 92 modules @@ -230239,7 +215554,6 @@ var main_dist_in_client = __webpack_require__(48215); - const main_createBuffer = (path) => { try { const buffer = main_external_fs_.readFileSync(path); @@ -230254,21 +215568,21 @@ const main_transcribe = async (options) => { const client = (0,main_dist_in_client/* createClient */.U)(options); if (!client) { options.logger.error('Failed to create client'); - return; + return ''; } if (!options.include || options.include.length === 0) { options.logger.error('No source file provided via --include'); - return; + return ''; } const sourceFile = options.include[0]; if (!(0,main_exists/* sync */.OH)(sourceFile)) { options.logger.error('Source file does not exist', sourceFile); - return; + return ''; } const file = await (0,main_node_modules_openai/* toFile */.eZ)(main_createBuffer(sourceFile), 'audio.mp3', { type: 'audio/mpeg' }); if (!file) { options.logger.error('Error converting source to file'); - return; + return ''; } const completion = await client.audio.transcriptions.create({ model: 'whisper-1', @@ -230277,19 +215591,12 @@ const main_transcribe = async (options) => { }); if (!completion) { options.logger.error('OpenAI response is empty'); - return; + return ''; } const text_content = completion.text || ''; - if (options.dst) { - (0,main_write/* sync */.OH)(options.dst, text_content); - } - else { - process.stdout.write(text_content); - } - // options.logger.debug('OpenAI Transcribe response:', completion) - return completion; + return text_content; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNjcmliZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTNDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFpQixFQUFFO0lBQ2pELElBQUksQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUMvQyxPQUFNO0lBQ1YsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDN0QsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM5RCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN6RixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1FBQ3ZELE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDN0QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUcsT0FBZSxDQUFDLGVBQWUsSUFBSSxjQUFjO0tBQ3RFLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDaEQsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUUzQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQ3BDLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxPQUFPLFVBQVUsQ0FBQTtBQUNyQixDQUFDLENBQUEifQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNjcmliZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUzQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBaUIsRUFBRTtJQUNqRCxJQUFJLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxPQUFrQixFQUFtQixFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDOUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDdkQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDN0QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUcsT0FBZSxDQUFDLGVBQWUsSUFBSSxjQUFjO0tBQ3RFLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDaEQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7SUFDMUMsT0FBTyxZQUFZLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0= // EXTERNAL MODULE: ./dist-in/glob.js var main_glob = __webpack_require__(89325); // EXTERNAL MODULE: ./dist-in/variables.js @@ -230306,6 +215613,24 @@ var main_variables = __webpack_require__(78618); + +const main_default_sort = (files) => { + const getSortableParts = (filename) => { + const baseName = main_external_node_path_.parse(filename).name; + const match = baseName.match(/^(\d+)_?(.*)$/); // Match leading numbers + const numPart = match ? parseInt(match[1], 10) : NaN; + const textPart = match ? match[2] : baseName; // Extract text part + return { numPart, textPart }; + }; + return files.sort((a, b) => { + const { numPart: aNum, textPart: aText } = getSortableParts(a); + const { numPart: bNum, textPart: bText } = getSortableParts(b); + if (!isNaN(aNum) && !isNaN(bNum)) { + return aNum - bNum || aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + } + return aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + }); +}; const main_TranscribeOptionsSchema = () => { return (0,main_zod_schema/* OptionsSchema */.IO)().pick({ include: true, @@ -230379,7 +215704,7 @@ const main_transcribeCommand = async (opts) => { const info = (0,main_dist/* pathInfoEx */.j4)((0,main_dist/* forward_slash */.Yf)(main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(includePath))), false, { absolute: true, }); - files.push(...(0,main_run/* default_sort */.X4)(info.FILES)); + files.push(...info.FILES); } else if ((0,main_exists/* sync */.OH)(includePath)) { files.push(includePath); @@ -230389,8 +215714,9 @@ const main_transcribeCommand = async (opts) => { opts.logger.warn(`No files found for --include patterns: ${opts.include.join(', ')}`); return; } + files = main_default_sort(files); opts.logger.info(`Found ${files.length} files to transcribe.`); - for (const file of files) { + const mapper = async (file) => { const fileInfo = main_external_node_path_.parse(file); const CWD = process.cwd(); const current_variables = { @@ -230407,18 +215733,35 @@ const main_transcribeCommand = async (opts) => { include: [file], variables: current_variables }; - if (!itemOpts.dst) { - itemOpts.dst = '${SRC_DIR}/${SRC_NAME}.md'; - } - itemOpts.dst = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(itemOpts.dst, itemOpts.alt, itemOpts.variables)); opts.logger.info(`Transcribing ${file}...`); - if (itemOpts.dst) { - opts.logger.info(`Output will be saved to ${itemOpts.dst}`); + const transcribedText = await main_transcribe(itemOpts); + return { transcribedText, itemOpts }; + }; + const results = await main_pMap(files, mapper, { concurrency: 1 }); + let resolvedDstPath; + if (opts.dst) { + resolvedDstPath = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(opts.dst, opts.alt, opts.variables)); + if (main_external_node_fs_.existsSync(resolvedDstPath)) { + main_external_node_fs_.unlinkSync(resolvedDstPath); + } + const allText = results.map(r => r.transcribedText).filter(Boolean).join('\n\n'); + if (allText) { + main_external_node_fs_.writeFileSync(resolvedDstPath, allText + '\n'); + opts.logger.info(`Wrote all transcriptions to ${resolvedDstPath}`); + } + } + else { + for (const { transcribedText, itemOpts } of results) { + if (transcribedText) { + const defaultDstTemplate = '${SRC_DIR}/${SRC_NAME}.md'; + const defaultDstPath = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(defaultDstTemplate, itemOpts.alt, itemOpts.variables)); + main_external_node_fs_.writeFileSync(defaultDstPath, transcribedText); + opts.logger.info(`Output will be saved to ${defaultDstPath}`); + } } - await main_transcribe(itemOpts); } }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy90cmFuc2NyaWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQixPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxPQUFPLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztRQUN4QixPQUFPLEVBQUUsSUFBSTtRQUNiLEdBQUcsRUFBRSxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsR0FBRyxFQUFFLElBQUk7UUFDVCxTQUFTLEVBQUUsSUFBSTtR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 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy90cmFuc2NyaWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0IsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUd0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBZSxFQUFZLEVBQUU7SUFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLEtBQUss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 ;// ./dist-in/main.js //#!/usr/bin/env node diff --git a/packages/kbot/dist/main_node.js b/packages/kbot/dist/main_node.js index cd79be95..f7de8d1a 100644 --- a/packages/kbot/dist/main_node.js +++ b/packages/kbot/dist/main_node.js @@ -1266,17136 +1266,6 @@ exports.ud = deferred; __webpack_unused_export__ = deferred; //# sourceMappingURL=index.js.map -/***/ }), - -/***/ 53141: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -const { parse } = __webpack_require__(72636); - -module.exports = function (elt) { - const style = new CSSStyleDeclaration(elt) - const handler = { - get: function(target, property) { - return property in target ? target[property] : target.getPropertyValue(dasherizeProperty(property)); - }, - has: function(target, key) { - return true; - }, - set: function(target, property, value) { - if (property in target) { - target[property] = value; - } else { - target.setProperty(dasherizeProperty(property), value ?? undefined); - } - - return true; - } - }; - - return new Proxy(style, handler); -}; - -function dasherizeProperty(property) { - return property.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); -} - - -function CSSStyleDeclaration(elt) { - this._element = elt; -} - -const IMPORTANT_BANG = '!important'; - -// Utility function for parsing style declarations -// Pass in a string like "margin-left: 5px; border-style: solid" -// and this function returns an object like -// {"margin-left":"5px", "border-style":"solid"} -function parseStyles(value) { - const result = { - property: {}, - priority: {}, - } - - if (!value) { - return result; - } - - const styleValues = parse(value); - if (styleValues.length < 2) { - return result; - } - - for (let i = 0; i < styleValues.length; i += 2) { - const name = styleValues[i]; - let value = styleValues[i+1]; - - if (value.endsWith(IMPORTANT_BANG)) { - result.priority[name] = 'important'; - value = value.slice(0, -IMPORTANT_BANG.length).trim(); - } - - result.property[name] = value; - } - - return result; -} - -var NO_CHANGE = {}; // Private marker object - -CSSStyleDeclaration.prototype = Object.create(Object.prototype, { - - // Return the parsed form of the element's style attribute. - // If the element's style attribute has never been parsed - // or if it has changed since the last parse, then reparse it - // Note that the styles don't get parsed until they're actually needed - _parsed: { get: function() { - if (!this._parsedStyles || this.cssText !== this._lastParsedText) { - var text = this.cssText; - this._parsedStyles = parseStyles(text); - this._lastParsedText = text; - delete this._names; - } - return this._parsedStyles; - }}, - - // Call this method any time the parsed representation of the - // style changes. It converts the style properties to a string and - // sets cssText and the element's style attribute - _serialize: { value: function() { - var styles = this._parsed; - var s = ""; - - for(var name in styles.property) { - if (s) s += " "; - s += name + ": " + styles.property[name]; - if (styles.priority[name]) { - s += " !" + styles.priority[name]; - } - s += ";"; - } - - this.cssText = s; // also sets the style attribute - this._lastParsedText = s; // so we don't reparse - delete this._names; - }}, - - cssText: { - get: function() { - // XXX: this is a CSSStyleDeclaration for an element. - // A different impl might be necessary for a set of styles - // associated returned by getComputedStyle(), e.g. - return this._element.getAttribute("style"); - }, - set: function(value) { - // XXX: I should parse and serialize the value to - // normalize it and remove errors. FF and chrome do that. - this._element.setAttribute("style", value); - } - }, - - length: { get: function() { - if (!this._names) - this._names = Object.getOwnPropertyNames(this._parsed.property); - return this._names.length; - }}, - - item: { value: function(n) { - if (!this._names) - this._names = Object.getOwnPropertyNames(this._parsed.property); - return this._names[n]; - }}, - - getPropertyValue: { value: function(property) { - property = property.toLowerCase(); - return this._parsed.property[property] || ""; - }}, - - getPropertyPriority: { value: function(property) { - property = property.toLowerCase(); - return this._parsed.priority[property] || ""; - }}, - - setProperty: { value: function(property, value, priority) { - property = property.toLowerCase(); - if (value === null || value === undefined) { - value = ""; - } - if (priority === null || priority === undefined) { - priority = ""; - } - - // String coercion - if (value !== NO_CHANGE) { - value = "" + value; - } - - value = value.trim(); - if (value === "") { - this.removeProperty(property); - return; - } - - if (priority !== "" && priority !== NO_CHANGE && - !/^important$/i.test(priority)) { - return; - } - - var styles = this._parsed; - if (value === NO_CHANGE) { - if (!styles.property[property]) { - return; // Not a valid property name. - } - if (priority !== "") { - styles.priority[property] = "important"; - } else { - delete styles.priority[property]; - } - } else { - // We don't just accept the property value. Instead - // we parse it to ensure that it is something valid. - // If it contains a semicolon it is invalid - if (value.indexOf(";") !== -1) return; - - var newprops = parseStyles(property + ":" + value); - if (Object.getOwnPropertyNames(newprops.property).length === 0) { - return; // no valid property found - } - if (Object.getOwnPropertyNames(newprops.priority).length !== 0) { - return; // if the value included '!important' it wasn't valid. - } - - // XXX handle shorthand properties - - for (var p in newprops.property) { - styles.property[p] = newprops.property[p]; - if (priority === NO_CHANGE) { - continue; - } else if (priority !== "") { - styles.priority[p] = "important"; - } else if (styles.priority[p]) { - delete styles.priority[p]; - } - } - } - - // Serialize and update cssText and element.style! - this._serialize(); - }}, - - setPropertyValue: { value: function(property, value) { - return this.setProperty(property, value, NO_CHANGE); - }}, - - setPropertyPriority: { value: function(property, priority) { - return this.setProperty(property, NO_CHANGE, priority); - }}, - - removeProperty: { value: function(property) { - property = property.toLowerCase(); - var styles = this._parsed; - if (property in styles.property) { - delete styles.property[property]; - delete styles.priority[property]; - - // Serialize and update cssText and element.style! - this._serialize(); - } - }}, -}); - - -/***/ }), - -/***/ 90086: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; -/* jshint bitwise: false */ - -module.exports = CharacterData; - -var Leaf = __webpack_require__(8161); -var utils = __webpack_require__(89076); -var ChildNode = __webpack_require__(52091); -var NonDocumentTypeChildNode = __webpack_require__(32001); - -function CharacterData() { - Leaf.call(this); -} - -CharacterData.prototype = Object.create(Leaf.prototype, { - // DOMString substringData(unsigned long offset, - // unsigned long count); - // The substringData(offset, count) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // If offset+count is greater than the context - // object's length, return a DOMString whose value is - // the UTF-16 code units from the offsetth UTF-16 code - // unit to the end of data. - // - // Return a DOMString whose value is the UTF-16 code - // units from the offsetth UTF-16 code unit to the - // offset+countth UTF-16 code unit in data. - substringData: { value: function substringData(offset, count) { - if (arguments.length < 2) { throw new TypeError("Not enough arguments"); } - // Convert arguments to WebIDL "unsigned long" - offset = offset >>> 0; - count = count >>> 0; - if (offset > this.data.length || offset < 0 || count < 0) { - utils.IndexSizeError(); - } - return this.data.substring(offset, offset+count); - }}, - - // void appendData(DOMString data); - // The appendData(data) method must append data to the context - // object's data. - appendData: { value: function appendData(data) { - if (arguments.length < 1) { throw new TypeError("Not enough arguments"); } - this.data += String(data); - }}, - - // void insertData(unsigned long offset, DOMString data); - // The insertData(offset, data) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // Insert data into the context object's data after - // offset UTF-16 code units. - // - insertData: { value: function insertData(offset, data) { - return this.replaceData(offset, 0, data); - }}, - - - // void deleteData(unsigned long offset, unsigned long count); - // The deleteData(offset, count) method must run these steps: - // - // If offset is greater than the context object's - // length, throw an INDEX_SIZE_ERR exception and - // terminate these steps. - // - // If offset+count is greater than the context - // object's length var count be length-offset. - // - // Starting from offset UTF-16 code units remove count - // UTF-16 code units from the context object's data. - deleteData: { value: function deleteData(offset, count) { - return this.replaceData(offset, count, ''); - }}, - - - // void replaceData(unsigned long offset, unsigned long count, - // DOMString data); - // - // The replaceData(offset, count, data) method must act as - // if the deleteData() method is invoked with offset and - // count as arguments followed by the insertData() method - // with offset and data as arguments and re-throw any - // exceptions these methods might have thrown. - replaceData: { value: function replaceData(offset, count, data) { - var curtext = this.data, len = curtext.length; - // Convert arguments to correct WebIDL type - offset = offset >>> 0; - count = count >>> 0; - data = String(data); - - if (offset > len || offset < 0) utils.IndexSizeError(); - - if (offset+count > len) - count = len - offset; - - var prefix = curtext.substring(0, offset), - suffix = curtext.substring(offset+count); - - this.data = prefix + data + suffix; - }}, - - // Utility method that Node.isEqualNode() calls to test Text and - // Comment nodes for equality. It is okay to put it here, since - // Node will have already verified that nodeType is equal - isEqual: { value: function isEqual(n) { - return this._data === n._data; - }}, - - length: { get: function() { return this.data.length; }} - -}); - -Object.defineProperties(CharacterData.prototype, ChildNode); -Object.defineProperties(CharacterData.prototype, NonDocumentTypeChildNode); - - -/***/ }), - -/***/ 52091: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var Node = __webpack_require__(97537); -var LinkedList = __webpack_require__(41360); - -var createDocumentFragmentFromArguments = function(document, args) { - var docFrag = document.createDocumentFragment(); - - for (var i=0; i { - -"use strict"; - -module.exports = Comment; - -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function Comment(doc, data) { - CharacterData.call(this); - this.nodeType = Node.COMMENT_NODE; - this.ownerDocument = doc; - this._data = data; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - this._data = v; - if (this.rooted) - this.ownerDocument.mutateValue(this); - } -}; - -Comment.prototype = Object.create(CharacterData.prototype, { - nodeName: { value: '#comment' }, - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - // Utility methods - clone: { value: function clone() { - return new Comment(this.ownerDocument, this._data); - }}, -}); - - -/***/ }), - -/***/ 38554: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = ContainerNode; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); - -// This class defines common functionality for node subtypes that -// can have children - -function ContainerNode() { - Node.call(this); - this._firstChild = this._childNodes = null; -} - -// Primary representation is a circular linked list of siblings -ContainerNode.prototype = Object.create(Node.prototype, { - - hasChildNodes: { value: function() { - if (this._childNodes) { - return this._childNodes.length > 0; - } - return this._firstChild !== null; - }}, - - childNodes: { get: function() { - this._ensureChildNodes(); - return this._childNodes; - }}, - - firstChild: { get: function() { - if (this._childNodes) { - return this._childNodes.length === 0 ? null : this._childNodes[0]; - } - return this._firstChild; - }}, - - lastChild: { get: function() { - var kids = this._childNodes, first; - if (kids) { - return kids.length === 0 ? null: kids[kids.length-1]; - } - first = this._firstChild; - if (first === null) { return null; } - return first._previousSibling; // circular linked list - }}, - - _ensureChildNodes: { value: function() { - if (this._childNodes) { return; } - var first = this._firstChild, - kid = first, - childNodes = this._childNodes = new NodeList(); - if (first) do { - childNodes.push(kid); - kid = kid._nextSibling; - } while (kid !== first); // circular linked list - this._firstChild = null; // free memory - }}, - - // Remove all of this node's children. This is a minor - // optimization that only calls modify() once. - removeChildren: { value: function removeChildren() { - var root = this.rooted ? this.ownerDocument : null, - next = this.firstChild, - kid; - while (next !== null) { - kid = next; - next = kid.nextSibling; - - if (root) root.mutateRemove(kid); - kid.parentNode = null; - } - if (this._childNodes) { - this._childNodes.length = 0; - } else { - this._firstChild = null; - } - this.modify(); // Update last modified type once only - }}, - -}); - - -/***/ }), - -/***/ 22112: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = CustomEvent; - -var Event = __webpack_require__(13441); - -function CustomEvent(type, dictionary) { - // Just use the superclass constructor to initialize - Event.call(this, type, dictionary); -} -CustomEvent.prototype = Object.create(Event.prototype, { - constructor: { value: CustomEvent } -}); - - -/***/ }), - -/***/ 46364: -/***/ ((module) => { - -"use strict"; - -module.exports = DOMException; - -var INDEX_SIZE_ERR = 1; -var HIERARCHY_REQUEST_ERR = 3; -var WRONG_DOCUMENT_ERR = 4; -var INVALID_CHARACTER_ERR = 5; -var NO_MODIFICATION_ALLOWED_ERR = 7; -var NOT_FOUND_ERR = 8; -var NOT_SUPPORTED_ERR = 9; -var INVALID_STATE_ERR = 11; -var SYNTAX_ERR = 12; -var INVALID_MODIFICATION_ERR = 13; -var NAMESPACE_ERR = 14; -var INVALID_ACCESS_ERR = 15; -var TYPE_MISMATCH_ERR = 17; -var SECURITY_ERR = 18; -var NETWORK_ERR = 19; -var ABORT_ERR = 20; -var URL_MISMATCH_ERR = 21; -var QUOTA_EXCEEDED_ERR = 22; -var TIMEOUT_ERR = 23; -var INVALID_NODE_TYPE_ERR = 24; -var DATA_CLONE_ERR = 25; - -// Code to name -var names = [ - null, // No error with code 0 - 'INDEX_SIZE_ERR', - null, // historical - 'HIERARCHY_REQUEST_ERR', - 'WRONG_DOCUMENT_ERR', - 'INVALID_CHARACTER_ERR', - null, // historical - 'NO_MODIFICATION_ALLOWED_ERR', - 'NOT_FOUND_ERR', - 'NOT_SUPPORTED_ERR', - 'INUSE_ATTRIBUTE_ERR', // historical - 'INVALID_STATE_ERR', - 'SYNTAX_ERR', - 'INVALID_MODIFICATION_ERR', - 'NAMESPACE_ERR', - 'INVALID_ACCESS_ERR', - null, // historical - 'TYPE_MISMATCH_ERR', - 'SECURITY_ERR', - 'NETWORK_ERR', - 'ABORT_ERR', - 'URL_MISMATCH_ERR', - 'QUOTA_EXCEEDED_ERR', - 'TIMEOUT_ERR', - 'INVALID_NODE_TYPE_ERR', - 'DATA_CLONE_ERR', -]; - -// Code to message -// These strings are from the 13 May 2011 Editor's Draft of DOM Core. -// http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html -// Copyright © 2011 W3C® (MIT, ERCIM, Keio), All Rights Reserved. -// Used under the terms of the W3C Document License: -// http://www.w3.org/Consortium/Legal/2002/copyright-documents-20021231 -var messages = [ - null, // No error with code 0 - 'INDEX_SIZE_ERR (1): the index is not in the allowed range', - null, - 'HIERARCHY_REQUEST_ERR (3): the operation would yield an incorrect nodes model', - 'WRONG_DOCUMENT_ERR (4): the object is in the wrong Document, a call to importNode is required', - 'INVALID_CHARACTER_ERR (5): the string contains invalid characters', - null, - 'NO_MODIFICATION_ALLOWED_ERR (7): the object can not be modified', - 'NOT_FOUND_ERR (8): the object can not be found here', - 'NOT_SUPPORTED_ERR (9): this operation is not supported', - 'INUSE_ATTRIBUTE_ERR (10): setAttributeNode called on owned Attribute', - 'INVALID_STATE_ERR (11): the object is in an invalid state', - 'SYNTAX_ERR (12): the string did not match the expected pattern', - 'INVALID_MODIFICATION_ERR (13): the object can not be modified in this way', - 'NAMESPACE_ERR (14): the operation is not allowed by Namespaces in XML', - 'INVALID_ACCESS_ERR (15): the object does not support the operation or argument', - null, - 'TYPE_MISMATCH_ERR (17): the type of the object does not match the expected type', - 'SECURITY_ERR (18): the operation is insecure', - 'NETWORK_ERR (19): a network error occurred', - 'ABORT_ERR (20): the user aborted an operation', - 'URL_MISMATCH_ERR (21): the given URL does not match another URL', - 'QUOTA_EXCEEDED_ERR (22): the quota has been exceeded', - 'TIMEOUT_ERR (23): a timeout occurred', - 'INVALID_NODE_TYPE_ERR (24): the supplied node is invalid or has an invalid ancestor for this operation', - 'DATA_CLONE_ERR (25): the object can not be cloned.' -]; - -// Name to code -var constants = { - INDEX_SIZE_ERR: INDEX_SIZE_ERR, - DOMSTRING_SIZE_ERR: 2, // historical - HIERARCHY_REQUEST_ERR: HIERARCHY_REQUEST_ERR, - WRONG_DOCUMENT_ERR: WRONG_DOCUMENT_ERR, - INVALID_CHARACTER_ERR: INVALID_CHARACTER_ERR, - NO_DATA_ALLOWED_ERR: 6, // historical - NO_MODIFICATION_ALLOWED_ERR: NO_MODIFICATION_ALLOWED_ERR, - NOT_FOUND_ERR: NOT_FOUND_ERR, - NOT_SUPPORTED_ERR: NOT_SUPPORTED_ERR, - INUSE_ATTRIBUTE_ERR: 10, // historical - INVALID_STATE_ERR: INVALID_STATE_ERR, - SYNTAX_ERR: SYNTAX_ERR, - INVALID_MODIFICATION_ERR: INVALID_MODIFICATION_ERR, - NAMESPACE_ERR: NAMESPACE_ERR, - INVALID_ACCESS_ERR: INVALID_ACCESS_ERR, - VALIDATION_ERR: 16, // historical - TYPE_MISMATCH_ERR: TYPE_MISMATCH_ERR, - SECURITY_ERR: SECURITY_ERR, - NETWORK_ERR: NETWORK_ERR, - ABORT_ERR: ABORT_ERR, - URL_MISMATCH_ERR: URL_MISMATCH_ERR, - QUOTA_EXCEEDED_ERR: QUOTA_EXCEEDED_ERR, - TIMEOUT_ERR: TIMEOUT_ERR, - INVALID_NODE_TYPE_ERR: INVALID_NODE_TYPE_ERR, - DATA_CLONE_ERR: DATA_CLONE_ERR -}; - -function DOMException(code) { - Error.call(this); - Error.captureStackTrace(this, this.constructor); - this.code = code; - this.message = messages[code]; - this.name = names[code]; -} -DOMException.prototype.__proto__ = Error.prototype; - -// Initialize the constants on DOMException and DOMException.prototype -for(var c in constants) { - var v = { value: constants[c] }; - Object.defineProperty(DOMException, c, v); - Object.defineProperty(DOMException.prototype, c, v); -} - - -/***/ }), - -/***/ 80931: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DOMImplementation; - -var Document = __webpack_require__(35452); -var DocumentType = __webpack_require__(73092); -var HTMLParser = __webpack_require__(91895); -var utils = __webpack_require__(89076); -var xml = __webpack_require__(66798); - -// Each document must have its own instance of the domimplementation object -function DOMImplementation(contextObject) { - this.contextObject = contextObject; -} - - -// Feature/version pairs that DOMImplementation.hasFeature() returns -// true for. It returns false for anything else. -var supportedFeatures = { - 'xml': { '': true, '1.0': true, '2.0': true }, // DOM Core - 'core': { '': true, '2.0': true }, // DOM Core - 'html': { '': true, '1.0': true, '2.0': true} , // HTML - 'xhtml': { '': true, '1.0': true, '2.0': true} , // HTML -}; - -DOMImplementation.prototype = { - hasFeature: function hasFeature(feature, version) { - var f = supportedFeatures[(feature || '').toLowerCase()]; - return (f && f[version || '']) || false; - }, - - createDocumentType: function createDocumentType(qualifiedName, publicId, systemId) { - if (!xml.isValidQName(qualifiedName)) utils.InvalidCharacterError(); - - return new DocumentType(this.contextObject, qualifiedName, publicId, systemId); - }, - - createDocument: function createDocument(namespace, qualifiedName, doctype) { - // - // Note that the current DOMCore spec makes it impossible to - // create an HTML document with this function, even if the - // namespace and doctype are propertly set. See this thread: - // http://lists.w3.org/Archives/Public/www-dom/2011AprJun/0132.html - // - var d = new Document(false, null); - var e; - - if (qualifiedName) - e = d.createElementNS(namespace, qualifiedName); - else - e = null; - - if (doctype) { - d.appendChild(doctype); - } - - if (e) d.appendChild(e); - if (namespace === utils.NAMESPACE.HTML) { - d._contentType = 'application/xhtml+xml'; - } else if (namespace === utils.NAMESPACE.SVG) { - d._contentType = 'image/svg+xml'; - } else { - d._contentType = 'application/xml'; - } - - return d; - }, - - createHTMLDocument: function createHTMLDocument(titleText) { - var d = new Document(true, null); - d.appendChild(new DocumentType(d, 'html')); - var html = d.createElement('html'); - d.appendChild(html); - var head = d.createElement('head'); - html.appendChild(head); - if (titleText !== undefined) { - var title = d.createElement('title'); - head.appendChild(title); - title.appendChild(d.createTextNode(titleText)); - } - html.appendChild(d.createElement('body')); - d.modclock = 1; // Start tracking modifications - return d; - }, - - mozSetOutputMutationHandler: function(doc, handler) { - doc.mutationHandler = handler; - }, - - mozGetInputMutationHandler: function(doc) { - utils.nyi(); - }, - - mozHTMLParser: HTMLParser, -}; - - -/***/ }), - -/***/ 82840: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -// DOMTokenList implementation based on https://github.com/Raynos/DOM-shim -var utils = __webpack_require__(89076); - -module.exports = DOMTokenList; - -function DOMTokenList(getter, setter) { - this._getString = getter; - this._setString = setter; - this._length = 0; - this._lastStringValue = ''; - this._update(); -} - -Object.defineProperties(DOMTokenList.prototype, { - length: { get: function() { return this._length; } }, - item: { value: function(index) { - var list = getList(this); - if (index < 0 || index >= list.length) { - return null; - } - return list[index]; - }}, - - contains: { value: function(token) { - token = String(token); // no error checking for contains() - var list = getList(this); - return list.indexOf(token) > -1; - }}, - - add: { value: function() { - var list = getList(this); - for (var i = 0, len = arguments.length; i < len; i++) { - var token = handleErrors(arguments[i]); - if (list.indexOf(token) < 0) { - list.push(token); - } - } - // Note: as per spec, if handleErrors() throws any errors, we never - // make it here and none of the changes take effect. - // Also per spec: we run the "update steps" even if no change was - // made (ie, if the token already existed) - this._update(list); - }}, - - remove: { value: function() { - var list = getList(this); - for (var i = 0, len = arguments.length; i < len; i++) { - var token = handleErrors(arguments[i]); - var index = list.indexOf(token); - if (index > -1) { - list.splice(index, 1); - } - } - // Note: as per spec, if handleErrors() throws any errors, we never - // make it here and none of the changes take effect. - // Also per spec: we run the "update steps" even if no change was - // made (ie, if the token wasn't previously present) - this._update(list); - }}, - - toggle: { value: function toggle(token, force) { - token = handleErrors(token); - if (this.contains(token)) { - if (force === undefined || force === false) { - this.remove(token); - return false; - } - return true; - } else { - if (force === undefined || force === true) { - this.add(token); - return true; - } - return false; - } - }}, - - replace: { value: function replace(token, newToken) { - // weird corner case of spec: if `token` contains whitespace, but - // `newToken` is the empty string, we must throw SyntaxError not - // InvalidCharacterError (sigh) - if (String(newToken)==='') { utils.SyntaxError(); } - token = handleErrors(token); - newToken = handleErrors(newToken); - var list = getList(this); - var idx = list.indexOf(token); - if (idx < 0) { - // Note that, per spec, we do not run the update steps on this path. - return false; - } - var idx2 = list.indexOf(newToken); - if (idx2 < 0) { - list[idx] = newToken; - } else { - // "replace the first instance of either `token` or `newToken` with - // `newToken` and remove all other instances" - if (idx < idx2) { - list[idx] = newToken; - list.splice(idx2, 1); - } else { - // idx2 is already `newToken` - list.splice(idx, 1); - } - } - this._update(list); - return true; - }}, - - toString: { value: function() { - return this._getString(); - }}, - - value: { - get: function() { - return this._getString(); - }, - set: function(v) { - this._setString(v); - this._update(); - } - }, - - // Called when the setter is called from outside this interface. - _update: { value: function(list) { - if (list) { - fixIndex(this, list); - this._setString(list.join(" ").trim()); - } else { - fixIndex(this, getList(this)); - } - this._lastStringValue = this._getString(); - } }, -}); - -function fixIndex(clist, list) { - var oldLength = clist._length; - var i; - clist._length = list.length; - for (i = 0; i < list.length; i++) { - clist[i] = list[i]; - } - // Clear/free old entries. - for (; i < oldLength; i++) { - clist[i] = undefined; - } -} - -function handleErrors(token) { - token = String(token); - if (token === "") { - utils.SyntaxError(); - } - if (/[ \t\r\n\f]/.test(token)) { - utils.InvalidCharacterError(); - } - return token; -} - -function toArray(clist) { - var length = clist._length; - var arr = Array(length); - for (var i = 0; i < length; i++) { - arr[i] = clist[i]; - } - return arr; -} - -function getList(clist) { - var strProp = clist._getString(); - if (strProp === clist._lastStringValue) { - return toArray(clist); - } - var str = strProp.replace(/(^[ \t\r\n\f]+)|([ \t\r\n\f]+$)/g, ''); - if (str === "") { - return []; - } else { - var seen = Object.create(null); - return str.split(/[ \t\r\n\f]+/g).filter(function(n) { - var key = '$' + n; - if (seen[key]) { return false; } - seen[key] = true; - return true; - }); - } -} - - -/***/ }), - -/***/ 35452: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Document; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var ContainerNode = __webpack_require__(38554); -var Element = __webpack_require__(77301); -var Text = __webpack_require__(58210); -var Comment = __webpack_require__(17548); -var Event = __webpack_require__(13441); -var DocumentFragment = __webpack_require__(17948); -var ProcessingInstruction = __webpack_require__(81248); -var DOMImplementation = __webpack_require__(80931); -var TreeWalker = __webpack_require__(44507); -var NodeIterator = __webpack_require__(30419); -var NodeFilter = __webpack_require__(383); -var URL = __webpack_require__(85184); -var select = __webpack_require__(23509); -var events = __webpack_require__(18196); -var xml = __webpack_require__(66798); -var html = __webpack_require__(96324); -var svg = __webpack_require__(967); -var utils = __webpack_require__(89076); -var MUTATE = __webpack_require__(40993); -var NAMESPACE = utils.NAMESPACE; -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -function Document(isHTML, address) { - ContainerNode.call(this); - this.nodeType = Node.DOCUMENT_NODE; - this.isHTML = isHTML; - this._address = address || 'about:blank'; - this.readyState = 'loading'; - this.implementation = new DOMImplementation(this); - - // DOMCore says that documents are always associated with themselves - this.ownerDocument = null; // ... but W3C tests expect null - this._contentType = isHTML ? 'text/html' : 'application/xml'; - - // These will be initialized by our custom versions of - // appendChild and insertBefore that override the inherited - // Node methods. - // XXX: override those methods! - this.doctype = null; - this.documentElement = null; - - // "Associated inert template document" - this._templateDocCache = null; - // List of active NodeIterators, see NodeIterator#_preremove() - this._nodeIterators = null; - - // Documents are always rooted, by definition - this._nid = 1; - this._nextnid = 2; // For numbering children of the document - this._nodes = [null, this]; // nid to node map - - // This maintains the mapping from element ids to element nodes. - // We may need to update this mapping every time a node is rooted - // or uprooted, and any time an attribute is added, removed or changed - // on a rooted element. - this.byId = Object.create(null); - - // This property holds a monotonically increasing value akin to - // a timestamp used to record the last modification time of nodes - // and their subtrees. See the lastModTime attribute and modify() - // method of the Node class. And see FilteredElementList for an example - // of the use of lastModTime - this.modclock = 0; -} - -// Map from lowercase event category names (used as arguments to -// createEvent()) to the property name in the impl object of the -// event constructor. -var supportedEvents = { - event: 'Event', - customevent: 'CustomEvent', - uievent: 'UIEvent', - mouseevent: 'MouseEvent' -}; - -// Certain arguments to document.createEvent() must be treated specially -var replacementEvent = { - events: 'event', - htmlevents: 'event', - mouseevents: 'mouseevent', - mutationevents: 'mutationevent', - uievents: 'uievent' -}; - -var mirrorAttr = function(f, name, defaultValue) { - return { - get: function() { - var o = f.call(this); - if (o) { return o[name]; } - return defaultValue; - }, - set: function(value) { - var o = f.call(this); - if (o) { o[name] = value; } - }, - }; -}; - -/** @spec https://dom.spec.whatwg.org/#validate-and-extract */ -function validateAndExtract(namespace, qualifiedName) { - var prefix, localName, pos; - if (namespace==='') { namespace = null; } - // See https://github.com/whatwg/dom/issues/671 - // and https://github.com/whatwg/dom/issues/319 - if (!xml.isValidQName(qualifiedName)) { - utils.InvalidCharacterError(); - } - prefix = null; - localName = qualifiedName; - - pos = qualifiedName.indexOf(':'); - if (pos >= 0) { - prefix = qualifiedName.substring(0, pos); - localName = qualifiedName.substring(pos+1); - } - if (prefix !== null && namespace === null) { - utils.NamespaceError(); - } - if (prefix === 'xml' && namespace !== NAMESPACE.XML) { - utils.NamespaceError(); - } - if ((prefix === 'xmlns' || qualifiedName === 'xmlns') && - namespace !== NAMESPACE.XMLNS) { - utils.NamespaceError(); - } - if (namespace === NAMESPACE.XMLNS && !(prefix==='xmlns' || qualifiedName==='xmlns')) { - utils.NamespaceError(); - } - return { namespace: namespace, prefix: prefix, localName: localName }; -} - -Document.prototype = Object.create(ContainerNode.prototype, { - // This method allows dom.js to communicate with a renderer - // that displays the document in some way - // XXX: I should probably move this to the window object - _setMutationHandler: { value: function(handler) { - this.mutationHandler = handler; - }}, - - // This method allows dom.js to receive event notifications - // from the renderer. - // XXX: I should probably move this to the window object - _dispatchRendererEvent: { value: function(targetNid, type, details) { - var target = this._nodes[targetNid]; - if (!target) return; - target._dispatchEvent(new Event(type, details), true); - }}, - - nodeName: { value: '#document'}, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - - // XXX: DOMCore may remove documentURI, so it is NYI for now - documentURI: { get: function() { return this._address; }, set: utils.nyi }, - compatMode: { get: function() { - // The _quirks property is set by the HTML parser - return this._quirks ? 'BackCompat' : 'CSS1Compat'; - }}, - - createTextNode: { value: function(data) { - return new Text(this, String(data)); - }}, - createComment: { value: function(data) { - return new Comment(this, data); - }}, - createDocumentFragment: { value: function() { - return new DocumentFragment(this); - }}, - createProcessingInstruction: { value: function(target, data) { - if (!xml.isValidName(target) || data.indexOf('?>') !== -1) - utils.InvalidCharacterError(); - return new ProcessingInstruction(this, target, data); - }}, - - createAttribute: { value: function(localName) { - localName = String(localName); - if (!xml.isValidName(localName)) utils.InvalidCharacterError(); - if (this.isHTML) { - localName = utils.toASCIILowerCase(localName); - } - return new Element._Attr(null, localName, null, null, ''); - }}, - createAttributeNS: { value: function(namespace, qualifiedName) { - // Convert parameter types according to WebIDL - namespace = - (namespace === null || namespace === undefined || namespace === '') ? null : - String(namespace); - qualifiedName = String(qualifiedName); - var ve = validateAndExtract(namespace, qualifiedName); - return new Element._Attr(null, ve.localName, ve.prefix, ve.namespace, ''); - }}, - - createElement: { value: function(localName) { - localName = String(localName); - if (!xml.isValidName(localName)) utils.InvalidCharacterError(); - // Per spec, namespace should be HTML namespace if "context object is - // an HTML document or context object's content type is - // "application/xhtml+xml", and null otherwise. - if (this.isHTML) { - if (/[A-Z]/.test(localName)) - localName = utils.toASCIILowerCase(localName); - return html.createElement(this, localName, null); - } else if (this.contentType === 'application/xhtml+xml') { - return html.createElement(this, localName, null); - } else { - return new Element(this, localName, null, null); - } - }, writable: isApiWritable }, - - createElementNS: { value: function(namespace, qualifiedName) { - // Convert parameter types according to WebIDL - namespace = - (namespace === null || namespace === undefined || namespace === '') ? null : - String(namespace); - qualifiedName = String(qualifiedName); - var ve = validateAndExtract(namespace, qualifiedName); - return this._createElementNS(ve.localName, ve.namespace, ve.prefix); - }, writable: isApiWritable }, - - // This is used directly by HTML parser, which allows it to create - // elements with localNames containing ':' and non-default namespaces - _createElementNS: { value: function(localName, namespace, prefix) { - if (namespace === NAMESPACE.HTML) { - return html.createElement(this, localName, prefix); - } - else if (namespace === NAMESPACE.SVG) { - return svg.createElement(this, localName, prefix); - } - - return new Element(this, localName, namespace, prefix); - }}, - - createEvent: { value: function createEvent(interfaceName) { - interfaceName = interfaceName.toLowerCase(); - var name = replacementEvent[interfaceName] || interfaceName; - var constructor = events[supportedEvents[name]]; - - if (constructor) { - var e = new constructor(); - e._initialized = false; - return e; - } - else { - utils.NotSupportedError(); - } - }}, - - // See: http://www.w3.org/TR/dom/#dom-document-createtreewalker - createTreeWalker: {value: function (root, whatToShow, filter) { - if (!root) { throw new TypeError("root argument is required"); } - if (!(root instanceof Node)) { throw new TypeError("root not a node"); } - whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow); - filter = filter === undefined ? null : filter; - - return new TreeWalker(root, whatToShow, filter); - }}, - - // See: http://www.w3.org/TR/dom/#dom-document-createnodeiterator - createNodeIterator: {value: function (root, whatToShow, filter) { - if (!root) { throw new TypeError("root argument is required"); } - if (!(root instanceof Node)) { throw new TypeError("root not a node"); } - whatToShow = whatToShow === undefined ? NodeFilter.SHOW_ALL : (+whatToShow); - filter = filter === undefined ? null : filter; - - return new NodeIterator(root, whatToShow, filter); - }}, - - _attachNodeIterator: { value: function(ni) { - // XXX ideally this should be a weak reference from Document to NodeIterator - if (!this._nodeIterators) { this._nodeIterators = []; } - this._nodeIterators.push(ni); - }}, - - _detachNodeIterator: { value: function(ni) { - // ni should always be in list of node iterators - var idx = this._nodeIterators.indexOf(ni); - this._nodeIterators.splice(idx, 1); - }}, - - _preremoveNodeIterators: { value: function(toBeRemoved) { - if (this._nodeIterators) { - this._nodeIterators.forEach(function(ni) { ni._preremove(toBeRemoved); }); - } - }}, - - // Maintain the documentElement and - // doctype properties of the document. Each of the following - // methods chains to the Node implementation of the method - // to do the actual inserting, removal or replacement. - - _updateDocTypeElement: { value: function _updateDocTypeElement() { - this.doctype = this.documentElement = null; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.DOCUMENT_TYPE_NODE) - this.doctype = kid; - else if (kid.nodeType === Node.ELEMENT_NODE) - this.documentElement = kid; - } - }}, - - insertBefore: { value: function insertBefore(child, refChild) { - Node.prototype.insertBefore.call(this, child, refChild); - this._updateDocTypeElement(); - return child; - }}, - - replaceChild: { value: function replaceChild(node, child) { - Node.prototype.replaceChild.call(this, node, child); - this._updateDocTypeElement(); - return child; - }}, - - removeChild: { value: function removeChild(child) { - Node.prototype.removeChild.call(this, child); - this._updateDocTypeElement(); - return child; - }}, - - getElementById: { value: function(id) { - var n = this.byId[id]; - if (!n) return null; - if (n instanceof MultiId) { // there was more than one element with this id - return n.getFirst(); - } - return n; - }}, - - _hasMultipleElementsWithId: { value: function(id) { - // Used internally by querySelectorAll optimization - return (this.byId[id] instanceof MultiId); - }}, - - // Just copy this method from the Element prototype - getElementsByName: { value: Element.prototype.getElementsByName }, - getElementsByTagName: { value: Element.prototype.getElementsByTagName }, - getElementsByTagNameNS: { value: Element.prototype.getElementsByTagNameNS }, - getElementsByClassName: { value: Element.prototype.getElementsByClassName }, - - adoptNode: { value: function adoptNode(node) { - if (node.nodeType === Node.DOCUMENT_NODE) utils.NotSupportedError(); - if (node.nodeType === Node.ATTRIBUTE_NODE) { return node; } - - if (node.parentNode) node.parentNode.removeChild(node); - - if (node.ownerDocument !== this) - recursivelySetOwner(node, this); - - return node; - }}, - - importNode: { value: function importNode(node, deep) { - return this.adoptNode(node.cloneNode(deep)); - }, writable: isApiWritable }, - - // The following attributes and methods are from the HTML spec - origin: { get: function origin() { return null; } }, - characterSet: { get: function characterSet() { return "UTF-8"; } }, - contentType: { get: function contentType() { return this._contentType; } }, - URL: { get: function URL() { return this._address; } }, - domain: { get: utils.nyi, set: utils.nyi }, - referrer: { get: utils.nyi }, - cookie: { get: utils.nyi, set: utils.nyi }, - lastModified: { get: utils.nyi }, - location: { - get: function() { - return this.defaultView ? this.defaultView.location : null; // gh #75 - }, - set: utils.nyi - }, - _titleElement: { - get: function() { - // The title element of a document is the first title element in the - // document in tree order, if there is one, or null otherwise. - return this.getElementsByTagName('title').item(0) || null; - } - }, - title: { - get: function() { - var elt = this._titleElement; - // The child text content of the title element, or '' if null. - var value = elt ? elt.textContent : ''; - // Strip and collapse whitespace in value - return value.replace(/[ \t\n\r\f]+/g, ' ').replace(/(^ )|( $)/g, ''); - }, - set: function(value) { - var elt = this._titleElement; - var head = this.head; - if (!elt && !head) { return; /* according to spec */ } - if (!elt) { - elt = this.createElement('title'); - head.appendChild(elt); - } - elt.textContent = value; - } - }, - dir: mirrorAttr(function() { - var htmlElement = this.documentElement; - if (htmlElement && htmlElement.tagName === 'HTML') { return htmlElement; } - }, 'dir', ''), - fgColor: mirrorAttr(function() { return this.body; }, 'text', ''), - linkColor: mirrorAttr(function() { return this.body; }, 'link', ''), - vlinkColor: mirrorAttr(function() { return this.body; }, 'vLink', ''), - alinkColor: mirrorAttr(function() { return this.body; }, 'aLink', ''), - bgColor: mirrorAttr(function() { return this.body; }, 'bgColor', ''), - - // Historical aliases of Document#characterSet - charset: { get: function() { return this.characterSet; } }, - inputEncoding: { get: function() { return this.characterSet; } }, - - scrollingElement: { - get: function() { - return this._quirks ? this.body : this.documentElement; - } - }, - - // Return the first child of the document element. - // XXX For now, setting this attribute is not implemented. - body: { - get: function() { - return namedHTMLChild(this.documentElement, 'body'); - }, - set: utils.nyi - }, - // Return the first child of the document element. - head: { get: function() { - return namedHTMLChild(this.documentElement, 'head'); - }}, - images: { get: utils.nyi }, - embeds: { get: utils.nyi }, - plugins: { get: utils.nyi }, - links: { get: utils.nyi }, - forms: { get: utils.nyi }, - scripts: { get: utils.nyi }, - applets: { get: function() { return []; } }, - activeElement: { get: function() { return null; } }, - innerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - outerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - - write: { value: function(args) { - if (!this.isHTML) utils.InvalidStateError(); - - // XXX: still have to implement the ignore part - if (!this._parser /* && this._ignore_destructive_writes > 0 */ ) - return; - - if (!this._parser) { - // XXX call document.open, etc. - } - - var s = arguments.join(''); - - // If the Document object's reload override flag is set, then - // append the string consisting of the concatenation of all the - // arguments to the method to the Document's reload override - // buffer. - // XXX: don't know what this is about. Still have to do it - - // If there is no pending parsing-blocking script, have the - // tokenizer process the characters that were inserted, one at a - // time, processing resulting tokens as they are emitted, and - // stopping when the tokenizer reaches the insertion point or when - // the processing of the tokenizer is aborted by the tree - // construction stage (this can happen if a script end tag token is - // emitted by the tokenizer). - - // XXX: still have to do the above. Sounds as if we don't - // always call parse() here. If we're blocked, then we just - // insert the text into the stream but don't parse it reentrantly... - - // Invoke the parser reentrantly - this._parser.parse(s); - }}, - - writeln: { value: function writeln(args) { - this.write(Array.prototype.join.call(arguments, '') + '\n'); - }}, - - open: { value: function() { - this.documentElement = null; - }}, - - close: { value: function() { - this.readyState = 'interactive'; - this._dispatchEvent(new Event('readystatechange'), true); - this._dispatchEvent(new Event('DOMContentLoaded'), true); - this.readyState = 'complete'; - this._dispatchEvent(new Event('readystatechange'), true); - if (this.defaultView) { - this.defaultView._dispatchEvent(new Event('load'), true); - } - }}, - - // Utility methods - clone: { value: function clone() { - var d = new Document(this.isHTML, this._address); - d._quirks = this._quirks; - d._contentType = this._contentType; - return d; - }}, - - // We need to adopt the nodes if we do a deep clone - cloneNode: { value: function cloneNode(deep) { - var clone = Node.prototype.cloneNode.call(this, false); - if (deep) { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - clone._appendChild(clone.importNode(kid, true)); - } - } - clone._updateDocTypeElement(); - return clone; - }}, - - isEqual: { value: function isEqual(n) { - // Any two documents are shallowly equal. - // Node.isEqualNode will also test the children - return true; - }}, - - // Implementation-specific function. Called when a text, comment, - // or pi value changes. - mutateValue: { value: function(node) { - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.VALUE, - target: node, - data: node.data - }); - } - }}, - - // Invoked when an attribute's value changes. Attr holds the new - // value. oldval is the old value. Attribute mutations can also - // involve changes to the prefix (and therefore the qualified name) - mutateAttr: { value: function(attr, oldval) { - // Manage id->element mapping for getElementsById() - // XXX: this special case id handling should not go here, - // but in the attribute declaration for the id attribute - /* - if (attr.localName === 'id' && attr.namespaceURI === null) { - if (oldval) delId(oldval, attr.ownerElement); - addId(attr.value, attr.ownerElement); - } - */ - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.ATTR, - target: attr.ownerElement, - attr: attr - }); - } - }}, - - // Used by removeAttribute and removeAttributeNS for attributes. - mutateRemoveAttr: { value: function(attr) { -/* -* This is now handled in Attributes.js - // Manage id to element mapping - if (attr.localName === 'id' && attr.namespaceURI === null) { - this.delId(attr.value, attr.ownerElement); - } -*/ - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.REMOVE_ATTR, - target: attr.ownerElement, - attr: attr - }); - } - }}, - - // Called by Node.removeChild, etc. to remove a rooted element from - // the tree. Only needs to generate a single mutation event when a - // node is removed, but must recursively mark all descendants as not - // rooted. - mutateRemove: { value: function(node) { - // Send a single mutation event - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.REMOVE, - target: node.parentNode, - node: node - }); - } - - // Mark this and all descendants as not rooted - recursivelyUproot(node); - }}, - - // Called when a new element becomes rooted. It must recursively - // generate mutation events for each of the children, and mark them all - // as rooted. - mutateInsert: { value: function(node) { - // Mark node and its descendants as rooted - recursivelyRoot(node); - - // Send a single mutation event - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.INSERT, - target: node.parentNode, - node: node - }); - } - }}, - - // Called when a rooted element is moved within the document - mutateMove: { value: function(node) { - if (this.mutationHandler) { - this.mutationHandler({ - type: MUTATE.MOVE, - target: node - }); - } - }}, - - - // Add a mapping from id to n for n.ownerDocument - addId: { value: function addId(id, n) { - var val = this.byId[id]; - if (!val) { - this.byId[id] = n; - } - else { - // TODO: Add a way to opt-out console warnings - //console.warn('Duplicate element id ' + id); - if (!(val instanceof MultiId)) { - val = new MultiId(val); - this.byId[id] = val; - } - val.add(n); - } - }}, - - // Delete the mapping from id to n for n.ownerDocument - delId: { value: function delId(id, n) { - var val = this.byId[id]; - utils.assert(val); - - if (val instanceof MultiId) { - val.del(n); - if (val.length === 1) { // convert back to a single node - this.byId[id] = val.downgrade(); - } - } - else { - this.byId[id] = undefined; - } - }}, - - _resolve: { value: function(href) { - //XXX: Cache the URL - return new URL(this._documentBaseURL).resolve(href); - }}, - - _documentBaseURL: { get: function() { - // XXX: This is not implemented correctly yet - var url = this._address; - if (url === 'about:blank') url = '/'; - - var base = this.querySelector('base[href]'); - if (base) { - return new URL(url).resolve(base.getAttribute('href')); - } - return url; - - // The document base URL of a Document object is the - // absolute URL obtained by running these substeps: - - // Let fallback base url be the document's address. - - // If fallback base url is about:blank, and the - // Document's browsing context has a creator browsing - // context, then let fallback base url be the document - // base URL of the creator Document instead. - - // If the Document is an iframe srcdoc document, then - // let fallback base url be the document base URL of - // the Document's browsing context's browsing context - // container's Document instead. - - // If there is no base element that has an href - // attribute, then the document base URL is fallback - // base url; abort these steps. Otherwise, let url be - // the value of the href attribute of the first such - // element. - - // Resolve url relative to fallback base url (thus, - // the base href attribute isn't affected by xml:base - // attributes). - - // The document base URL is the result of the previous - // step if it was successful; otherwise it is fallback - // base url. - }}, - - _templateDoc: { get: function() { - if (!this._templateDocCache) { - // "associated inert template document" - var newDoc = new Document(this.isHTML, this._address); - this._templateDocCache = newDoc._templateDocCache = newDoc; - } - return this._templateDocCache; - }}, - - querySelector: { value: function(selector) { - return select(selector, this)[0]; - }}, - - querySelectorAll: { value: function(selector) { - var nodes = select(selector, this); - return nodes.item ? nodes : new NodeList(nodes); - }} - -}); - - -var eventHandlerTypes = [ - 'abort', 'canplay', 'canplaythrough', 'change', 'click', 'contextmenu', - 'cuechange', 'dblclick', 'drag', 'dragend', 'dragenter', 'dragleave', - 'dragover', 'dragstart', 'drop', 'durationchange', 'emptied', 'ended', - 'input', 'invalid', 'keydown', 'keypress', 'keyup', 'loadeddata', - 'loadedmetadata', 'loadstart', 'mousedown', 'mousemove', 'mouseout', - 'mouseover', 'mouseup', 'mousewheel', 'pause', 'play', 'playing', - 'progress', 'ratechange', 'readystatechange', 'reset', 'seeked', - 'seeking', 'select', 'show', 'stalled', 'submit', 'suspend', - 'timeupdate', 'volumechange', 'waiting', - - 'blur', 'error', 'focus', 'load', 'scroll' -]; - -// Add event handler idl attribute getters and setters to Document -eventHandlerTypes.forEach(function(type) { - // Define the event handler registration IDL attribute for this type - Object.defineProperty(Document.prototype, 'on' + type, { - get: function() { - return this._getEventHandler(type); - }, - set: function(v) { - this._setEventHandler(type, v); - } - }); -}); - -function namedHTMLChild(parent, name) { - if (parent && parent.isHTML) { - for (var kid = parent.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE && - kid.localName === name && - kid.namespaceURI === NAMESPACE.HTML) { - return kid; - } - } - } - return null; -} - -function root(n) { - n._nid = n.ownerDocument._nextnid++; - n.ownerDocument._nodes[n._nid] = n; - // Manage id to element mapping - if (n.nodeType === Node.ELEMENT_NODE) { - var id = n.getAttribute('id'); - if (id) n.ownerDocument.addId(id, n); - - // Script elements need to know when they're inserted - // into the document - if (n._roothook) n._roothook(); - } -} - -function uproot(n) { - // Manage id to element mapping - if (n.nodeType === Node.ELEMENT_NODE) { - var id = n.getAttribute('id'); - if (id) n.ownerDocument.delId(id, n); - } - n.ownerDocument._nodes[n._nid] = undefined; - n._nid = undefined; -} - -function recursivelyRoot(node) { - root(node); - // XXX: - // accessing childNodes on a leaf node creates a new array the - // first time, so be careful to write this loop so that it - // doesn't do that. node is polymorphic, so maybe this is hard to - // optimize? Try switching on nodeType? -/* - if (node.hasChildNodes()) { - var kids = node.childNodes; - for(var i = 0, n = kids.length; i < n; i++) - recursivelyRoot(kids[i]); - } -*/ - if (node.nodeType === Node.ELEMENT_NODE) { - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelyRoot(kid); - } -} - -function recursivelyUproot(node) { - uproot(node); - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelyUproot(kid); -} - -function recursivelySetOwner(node, owner) { - node.ownerDocument = owner; - node._lastModTime = undefined; // mod times are document-based - if (Object.prototype.hasOwnProperty.call(node, '_tagName')) { - node._tagName = undefined; // Element subclasses might need to change case - } - for (var kid = node.firstChild; kid !== null; kid = kid.nextSibling) - recursivelySetOwner(kid, owner); -} - -// A class for storing multiple nodes with the same ID -function MultiId(node) { - this.nodes = Object.create(null); - this.nodes[node._nid] = node; - this.length = 1; - this.firstNode = undefined; -} - -// Add a node to the list, with O(1) time -MultiId.prototype.add = function(node) { - if (!this.nodes[node._nid]) { - this.nodes[node._nid] = node; - this.length++; - this.firstNode = undefined; - } -}; - -// Remove a node from the list, with O(1) time -MultiId.prototype.del = function(node) { - if (this.nodes[node._nid]) { - delete this.nodes[node._nid]; - this.length--; - this.firstNode = undefined; - } -}; - -// Get the first node from the list, in the document order -// Takes O(N) time in the size of the list, with a cache that is invalidated -// when the list is modified. -MultiId.prototype.getFirst = function() { - /* jshint bitwise: false */ - if (!this.firstNode) { - var nid; - for (nid in this.nodes) { - if (this.firstNode === undefined || - this.firstNode.compareDocumentPosition(this.nodes[nid]) & Node.DOCUMENT_POSITION_PRECEDING) { - this.firstNode = this.nodes[nid]; - } - } - } - return this.firstNode; -}; - -// If there is only one node left, return it. Otherwise return "this". -MultiId.prototype.downgrade = function() { - if (this.length === 1) { - var nid; - for (nid in this.nodes) { - return this.nodes[nid]; - } - } - return this; -}; - - -/***/ }), - -/***/ 17948: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DocumentFragment; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var ContainerNode = __webpack_require__(38554); -var Element = __webpack_require__(77301); -var select = __webpack_require__(23509); -var utils = __webpack_require__(89076); - -function DocumentFragment(doc) { - ContainerNode.call(this); - this.nodeType = Node.DOCUMENT_FRAGMENT_NODE; - this.ownerDocument = doc; -} - -DocumentFragment.prototype = Object.create(ContainerNode.prototype, { - nodeName: { value: '#document-fragment' }, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - // Copy the text content getter/setter from Element - textContent: Object.getOwnPropertyDescriptor(Element.prototype, 'textContent'), - - // Copy the text content getter/setter from Element - innerText: Object.getOwnPropertyDescriptor(Element.prototype, 'innerText'), - - querySelector: { value: function(selector) { - // implement in terms of querySelectorAll - var nodes = this.querySelectorAll(selector); - return nodes.length ? nodes[0] : null; - }}, - querySelectorAll: { value: function(selector) { - // create a context - var context = Object.create(this); - // add some methods to the context for zest implementation, without - // adding them to the public DocumentFragment API - context.isHTML = true; // in HTML namespace (case-insensitive match) - context.getElementsByTagName = Element.prototype.getElementsByTagName; - context.nextElement = - Object.getOwnPropertyDescriptor(Element.prototype, 'firstElementChild'). - get; - // invoke zest - var nodes = select(selector, context); - return nodes.item ? nodes : new NodeList(nodes); - }}, - - // Utility methods - clone: { value: function clone() { - return new DocumentFragment(this.ownerDocument); - }}, - isEqual: { value: function isEqual(n) { - // Any two document fragments are shallowly equal. - // Node.isEqualNode() will test their children for equality - return true; - }}, - - // Non-standard, but useful (github issue #73) - innerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - outerHTML: { - get: function() { return this.serialize(); }, - set: utils.nyi - }, - -}); - - -/***/ }), - -/***/ 73092: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = DocumentType; - -var Node = __webpack_require__(97537); -var Leaf = __webpack_require__(8161); -var ChildNode = __webpack_require__(52091); - -function DocumentType(ownerDocument, name, publicId, systemId) { - Leaf.call(this); - this.nodeType = Node.DOCUMENT_TYPE_NODE; - this.ownerDocument = ownerDocument || null; - this.name = name; - this.publicId = publicId || ""; - this.systemId = systemId || ""; -} - -DocumentType.prototype = Object.create(Leaf.prototype, { - nodeName: { get: function() { return this.name; }}, - nodeValue: { - get: function() { return null; }, - set: function() {} - }, - - // Utility methods - clone: { value: function clone() { - return new DocumentType(this.ownerDocument, this.name, this.publicId, this.systemId); - }}, - - isEqual: { value: function isEqual(n) { - return this.name === n.name && - this.publicId === n.publicId && - this.systemId === n.systemId; - }} -}); - -Object.defineProperties(DocumentType.prototype, ChildNode); - - -/***/ }), - -/***/ 77301: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Element; - -var xml = __webpack_require__(66798); -var utils = __webpack_require__(89076); -var NAMESPACE = utils.NAMESPACE; -var attributes = __webpack_require__(6548); -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var NodeUtils = __webpack_require__(41608); -var FilteredElementList = __webpack_require__(61676); -var DOMException = __webpack_require__(46364); -var DOMTokenList = __webpack_require__(82840); -var select = __webpack_require__(23509); -var ContainerNode = __webpack_require__(38554); -var ChildNode = __webpack_require__(52091); -var NonDocumentTypeChildNode = __webpack_require__(32001); -var NamedNodeMap = __webpack_require__(49492); - -var uppercaseCache = Object.create(null); - -function Element(doc, localName, namespaceURI, prefix) { - ContainerNode.call(this); - this.nodeType = Node.ELEMENT_NODE; - this.ownerDocument = doc; - this.localName = localName; - this.namespaceURI = namespaceURI; - this.prefix = prefix; - this._tagName = undefined; - - // These properties maintain the set of attributes - this._attrsByQName = Object.create(null); // The qname->Attr map - this._attrsByLName = Object.create(null); // The ns|lname->Attr map - this._attrKeys = []; // attr index -> ns|lname -} - -function recursiveGetText(node, a) { - if (node.nodeType === Node.TEXT_NODE) { - a.push(node._data); - } - else { - for(var i = 0, n = node.childNodes.length; i < n; i++) - recursiveGetText(node.childNodes[i], a); - } -} - -Element.prototype = Object.create(ContainerNode.prototype, { - isHTML: { get: function isHTML() { - return this.namespaceURI === NAMESPACE.HTML && this.ownerDocument.isHTML; - }}, - tagName: { get: function tagName() { - if (this._tagName === undefined) { - var tn; - if (this.prefix === null) { - tn = this.localName; - } else { - tn = this.prefix + ':' + this.localName; - } - if (this.isHTML) { - var up = uppercaseCache[tn]; - if (!up) { - // Converting to uppercase can be slow, so cache the conversion. - uppercaseCache[tn] = up = utils.toASCIIUpperCase(tn); - } - tn = up; - } - this._tagName = tn; - } - return this._tagName; - }}, - nodeName: { get: function() { return this.tagName; }}, - nodeValue: { - get: function() { - return null; - }, - set: function() {} - }, - textContent: { - get: function() { - var strings = []; - recursiveGetText(this, strings); - return strings.join(''); - }, - set: function(newtext) { - this.removeChildren(); - if (newtext !== null && newtext !== undefined && newtext !== '') { - this._appendChild(this.ownerDocument.createTextNode(newtext)); - } - } - }, - innerText: { - get: function() { - var strings = []; - recursiveGetText(this, strings); - // Strip and collapse whitespace - // This doesn't 100% match the browser behavior, - // but should cover most of the cases. This is also similar to - // how Angular's renderer used to work: the `textContent` and `innerText` - // were almost equivalent from the renderer perspective. - // See: https://developer.mozilla.org/en-US/docs/Web/API/Node/textContent#differences_from_innertext - return strings.join('').replace(/[ \t\n\f\r]+/g, ' ').trim(); - }, - set: function(newtext) { - this.removeChildren(); - if (newtext !== null && newtext !== undefined && newtext !== '') { - this._appendChild(this.ownerDocument.createTextNode(newtext)); - } - } - }, - innerHTML: { - get: function() { - return this.serialize(); - }, - set: utils.nyi - }, - outerHTML: { - get: function() { - // "the attribute must return the result of running the HTML fragment - // serialization algorithm on a fictional node whose only child is - // the context object" - // - // The serialization logic is intentionally implemented in a separate - // `NodeUtils` helper instead of the more obvious choice of a private - // `_serializeOne()` method on the `Node.prototype` in order to avoid - // the megamorphic `this._serializeOne` property access, which reduces - // performance unnecessarily. If you need specialized behavior for a - // certain subclass, you'll need to implement that in `NodeUtils`. - // See https://github.com/fgnass/domino/pull/142 for more information. - return NodeUtils.serializeOne(this, { nodeType: 0 }); - }, - set: function(v) { - var document = this.ownerDocument; - var parent = this.parentNode; - if (parent === null) { return; } - if (parent.nodeType === Node.DOCUMENT_NODE) { - utils.NoModificationAllowedError(); - } - if (parent.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - parent = parent.ownerDocument.createElement("body"); - } - var parser = document.implementation.mozHTMLParser( - document._address, - parent - ); - parser.parse(v===null?'':String(v), true); - this.replaceWith(parser._asDocumentFragment()); - }, - }, - - _insertAdjacent: { value: function _insertAdjacent(position, node) { - var first = false; - switch(position) { - case 'beforebegin': - first = true; - /* falls through */ - case 'afterend': - var parent = this.parentNode; - if (parent === null) { return null; } - return parent.insertBefore(node, first ? this : this.nextSibling); - case 'afterbegin': - first = true; - /* falls through */ - case 'beforeend': - return this.insertBefore(node, first ? this.firstChild : null); - default: - return utils.SyntaxError(); - } - }}, - - insertAdjacentElement: { value: function insertAdjacentElement(position, element) { - if (element.nodeType !== Node.ELEMENT_NODE) { - throw new TypeError('not an element'); - } - position = utils.toASCIILowerCase(String(position)); - return this._insertAdjacent(position, element); - }}, - - insertAdjacentText: { value: function insertAdjacentText(position, data) { - var textNode = this.ownerDocument.createTextNode(data); - position = utils.toASCIILowerCase(String(position)); - this._insertAdjacent(position, textNode); - // "This method returns nothing because it existed before we had a chance - // to design it." - }}, - - insertAdjacentHTML: { value: function insertAdjacentHTML(position, text) { - position = utils.toASCIILowerCase(String(position)); - text = String(text); - var context; - switch(position) { - case 'beforebegin': - case 'afterend': - context = this.parentNode; - if (context === null || context.nodeType === Node.DOCUMENT_NODE) { - utils.NoModificationAllowedError(); - } - break; - case 'afterbegin': - case 'beforeend': - context = this; - break; - default: - utils.SyntaxError(); - } - if ( (!(context instanceof Element)) || ( - context.ownerDocument.isHTML && - context.localName === 'html' && - context.namespaceURI === NAMESPACE.HTML - ) ) { - context = context.ownerDocument.createElementNS(NAMESPACE.HTML, 'body'); - } - var parser = this.ownerDocument.implementation.mozHTMLParser( - this.ownerDocument._address, context - ); - parser.parse(text, true); - this._insertAdjacent(position, parser._asDocumentFragment()); - }}, - - children: { get: function() { - if (!this._children) { - this._children = new ChildrenCollection(this); - } - return this._children; - }}, - - attributes: { get: function() { - if (!this._attributes) { - this._attributes = new AttributesArray(this); - } - return this._attributes; - }}, - - - firstElementChild: { get: function() { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - return null; - }}, - - lastElementChild: { get: function() { - for (var kid = this.lastChild; kid !== null; kid = kid.previousSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - return null; - }}, - - childElementCount: { get: function() { - return this.children.length; - }}, - - - // Return the next element, in source order, after this one or - // null if there are no more. If root element is specified, - // then don't traverse beyond its subtree. - // - // This is not a DOM method, but is convenient for - // lazy traversals of the tree. - nextElement: { value: function(root) { - if (!root) root = this.ownerDocument.documentElement; - var next = this.firstElementChild; - if (!next) { - // don't use sibling if we're at root - if (this===root) return null; - next = this.nextElementSibling; - } - if (next) return next; - - // If we can't go down or across, then we have to go up - // and across to the parent sibling or another ancestor's - // sibling. Be careful, though: if we reach the root - // element, or if we reach the documentElement, then - // the traversal ends. - for(var parent = this.parentElement; - parent && parent !== root; - parent = parent.parentElement) { - - next = parent.nextElementSibling; - if (next) return next; - } - - return null; - }}, - - // XXX: - // Tests are currently failing for this function. - // Awaiting resolution of: - // http://lists.w3.org/Archives/Public/www-dom/2011JulSep/0016.html - getElementsByTagName: { value: function getElementsByTagName(lname) { - var filter; - if (!lname) return new NodeList(); - if (lname === '*') - filter = function() { return true; }; - else if (this.isHTML) - filter = htmlLocalNameElementFilter(lname); - else - filter = localNameElementFilter(lname); - - return new FilteredElementList(this, filter); - }}, - - getElementsByTagNameNS: { value: function getElementsByTagNameNS(ns, lname){ - var filter; - if (ns === '*' && lname === '*') - filter = function() { return true; }; - else if (ns === '*') - filter = localNameElementFilter(lname); - else if (lname === '*') - filter = namespaceElementFilter(ns); - else - filter = namespaceLocalNameElementFilter(ns, lname); - - return new FilteredElementList(this, filter); - }}, - - getElementsByClassName: { value: function getElementsByClassName(names){ - names = String(names).trim(); - if (names === '') { - var result = new NodeList(); // Empty node list - return result; - } - names = names.split(/[ \t\r\n\f]+/); // Split on ASCII whitespace - return new FilteredElementList(this, classNamesElementFilter(names)); - }}, - - getElementsByName: { value: function getElementsByName(name) { - return new FilteredElementList(this, elementNameFilter(String(name))); - }}, - - // Utility methods used by the public API methods above - clone: { value: function clone() { - var e; - - // XXX: - // Modify this to use the constructor directly or - // avoid error checking in some other way. In case we try - // to clone an invalid node that the parser inserted. - // - if (this.namespaceURI !== NAMESPACE.HTML || this.prefix || !this.ownerDocument.isHTML) { - e = this.ownerDocument.createElementNS( - this.namespaceURI, (this.prefix !== null) ? - (this.prefix + ':' + this.localName) : this.localName - ); - } else { - e = this.ownerDocument.createElement(this.localName); - } - - for(var i = 0, n = this._attrKeys.length; i < n; i++) { - var lname = this._attrKeys[i]; - var a = this._attrsByLName[lname]; - var b = a.cloneNode(); - b._setOwnerElement(e); - e._attrsByLName[lname] = b; - e._addQName(b); - } - e._attrKeys = this._attrKeys.concat(); - - return e; - }}, - - isEqual: { value: function isEqual(that) { - if (this.localName !== that.localName || - this.namespaceURI !== that.namespaceURI || - this.prefix !== that.prefix || - this._numattrs !== that._numattrs) - return false; - - // Compare the sets of attributes, ignoring order - // and ignoring attribute prefixes. - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if (!that.hasAttributeNS(a.namespaceURI, a.localName)) - return false; - if (that.getAttributeNS(a.namespaceURI,a.localName) !== a.value) - return false; - } - - return true; - }}, - - // This is the 'locate a namespace prefix' algorithm from the - // DOM specification. It is used by Node.lookupPrefix() - // (Be sure to compare DOM3 and DOM4 versions of spec.) - _lookupNamespacePrefix: { value: function _lookupNamespacePrefix(ns, originalElement) { - if ( - this.namespaceURI && - this.namespaceURI === ns && - this.prefix !== null && - originalElement.lookupNamespaceURI(this.prefix) === ns - ) { - return this.prefix; - } - - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if ( - a.prefix === 'xmlns' && - a.value === ns && - originalElement.lookupNamespaceURI(a.localName) === ns - ) { - return a.localName; - } - } - - var parent = this.parentElement; - return parent ? parent._lookupNamespacePrefix(ns, originalElement) : null; - }}, - - // This is the 'locate a namespace' algorithm for Element nodes - // from the DOM Core spec. It is used by Node#lookupNamespaceURI() - lookupNamespaceURI: { value: function lookupNamespaceURI(prefix) { - if (prefix === '' || prefix === undefined) { prefix = null; } - if (this.namespaceURI !== null && this.prefix === prefix) - return this.namespaceURI; - - for(var i = 0, n = this._numattrs; i < n; i++) { - var a = this._attr(i); - if (a.namespaceURI === NAMESPACE.XMLNS) { - if ( - (a.prefix === 'xmlns' && a.localName === prefix) || - (prefix === null && a.prefix === null && a.localName === 'xmlns') - ) { - return a.value || null; - } - } - } - - var parent = this.parentElement; - return parent ? parent.lookupNamespaceURI(prefix) : null; - }}, - - // - // Attribute handling methods and utilities - // - - /* - * Attributes in the DOM are tricky: - * - * - there are the 8 basic get/set/has/removeAttribute{NS} methods - * - * - but many HTML attributes are also 'reflected' through IDL - * attributes which means that they can be queried and set through - * regular properties of the element. There is just one attribute - * value, but two ways to get and set it. - * - * - Different HTML element types have different sets of reflected - attributes. - * - * - attributes can also be queried and set through the .attributes - * property of an element. This property behaves like an array of - * Attr objects. The value property of each Attr is writeable, so - * this is a third way to read and write attributes. - * - * - for efficiency, we really want to store attributes in some kind - * of name->attr map. But the attributes[] array is an array, not a - * map, which is kind of unnatural. - * - * - When using namespaces and prefixes, and mixing the NS methods - * with the non-NS methods, it is apparently actually possible for - * an attributes[] array to have more than one attribute with the - * same qualified name. And certain methods must operate on only - * the first attribute with such a name. So for these methods, an - * inefficient array-like data structure would be easier to - * implement. - * - * - The attributes[] array is live, not a snapshot, so changes to the - * attributes must be immediately visible through existing arrays. - * - * - When attributes are queried and set through IDL properties - * (instead of the get/setAttributes() method or the attributes[] - * array) they may be subject to type conversions, URL - * normalization, etc., so some extra processing is required in that - * case. - * - * - But access through IDL properties is probably the most common - * case, so we'd like that to be as fast as possible. - * - * - We can't just store attribute values in their parsed idl form, - * because setAttribute() has to return whatever string is passed to - * getAttribute even if it is not a legal, parseable value. So - * attribute values must be stored in unparsed string form. - * - * - We need to be able to send change notifications or mutation - * events of some sort to the renderer whenever an attribute value - * changes, regardless of the way in which it changes. - * - * - Some attributes, such as id and class affect other parts of the - * DOM API, like getElementById and getElementsByClassName and so - * for efficiency, we need to specially track changes to these - * special attributes. - * - * - Some attributes like class have different names (className) when - * reflected. - * - * - Attributes whose names begin with the string 'data-' are treated - specially. - * - * - Reflected attributes that have a boolean type in IDL have special - * behavior: setting them to false (in IDL) is the same as removing - * them with removeAttribute() - * - * - numeric attributes (like HTMLElement.tabIndex) can have default - * values that must be returned by the idl getter even if the - * content attribute does not exist. (The default tabIndex value - * actually varies based on the type of the element, so that is a - * tricky one). - * - * See - * http://www.whatwg.org/specs/web-apps/current-work/multipage/urls.html#reflect - * for rules on how attributes are reflected. - * - */ - - getAttribute: { value: function getAttribute(qname) { - var attr = this.getAttributeNode(qname); - return attr ? attr.value : null; - }}, - - getAttributeNS: { value: function getAttributeNS(ns, lname) { - var attr = this.getAttributeNodeNS(ns, lname); - return attr ? attr.value : null; - }}, - - getAttributeNode: { value: function getAttributeNode(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - var attr = this._attrsByQName[qname]; - if (!attr) return null; - - if (Array.isArray(attr)) // If there is more than one - attr = attr[0]; // use the first - - return attr; - }}, - - getAttributeNodeNS: { value: function getAttributeNodeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var attr = this._attrsByLName[ns + '|' + lname]; - return attr ? attr : null; - }}, - - hasAttribute: { value: function hasAttribute(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - return this._attrsByQName[qname] !== undefined; - }}, - - hasAttributeNS: { value: function hasAttributeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var key = ns + '|' + lname; - return this._attrsByLName[key] !== undefined; - }}, - - hasAttributes: { value: function hasAttributes() { - return this._numattrs > 0; - }}, - - toggleAttribute: { value: function toggleAttribute(qname, force) { - qname = String(qname); - if (!xml.isValidName(qname)) utils.InvalidCharacterError(); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - var a = this._attrsByQName[qname]; - if (a === undefined) { - if (force === undefined || force === true) { - this._setAttribute(qname, ''); - return true; - } - return false; - } else { - if (force === undefined || force === false) { - this.removeAttribute(qname); - return false; - } - return true; - } - }}, - - // Set the attribute without error checking. The parser uses this. - _setAttribute: { value: function _setAttribute(qname, value) { - // XXX: the spec says that this next search should be done - // on the local name, but I think that is an error. - // email pending on www-dom about it. - var attr = this._attrsByQName[qname]; - var isnew; - if (!attr) { - attr = this._newattr(qname); - isnew = true; - } - else { - if (Array.isArray(attr)) attr = attr[0]; - } - - // Now set the attribute value on the new or existing Attr object. - // The Attr.value setter method handles mutation events, etc. - attr.value = value; - if (this._attributes) this._attributes[qname] = attr; - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Check for errors, and then set the attribute - setAttribute: { value: function setAttribute(qname, value) { - qname = String(qname); - if (!xml.isValidName(qname)) utils.InvalidCharacterError(); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - this._setAttribute(qname, String(value)); - }}, - - - // The version with no error checking used by the parser - _setAttributeNS: { value: function _setAttributeNS(ns, qname, value) { - var pos = qname.indexOf(':'), prefix, lname; - if (pos < 0) { - prefix = null; - lname = qname; - } - else { - prefix = qname.substring(0, pos); - lname = qname.substring(pos+1); - } - - if (ns === '' || ns === undefined) ns = null; - var key = (ns === null ? '' : ns) + '|' + lname; - - var attr = this._attrsByLName[key]; - var isnew; - if (!attr) { - attr = new Attr(this, lname, prefix, ns); - isnew = true; - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - - // We also have to make the attr searchable by qname. - // But we have to be careful because there may already - // be an attr with this qname. - this._addQName(attr); - } - else if (false /* changed in DOM 4 */) {} - attr.value = value; // Automatically sends mutation event - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Do error checking then call _setAttributeNS - setAttributeNS: { value: function setAttributeNS(ns, qname, value) { - // Convert parameter types according to WebIDL - ns = (ns === null || ns === undefined || ns === '') ? null : String(ns); - qname = String(qname); - if (!xml.isValidQName(qname)) utils.InvalidCharacterError(); - - var pos = qname.indexOf(':'); - var prefix = (pos < 0) ? null : qname.substring(0, pos); - - if ((prefix !== null && ns === null) || - (prefix === 'xml' && ns !== NAMESPACE.XML) || - ((qname === 'xmlns' || prefix === 'xmlns') && - (ns !== NAMESPACE.XMLNS)) || - (ns === NAMESPACE.XMLNS && - !(qname === 'xmlns' || prefix === 'xmlns'))) - utils.NamespaceError(); - - this._setAttributeNS(ns, qname, String(value)); - }}, - - setAttributeNode: { value: function setAttributeNode(attr) { - if (attr.ownerElement !== null && attr.ownerElement !== this) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - var result = null; - var oldAttrs = this._attrsByQName[attr.name]; - if (oldAttrs) { - if (!Array.isArray(oldAttrs)) { oldAttrs = [ oldAttrs ]; } - if (oldAttrs.some(function(a) { return a===attr; })) { - return attr; - } else if (attr.ownerElement !== null) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - oldAttrs.forEach(function(a) { this.removeAttributeNode(a); }, this); - result = oldAttrs[0]; - } - this.setAttributeNodeNS(attr); - return result; - }}, - - setAttributeNodeNS: { value: function setAttributeNodeNS(attr) { - if (attr.ownerElement !== null) { - throw new DOMException(DOMException.INUSE_ATTRIBUTE_ERR); - } - var ns = attr.namespaceURI; - var key = (ns === null ? '' : ns) + '|' + attr.localName; - var oldAttr = this._attrsByLName[key]; - if (oldAttr) { this.removeAttributeNode(oldAttr); } - attr._setOwnerElement(this); - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - this._addQName(attr); - if (this._newattrhook) this._newattrhook(attr.name, attr.value); - return oldAttr || null; - }}, - - removeAttribute: { value: function removeAttribute(qname) { - qname = String(qname); - if (/[A-Z]/.test(qname) && this.isHTML) - qname = utils.toASCIILowerCase(qname); - - var attr = this._attrsByQName[qname]; - if (!attr) return; - - // If there is more than one match for this qname - // so don't delete the qname mapping, just remove the first - // element from it. - if (Array.isArray(attr)) { - if (attr.length > 2) { - attr = attr.shift(); // remove it from the array - } - else { - this._attrsByQName[qname] = attr[1]; - attr = attr[0]; - } - } - else { - // only a single match, so remove the qname mapping - this._attrsByQName[qname] = undefined; - } - - var ns = attr.namespaceURI; - // Now attr is the removed attribute. Figure out its - // ns+lname key and remove it from the other mapping as well. - var key = (ns === null ? '' : ns) + '|' + attr.localName; - this._attrsByLName[key] = undefined; - - var i = this._attrKeys.indexOf(key); - if (this._attributes) { - Array.prototype.splice.call(this._attributes, i, 1); - this._attributes[qname] = undefined; - } - this._attrKeys.splice(i, 1); - - // Onchange handler for the attribute - var onchange = attr.onchange; - attr._setOwnerElement(null); - if (onchange) { - onchange.call(attr, this, attr.localName, attr.value, null); - } - // Mutation event - if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr); - }}, - - removeAttributeNS: { value: function removeAttributeNS(ns, lname) { - ns = (ns === undefined || ns === null) ? '' : String(ns); - lname = String(lname); - var key = ns + '|' + lname; - var attr = this._attrsByLName[key]; - if (!attr) return; - - this._attrsByLName[key] = undefined; - - var i = this._attrKeys.indexOf(key); - if (this._attributes) { - Array.prototype.splice.call(this._attributes, i, 1); - } - this._attrKeys.splice(i, 1); - - // Now find the same Attr object in the qname mapping and remove it - // But be careful because there may be more than one match. - this._removeQName(attr); - - // Onchange handler for the attribute - var onchange = attr.onchange; - attr._setOwnerElement(null); - if (onchange) { - onchange.call(attr, this, attr.localName, attr.value, null); - } - // Mutation event - if (this.rooted) this.ownerDocument.mutateRemoveAttr(attr); - }}, - - removeAttributeNode: { value: function removeAttributeNode(attr) { - var ns = attr.namespaceURI; - var key = (ns === null ? '' : ns) + '|' + attr.localName; - if (this._attrsByLName[key] !== attr) { - utils.NotFoundError(); - } - this.removeAttributeNS(ns, attr.localName); - return attr; - }}, - - getAttributeNames: { value: function getAttributeNames() { - var elt = this; - return this._attrKeys.map(function(key) { - return elt._attrsByLName[key].name; - }); - }}, - - // This 'raw' version of getAttribute is used by the getter functions - // of reflected attributes. It skips some error checking and - // namespace steps - _getattr: { value: function _getattr(qname) { - // Assume that qname is already lowercased, so don't do it here. - // Also don't check whether attr is an array: a qname with no - // prefix will never have two matching Attr objects (because - // setAttributeNS doesn't allow a non-null namespace with a - // null prefix. - var attr = this._attrsByQName[qname]; - return attr ? attr.value : null; - }}, - - // The raw version of setAttribute for reflected idl attributes. - _setattr: { value: function _setattr(qname, value) { - var attr = this._attrsByQName[qname]; - var isnew; - if (!attr) { - attr = this._newattr(qname); - isnew = true; - } - attr.value = String(value); - if (this._attributes) this._attributes[qname] = attr; - if (isnew && this._newattrhook) this._newattrhook(qname, value); - }}, - - // Create a new Attr object, insert it, and return it. - // Used by setAttribute() and by set() - _newattr: { value: function _newattr(qname) { - var attr = new Attr(this, qname, null, null); - var key = '|' + qname; - this._attrsByQName[qname] = attr; - this._attrsByLName[key] = attr; - if (this._attributes) { - this._attributes[this._attrKeys.length] = attr; - } - this._attrKeys.push(key); - return attr; - }}, - - // Add a qname->Attr mapping to the _attrsByQName object, taking into - // account that there may be more than one attr object with the - // same qname - _addQName: { value: function(attr) { - var qname = attr.name; - var existing = this._attrsByQName[qname]; - if (!existing) { - this._attrsByQName[qname] = attr; - } - else if (Array.isArray(existing)) { - existing.push(attr); - } - else { - this._attrsByQName[qname] = [existing, attr]; - } - if (this._attributes) this._attributes[qname] = attr; - }}, - - // Remove a qname->Attr mapping to the _attrsByQName object, taking into - // account that there may be more than one attr object with the - // same qname - _removeQName: { value: function(attr) { - var qname = attr.name; - var target = this._attrsByQName[qname]; - - if (Array.isArray(target)) { - var idx = target.indexOf(attr); - utils.assert(idx !== -1); // It must be here somewhere - if (target.length === 2) { - this._attrsByQName[qname] = target[1-idx]; - if (this._attributes) { - this._attributes[qname] = this._attrsByQName[qname]; - } - } else { - target.splice(idx, 1); - if (this._attributes && this._attributes[qname] === attr) { - this._attributes[qname] = target[0]; - } - } - } - else { - utils.assert(target === attr); // If only one, it must match - this._attrsByQName[qname] = undefined; - if (this._attributes) { - this._attributes[qname] = undefined; - } - } - }}, - - // Return the number of attributes - _numattrs: { get: function() { return this._attrKeys.length; }}, - // Return the nth Attr object - _attr: { value: function(n) { - return this._attrsByLName[this._attrKeys[n]]; - }}, - - // Define getters and setters for an 'id' property that reflects - // the content attribute 'id'. - id: attributes.property({name: 'id'}), - - // Define getters and setters for a 'className' property that reflects - // the content attribute 'class'. - className: attributes.property({name: 'class'}), - - classList: { get: function() { - var self = this; - if (this._classList) { - return this._classList; - } - var dtlist = new DOMTokenList( - function() { - return self.className || ""; - }, - function(v) { - self.className = v; - } - ); - this._classList = dtlist; - return dtlist; - }, set: function(v) { this.className = v; }}, - - matches: { value: function(selector) { - return select.matches(this, selector); - }}, - - closest: { value: function(selector) { - var el = this; - do { - if (el.matches && el.matches(selector)) { return el; } - el = el.parentElement || el.parentNode; - } while (el !== null && el.nodeType === Node.ELEMENT_NODE); - return null; - }}, - - querySelector: { value: function(selector) { - return select(selector, this)[0]; - }}, - - querySelectorAll: { value: function(selector) { - var nodes = select(selector, this); - return nodes.item ? nodes : new NodeList(nodes); - }} - -}); - -Object.defineProperties(Element.prototype, ChildNode); -Object.defineProperties(Element.prototype, NonDocumentTypeChildNode); - -// Register special handling for the id attribute -attributes.registerChangeHandler(Element, 'id', - function(element, lname, oldval, newval) { - if (element.rooted) { - if (oldval) { - element.ownerDocument.delId(oldval, element); - } - if (newval) { - element.ownerDocument.addId(newval, element); - } - } - } -); -attributes.registerChangeHandler(Element, 'class', - function(element, lname, oldval, newval) { - if (element._classList) { element._classList._update(); } - } -); - -// The Attr class represents a single attribute. The values in -// _attrsByQName and _attrsByLName are instances of this class. -function Attr(elt, lname, prefix, namespace, value) { - // localName and namespace are constant for any attr object. - // But value may change. And so can prefix, and so, therefore can name. - this.localName = lname; - this.prefix = (prefix===null || prefix==='') ? null : ('' + prefix); - this.namespaceURI = (namespace===null || namespace==='') ? null : ('' + namespace); - this.data = value; - // Set ownerElement last to ensure it is hooked up to onchange handler - this._setOwnerElement(elt); -} - -// In DOM 3 Attr was supposed to extend Node; in DOM 4 that was abandoned. -Attr.prototype = Object.create(Object.prototype, { - ownerElement: { - get: function() { return this._ownerElement; }, - }, - _setOwnerElement: { value: function _setOwnerElement(elt) { - this._ownerElement = elt; - if (this.prefix === null && this.namespaceURI === null && elt) { - this.onchange = elt._attributeChangeHandlers[this.localName]; - } else { - this.onchange = null; - } - }}, - - name: { get: function() { - return this.prefix ? this.prefix + ':' + this.localName : this.localName; - }}, - - specified: { get: function() { - // Deprecated - return true; - }}, - - value: { - get: function() { - return this.data; - }, - set: function(value) { - var oldval = this.data; - value = (value === undefined) ? '' : value + ''; - if (value === oldval) return; - - this.data = value; - - // Run the onchange hook for the attribute - // if there is one. - if (this.ownerElement) { - if (this.onchange) - this.onchange(this.ownerElement,this.localName, oldval, value); - - // Generate a mutation event if the element is rooted - if (this.ownerElement.rooted) - this.ownerElement.ownerDocument.mutateAttr(this, oldval); - } - }, - }, - - cloneNode: { value: function cloneNode(deep) { - // Both this method and Document#createAttribute*() create unowned Attrs - return new Attr( - null, this.localName, this.prefix, this.namespaceURI, this.data - ); - }}, - - // Legacy aliases (see gh#70 and https://dom.spec.whatwg.org/#interface-attr) - nodeType: { get: function() { return Node.ATTRIBUTE_NODE; } }, - nodeName: { get: function() { return this.name; } }, - nodeValue: { - get: function() { return this.value; }, - set: function(v) { this.value = v; }, - }, - textContent: { - get: function() { return this.value; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } - this.value = v; - }, - }, - innerText: { - get: function() { return this.value; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } - this.value = v; - }, - }, -}); -// Sneakily export this class for use by Document.createAttribute() -Element._Attr = Attr; - -// The attributes property of an Element will be an instance of this class. -// This class is really just a dummy, though. It only defines a length -// property and an item() method. The AttrArrayProxy that -// defines the public API just uses the Element object itself. -function AttributesArray(elt) { - NamedNodeMap.call(this, elt); - for (var name in elt._attrsByQName) { - this[name] = elt._attrsByQName[name]; - } - for (var i = 0; i < elt._attrKeys.length; i++) { - this[i] = elt._attrsByLName[elt._attrKeys[i]]; - } -} -AttributesArray.prototype = Object.create(NamedNodeMap.prototype, { - length: { get: function() { - return this.element._attrKeys.length; - }, set: function() { /* ignore */ } }, - item: { value: function(n) { - /* jshint bitwise: false */ - n = n >>> 0; - if (n >= this.length) { return null; } - return this.element._attrsByLName[this.element._attrKeys[n]]; - /* jshint bitwise: true */ - } }, -}); - -// We can't make direct array access work (without Proxies, node >=6) -// but we can make `Array.from(node.attributes)` and for-of loops work. -if (globalThis.Symbol?.iterator) { - AttributesArray.prototype[globalThis.Symbol.iterator] = function() { - var i=0, n=this.length, self=this; - return { - next: function() { - if (ielement map. - // It is not part of the HTMLCollection API, but we need it in - // src/HTMLCollectionProxy - namedItems: { get: function() { - this.updateCache(); - return this.childrenByName; - } }, - - updateCache: { value: function updateCache() { - var namedElts = /^(a|applet|area|embed|form|frame|frameset|iframe|img|object)$/; - if (this.lastModTime !== this.element.lastModTime) { - this.lastModTime = this.element.lastModTime; - - var n = this.childrenByNumber && this.childrenByNumber.length || 0; - for(var i = 0; i < n; i++) { - this[i] = undefined; - } - - this.childrenByNumber = []; - this.childrenByName = Object.create(null); - - for (var c = this.element.firstChild; c !== null; c = c.nextSibling) { - if (c.nodeType === Node.ELEMENT_NODE) { - - this[this.childrenByNumber.length] = c; - this.childrenByNumber.push(c); - - // XXX Are there any requirements about the namespace - // of the id property? - var id = c.getAttribute('id'); - - // If there is an id that is not already in use... - if (id && !this.childrenByName[id]) - this.childrenByName[id] = c; - - // For certain HTML elements we check the name attribute - var name = c.getAttribute('name'); - if (name && - this.element.namespaceURI === NAMESPACE.HTML && - namedElts.test(this.element.localName) && - !this.childrenByName[name]) - this.childrenByName[id] = c; - } - } - } - } }, -}); - -// These functions return predicates for filtering elements. -// They're used by the Document and Element classes for methods like -// getElementsByTagName and getElementsByClassName - -function localNameElementFilter(lname) { - return function(e) { return e.localName === lname; }; -} - -function htmlLocalNameElementFilter(lname) { - var lclname = utils.toASCIILowerCase(lname); - if (lclname === lname) - return localNameElementFilter(lname); - - return function(e) { - return e.isHTML ? e.localName === lclname : e.localName === lname; - }; -} - -function namespaceElementFilter(ns) { - return function(e) { return e.namespaceURI === ns; }; -} - -function namespaceLocalNameElementFilter(ns, lname) { - return function(e) { - return e.namespaceURI === ns && e.localName === lname; - }; -} - -function classNamesElementFilter(names) { - return function(e) { - return names.every(function(n) { return e.classList.contains(n); }); - }; -} - -function elementNameFilter(name) { - return function(e) { - // All the *HTML elements* in the document with the given name attribute - if (e.namespaceURI !== NAMESPACE.HTML) { return false; } - return e.getAttribute('name') === name; - }; -} - - -/***/ }), - -/***/ 13441: -/***/ ((module) => { - -"use strict"; - -module.exports = Event; - -Event.CAPTURING_PHASE = 1; -Event.AT_TARGET = 2; -Event.BUBBLING_PHASE = 3; - -function Event(type, dictionary) { - // Initialize basic event properties - this.type = ''; - this.target = null; - this.currentTarget = null; - this.eventPhase = Event.AT_TARGET; - this.bubbles = false; - this.cancelable = false; - this.isTrusted = false; - this.defaultPrevented = false; - this.timeStamp = Date.now(); - - // Initialize internal flags - // XXX: Would it be better to inherit these defaults from the prototype? - this._propagationStopped = false; - this._immediatePropagationStopped = false; - this._initialized = true; - this._dispatching = false; - - // Now initialize based on the constructor arguments (if any) - if (type) this.type = type; - if (dictionary) { - for(var p in dictionary) { - this[p] = dictionary[p]; - } - } -} - -Event.prototype = Object.create(Object.prototype, { - constructor: { value: Event }, - stopPropagation: { value: function stopPropagation() { - this._propagationStopped = true; - }}, - - stopImmediatePropagation: { value: function stopImmediatePropagation() { - this._propagationStopped = true; - this._immediatePropagationStopped = true; - }}, - - preventDefault: { value: function preventDefault() { - if (this.cancelable) this.defaultPrevented = true; - }}, - - initEvent: { value: function initEvent(type, bubbles, cancelable) { - this._initialized = true; - if (this._dispatching) return; - - this._propagationStopped = false; - this._immediatePropagationStopped = false; - this.defaultPrevented = false; - this.isTrusted = false; - - this.target = null; - this.type = type; - this.bubbles = bubbles; - this.cancelable = cancelable; - }}, - -}); - - -/***/ }), - -/***/ 22356: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Event = __webpack_require__(13441); -var MouseEvent = __webpack_require__(21440); -var utils = __webpack_require__(89076); - -module.exports = EventTarget; - -function EventTarget() {} - -EventTarget.prototype = { - // XXX - // See WebIDL §4.8 for details on object event handlers - // and how they should behave. We actually have to accept - // any object to addEventListener... Can't type check it. - // on registration. - - // XXX: - // Capturing event listeners are sort of rare. I think I can optimize - // them so that dispatchEvent can skip the capturing phase (or much of - // it). Each time a capturing listener is added, increment a flag on - // the target node and each of its ancestors. Decrement when removed. - // And update the counter when nodes are added and removed from the - // tree as well. Then, in dispatch event, the capturing phase can - // abort if it sees any node with a zero count. - addEventListener: function addEventListener(type, listener, capture) { - if (!listener) return; - if (capture === undefined) capture = false; - if (!this._listeners) this._listeners = Object.create(null); - if (!this._listeners[type]) this._listeners[type] = []; - var list = this._listeners[type]; - - // If this listener has already been registered, just return - for(var i = 0, n = list.length; i < n; i++) { - var l = list[i]; - if (l.listener === listener && l.capture === capture) - return; - } - - // Add an object to the list of listeners - var obj = { listener: listener, capture: capture }; - if (typeof listener === 'function') obj.f = listener; - list.push(obj); - }, - - removeEventListener: function removeEventListener(type, - listener, - capture) { - if (capture === undefined) capture = false; - if (this._listeners) { - var list = this._listeners[type]; - if (list) { - // Find the listener in the list and remove it - for(var i = 0, n = list.length; i < n; i++) { - var l = list[i]; - if (l.listener === listener && l.capture === capture) { - if (list.length === 1) { - this._listeners[type] = undefined; - } - else { - list.splice(i, 1); - } - return; - } - } - } - } - }, - - // This is the public API for dispatching untrusted public events. - // See _dispatchEvent for the implementation - dispatchEvent: function dispatchEvent(event) { - // Dispatch an untrusted event - return this._dispatchEvent(event, false); - }, - - // - // See DOMCore §4.4 - // XXX: I'll probably need another version of this method for - // internal use, one that does not set isTrusted to false. - // XXX: see Document._dispatchEvent: perhaps that and this could - // call a common internal function with different settings of - // a trusted boolean argument - // - // XXX: - // The spec has changed in how to deal with handlers registered - // on idl or content attributes rather than with addEventListener. - // Used to say that they always ran first. That's how webkit does it - // Spec now says that they run in a position determined by - // when they were first set. FF does it that way. See: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/webappapis.html#event-handlers - // - _dispatchEvent: function _dispatchEvent(event, trusted) { - if (typeof trusted !== 'boolean') trusted = false; - function invoke(target, event) { - var type = event.type, phase = event.eventPhase; - event.currentTarget = target; - - // If there was an individual handler defined, invoke it first - // XXX: see comment above: this shouldn't always be first. - if (phase !== Event.CAPTURING_PHASE && - target._handlers && target._handlers[type]) - { - var handler = target._handlers[type]; - var rv; - if (typeof handler === 'function') { - rv=handler.call(event.currentTarget, event); - } - else { - var f = handler.handleEvent; - if (typeof f !== 'function') - throw new TypeError('handleEvent property of ' + - 'event handler object is' + - 'not a function.'); - rv=f.call(handler, event); - } - - switch(event.type) { - case 'mouseover': - if (rv === true) // Historical baggage - event.preventDefault(); - break; - case 'beforeunload': - // XXX: eventually we need a special case here - /* falls through */ - default: - if (rv === false) - event.preventDefault(); - break; - } - } - - // Now invoke list list of listeners for this target and type - var list = target._listeners && target._listeners[type]; - if (!list) return; - list = list.slice(); - for(var i = 0, n = list.length; i < n; i++) { - if (event._immediatePropagationStopped) return; - var l = list[i]; - if ((phase === Event.CAPTURING_PHASE && !l.capture) || - (phase === Event.BUBBLING_PHASE && l.capture)) - continue; - if (l.f) { - l.f.call(event.currentTarget, event); - } - else { - var fn = l.listener.handleEvent; - if (typeof fn !== 'function') - throw new TypeError('handleEvent property of event listener object is not a function.'); - fn.call(l.listener, event); - } - } - } - - if (!event._initialized || event._dispatching) utils.InvalidStateError(); - event.isTrusted = trusted; - - // Begin dispatching the event now - event._dispatching = true; - event.target = this; - - // Build the list of targets for the capturing and bubbling phases - // XXX: we'll eventually have to add Window to this list. - var ancestors = []; - for(var n = this.parentNode; n; n = n.parentNode) - ancestors.push(n); - - // Capturing phase - event.eventPhase = Event.CAPTURING_PHASE; - for(var i = ancestors.length-1; i >= 0; i--) { - invoke(ancestors[i], event); - if (event._propagationStopped) break; - } - - // At target phase - if (!event._propagationStopped) { - event.eventPhase = Event.AT_TARGET; - invoke(this, event); - } - - // Bubbling phase - if (event.bubbles && !event._propagationStopped) { - event.eventPhase = Event.BUBBLING_PHASE; - for(var ii = 0, nn = ancestors.length; ii < nn; ii++) { - invoke(ancestors[ii], event); - if (event._propagationStopped) break; - } - } - - event._dispatching = false; - event.eventPhase = Event.AT_TARGET; - event.currentTarget = null; - - // Deal with mouse events and figure out when - // a click has happened - if (trusted && !event.defaultPrevented && event instanceof MouseEvent) { - switch(event.type) { - case 'mousedown': - this._armed = { - x: event.clientX, - y: event.clientY, - t: event.timeStamp - }; - break; - case 'mouseout': - case 'mouseover': - this._armed = null; - break; - case 'mouseup': - if (this._isClick(event)) this._doClick(event); - this._armed = null; - break; - } - } - - - - return !event.defaultPrevented; - }, - - // Determine whether a click occurred - // XXX We don't support double clicks for now - _isClick: function(event) { - return (this._armed !== null && - event.type === 'mouseup' && - event.isTrusted && - event.button === 0 && - event.timeStamp - this._armed.t < 1000 && - Math.abs(event.clientX - this._armed.x) < 10 && - Math.abs(event.clientY - this._armed.Y) < 10); - }, - - // Clicks are handled like this: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/elements.html#interactive-content-0 - // - // Note that this method is similar to the HTMLElement.click() method - // The event argument must be the trusted mouseup event - _doClick: function(event) { - if (this._click_in_progress) return; - this._click_in_progress = true; - - // Find the nearest enclosing element that is activatable - // An element is activatable if it has a - // _post_click_activation_steps hook - var activated = this; - while(activated && !activated._post_click_activation_steps) - activated = activated.parentNode; - - if (activated && activated._pre_click_activation_steps) { - activated._pre_click_activation_steps(); - } - - var click = this.ownerDocument.createEvent('MouseEvent'); - click.initMouseEvent('click', true, true, - this.ownerDocument.defaultView, 1, - event.screenX, event.screenY, - event.clientX, event.clientY, - event.ctrlKey, event.altKey, - event.shiftKey, event.metaKey, - event.button, null); - - var result = this._dispatchEvent(click, true); - - if (activated) { - if (result) { - // This is where hyperlinks get followed, for example. - if (activated._post_click_activation_steps) - activated._post_click_activation_steps(click); - } - else { - if (activated._cancelled_activation_steps) - activated._cancelled_activation_steps(); - } - } - }, - - // - // An event handler is like an event listener, but it registered - // by setting an IDL or content attribute like onload or onclick. - // There can only be one of these at a time for any event type. - // This is an internal method for the attribute accessors and - // content attribute handlers that need to register events handlers. - // The type argument is the same as in addEventListener(). - // The handler argument is the same as listeners in addEventListener: - // it can be a function or an object. Pass null to remove any existing - // handler. Handlers are always invoked before any listeners of - // the same type. They are not invoked during the capturing phase - // of event dispatch. - // - _setEventHandler: function _setEventHandler(type, handler) { - if (!this._handlers) this._handlers = Object.create(null); - this._handlers[type] = handler; - }, - - _getEventHandler: function _getEventHandler(type) { - return (this._handlers && this._handlers[type]) || null; - } - -}; - - -/***/ }), - -/***/ 61676: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = FilteredElementList; - -var Node = __webpack_require__(97537); - -// -// This file defines node list implementation that lazily traverses -// the document tree (or a subtree rooted at any element) and includes -// only those elements for which a specified filter function returns true. -// It is used to implement the -// {Document,Element}.getElementsBy{TagName,ClassName}{,NS} methods. -// -// XXX this should inherit from NodeList - -function FilteredElementList(root, filter) { - this.root = root; - this.filter = filter; - this.lastModTime = root.lastModTime; - this.done = false; - this.cache = []; - this.traverse(); -} - -FilteredElementList.prototype = Object.create(Object.prototype, { - length: { get: function() { - this.checkcache(); - if (!this.done) this.traverse(); - return this.cache.length; - } }, - - item: { value: function(n) { - this.checkcache(); - if (!this.done && n >= this.cache.length) { - // This can lead to O(N^2) behavior if we stop when we get to n - // and the caller is iterating through the items in order; so - // be sure to do the full traverse here. - this.traverse(/*n*/); - } - return this.cache[n]; - } }, - - checkcache: { value: function() { - if (this.lastModTime !== this.root.lastModTime) { - // subtree has changed, so invalidate cache - for (var i = this.cache.length-1; i>=0; i--) { - this[i] = undefined; - } - this.cache.length = 0; - this.done = false; - this.lastModTime = this.root.lastModTime; - } - } }, - - // If n is specified, then traverse the tree until we've found the nth - // item (or until we've found all items). If n is not specified, - // traverse until we've found all items. - traverse: { value: function(n) { - // increment n so we can compare to length, and so it is never falsy - if (n !== undefined) n++; - - var elt; - while ((elt = this.next()) !== null) { - this[this.cache.length] = elt; //XXX Use proxy instead - this.cache.push(elt); - if (n && this.cache.length === n) return; - } - - // no next element, so we've found everything - this.done = true; - } }, - - // Return the next element under root that matches filter - next: { value: function() { - var start = (this.cache.length === 0) ? this.root // Start at the root or at - : this.cache[this.cache.length-1]; // the last element we found - - var elt; - if (start.nodeType === Node.DOCUMENT_NODE) - elt = start.documentElement; - else - elt = start.nextElement(this.root); - - while(elt) { - if (this.filter(elt)) { - return elt; - } - - elt = elt.nextElement(this.root); - } - return null; - } }, -}); - - -/***/ }), - -/***/ 91895: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = HTMLParser; - -var Document = __webpack_require__(35452); -var DocumentType = __webpack_require__(73092); -var Node = __webpack_require__(97537); -var NAMESPACE = (__webpack_require__(89076).NAMESPACE); -var html = __webpack_require__(96324); -var impl = html.elements; - -var pushAll = Function.prototype.apply.bind(Array.prototype.push); - -/* - * This file contains an implementation of the HTML parsing algorithm. - * The algorithm and the implementation are complex because HTML - * explicitly defines how the parser should behave for all possible - * valid and invalid inputs. - * - * Usage: - * - * The file defines a single HTMLParser() function, which dom.js exposes - * publicly as document.implementation.mozHTMLParser(). This is a - * factory function, not a constructor. - * - * When you call document.implementation.mozHTMLParser(), it returns - * an object that has parse() and document() methods. To parse HTML text, - * pass the text (in one or more chunks) to the parse() method. When - * you've passed all the text (on the last chunk, or afterward) pass - * true as the second argument to parse() to tell the parser that there - * is no more coming. Call document() to get the document object that - * the parser is parsing into. You can call this at any time, before - * or after calling parse(). - * - * The first argument to mozHTMLParser is the absolute URL of the document. - * - * The second argument is optional and is for internal use only. Pass an - * element as the fragmentContext to do innerHTML parsing for the - * element. To do innerHTML parsing on a document, pass null. Otherwise, - * omit the 2nd argument. See HTMLElement.innerHTML for an example. Note - * that if you pass a context element, the end() method will return an - * unwrapped document instead of a wrapped one. - * - * Implementation details: - * - * This is a long file of almost 7000 lines. It is structured as one - * big function nested within another big function. The outer - * function defines a bunch of constant data, utility functions - * that use that data, and a couple of classes used by the parser. - * The outer function also defines and returns the - * inner function. This inner function is the HTMLParser factory - * function that implements the parser and holds all the parser state - * as local variables. The HTMLParser function is quite big because - * it defines many nested functions that use those local variables. - * - * There are three tightly coupled parser stages: a scanner, a - * tokenizer and a tree builder. In a (possibly misguided) attempt at - * efficiency, the stages are not implemented as separate classes: - * everything shares state and is (mostly) implemented in imperative - * (rather than OO) style. - * - * The stages of the parser work like this: When the client code calls - * the parser's parse() method, the specified string is passed to - * scanChars(). The scanner loops through that string and passes characters - * (sometimes one at a time, sometimes in chunks) to the tokenizer stage. - * The tokenizer groups the characters into tokens: tags, endtags, runs - * of text, comments, doctype declarations, and the end-of-file (EOF) - * token. These tokens are then passed to the tree building stage via - * the insertToken() function. The tree building stage builds up the - * document tree. - * - * The tokenizer stage is a finite state machine. Each state is - * implemented as a function with a name that ends in "_state". The - * initial state is data_state(). The current tokenizer state is stored - * in the variable 'tokenizer'. Most state functions expect a single - * integer argument which represents a single UTF-16 codepoint. Some - * states want more characters and set a lookahead property on - * themselves. The scanChars() function in the scanner checks for this - * lookahead property. If it doesn't exist, then scanChars() just passes - * the next input character to the current tokenizer state function. - * Otherwise, scanChars() looks ahead (a given # of characters, or for a - * matching string, or for a matching regexp) and passes a string of - * characters to the current tokenizer state function. - * - * As a shortcut, certain states of the tokenizer use regular expressions - * to look ahead in the scanner's input buffer for runs of text, simple - * tags and attributes. For well-formed input, these shortcuts skip a - * lot of state transitions and speed things up a bit. - * - * When a tokenizer state function has consumed a complete token, it - * emits that token, by calling insertToken(), or by calling a utility - * function that itself calls insertToken(). These tokens are passed to - * the tree building stage, which is also a state machine. Like the - * tokenizer, the tree building states are implemented as functions, and - * these functions have names that end with _mode (because the HTML spec - * refers to them as insertion modes). The current insertion mode is held - * by the 'parser' variable. Each insertion mode function takes up to 4 - * arguments. The first is a token type, represented by the constants - * TAG, ENDTAG, TEXT, COMMENT, DOCTYPE and EOF. The second argument is - * the value of the token: the text or comment data, or tagname or - * doctype. For tags, the 3rd argument is an array of attributes. For - * DOCTYPES it is the optional public id. For tags, the 4th argument is - * true if the tag is self-closing. For doctypes, the 4th argument is the - * optional system id. - * - * Search for "***" to find the major sub-divisions in the code. - */ - - -/*** - * Data prolog. Lots of constants declared here, including some - * very large objects. They're used throughout the code that follows - */ -// Token types for the tree builder. -var EOF = -1; -var TEXT = 1; -var TAG = 2; -var ENDTAG = 3; -var COMMENT = 4; -var DOCTYPE = 5; - -// A re-usable empty array -var NOATTRS = []; - -// These DTD public ids put the browser in quirks mode -var quirkyPublicIds = /^HTML$|^-\/\/W3O\/\/DTD W3 HTML Strict 3\.0\/\/EN\/\/$|^-\/W3C\/DTD HTML 4\.0 Transitional\/EN$|^\+\/\/Silmaril\/\/dtd html Pro v0r11 19970101\/\/|^-\/\/AdvaSoft Ltd\/\/DTD HTML 3\.0 asWedit \+ extensions\/\/|^-\/\/AS\/\/DTD HTML 3\.0 asWedit \+ extensions\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Level 1\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Level 2\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict Level 1\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict Level 2\/\/|^-\/\/IETF\/\/DTD HTML 2\.0 Strict\/\/|^-\/\/IETF\/\/DTD HTML 2\.0\/\/|^-\/\/IETF\/\/DTD HTML 2\.1E\/\/|^-\/\/IETF\/\/DTD HTML 3\.0\/\/|^-\/\/IETF\/\/DTD HTML 3\.2 Final\/\/|^-\/\/IETF\/\/DTD HTML 3\.2\/\/|^-\/\/IETF\/\/DTD HTML 3\/\/|^-\/\/IETF\/\/DTD HTML Level 0\/\/|^-\/\/IETF\/\/DTD HTML Level 1\/\/|^-\/\/IETF\/\/DTD HTML Level 2\/\/|^-\/\/IETF\/\/DTD HTML Level 3\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 0\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 1\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 2\/\/|^-\/\/IETF\/\/DTD HTML Strict Level 3\/\/|^-\/\/IETF\/\/DTD HTML Strict\/\/|^-\/\/IETF\/\/DTD HTML\/\/|^-\/\/Metrius\/\/DTD Metrius Presentational\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 HTML Strict\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 HTML\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 2\.0 Tables\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 HTML Strict\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 HTML\/\/|^-\/\/Microsoft\/\/DTD Internet Explorer 3\.0 Tables\/\/|^-\/\/Netscape Comm\. Corp\.\/\/DTD HTML\/\/|^-\/\/Netscape Comm\. Corp\.\/\/DTD Strict HTML\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML 2\.0\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML Extended 1\.0\/\/|^-\/\/O'Reilly and Associates\/\/DTD HTML Extended Relaxed 1\.0\/\/|^-\/\/SoftQuad Software\/\/DTD HoTMetaL PRO 6\.0::19990601::extensions to HTML 4\.0\/\/|^-\/\/SoftQuad\/\/DTD HoTMetaL PRO 4\.0::19971010::extensions to HTML 4\.0\/\/|^-\/\/Spyglass\/\/DTD HTML 2\.0 Extended\/\/|^-\/\/SQ\/\/DTD HTML 2\.0 HoTMetaL \+ extensions\/\/|^-\/\/Sun Microsystems Corp\.\/\/DTD HotJava HTML\/\/|^-\/\/Sun Microsystems Corp\.\/\/DTD HotJava Strict HTML\/\/|^-\/\/W3C\/\/DTD HTML 3 1995-03-24\/\/|^-\/\/W3C\/\/DTD HTML 3\.2 Draft\/\/|^-\/\/W3C\/\/DTD HTML 3\.2 Final\/\/|^-\/\/W3C\/\/DTD HTML 3\.2\/\/|^-\/\/W3C\/\/DTD HTML 3\.2S Draft\/\/|^-\/\/W3C\/\/DTD HTML 4\.0 Frameset\/\/|^-\/\/W3C\/\/DTD HTML 4\.0 Transitional\/\/|^-\/\/W3C\/\/DTD HTML Experimental 19960712\/\/|^-\/\/W3C\/\/DTD HTML Experimental 970421\/\/|^-\/\/W3C\/\/DTD W3 HTML\/\/|^-\/\/W3O\/\/DTD W3 HTML 3\.0\/\/|^-\/\/WebTechs\/\/DTD Mozilla HTML 2\.0\/\/|^-\/\/WebTechs\/\/DTD Mozilla HTML\/\//i; - -var quirkySystemId = "http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"; - -var conditionallyQuirkyPublicIds = /^-\/\/W3C\/\/DTD HTML 4\.01 Frameset\/\/|^-\/\/W3C\/\/DTD HTML 4\.01 Transitional\/\//i; - -// These DTD public ids put the browser in limited quirks mode -var limitedQuirkyPublicIds = /^-\/\/W3C\/\/DTD XHTML 1\.0 Frameset\/\/|^-\/\/W3C\/\/DTD XHTML 1\.0 Transitional\/\//i; - - -// Element sets below. See the isA() function for a way to test -// whether an element is a member of a set -var specialSet = Object.create(null); -specialSet[NAMESPACE.HTML] = { - __proto__: null, - "address":true, "applet":true, "area":true, "article":true, - "aside":true, "base":true, "basefont":true, "bgsound":true, - "blockquote":true, "body":true, "br":true, "button":true, - "caption":true, "center":true, "col":true, "colgroup":true, - "dd":true, "details":true, "dir":true, - "div":true, "dl":true, "dt":true, "embed":true, - "fieldset":true, "figcaption":true, "figure":true, "footer":true, - "form":true, "frame":true, "frameset":true, "h1":true, - "h2":true, "h3":true, "h4":true, "h5":true, - "h6":true, "head":true, "header":true, "hgroup":true, - "hr":true, "html":true, "iframe":true, "img":true, - "input":true, "li":true, "link":true, - "listing":true, "main":true, "marquee":true, "menu":true, "meta":true, - "nav":true, "noembed":true, "noframes":true, "noscript":true, - "object":true, "ol":true, "p":true, "param":true, - "plaintext":true, "pre":true, "script":true, "section":true, - "select":true, "source":true, "style":true, "summary":true, "table":true, - "tbody":true, "td":true, "template":true, "textarea":true, "tfoot":true, - "th":true, "thead":true, "title":true, "tr":true, "track":true, - // Note that "xmp" was removed from the "special" set in the latest - // spec, apparently by accident; see - // https://github.com/whatwg/html/pull/1919 - "ul":true, "wbr":true, "xmp":true -}; -specialSet[NAMESPACE.SVG] = { - __proto__: null, - "foreignObject": true, "desc": true, "title": true -}; -specialSet[NAMESPACE.MATHML] = { - __proto__: null, - "mi":true, "mo":true, "mn":true, "ms":true, - "mtext":true, "annotation-xml":true -}; - -// The set of address, div, and p HTML tags -var addressdivpSet = Object.create(null); -addressdivpSet[NAMESPACE.HTML] = { - __proto__: null, - "address":true, "div":true, "p":true -}; - -var dddtSet = Object.create(null); -dddtSet[NAMESPACE.HTML] = { - __proto__: null, - "dd":true, "dt":true -}; - -var tablesectionrowSet = Object.create(null); -tablesectionrowSet[NAMESPACE.HTML] = { - __proto__: null, - "table":true, "thead":true, "tbody":true, "tfoot":true, "tr":true -}; - -var impliedEndTagsSet = Object.create(null); -impliedEndTagsSet[NAMESPACE.HTML] = { - __proto__: null, - "dd": true, "dt": true, "li": true, "menuitem": true, "optgroup": true, - "option": true, "p": true, "rb": true, "rp": true, "rt": true, "rtc": true -}; - -var thoroughImpliedEndTagsSet = Object.create(null); -thoroughImpliedEndTagsSet[NAMESPACE.HTML] = { - __proto__: null, - "caption": true, "colgroup": true, "dd": true, "dt": true, "li": true, - "optgroup": true, "option": true, "p": true, "rb": true, "rp": true, - "rt": true, "rtc": true, "tbody": true, "td": true, "tfoot": true, - "th": true, "thead": true, "tr": true -}; - -var tableContextSet = Object.create(null); -tableContextSet[NAMESPACE.HTML] = { - __proto__: null, - "table": true, "template": true, "html": true -}; - -var tableBodyContextSet = Object.create(null); -tableBodyContextSet[NAMESPACE.HTML] = { - __proto__: null, - "tbody": true, "tfoot": true, "thead": true, "template": true, "html": true -}; - -var tableRowContextSet = Object.create(null); -tableRowContextSet[NAMESPACE.HTML] = { - __proto__: null, - "tr": true, "template": true, "html": true -}; - -// See http://www.w3.org/TR/html5/forms.html#form-associated-element -var formassociatedSet = Object.create(null); -formassociatedSet[NAMESPACE.HTML] = { - __proto__: null, - "button": true, "fieldset": true, "input": true, "keygen": true, - "object": true, "output": true, "select": true, "textarea": true, - "img": true -}; - -var inScopeSet = Object.create(null); -inScopeSet[NAMESPACE.HTML]= { - __proto__: null, - "applet":true, "caption":true, "html":true, "table":true, - "td":true, "th":true, "marquee":true, "object":true, - "template":true -}; -inScopeSet[NAMESPACE.MATHML] = { - __proto__: null, - "mi":true, "mo":true, "mn":true, "ms":true, - "mtext":true, "annotation-xml":true -}; -inScopeSet[NAMESPACE.SVG] = { - __proto__: null, - "foreignObject":true, "desc":true, "title":true -}; - -var inListItemScopeSet = Object.create(inScopeSet); -inListItemScopeSet[NAMESPACE.HTML] = - Object.create(inScopeSet[NAMESPACE.HTML]); -inListItemScopeSet[NAMESPACE.HTML].ol = true; -inListItemScopeSet[NAMESPACE.HTML].ul = true; - -var inButtonScopeSet = Object.create(inScopeSet); -inButtonScopeSet[NAMESPACE.HTML] = - Object.create(inScopeSet[NAMESPACE.HTML]); -inButtonScopeSet[NAMESPACE.HTML].button = true; - -var inTableScopeSet = Object.create(null); -inTableScopeSet[NAMESPACE.HTML] = { - __proto__: null, - "html":true, "table":true, "template":true -}; - -// The set of elements for select scope is the everything *except* these -var invertedSelectScopeSet = Object.create(null); -invertedSelectScopeSet[NAMESPACE.HTML] = { - __proto__: null, - "optgroup":true, "option":true -}; - -var mathmlTextIntegrationPointSet = Object.create(null); -mathmlTextIntegrationPointSet[NAMESPACE.MATHML] = { - __proto__: null, - mi: true, - mo: true, - mn: true, - ms: true, - mtext: true -}; - -var htmlIntegrationPointSet = Object.create(null); -htmlIntegrationPointSet[NAMESPACE.SVG] = { - __proto__: null, - foreignObject: true, - desc: true, - title: true -}; - -var foreignAttributes = { - __proto__: null, - "xlink:actuate": NAMESPACE.XLINK, "xlink:arcrole": NAMESPACE.XLINK, - "xlink:href": NAMESPACE.XLINK, "xlink:role": NAMESPACE.XLINK, - "xlink:show": NAMESPACE.XLINK, "xlink:title": NAMESPACE.XLINK, - "xlink:type": NAMESPACE.XLINK, "xml:base": NAMESPACE.XML, - "xml:lang": NAMESPACE.XML, "xml:space": NAMESPACE.XML, - "xmlns": NAMESPACE.XMLNS, "xmlns:xlink": NAMESPACE.XMLNS -}; - - -// Lowercase to mixed case mapping for SVG attributes and tagnames -var svgAttrAdjustments = { - __proto__: null, - attributename: "attributeName", attributetype: "attributeType", - basefrequency: "baseFrequency", baseprofile: "baseProfile", - calcmode: "calcMode", clippathunits: "clipPathUnits", - diffuseconstant: "diffuseConstant", - edgemode: "edgeMode", - filterunits: "filterUnits", - glyphref: "glyphRef", gradienttransform: "gradientTransform", - gradientunits: "gradientUnits", kernelmatrix: "kernelMatrix", - kernelunitlength: "kernelUnitLength", keypoints: "keyPoints", - keysplines: "keySplines", keytimes: "keyTimes", - lengthadjust: "lengthAdjust", limitingconeangle: "limitingConeAngle", - markerheight: "markerHeight", markerunits: "markerUnits", - markerwidth: "markerWidth", maskcontentunits: "maskContentUnits", - maskunits: "maskUnits", numoctaves: "numOctaves", - pathlength: "pathLength", patterncontentunits: "patternContentUnits", - patterntransform: "patternTransform", patternunits: "patternUnits", - pointsatx: "pointsAtX", pointsaty: "pointsAtY", - pointsatz: "pointsAtZ", preservealpha: "preserveAlpha", - preserveaspectratio: "preserveAspectRatio", - primitiveunits: "primitiveUnits", refx: "refX", - refy: "refY", repeatcount: "repeatCount", - repeatdur: "repeatDur", requiredextensions: "requiredExtensions", - requiredfeatures: "requiredFeatures", - specularconstant: "specularConstant", - specularexponent: "specularExponent", spreadmethod: "spreadMethod", - startoffset: "startOffset", stddeviation: "stdDeviation", - stitchtiles: "stitchTiles", surfacescale: "surfaceScale", - systemlanguage: "systemLanguage", tablevalues: "tableValues", - targetx: "targetX", targety: "targetY", - textlength: "textLength", viewbox: "viewBox", - viewtarget: "viewTarget", xchannelselector: "xChannelSelector", - ychannelselector: "yChannelSelector", zoomandpan: "zoomAndPan" -}; - -var svgTagNameAdjustments = { - __proto__: null, - altglyph: "altGlyph", altglyphdef: "altGlyphDef", - altglyphitem: "altGlyphItem", animatecolor: "animateColor", - animatemotion: "animateMotion", animatetransform: "animateTransform", - clippath: "clipPath", feblend: "feBlend", - fecolormatrix: "feColorMatrix", - fecomponenttransfer: "feComponentTransfer", fecomposite: "feComposite", - feconvolvematrix: "feConvolveMatrix", - fediffuselighting: "feDiffuseLighting", - fedisplacementmap: "feDisplacementMap", - fedistantlight: "feDistantLight", feflood: "feFlood", - fefunca: "feFuncA", fefuncb: "feFuncB", - fefuncg: "feFuncG", fefuncr: "feFuncR", - fegaussianblur: "feGaussianBlur", feimage: "feImage", - femerge: "feMerge", femergenode: "feMergeNode", - femorphology: "feMorphology", feoffset: "feOffset", - fepointlight: "fePointLight", fespecularlighting: "feSpecularLighting", - fespotlight: "feSpotLight", fetile: "feTile", - feturbulence: "feTurbulence", foreignobject: "foreignObject", - glyphref: "glyphRef", lineargradient: "linearGradient", - radialgradient: "radialGradient", textpath: "textPath" -}; - - -// Data for parsing numeric and named character references -// These next 3 objects are direct translations of tables -// in the HTML spec into JavaScript object format -var numericCharRefReplacements = { - __proto__: null, - 0x00:0xFFFD, 0x80:0x20AC, 0x82:0x201A, 0x83:0x0192, 0x84:0x201E, - 0x85:0x2026, 0x86:0x2020, 0x87:0x2021, 0x88:0x02C6, 0x89:0x2030, - 0x8A:0x0160, 0x8B:0x2039, 0x8C:0x0152, 0x8E:0x017D, 0x91:0x2018, - 0x92:0x2019, 0x93:0x201C, 0x94:0x201D, 0x95:0x2022, 0x96:0x2013, - 0x97:0x2014, 0x98:0x02DC, 0x99:0x2122, 0x9A:0x0161, 0x9B:0x203A, - 0x9C:0x0153, 0x9E:0x017E, 0x9F:0x0178 -}; - -/* - * This table is generated with test/tools/update-entities.js - */ -var namedCharRefs = { - __proto__: null, - "AElig":0xc6, "AElig;":0xc6, - "AMP":0x26, "AMP;":0x26, - "Aacute":0xc1, "Aacute;":0xc1, - "Abreve;":0x102, "Acirc":0xc2, - "Acirc;":0xc2, "Acy;":0x410, - "Afr;":[0xd835,0xdd04], "Agrave":0xc0, - "Agrave;":0xc0, "Alpha;":0x391, - "Amacr;":0x100, "And;":0x2a53, - "Aogon;":0x104, "Aopf;":[0xd835,0xdd38], - "ApplyFunction;":0x2061, "Aring":0xc5, - "Aring;":0xc5, "Ascr;":[0xd835,0xdc9c], - "Assign;":0x2254, "Atilde":0xc3, - "Atilde;":0xc3, "Auml":0xc4, - "Auml;":0xc4, "Backslash;":0x2216, - "Barv;":0x2ae7, "Barwed;":0x2306, - "Bcy;":0x411, "Because;":0x2235, - "Bernoullis;":0x212c, "Beta;":0x392, - "Bfr;":[0xd835,0xdd05], "Bopf;":[0xd835,0xdd39], - "Breve;":0x2d8, "Bscr;":0x212c, - "Bumpeq;":0x224e, "CHcy;":0x427, - "COPY":0xa9, "COPY;":0xa9, - "Cacute;":0x106, "Cap;":0x22d2, - "CapitalDifferentialD;":0x2145, "Cayleys;":0x212d, - "Ccaron;":0x10c, "Ccedil":0xc7, - "Ccedil;":0xc7, "Ccirc;":0x108, - "Cconint;":0x2230, "Cdot;":0x10a, - "Cedilla;":0xb8, "CenterDot;":0xb7, - "Cfr;":0x212d, "Chi;":0x3a7, - "CircleDot;":0x2299, "CircleMinus;":0x2296, - "CirclePlus;":0x2295, "CircleTimes;":0x2297, - "ClockwiseContourIntegral;":0x2232, "CloseCurlyDoubleQuote;":0x201d, - "CloseCurlyQuote;":0x2019, "Colon;":0x2237, - "Colone;":0x2a74, "Congruent;":0x2261, - "Conint;":0x222f, "ContourIntegral;":0x222e, - "Copf;":0x2102, "Coproduct;":0x2210, - "CounterClockwiseContourIntegral;":0x2233, "Cross;":0x2a2f, - "Cscr;":[0xd835,0xdc9e], "Cup;":0x22d3, - "CupCap;":0x224d, "DD;":0x2145, - "DDotrahd;":0x2911, "DJcy;":0x402, - "DScy;":0x405, "DZcy;":0x40f, - "Dagger;":0x2021, "Darr;":0x21a1, - "Dashv;":0x2ae4, "Dcaron;":0x10e, - "Dcy;":0x414, "Del;":0x2207, - "Delta;":0x394, "Dfr;":[0xd835,0xdd07], - "DiacriticalAcute;":0xb4, "DiacriticalDot;":0x2d9, - "DiacriticalDoubleAcute;":0x2dd, "DiacriticalGrave;":0x60, - "DiacriticalTilde;":0x2dc, "Diamond;":0x22c4, - "DifferentialD;":0x2146, "Dopf;":[0xd835,0xdd3b], - "Dot;":0xa8, "DotDot;":0x20dc, - "DotEqual;":0x2250, "DoubleContourIntegral;":0x222f, - "DoubleDot;":0xa8, "DoubleDownArrow;":0x21d3, - "DoubleLeftArrow;":0x21d0, "DoubleLeftRightArrow;":0x21d4, - "DoubleLeftTee;":0x2ae4, "DoubleLongLeftArrow;":0x27f8, - "DoubleLongLeftRightArrow;":0x27fa, "DoubleLongRightArrow;":0x27f9, - "DoubleRightArrow;":0x21d2, "DoubleRightTee;":0x22a8, - "DoubleUpArrow;":0x21d1, "DoubleUpDownArrow;":0x21d5, - "DoubleVerticalBar;":0x2225, "DownArrow;":0x2193, - "DownArrowBar;":0x2913, "DownArrowUpArrow;":0x21f5, - "DownBreve;":0x311, "DownLeftRightVector;":0x2950, - "DownLeftTeeVector;":0x295e, "DownLeftVector;":0x21bd, - "DownLeftVectorBar;":0x2956, "DownRightTeeVector;":0x295f, - "DownRightVector;":0x21c1, "DownRightVectorBar;":0x2957, - "DownTee;":0x22a4, "DownTeeArrow;":0x21a7, - "Downarrow;":0x21d3, "Dscr;":[0xd835,0xdc9f], - "Dstrok;":0x110, "ENG;":0x14a, - "ETH":0xd0, "ETH;":0xd0, - "Eacute":0xc9, "Eacute;":0xc9, - "Ecaron;":0x11a, "Ecirc":0xca, - "Ecirc;":0xca, "Ecy;":0x42d, - "Edot;":0x116, "Efr;":[0xd835,0xdd08], - "Egrave":0xc8, "Egrave;":0xc8, - "Element;":0x2208, "Emacr;":0x112, - "EmptySmallSquare;":0x25fb, "EmptyVerySmallSquare;":0x25ab, - "Eogon;":0x118, "Eopf;":[0xd835,0xdd3c], - "Epsilon;":0x395, "Equal;":0x2a75, - "EqualTilde;":0x2242, "Equilibrium;":0x21cc, - "Escr;":0x2130, "Esim;":0x2a73, - "Eta;":0x397, "Euml":0xcb, - "Euml;":0xcb, "Exists;":0x2203, - "ExponentialE;":0x2147, "Fcy;":0x424, - "Ffr;":[0xd835,0xdd09], "FilledSmallSquare;":0x25fc, - "FilledVerySmallSquare;":0x25aa, "Fopf;":[0xd835,0xdd3d], - "ForAll;":0x2200, "Fouriertrf;":0x2131, - "Fscr;":0x2131, "GJcy;":0x403, - "GT":0x3e, "GT;":0x3e, - "Gamma;":0x393, "Gammad;":0x3dc, - "Gbreve;":0x11e, "Gcedil;":0x122, - "Gcirc;":0x11c, "Gcy;":0x413, - "Gdot;":0x120, "Gfr;":[0xd835,0xdd0a], - "Gg;":0x22d9, "Gopf;":[0xd835,0xdd3e], - "GreaterEqual;":0x2265, "GreaterEqualLess;":0x22db, - "GreaterFullEqual;":0x2267, "GreaterGreater;":0x2aa2, - "GreaterLess;":0x2277, "GreaterSlantEqual;":0x2a7e, - "GreaterTilde;":0x2273, "Gscr;":[0xd835,0xdca2], - "Gt;":0x226b, "HARDcy;":0x42a, - "Hacek;":0x2c7, "Hat;":0x5e, - "Hcirc;":0x124, "Hfr;":0x210c, - "HilbertSpace;":0x210b, "Hopf;":0x210d, - "HorizontalLine;":0x2500, "Hscr;":0x210b, - "Hstrok;":0x126, "HumpDownHump;":0x224e, - "HumpEqual;":0x224f, "IEcy;":0x415, - "IJlig;":0x132, "IOcy;":0x401, - "Iacute":0xcd, "Iacute;":0xcd, - "Icirc":0xce, "Icirc;":0xce, - "Icy;":0x418, "Idot;":0x130, - "Ifr;":0x2111, "Igrave":0xcc, - "Igrave;":0xcc, "Im;":0x2111, - "Imacr;":0x12a, "ImaginaryI;":0x2148, - "Implies;":0x21d2, "Int;":0x222c, - "Integral;":0x222b, "Intersection;":0x22c2, - "InvisibleComma;":0x2063, "InvisibleTimes;":0x2062, - "Iogon;":0x12e, "Iopf;":[0xd835,0xdd40], - "Iota;":0x399, "Iscr;":0x2110, - "Itilde;":0x128, "Iukcy;":0x406, - "Iuml":0xcf, "Iuml;":0xcf, - "Jcirc;":0x134, "Jcy;":0x419, - "Jfr;":[0xd835,0xdd0d], "Jopf;":[0xd835,0xdd41], - "Jscr;":[0xd835,0xdca5], "Jsercy;":0x408, - "Jukcy;":0x404, "KHcy;":0x425, - "KJcy;":0x40c, "Kappa;":0x39a, - "Kcedil;":0x136, "Kcy;":0x41a, - "Kfr;":[0xd835,0xdd0e], "Kopf;":[0xd835,0xdd42], - "Kscr;":[0xd835,0xdca6], "LJcy;":0x409, - "LT":0x3c, "LT;":0x3c, - "Lacute;":0x139, "Lambda;":0x39b, - "Lang;":0x27ea, "Laplacetrf;":0x2112, - "Larr;":0x219e, "Lcaron;":0x13d, - "Lcedil;":0x13b, "Lcy;":0x41b, - "LeftAngleBracket;":0x27e8, "LeftArrow;":0x2190, - "LeftArrowBar;":0x21e4, "LeftArrowRightArrow;":0x21c6, - "LeftCeiling;":0x2308, "LeftDoubleBracket;":0x27e6, - "LeftDownTeeVector;":0x2961, "LeftDownVector;":0x21c3, - "LeftDownVectorBar;":0x2959, "LeftFloor;":0x230a, - "LeftRightArrow;":0x2194, "LeftRightVector;":0x294e, - "LeftTee;":0x22a3, "LeftTeeArrow;":0x21a4, - "LeftTeeVector;":0x295a, "LeftTriangle;":0x22b2, - "LeftTriangleBar;":0x29cf, "LeftTriangleEqual;":0x22b4, - "LeftUpDownVector;":0x2951, "LeftUpTeeVector;":0x2960, - "LeftUpVector;":0x21bf, "LeftUpVectorBar;":0x2958, - "LeftVector;":0x21bc, "LeftVectorBar;":0x2952, - "Leftarrow;":0x21d0, "Leftrightarrow;":0x21d4, - "LessEqualGreater;":0x22da, "LessFullEqual;":0x2266, - "LessGreater;":0x2276, "LessLess;":0x2aa1, - "LessSlantEqual;":0x2a7d, "LessTilde;":0x2272, - "Lfr;":[0xd835,0xdd0f], "Ll;":0x22d8, - "Lleftarrow;":0x21da, "Lmidot;":0x13f, - "LongLeftArrow;":0x27f5, "LongLeftRightArrow;":0x27f7, - "LongRightArrow;":0x27f6, "Longleftarrow;":0x27f8, - "Longleftrightarrow;":0x27fa, "Longrightarrow;":0x27f9, - "Lopf;":[0xd835,0xdd43], "LowerLeftArrow;":0x2199, - "LowerRightArrow;":0x2198, "Lscr;":0x2112, - "Lsh;":0x21b0, "Lstrok;":0x141, - "Lt;":0x226a, "Map;":0x2905, - "Mcy;":0x41c, "MediumSpace;":0x205f, - "Mellintrf;":0x2133, "Mfr;":[0xd835,0xdd10], - "MinusPlus;":0x2213, "Mopf;":[0xd835,0xdd44], - "Mscr;":0x2133, "Mu;":0x39c, - "NJcy;":0x40a, "Nacute;":0x143, - "Ncaron;":0x147, "Ncedil;":0x145, - "Ncy;":0x41d, "NegativeMediumSpace;":0x200b, - "NegativeThickSpace;":0x200b, "NegativeThinSpace;":0x200b, - "NegativeVeryThinSpace;":0x200b, "NestedGreaterGreater;":0x226b, - "NestedLessLess;":0x226a, "NewLine;":0xa, - "Nfr;":[0xd835,0xdd11], "NoBreak;":0x2060, - "NonBreakingSpace;":0xa0, "Nopf;":0x2115, - "Not;":0x2aec, "NotCongruent;":0x2262, - "NotCupCap;":0x226d, "NotDoubleVerticalBar;":0x2226, - "NotElement;":0x2209, "NotEqual;":0x2260, - "NotEqualTilde;":[0x2242,0x338], "NotExists;":0x2204, - "NotGreater;":0x226f, "NotGreaterEqual;":0x2271, - "NotGreaterFullEqual;":[0x2267,0x338], "NotGreaterGreater;":[0x226b,0x338], - "NotGreaterLess;":0x2279, "NotGreaterSlantEqual;":[0x2a7e,0x338], - "NotGreaterTilde;":0x2275, "NotHumpDownHump;":[0x224e,0x338], - "NotHumpEqual;":[0x224f,0x338], "NotLeftTriangle;":0x22ea, - "NotLeftTriangleBar;":[0x29cf,0x338], "NotLeftTriangleEqual;":0x22ec, - "NotLess;":0x226e, "NotLessEqual;":0x2270, - "NotLessGreater;":0x2278, "NotLessLess;":[0x226a,0x338], - "NotLessSlantEqual;":[0x2a7d,0x338], "NotLessTilde;":0x2274, - "NotNestedGreaterGreater;":[0x2aa2,0x338], "NotNestedLessLess;":[0x2aa1,0x338], - "NotPrecedes;":0x2280, "NotPrecedesEqual;":[0x2aaf,0x338], - "NotPrecedesSlantEqual;":0x22e0, "NotReverseElement;":0x220c, - "NotRightTriangle;":0x22eb, "NotRightTriangleBar;":[0x29d0,0x338], - "NotRightTriangleEqual;":0x22ed, "NotSquareSubset;":[0x228f,0x338], - "NotSquareSubsetEqual;":0x22e2, "NotSquareSuperset;":[0x2290,0x338], - "NotSquareSupersetEqual;":0x22e3, "NotSubset;":[0x2282,0x20d2], - "NotSubsetEqual;":0x2288, "NotSucceeds;":0x2281, - "NotSucceedsEqual;":[0x2ab0,0x338], "NotSucceedsSlantEqual;":0x22e1, - "NotSucceedsTilde;":[0x227f,0x338], "NotSuperset;":[0x2283,0x20d2], - "NotSupersetEqual;":0x2289, "NotTilde;":0x2241, - "NotTildeEqual;":0x2244, "NotTildeFullEqual;":0x2247, - "NotTildeTilde;":0x2249, "NotVerticalBar;":0x2224, - "Nscr;":[0xd835,0xdca9], "Ntilde":0xd1, - "Ntilde;":0xd1, "Nu;":0x39d, - "OElig;":0x152, "Oacute":0xd3, - "Oacute;":0xd3, "Ocirc":0xd4, - "Ocirc;":0xd4, "Ocy;":0x41e, - "Odblac;":0x150, "Ofr;":[0xd835,0xdd12], - "Ograve":0xd2, "Ograve;":0xd2, - "Omacr;":0x14c, "Omega;":0x3a9, - "Omicron;":0x39f, "Oopf;":[0xd835,0xdd46], - "OpenCurlyDoubleQuote;":0x201c, "OpenCurlyQuote;":0x2018, - "Or;":0x2a54, "Oscr;":[0xd835,0xdcaa], - "Oslash":0xd8, "Oslash;":0xd8, - "Otilde":0xd5, "Otilde;":0xd5, - "Otimes;":0x2a37, "Ouml":0xd6, - "Ouml;":0xd6, "OverBar;":0x203e, - "OverBrace;":0x23de, "OverBracket;":0x23b4, - "OverParenthesis;":0x23dc, "PartialD;":0x2202, - "Pcy;":0x41f, "Pfr;":[0xd835,0xdd13], - "Phi;":0x3a6, "Pi;":0x3a0, - "PlusMinus;":0xb1, "Poincareplane;":0x210c, - "Popf;":0x2119, "Pr;":0x2abb, - "Precedes;":0x227a, "PrecedesEqual;":0x2aaf, - "PrecedesSlantEqual;":0x227c, "PrecedesTilde;":0x227e, - "Prime;":0x2033, "Product;":0x220f, - "Proportion;":0x2237, "Proportional;":0x221d, - "Pscr;":[0xd835,0xdcab], "Psi;":0x3a8, - "QUOT":0x22, "QUOT;":0x22, - "Qfr;":[0xd835,0xdd14], "Qopf;":0x211a, - "Qscr;":[0xd835,0xdcac], "RBarr;":0x2910, - "REG":0xae, "REG;":0xae, - "Racute;":0x154, "Rang;":0x27eb, - "Rarr;":0x21a0, "Rarrtl;":0x2916, - "Rcaron;":0x158, "Rcedil;":0x156, - "Rcy;":0x420, "Re;":0x211c, - "ReverseElement;":0x220b, "ReverseEquilibrium;":0x21cb, - "ReverseUpEquilibrium;":0x296f, "Rfr;":0x211c, - "Rho;":0x3a1, "RightAngleBracket;":0x27e9, - "RightArrow;":0x2192, "RightArrowBar;":0x21e5, - "RightArrowLeftArrow;":0x21c4, "RightCeiling;":0x2309, - "RightDoubleBracket;":0x27e7, "RightDownTeeVector;":0x295d, - "RightDownVector;":0x21c2, "RightDownVectorBar;":0x2955, - "RightFloor;":0x230b, "RightTee;":0x22a2, - "RightTeeArrow;":0x21a6, "RightTeeVector;":0x295b, - "RightTriangle;":0x22b3, "RightTriangleBar;":0x29d0, - "RightTriangleEqual;":0x22b5, "RightUpDownVector;":0x294f, - "RightUpTeeVector;":0x295c, "RightUpVector;":0x21be, - "RightUpVectorBar;":0x2954, "RightVector;":0x21c0, - "RightVectorBar;":0x2953, "Rightarrow;":0x21d2, - "Ropf;":0x211d, "RoundImplies;":0x2970, - "Rrightarrow;":0x21db, "Rscr;":0x211b, - "Rsh;":0x21b1, "RuleDelayed;":0x29f4, - "SHCHcy;":0x429, "SHcy;":0x428, - "SOFTcy;":0x42c, "Sacute;":0x15a, - "Sc;":0x2abc, "Scaron;":0x160, - "Scedil;":0x15e, "Scirc;":0x15c, - "Scy;":0x421, "Sfr;":[0xd835,0xdd16], - "ShortDownArrow;":0x2193, "ShortLeftArrow;":0x2190, - "ShortRightArrow;":0x2192, "ShortUpArrow;":0x2191, - "Sigma;":0x3a3, "SmallCircle;":0x2218, - "Sopf;":[0xd835,0xdd4a], "Sqrt;":0x221a, - "Square;":0x25a1, "SquareIntersection;":0x2293, - "SquareSubset;":0x228f, "SquareSubsetEqual;":0x2291, - "SquareSuperset;":0x2290, "SquareSupersetEqual;":0x2292, - "SquareUnion;":0x2294, "Sscr;":[0xd835,0xdcae], - "Star;":0x22c6, "Sub;":0x22d0, - "Subset;":0x22d0, "SubsetEqual;":0x2286, - "Succeeds;":0x227b, "SucceedsEqual;":0x2ab0, - "SucceedsSlantEqual;":0x227d, "SucceedsTilde;":0x227f, - "SuchThat;":0x220b, "Sum;":0x2211, - "Sup;":0x22d1, "Superset;":0x2283, - "SupersetEqual;":0x2287, "Supset;":0x22d1, - "THORN":0xde, "THORN;":0xde, - "TRADE;":0x2122, "TSHcy;":0x40b, - "TScy;":0x426, "Tab;":0x9, - "Tau;":0x3a4, "Tcaron;":0x164, - "Tcedil;":0x162, "Tcy;":0x422, - "Tfr;":[0xd835,0xdd17], "Therefore;":0x2234, - "Theta;":0x398, "ThickSpace;":[0x205f,0x200a], - "ThinSpace;":0x2009, "Tilde;":0x223c, - "TildeEqual;":0x2243, "TildeFullEqual;":0x2245, - "TildeTilde;":0x2248, "Topf;":[0xd835,0xdd4b], - "TripleDot;":0x20db, "Tscr;":[0xd835,0xdcaf], - "Tstrok;":0x166, "Uacute":0xda, - "Uacute;":0xda, "Uarr;":0x219f, - "Uarrocir;":0x2949, "Ubrcy;":0x40e, - "Ubreve;":0x16c, "Ucirc":0xdb, - "Ucirc;":0xdb, "Ucy;":0x423, - "Udblac;":0x170, "Ufr;":[0xd835,0xdd18], - "Ugrave":0xd9, "Ugrave;":0xd9, - "Umacr;":0x16a, "UnderBar;":0x5f, - "UnderBrace;":0x23df, "UnderBracket;":0x23b5, - "UnderParenthesis;":0x23dd, "Union;":0x22c3, - "UnionPlus;":0x228e, "Uogon;":0x172, - "Uopf;":[0xd835,0xdd4c], "UpArrow;":0x2191, - "UpArrowBar;":0x2912, "UpArrowDownArrow;":0x21c5, - "UpDownArrow;":0x2195, "UpEquilibrium;":0x296e, - "UpTee;":0x22a5, "UpTeeArrow;":0x21a5, - "Uparrow;":0x21d1, "Updownarrow;":0x21d5, - "UpperLeftArrow;":0x2196, "UpperRightArrow;":0x2197, - "Upsi;":0x3d2, "Upsilon;":0x3a5, - "Uring;":0x16e, "Uscr;":[0xd835,0xdcb0], - "Utilde;":0x168, "Uuml":0xdc, - "Uuml;":0xdc, "VDash;":0x22ab, - "Vbar;":0x2aeb, "Vcy;":0x412, - "Vdash;":0x22a9, "Vdashl;":0x2ae6, - "Vee;":0x22c1, "Verbar;":0x2016, - "Vert;":0x2016, "VerticalBar;":0x2223, - "VerticalLine;":0x7c, "VerticalSeparator;":0x2758, - "VerticalTilde;":0x2240, "VeryThinSpace;":0x200a, - "Vfr;":[0xd835,0xdd19], "Vopf;":[0xd835,0xdd4d], - "Vscr;":[0xd835,0xdcb1], "Vvdash;":0x22aa, - "Wcirc;":0x174, "Wedge;":0x22c0, - "Wfr;":[0xd835,0xdd1a], "Wopf;":[0xd835,0xdd4e], - "Wscr;":[0xd835,0xdcb2], "Xfr;":[0xd835,0xdd1b], - "Xi;":0x39e, "Xopf;":[0xd835,0xdd4f], - "Xscr;":[0xd835,0xdcb3], "YAcy;":0x42f, - "YIcy;":0x407, "YUcy;":0x42e, - "Yacute":0xdd, "Yacute;":0xdd, - "Ycirc;":0x176, "Ycy;":0x42b, - "Yfr;":[0xd835,0xdd1c], "Yopf;":[0xd835,0xdd50], - "Yscr;":[0xd835,0xdcb4], "Yuml;":0x178, - "ZHcy;":0x416, "Zacute;":0x179, - "Zcaron;":0x17d, "Zcy;":0x417, - "Zdot;":0x17b, "ZeroWidthSpace;":0x200b, - "Zeta;":0x396, "Zfr;":0x2128, - "Zopf;":0x2124, "Zscr;":[0xd835,0xdcb5], - "aacute":0xe1, "aacute;":0xe1, - "abreve;":0x103, "ac;":0x223e, - "acE;":[0x223e,0x333], "acd;":0x223f, - "acirc":0xe2, "acirc;":0xe2, - "acute":0xb4, "acute;":0xb4, - "acy;":0x430, "aelig":0xe6, - "aelig;":0xe6, "af;":0x2061, - "afr;":[0xd835,0xdd1e], "agrave":0xe0, - "agrave;":0xe0, "alefsym;":0x2135, - "aleph;":0x2135, "alpha;":0x3b1, - "amacr;":0x101, "amalg;":0x2a3f, - "amp":0x26, "amp;":0x26, - "and;":0x2227, "andand;":0x2a55, - "andd;":0x2a5c, "andslope;":0x2a58, - "andv;":0x2a5a, "ang;":0x2220, - "ange;":0x29a4, "angle;":0x2220, - "angmsd;":0x2221, "angmsdaa;":0x29a8, - "angmsdab;":0x29a9, "angmsdac;":0x29aa, - "angmsdad;":0x29ab, "angmsdae;":0x29ac, - "angmsdaf;":0x29ad, "angmsdag;":0x29ae, - "angmsdah;":0x29af, "angrt;":0x221f, - "angrtvb;":0x22be, "angrtvbd;":0x299d, - "angsph;":0x2222, "angst;":0xc5, - "angzarr;":0x237c, "aogon;":0x105, - "aopf;":[0xd835,0xdd52], "ap;":0x2248, - "apE;":0x2a70, "apacir;":0x2a6f, - "ape;":0x224a, "apid;":0x224b, - "apos;":0x27, "approx;":0x2248, - "approxeq;":0x224a, "aring":0xe5, - "aring;":0xe5, "ascr;":[0xd835,0xdcb6], - "ast;":0x2a, "asymp;":0x2248, - "asympeq;":0x224d, "atilde":0xe3, - "atilde;":0xe3, "auml":0xe4, - "auml;":0xe4, "awconint;":0x2233, - "awint;":0x2a11, "bNot;":0x2aed, - "backcong;":0x224c, "backepsilon;":0x3f6, - "backprime;":0x2035, "backsim;":0x223d, - "backsimeq;":0x22cd, "barvee;":0x22bd, - "barwed;":0x2305, "barwedge;":0x2305, - "bbrk;":0x23b5, "bbrktbrk;":0x23b6, - "bcong;":0x224c, "bcy;":0x431, - "bdquo;":0x201e, "becaus;":0x2235, - "because;":0x2235, "bemptyv;":0x29b0, - "bepsi;":0x3f6, "bernou;":0x212c, - "beta;":0x3b2, "beth;":0x2136, - "between;":0x226c, "bfr;":[0xd835,0xdd1f], - "bigcap;":0x22c2, "bigcirc;":0x25ef, - "bigcup;":0x22c3, "bigodot;":0x2a00, - "bigoplus;":0x2a01, "bigotimes;":0x2a02, - "bigsqcup;":0x2a06, "bigstar;":0x2605, - "bigtriangledown;":0x25bd, "bigtriangleup;":0x25b3, - "biguplus;":0x2a04, "bigvee;":0x22c1, - "bigwedge;":0x22c0, "bkarow;":0x290d, - "blacklozenge;":0x29eb, "blacksquare;":0x25aa, - "blacktriangle;":0x25b4, "blacktriangledown;":0x25be, - "blacktriangleleft;":0x25c2, "blacktriangleright;":0x25b8, - "blank;":0x2423, "blk12;":0x2592, - "blk14;":0x2591, "blk34;":0x2593, - "block;":0x2588, "bne;":[0x3d,0x20e5], - "bnequiv;":[0x2261,0x20e5], "bnot;":0x2310, - "bopf;":[0xd835,0xdd53], "bot;":0x22a5, - "bottom;":0x22a5, "bowtie;":0x22c8, - "boxDL;":0x2557, "boxDR;":0x2554, - "boxDl;":0x2556, "boxDr;":0x2553, - "boxH;":0x2550, "boxHD;":0x2566, - "boxHU;":0x2569, "boxHd;":0x2564, - "boxHu;":0x2567, "boxUL;":0x255d, - "boxUR;":0x255a, "boxUl;":0x255c, - "boxUr;":0x2559, "boxV;":0x2551, - "boxVH;":0x256c, "boxVL;":0x2563, - "boxVR;":0x2560, "boxVh;":0x256b, - "boxVl;":0x2562, "boxVr;":0x255f, - "boxbox;":0x29c9, "boxdL;":0x2555, - "boxdR;":0x2552, "boxdl;":0x2510, - "boxdr;":0x250c, "boxh;":0x2500, - "boxhD;":0x2565, "boxhU;":0x2568, - "boxhd;":0x252c, "boxhu;":0x2534, - "boxminus;":0x229f, "boxplus;":0x229e, - "boxtimes;":0x22a0, "boxuL;":0x255b, - "boxuR;":0x2558, "boxul;":0x2518, - "boxur;":0x2514, "boxv;":0x2502, - "boxvH;":0x256a, "boxvL;":0x2561, - "boxvR;":0x255e, "boxvh;":0x253c, - "boxvl;":0x2524, "boxvr;":0x251c, - "bprime;":0x2035, "breve;":0x2d8, - "brvbar":0xa6, "brvbar;":0xa6, - "bscr;":[0xd835,0xdcb7], "bsemi;":0x204f, - "bsim;":0x223d, "bsime;":0x22cd, - "bsol;":0x5c, "bsolb;":0x29c5, - "bsolhsub;":0x27c8, "bull;":0x2022, - "bullet;":0x2022, "bump;":0x224e, - "bumpE;":0x2aae, "bumpe;":0x224f, - "bumpeq;":0x224f, "cacute;":0x107, - "cap;":0x2229, "capand;":0x2a44, - "capbrcup;":0x2a49, "capcap;":0x2a4b, - "capcup;":0x2a47, "capdot;":0x2a40, - "caps;":[0x2229,0xfe00], "caret;":0x2041, - "caron;":0x2c7, "ccaps;":0x2a4d, - "ccaron;":0x10d, "ccedil":0xe7, - "ccedil;":0xe7, "ccirc;":0x109, - "ccups;":0x2a4c, "ccupssm;":0x2a50, - "cdot;":0x10b, "cedil":0xb8, - "cedil;":0xb8, "cemptyv;":0x29b2, - "cent":0xa2, "cent;":0xa2, - "centerdot;":0xb7, "cfr;":[0xd835,0xdd20], - "chcy;":0x447, "check;":0x2713, - "checkmark;":0x2713, "chi;":0x3c7, - "cir;":0x25cb, "cirE;":0x29c3, - "circ;":0x2c6, "circeq;":0x2257, - "circlearrowleft;":0x21ba, "circlearrowright;":0x21bb, - "circledR;":0xae, "circledS;":0x24c8, - "circledast;":0x229b, "circledcirc;":0x229a, - "circleddash;":0x229d, "cire;":0x2257, - "cirfnint;":0x2a10, "cirmid;":0x2aef, - "cirscir;":0x29c2, "clubs;":0x2663, - "clubsuit;":0x2663, "colon;":0x3a, - "colone;":0x2254, "coloneq;":0x2254, - "comma;":0x2c, "commat;":0x40, - "comp;":0x2201, "compfn;":0x2218, - "complement;":0x2201, "complexes;":0x2102, - "cong;":0x2245, "congdot;":0x2a6d, - "conint;":0x222e, "copf;":[0xd835,0xdd54], - "coprod;":0x2210, "copy":0xa9, - "copy;":0xa9, "copysr;":0x2117, - "crarr;":0x21b5, "cross;":0x2717, - "cscr;":[0xd835,0xdcb8], "csub;":0x2acf, - "csube;":0x2ad1, "csup;":0x2ad0, - "csupe;":0x2ad2, "ctdot;":0x22ef, - "cudarrl;":0x2938, "cudarrr;":0x2935, - "cuepr;":0x22de, "cuesc;":0x22df, - "cularr;":0x21b6, "cularrp;":0x293d, - "cup;":0x222a, "cupbrcap;":0x2a48, - "cupcap;":0x2a46, "cupcup;":0x2a4a, - "cupdot;":0x228d, "cupor;":0x2a45, - "cups;":[0x222a,0xfe00], "curarr;":0x21b7, - "curarrm;":0x293c, "curlyeqprec;":0x22de, - "curlyeqsucc;":0x22df, "curlyvee;":0x22ce, - "curlywedge;":0x22cf, "curren":0xa4, - "curren;":0xa4, "curvearrowleft;":0x21b6, - "curvearrowright;":0x21b7, "cuvee;":0x22ce, - "cuwed;":0x22cf, "cwconint;":0x2232, - "cwint;":0x2231, "cylcty;":0x232d, - "dArr;":0x21d3, "dHar;":0x2965, - "dagger;":0x2020, "daleth;":0x2138, - "darr;":0x2193, "dash;":0x2010, - "dashv;":0x22a3, "dbkarow;":0x290f, - "dblac;":0x2dd, "dcaron;":0x10f, - "dcy;":0x434, "dd;":0x2146, - "ddagger;":0x2021, "ddarr;":0x21ca, - "ddotseq;":0x2a77, "deg":0xb0, - "deg;":0xb0, "delta;":0x3b4, - "demptyv;":0x29b1, "dfisht;":0x297f, - "dfr;":[0xd835,0xdd21], "dharl;":0x21c3, - "dharr;":0x21c2, "diam;":0x22c4, - "diamond;":0x22c4, "diamondsuit;":0x2666, - "diams;":0x2666, "die;":0xa8, - "digamma;":0x3dd, "disin;":0x22f2, - "div;":0xf7, "divide":0xf7, - "divide;":0xf7, "divideontimes;":0x22c7, - "divonx;":0x22c7, "djcy;":0x452, - "dlcorn;":0x231e, "dlcrop;":0x230d, - "dollar;":0x24, "dopf;":[0xd835,0xdd55], - "dot;":0x2d9, "doteq;":0x2250, - "doteqdot;":0x2251, "dotminus;":0x2238, - "dotplus;":0x2214, "dotsquare;":0x22a1, - "doublebarwedge;":0x2306, "downarrow;":0x2193, - "downdownarrows;":0x21ca, "downharpoonleft;":0x21c3, - "downharpoonright;":0x21c2, "drbkarow;":0x2910, - "drcorn;":0x231f, "drcrop;":0x230c, - "dscr;":[0xd835,0xdcb9], "dscy;":0x455, - "dsol;":0x29f6, "dstrok;":0x111, - "dtdot;":0x22f1, "dtri;":0x25bf, - "dtrif;":0x25be, "duarr;":0x21f5, - "duhar;":0x296f, "dwangle;":0x29a6, - "dzcy;":0x45f, "dzigrarr;":0x27ff, - "eDDot;":0x2a77, "eDot;":0x2251, - "eacute":0xe9, "eacute;":0xe9, - "easter;":0x2a6e, "ecaron;":0x11b, - "ecir;":0x2256, "ecirc":0xea, - "ecirc;":0xea, "ecolon;":0x2255, - "ecy;":0x44d, "edot;":0x117, - "ee;":0x2147, "efDot;":0x2252, - "efr;":[0xd835,0xdd22], "eg;":0x2a9a, - "egrave":0xe8, "egrave;":0xe8, - "egs;":0x2a96, "egsdot;":0x2a98, - "el;":0x2a99, "elinters;":0x23e7, - "ell;":0x2113, "els;":0x2a95, - "elsdot;":0x2a97, "emacr;":0x113, - "empty;":0x2205, "emptyset;":0x2205, - "emptyv;":0x2205, "emsp13;":0x2004, - "emsp14;":0x2005, "emsp;":0x2003, - "eng;":0x14b, "ensp;":0x2002, - "eogon;":0x119, "eopf;":[0xd835,0xdd56], - "epar;":0x22d5, "eparsl;":0x29e3, - "eplus;":0x2a71, "epsi;":0x3b5, - "epsilon;":0x3b5, "epsiv;":0x3f5, - "eqcirc;":0x2256, "eqcolon;":0x2255, - "eqsim;":0x2242, "eqslantgtr;":0x2a96, - "eqslantless;":0x2a95, "equals;":0x3d, - "equest;":0x225f, "equiv;":0x2261, - "equivDD;":0x2a78, "eqvparsl;":0x29e5, - "erDot;":0x2253, "erarr;":0x2971, - "escr;":0x212f, "esdot;":0x2250, - "esim;":0x2242, "eta;":0x3b7, - "eth":0xf0, "eth;":0xf0, - "euml":0xeb, "euml;":0xeb, - "euro;":0x20ac, "excl;":0x21, - "exist;":0x2203, "expectation;":0x2130, - "exponentiale;":0x2147, "fallingdotseq;":0x2252, - "fcy;":0x444, "female;":0x2640, - "ffilig;":0xfb03, "fflig;":0xfb00, - "ffllig;":0xfb04, "ffr;":[0xd835,0xdd23], - "filig;":0xfb01, "fjlig;":[0x66,0x6a], - "flat;":0x266d, "fllig;":0xfb02, - "fltns;":0x25b1, "fnof;":0x192, - "fopf;":[0xd835,0xdd57], "forall;":0x2200, - "fork;":0x22d4, "forkv;":0x2ad9, - "fpartint;":0x2a0d, "frac12":0xbd, - "frac12;":0xbd, "frac13;":0x2153, - "frac14":0xbc, "frac14;":0xbc, - "frac15;":0x2155, "frac16;":0x2159, - "frac18;":0x215b, "frac23;":0x2154, - "frac25;":0x2156, "frac34":0xbe, - "frac34;":0xbe, "frac35;":0x2157, - "frac38;":0x215c, "frac45;":0x2158, - "frac56;":0x215a, "frac58;":0x215d, - "frac78;":0x215e, "frasl;":0x2044, - "frown;":0x2322, "fscr;":[0xd835,0xdcbb], - "gE;":0x2267, "gEl;":0x2a8c, - "gacute;":0x1f5, "gamma;":0x3b3, - "gammad;":0x3dd, "gap;":0x2a86, - "gbreve;":0x11f, "gcirc;":0x11d, - "gcy;":0x433, "gdot;":0x121, - "ge;":0x2265, "gel;":0x22db, - "geq;":0x2265, "geqq;":0x2267, - "geqslant;":0x2a7e, "ges;":0x2a7e, - "gescc;":0x2aa9, "gesdot;":0x2a80, - "gesdoto;":0x2a82, "gesdotol;":0x2a84, - "gesl;":[0x22db,0xfe00], "gesles;":0x2a94, - "gfr;":[0xd835,0xdd24], "gg;":0x226b, - "ggg;":0x22d9, "gimel;":0x2137, - "gjcy;":0x453, "gl;":0x2277, - "glE;":0x2a92, "gla;":0x2aa5, - "glj;":0x2aa4, "gnE;":0x2269, - "gnap;":0x2a8a, "gnapprox;":0x2a8a, - "gne;":0x2a88, "gneq;":0x2a88, - "gneqq;":0x2269, "gnsim;":0x22e7, - "gopf;":[0xd835,0xdd58], "grave;":0x60, - "gscr;":0x210a, "gsim;":0x2273, - "gsime;":0x2a8e, "gsiml;":0x2a90, - "gt":0x3e, "gt;":0x3e, - "gtcc;":0x2aa7, "gtcir;":0x2a7a, - "gtdot;":0x22d7, "gtlPar;":0x2995, - "gtquest;":0x2a7c, "gtrapprox;":0x2a86, - "gtrarr;":0x2978, "gtrdot;":0x22d7, - "gtreqless;":0x22db, "gtreqqless;":0x2a8c, - "gtrless;":0x2277, "gtrsim;":0x2273, - "gvertneqq;":[0x2269,0xfe00], "gvnE;":[0x2269,0xfe00], - "hArr;":0x21d4, "hairsp;":0x200a, - "half;":0xbd, "hamilt;":0x210b, - "hardcy;":0x44a, "harr;":0x2194, - "harrcir;":0x2948, "harrw;":0x21ad, - "hbar;":0x210f, "hcirc;":0x125, - "hearts;":0x2665, "heartsuit;":0x2665, - "hellip;":0x2026, "hercon;":0x22b9, - "hfr;":[0xd835,0xdd25], "hksearow;":0x2925, - "hkswarow;":0x2926, "hoarr;":0x21ff, - "homtht;":0x223b, "hookleftarrow;":0x21a9, - "hookrightarrow;":0x21aa, "hopf;":[0xd835,0xdd59], - "horbar;":0x2015, "hscr;":[0xd835,0xdcbd], - "hslash;":0x210f, "hstrok;":0x127, - "hybull;":0x2043, "hyphen;":0x2010, - "iacute":0xed, "iacute;":0xed, - "ic;":0x2063, "icirc":0xee, - "icirc;":0xee, "icy;":0x438, - "iecy;":0x435, "iexcl":0xa1, - "iexcl;":0xa1, "iff;":0x21d4, - "ifr;":[0xd835,0xdd26], "igrave":0xec, - "igrave;":0xec, "ii;":0x2148, - "iiiint;":0x2a0c, "iiint;":0x222d, - "iinfin;":0x29dc, "iiota;":0x2129, - "ijlig;":0x133, "imacr;":0x12b, - "image;":0x2111, "imagline;":0x2110, - "imagpart;":0x2111, "imath;":0x131, - "imof;":0x22b7, "imped;":0x1b5, - "in;":0x2208, "incare;":0x2105, - "infin;":0x221e, "infintie;":0x29dd, - "inodot;":0x131, "int;":0x222b, - "intcal;":0x22ba, "integers;":0x2124, - "intercal;":0x22ba, "intlarhk;":0x2a17, - "intprod;":0x2a3c, "iocy;":0x451, - "iogon;":0x12f, "iopf;":[0xd835,0xdd5a], - "iota;":0x3b9, "iprod;":0x2a3c, - "iquest":0xbf, "iquest;":0xbf, - "iscr;":[0xd835,0xdcbe], "isin;":0x2208, - "isinE;":0x22f9, "isindot;":0x22f5, - "isins;":0x22f4, "isinsv;":0x22f3, - "isinv;":0x2208, "it;":0x2062, - "itilde;":0x129, "iukcy;":0x456, - "iuml":0xef, "iuml;":0xef, - "jcirc;":0x135, "jcy;":0x439, - "jfr;":[0xd835,0xdd27], "jmath;":0x237, - "jopf;":[0xd835,0xdd5b], "jscr;":[0xd835,0xdcbf], - "jsercy;":0x458, "jukcy;":0x454, - "kappa;":0x3ba, "kappav;":0x3f0, - "kcedil;":0x137, "kcy;":0x43a, - "kfr;":[0xd835,0xdd28], "kgreen;":0x138, - "khcy;":0x445, "kjcy;":0x45c, - "kopf;":[0xd835,0xdd5c], "kscr;":[0xd835,0xdcc0], - "lAarr;":0x21da, "lArr;":0x21d0, - "lAtail;":0x291b, "lBarr;":0x290e, - "lE;":0x2266, "lEg;":0x2a8b, - "lHar;":0x2962, "lacute;":0x13a, - "laemptyv;":0x29b4, "lagran;":0x2112, - "lambda;":0x3bb, "lang;":0x27e8, - "langd;":0x2991, "langle;":0x27e8, - "lap;":0x2a85, "laquo":0xab, - "laquo;":0xab, "larr;":0x2190, - "larrb;":0x21e4, "larrbfs;":0x291f, - "larrfs;":0x291d, "larrhk;":0x21a9, - "larrlp;":0x21ab, "larrpl;":0x2939, - "larrsim;":0x2973, "larrtl;":0x21a2, - "lat;":0x2aab, "latail;":0x2919, - "late;":0x2aad, "lates;":[0x2aad,0xfe00], - "lbarr;":0x290c, "lbbrk;":0x2772, - "lbrace;":0x7b, "lbrack;":0x5b, - "lbrke;":0x298b, "lbrksld;":0x298f, - "lbrkslu;":0x298d, "lcaron;":0x13e, - "lcedil;":0x13c, "lceil;":0x2308, - "lcub;":0x7b, "lcy;":0x43b, - "ldca;":0x2936, "ldquo;":0x201c, - "ldquor;":0x201e, "ldrdhar;":0x2967, - "ldrushar;":0x294b, "ldsh;":0x21b2, - "le;":0x2264, "leftarrow;":0x2190, - "leftarrowtail;":0x21a2, "leftharpoondown;":0x21bd, - "leftharpoonup;":0x21bc, "leftleftarrows;":0x21c7, - "leftrightarrow;":0x2194, "leftrightarrows;":0x21c6, - "leftrightharpoons;":0x21cb, "leftrightsquigarrow;":0x21ad, - "leftthreetimes;":0x22cb, "leg;":0x22da, - "leq;":0x2264, "leqq;":0x2266, - "leqslant;":0x2a7d, "les;":0x2a7d, - "lescc;":0x2aa8, "lesdot;":0x2a7f, - "lesdoto;":0x2a81, "lesdotor;":0x2a83, - "lesg;":[0x22da,0xfe00], "lesges;":0x2a93, - "lessapprox;":0x2a85, "lessdot;":0x22d6, - "lesseqgtr;":0x22da, "lesseqqgtr;":0x2a8b, - "lessgtr;":0x2276, "lesssim;":0x2272, - "lfisht;":0x297c, "lfloor;":0x230a, - "lfr;":[0xd835,0xdd29], "lg;":0x2276, - "lgE;":0x2a91, "lhard;":0x21bd, - "lharu;":0x21bc, "lharul;":0x296a, - "lhblk;":0x2584, "ljcy;":0x459, - "ll;":0x226a, "llarr;":0x21c7, - "llcorner;":0x231e, "llhard;":0x296b, - "lltri;":0x25fa, "lmidot;":0x140, - "lmoust;":0x23b0, "lmoustache;":0x23b0, - "lnE;":0x2268, "lnap;":0x2a89, - "lnapprox;":0x2a89, "lne;":0x2a87, - "lneq;":0x2a87, "lneqq;":0x2268, - "lnsim;":0x22e6, "loang;":0x27ec, - "loarr;":0x21fd, "lobrk;":0x27e6, - "longleftarrow;":0x27f5, "longleftrightarrow;":0x27f7, - "longmapsto;":0x27fc, "longrightarrow;":0x27f6, - "looparrowleft;":0x21ab, "looparrowright;":0x21ac, - "lopar;":0x2985, "lopf;":[0xd835,0xdd5d], - "loplus;":0x2a2d, "lotimes;":0x2a34, - "lowast;":0x2217, "lowbar;":0x5f, - "loz;":0x25ca, "lozenge;":0x25ca, - "lozf;":0x29eb, "lpar;":0x28, - "lparlt;":0x2993, "lrarr;":0x21c6, - "lrcorner;":0x231f, "lrhar;":0x21cb, - "lrhard;":0x296d, "lrm;":0x200e, - "lrtri;":0x22bf, "lsaquo;":0x2039, - "lscr;":[0xd835,0xdcc1], "lsh;":0x21b0, - "lsim;":0x2272, "lsime;":0x2a8d, - "lsimg;":0x2a8f, "lsqb;":0x5b, - "lsquo;":0x2018, "lsquor;":0x201a, - "lstrok;":0x142, "lt":0x3c, - "lt;":0x3c, "ltcc;":0x2aa6, - "ltcir;":0x2a79, "ltdot;":0x22d6, - "lthree;":0x22cb, "ltimes;":0x22c9, - "ltlarr;":0x2976, "ltquest;":0x2a7b, - "ltrPar;":0x2996, "ltri;":0x25c3, - "ltrie;":0x22b4, "ltrif;":0x25c2, - "lurdshar;":0x294a, "luruhar;":0x2966, - "lvertneqq;":[0x2268,0xfe00], "lvnE;":[0x2268,0xfe00], - "mDDot;":0x223a, "macr":0xaf, - "macr;":0xaf, "male;":0x2642, - "malt;":0x2720, "maltese;":0x2720, - "map;":0x21a6, "mapsto;":0x21a6, - "mapstodown;":0x21a7, "mapstoleft;":0x21a4, - "mapstoup;":0x21a5, "marker;":0x25ae, - "mcomma;":0x2a29, "mcy;":0x43c, - "mdash;":0x2014, "measuredangle;":0x2221, - "mfr;":[0xd835,0xdd2a], "mho;":0x2127, - "micro":0xb5, "micro;":0xb5, - "mid;":0x2223, "midast;":0x2a, - "midcir;":0x2af0, "middot":0xb7, - "middot;":0xb7, "minus;":0x2212, - "minusb;":0x229f, "minusd;":0x2238, - "minusdu;":0x2a2a, "mlcp;":0x2adb, - "mldr;":0x2026, "mnplus;":0x2213, - "models;":0x22a7, "mopf;":[0xd835,0xdd5e], - "mp;":0x2213, "mscr;":[0xd835,0xdcc2], - "mstpos;":0x223e, "mu;":0x3bc, - "multimap;":0x22b8, "mumap;":0x22b8, - "nGg;":[0x22d9,0x338], "nGt;":[0x226b,0x20d2], - "nGtv;":[0x226b,0x338], "nLeftarrow;":0x21cd, - "nLeftrightarrow;":0x21ce, "nLl;":[0x22d8,0x338], - "nLt;":[0x226a,0x20d2], "nLtv;":[0x226a,0x338], - "nRightarrow;":0x21cf, "nVDash;":0x22af, - "nVdash;":0x22ae, "nabla;":0x2207, - "nacute;":0x144, "nang;":[0x2220,0x20d2], - "nap;":0x2249, "napE;":[0x2a70,0x338], - "napid;":[0x224b,0x338], "napos;":0x149, - "napprox;":0x2249, "natur;":0x266e, - "natural;":0x266e, "naturals;":0x2115, - "nbsp":0xa0, "nbsp;":0xa0, - "nbump;":[0x224e,0x338], "nbumpe;":[0x224f,0x338], - "ncap;":0x2a43, "ncaron;":0x148, - "ncedil;":0x146, "ncong;":0x2247, - "ncongdot;":[0x2a6d,0x338], "ncup;":0x2a42, - "ncy;":0x43d, "ndash;":0x2013, - "ne;":0x2260, "neArr;":0x21d7, - "nearhk;":0x2924, "nearr;":0x2197, - "nearrow;":0x2197, "nedot;":[0x2250,0x338], - "nequiv;":0x2262, "nesear;":0x2928, - "nesim;":[0x2242,0x338], "nexist;":0x2204, - "nexists;":0x2204, "nfr;":[0xd835,0xdd2b], - "ngE;":[0x2267,0x338], "nge;":0x2271, - "ngeq;":0x2271, "ngeqq;":[0x2267,0x338], - "ngeqslant;":[0x2a7e,0x338], "nges;":[0x2a7e,0x338], - "ngsim;":0x2275, "ngt;":0x226f, - "ngtr;":0x226f, "nhArr;":0x21ce, - "nharr;":0x21ae, "nhpar;":0x2af2, - "ni;":0x220b, "nis;":0x22fc, - "nisd;":0x22fa, "niv;":0x220b, - "njcy;":0x45a, "nlArr;":0x21cd, - "nlE;":[0x2266,0x338], "nlarr;":0x219a, - "nldr;":0x2025, "nle;":0x2270, - "nleftarrow;":0x219a, "nleftrightarrow;":0x21ae, - "nleq;":0x2270, "nleqq;":[0x2266,0x338], - "nleqslant;":[0x2a7d,0x338], "nles;":[0x2a7d,0x338], - "nless;":0x226e, "nlsim;":0x2274, - "nlt;":0x226e, "nltri;":0x22ea, - "nltrie;":0x22ec, "nmid;":0x2224, - "nopf;":[0xd835,0xdd5f], "not":0xac, - "not;":0xac, "notin;":0x2209, - "notinE;":[0x22f9,0x338], "notindot;":[0x22f5,0x338], - "notinva;":0x2209, "notinvb;":0x22f7, - "notinvc;":0x22f6, "notni;":0x220c, - "notniva;":0x220c, "notnivb;":0x22fe, - "notnivc;":0x22fd, "npar;":0x2226, - "nparallel;":0x2226, "nparsl;":[0x2afd,0x20e5], - "npart;":[0x2202,0x338], "npolint;":0x2a14, - "npr;":0x2280, "nprcue;":0x22e0, - "npre;":[0x2aaf,0x338], "nprec;":0x2280, - "npreceq;":[0x2aaf,0x338], "nrArr;":0x21cf, - "nrarr;":0x219b, "nrarrc;":[0x2933,0x338], - "nrarrw;":[0x219d,0x338], "nrightarrow;":0x219b, - "nrtri;":0x22eb, "nrtrie;":0x22ed, - "nsc;":0x2281, "nsccue;":0x22e1, - "nsce;":[0x2ab0,0x338], "nscr;":[0xd835,0xdcc3], - "nshortmid;":0x2224, "nshortparallel;":0x2226, - "nsim;":0x2241, "nsime;":0x2244, - "nsimeq;":0x2244, "nsmid;":0x2224, - "nspar;":0x2226, "nsqsube;":0x22e2, - "nsqsupe;":0x22e3, "nsub;":0x2284, - "nsubE;":[0x2ac5,0x338], "nsube;":0x2288, - "nsubset;":[0x2282,0x20d2], "nsubseteq;":0x2288, - "nsubseteqq;":[0x2ac5,0x338], "nsucc;":0x2281, - "nsucceq;":[0x2ab0,0x338], "nsup;":0x2285, - "nsupE;":[0x2ac6,0x338], "nsupe;":0x2289, - "nsupset;":[0x2283,0x20d2], "nsupseteq;":0x2289, - "nsupseteqq;":[0x2ac6,0x338], "ntgl;":0x2279, - "ntilde":0xf1, "ntilde;":0xf1, - "ntlg;":0x2278, "ntriangleleft;":0x22ea, - "ntrianglelefteq;":0x22ec, "ntriangleright;":0x22eb, - "ntrianglerighteq;":0x22ed, "nu;":0x3bd, - "num;":0x23, "numero;":0x2116, - "numsp;":0x2007, "nvDash;":0x22ad, - "nvHarr;":0x2904, "nvap;":[0x224d,0x20d2], - "nvdash;":0x22ac, "nvge;":[0x2265,0x20d2], - "nvgt;":[0x3e,0x20d2], "nvinfin;":0x29de, - "nvlArr;":0x2902, "nvle;":[0x2264,0x20d2], - "nvlt;":[0x3c,0x20d2], "nvltrie;":[0x22b4,0x20d2], - "nvrArr;":0x2903, "nvrtrie;":[0x22b5,0x20d2], - "nvsim;":[0x223c,0x20d2], "nwArr;":0x21d6, - "nwarhk;":0x2923, "nwarr;":0x2196, - "nwarrow;":0x2196, "nwnear;":0x2927, - "oS;":0x24c8, "oacute":0xf3, - "oacute;":0xf3, "oast;":0x229b, - "ocir;":0x229a, "ocirc":0xf4, - "ocirc;":0xf4, "ocy;":0x43e, - "odash;":0x229d, "odblac;":0x151, - "odiv;":0x2a38, "odot;":0x2299, - "odsold;":0x29bc, "oelig;":0x153, - "ofcir;":0x29bf, "ofr;":[0xd835,0xdd2c], - "ogon;":0x2db, "ograve":0xf2, - "ograve;":0xf2, "ogt;":0x29c1, - "ohbar;":0x29b5, "ohm;":0x3a9, - "oint;":0x222e, "olarr;":0x21ba, - "olcir;":0x29be, "olcross;":0x29bb, - "oline;":0x203e, "olt;":0x29c0, - "omacr;":0x14d, "omega;":0x3c9, - "omicron;":0x3bf, "omid;":0x29b6, - "ominus;":0x2296, "oopf;":[0xd835,0xdd60], - "opar;":0x29b7, "operp;":0x29b9, - "oplus;":0x2295, "or;":0x2228, - "orarr;":0x21bb, "ord;":0x2a5d, - "order;":0x2134, "orderof;":0x2134, - "ordf":0xaa, "ordf;":0xaa, - "ordm":0xba, "ordm;":0xba, - "origof;":0x22b6, "oror;":0x2a56, - "orslope;":0x2a57, "orv;":0x2a5b, - "oscr;":0x2134, "oslash":0xf8, - "oslash;":0xf8, "osol;":0x2298, - "otilde":0xf5, "otilde;":0xf5, - "otimes;":0x2297, "otimesas;":0x2a36, - "ouml":0xf6, "ouml;":0xf6, - "ovbar;":0x233d, "par;":0x2225, - "para":0xb6, "para;":0xb6, - "parallel;":0x2225, "parsim;":0x2af3, - "parsl;":0x2afd, "part;":0x2202, - "pcy;":0x43f, "percnt;":0x25, - "period;":0x2e, "permil;":0x2030, - "perp;":0x22a5, "pertenk;":0x2031, - "pfr;":[0xd835,0xdd2d], "phi;":0x3c6, - "phiv;":0x3d5, "phmmat;":0x2133, - "phone;":0x260e, "pi;":0x3c0, - "pitchfork;":0x22d4, "piv;":0x3d6, - "planck;":0x210f, "planckh;":0x210e, - "plankv;":0x210f, "plus;":0x2b, - "plusacir;":0x2a23, "plusb;":0x229e, - "pluscir;":0x2a22, "plusdo;":0x2214, - "plusdu;":0x2a25, "pluse;":0x2a72, - "plusmn":0xb1, "plusmn;":0xb1, - "plussim;":0x2a26, "plustwo;":0x2a27, - "pm;":0xb1, "pointint;":0x2a15, - "popf;":[0xd835,0xdd61], "pound":0xa3, - "pound;":0xa3, "pr;":0x227a, - "prE;":0x2ab3, "prap;":0x2ab7, - "prcue;":0x227c, "pre;":0x2aaf, - "prec;":0x227a, "precapprox;":0x2ab7, - "preccurlyeq;":0x227c, "preceq;":0x2aaf, - "precnapprox;":0x2ab9, "precneqq;":0x2ab5, - "precnsim;":0x22e8, "precsim;":0x227e, - "prime;":0x2032, "primes;":0x2119, - "prnE;":0x2ab5, "prnap;":0x2ab9, - "prnsim;":0x22e8, "prod;":0x220f, - "profalar;":0x232e, "profline;":0x2312, - "profsurf;":0x2313, "prop;":0x221d, - "propto;":0x221d, "prsim;":0x227e, - "prurel;":0x22b0, "pscr;":[0xd835,0xdcc5], - "psi;":0x3c8, "puncsp;":0x2008, - "qfr;":[0xd835,0xdd2e], "qint;":0x2a0c, - "qopf;":[0xd835,0xdd62], "qprime;":0x2057, - "qscr;":[0xd835,0xdcc6], "quaternions;":0x210d, - "quatint;":0x2a16, "quest;":0x3f, - "questeq;":0x225f, "quot":0x22, - "quot;":0x22, "rAarr;":0x21db, - "rArr;":0x21d2, "rAtail;":0x291c, - "rBarr;":0x290f, "rHar;":0x2964, - "race;":[0x223d,0x331], "racute;":0x155, - "radic;":0x221a, "raemptyv;":0x29b3, - "rang;":0x27e9, "rangd;":0x2992, - "range;":0x29a5, "rangle;":0x27e9, - "raquo":0xbb, "raquo;":0xbb, - "rarr;":0x2192, "rarrap;":0x2975, - "rarrb;":0x21e5, "rarrbfs;":0x2920, - "rarrc;":0x2933, "rarrfs;":0x291e, - "rarrhk;":0x21aa, "rarrlp;":0x21ac, - "rarrpl;":0x2945, "rarrsim;":0x2974, - "rarrtl;":0x21a3, "rarrw;":0x219d, - "ratail;":0x291a, "ratio;":0x2236, - "rationals;":0x211a, "rbarr;":0x290d, - "rbbrk;":0x2773, "rbrace;":0x7d, - "rbrack;":0x5d, "rbrke;":0x298c, - "rbrksld;":0x298e, "rbrkslu;":0x2990, - "rcaron;":0x159, "rcedil;":0x157, - "rceil;":0x2309, "rcub;":0x7d, - "rcy;":0x440, "rdca;":0x2937, - "rdldhar;":0x2969, "rdquo;":0x201d, - "rdquor;":0x201d, "rdsh;":0x21b3, - "real;":0x211c, "realine;":0x211b, - "realpart;":0x211c, "reals;":0x211d, - "rect;":0x25ad, "reg":0xae, - "reg;":0xae, "rfisht;":0x297d, - "rfloor;":0x230b, "rfr;":[0xd835,0xdd2f], - "rhard;":0x21c1, "rharu;":0x21c0, - "rharul;":0x296c, "rho;":0x3c1, - "rhov;":0x3f1, "rightarrow;":0x2192, - "rightarrowtail;":0x21a3, "rightharpoondown;":0x21c1, - "rightharpoonup;":0x21c0, "rightleftarrows;":0x21c4, - "rightleftharpoons;":0x21cc, "rightrightarrows;":0x21c9, - "rightsquigarrow;":0x219d, "rightthreetimes;":0x22cc, - "ring;":0x2da, "risingdotseq;":0x2253, - "rlarr;":0x21c4, "rlhar;":0x21cc, - "rlm;":0x200f, "rmoust;":0x23b1, - "rmoustache;":0x23b1, "rnmid;":0x2aee, - "roang;":0x27ed, "roarr;":0x21fe, - "robrk;":0x27e7, "ropar;":0x2986, - "ropf;":[0xd835,0xdd63], "roplus;":0x2a2e, - "rotimes;":0x2a35, "rpar;":0x29, - "rpargt;":0x2994, "rppolint;":0x2a12, - "rrarr;":0x21c9, "rsaquo;":0x203a, - "rscr;":[0xd835,0xdcc7], "rsh;":0x21b1, - "rsqb;":0x5d, "rsquo;":0x2019, - "rsquor;":0x2019, "rthree;":0x22cc, - "rtimes;":0x22ca, "rtri;":0x25b9, - "rtrie;":0x22b5, "rtrif;":0x25b8, - "rtriltri;":0x29ce, "ruluhar;":0x2968, - "rx;":0x211e, "sacute;":0x15b, - "sbquo;":0x201a, "sc;":0x227b, - "scE;":0x2ab4, "scap;":0x2ab8, - "scaron;":0x161, "sccue;":0x227d, - "sce;":0x2ab0, "scedil;":0x15f, - "scirc;":0x15d, "scnE;":0x2ab6, - "scnap;":0x2aba, "scnsim;":0x22e9, - "scpolint;":0x2a13, "scsim;":0x227f, - "scy;":0x441, "sdot;":0x22c5, - "sdotb;":0x22a1, "sdote;":0x2a66, - "seArr;":0x21d8, "searhk;":0x2925, - "searr;":0x2198, "searrow;":0x2198, - "sect":0xa7, "sect;":0xa7, - "semi;":0x3b, "seswar;":0x2929, - "setminus;":0x2216, "setmn;":0x2216, - "sext;":0x2736, "sfr;":[0xd835,0xdd30], - "sfrown;":0x2322, "sharp;":0x266f, - "shchcy;":0x449, "shcy;":0x448, - "shortmid;":0x2223, "shortparallel;":0x2225, - "shy":0xad, "shy;":0xad, - "sigma;":0x3c3, "sigmaf;":0x3c2, - "sigmav;":0x3c2, "sim;":0x223c, - "simdot;":0x2a6a, "sime;":0x2243, - "simeq;":0x2243, "simg;":0x2a9e, - "simgE;":0x2aa0, "siml;":0x2a9d, - "simlE;":0x2a9f, "simne;":0x2246, - "simplus;":0x2a24, "simrarr;":0x2972, - "slarr;":0x2190, "smallsetminus;":0x2216, - "smashp;":0x2a33, "smeparsl;":0x29e4, - "smid;":0x2223, "smile;":0x2323, - "smt;":0x2aaa, "smte;":0x2aac, - "smtes;":[0x2aac,0xfe00], "softcy;":0x44c, - "sol;":0x2f, "solb;":0x29c4, - "solbar;":0x233f, "sopf;":[0xd835,0xdd64], - "spades;":0x2660, "spadesuit;":0x2660, - "spar;":0x2225, "sqcap;":0x2293, - "sqcaps;":[0x2293,0xfe00], "sqcup;":0x2294, - "sqcups;":[0x2294,0xfe00], "sqsub;":0x228f, - "sqsube;":0x2291, "sqsubset;":0x228f, - "sqsubseteq;":0x2291, "sqsup;":0x2290, - "sqsupe;":0x2292, "sqsupset;":0x2290, - "sqsupseteq;":0x2292, "squ;":0x25a1, - "square;":0x25a1, "squarf;":0x25aa, - "squf;":0x25aa, "srarr;":0x2192, - "sscr;":[0xd835,0xdcc8], "ssetmn;":0x2216, - "ssmile;":0x2323, "sstarf;":0x22c6, - "star;":0x2606, "starf;":0x2605, - "straightepsilon;":0x3f5, "straightphi;":0x3d5, - "strns;":0xaf, "sub;":0x2282, - "subE;":0x2ac5, "subdot;":0x2abd, - "sube;":0x2286, "subedot;":0x2ac3, - "submult;":0x2ac1, "subnE;":0x2acb, - "subne;":0x228a, "subplus;":0x2abf, - "subrarr;":0x2979, "subset;":0x2282, - "subseteq;":0x2286, "subseteqq;":0x2ac5, - "subsetneq;":0x228a, "subsetneqq;":0x2acb, - "subsim;":0x2ac7, "subsub;":0x2ad5, - "subsup;":0x2ad3, "succ;":0x227b, - "succapprox;":0x2ab8, "succcurlyeq;":0x227d, - "succeq;":0x2ab0, "succnapprox;":0x2aba, - "succneqq;":0x2ab6, "succnsim;":0x22e9, - "succsim;":0x227f, "sum;":0x2211, - "sung;":0x266a, "sup1":0xb9, - "sup1;":0xb9, "sup2":0xb2, - "sup2;":0xb2, "sup3":0xb3, - "sup3;":0xb3, "sup;":0x2283, - "supE;":0x2ac6, "supdot;":0x2abe, - "supdsub;":0x2ad8, "supe;":0x2287, - "supedot;":0x2ac4, "suphsol;":0x27c9, - "suphsub;":0x2ad7, "suplarr;":0x297b, - "supmult;":0x2ac2, "supnE;":0x2acc, - "supne;":0x228b, "supplus;":0x2ac0, - "supset;":0x2283, "supseteq;":0x2287, - "supseteqq;":0x2ac6, "supsetneq;":0x228b, - "supsetneqq;":0x2acc, "supsim;":0x2ac8, - "supsub;":0x2ad4, "supsup;":0x2ad6, - "swArr;":0x21d9, "swarhk;":0x2926, - "swarr;":0x2199, "swarrow;":0x2199, - "swnwar;":0x292a, "szlig":0xdf, - "szlig;":0xdf, "target;":0x2316, - "tau;":0x3c4, "tbrk;":0x23b4, - "tcaron;":0x165, "tcedil;":0x163, - "tcy;":0x442, "tdot;":0x20db, - "telrec;":0x2315, "tfr;":[0xd835,0xdd31], - "there4;":0x2234, "therefore;":0x2234, - "theta;":0x3b8, "thetasym;":0x3d1, - "thetav;":0x3d1, "thickapprox;":0x2248, - "thicksim;":0x223c, "thinsp;":0x2009, - "thkap;":0x2248, "thksim;":0x223c, - "thorn":0xfe, "thorn;":0xfe, - "tilde;":0x2dc, "times":0xd7, - "times;":0xd7, "timesb;":0x22a0, - "timesbar;":0x2a31, "timesd;":0x2a30, - "tint;":0x222d, "toea;":0x2928, - "top;":0x22a4, "topbot;":0x2336, - "topcir;":0x2af1, "topf;":[0xd835,0xdd65], - "topfork;":0x2ada, "tosa;":0x2929, - "tprime;":0x2034, "trade;":0x2122, - "triangle;":0x25b5, "triangledown;":0x25bf, - "triangleleft;":0x25c3, "trianglelefteq;":0x22b4, - "triangleq;":0x225c, "triangleright;":0x25b9, - "trianglerighteq;":0x22b5, "tridot;":0x25ec, - "trie;":0x225c, "triminus;":0x2a3a, - "triplus;":0x2a39, "trisb;":0x29cd, - "tritime;":0x2a3b, "trpezium;":0x23e2, - "tscr;":[0xd835,0xdcc9], "tscy;":0x446, - "tshcy;":0x45b, "tstrok;":0x167, - "twixt;":0x226c, "twoheadleftarrow;":0x219e, - "twoheadrightarrow;":0x21a0, "uArr;":0x21d1, - "uHar;":0x2963, "uacute":0xfa, - "uacute;":0xfa, "uarr;":0x2191, - "ubrcy;":0x45e, "ubreve;":0x16d, - "ucirc":0xfb, "ucirc;":0xfb, - "ucy;":0x443, "udarr;":0x21c5, - "udblac;":0x171, "udhar;":0x296e, - "ufisht;":0x297e, "ufr;":[0xd835,0xdd32], - "ugrave":0xf9, "ugrave;":0xf9, - "uharl;":0x21bf, "uharr;":0x21be, - "uhblk;":0x2580, "ulcorn;":0x231c, - "ulcorner;":0x231c, "ulcrop;":0x230f, - "ultri;":0x25f8, "umacr;":0x16b, - "uml":0xa8, "uml;":0xa8, - "uogon;":0x173, "uopf;":[0xd835,0xdd66], - "uparrow;":0x2191, "updownarrow;":0x2195, - "upharpoonleft;":0x21bf, "upharpoonright;":0x21be, - "uplus;":0x228e, "upsi;":0x3c5, - "upsih;":0x3d2, "upsilon;":0x3c5, - "upuparrows;":0x21c8, "urcorn;":0x231d, - "urcorner;":0x231d, "urcrop;":0x230e, - "uring;":0x16f, "urtri;":0x25f9, - "uscr;":[0xd835,0xdcca], "utdot;":0x22f0, - "utilde;":0x169, "utri;":0x25b5, - "utrif;":0x25b4, "uuarr;":0x21c8, - "uuml":0xfc, "uuml;":0xfc, - "uwangle;":0x29a7, "vArr;":0x21d5, - "vBar;":0x2ae8, "vBarv;":0x2ae9, - "vDash;":0x22a8, "vangrt;":0x299c, - "varepsilon;":0x3f5, "varkappa;":0x3f0, - "varnothing;":0x2205, "varphi;":0x3d5, - "varpi;":0x3d6, "varpropto;":0x221d, - "varr;":0x2195, "varrho;":0x3f1, - "varsigma;":0x3c2, "varsubsetneq;":[0x228a,0xfe00], - "varsubsetneqq;":[0x2acb,0xfe00], "varsupsetneq;":[0x228b,0xfe00], - "varsupsetneqq;":[0x2acc,0xfe00], "vartheta;":0x3d1, - "vartriangleleft;":0x22b2, "vartriangleright;":0x22b3, - "vcy;":0x432, "vdash;":0x22a2, - "vee;":0x2228, "veebar;":0x22bb, - "veeeq;":0x225a, "vellip;":0x22ee, - "verbar;":0x7c, "vert;":0x7c, - "vfr;":[0xd835,0xdd33], "vltri;":0x22b2, - "vnsub;":[0x2282,0x20d2], "vnsup;":[0x2283,0x20d2], - "vopf;":[0xd835,0xdd67], "vprop;":0x221d, - "vrtri;":0x22b3, "vscr;":[0xd835,0xdccb], - "vsubnE;":[0x2acb,0xfe00], "vsubne;":[0x228a,0xfe00], - "vsupnE;":[0x2acc,0xfe00], "vsupne;":[0x228b,0xfe00], - "vzigzag;":0x299a, "wcirc;":0x175, - "wedbar;":0x2a5f, "wedge;":0x2227, - "wedgeq;":0x2259, "weierp;":0x2118, - "wfr;":[0xd835,0xdd34], "wopf;":[0xd835,0xdd68], - "wp;":0x2118, "wr;":0x2240, - "wreath;":0x2240, "wscr;":[0xd835,0xdccc], - "xcap;":0x22c2, "xcirc;":0x25ef, - "xcup;":0x22c3, "xdtri;":0x25bd, - "xfr;":[0xd835,0xdd35], "xhArr;":0x27fa, - "xharr;":0x27f7, "xi;":0x3be, - "xlArr;":0x27f8, "xlarr;":0x27f5, - "xmap;":0x27fc, "xnis;":0x22fb, - "xodot;":0x2a00, "xopf;":[0xd835,0xdd69], - "xoplus;":0x2a01, "xotime;":0x2a02, - "xrArr;":0x27f9, "xrarr;":0x27f6, - "xscr;":[0xd835,0xdccd], "xsqcup;":0x2a06, - "xuplus;":0x2a04, "xutri;":0x25b3, - "xvee;":0x22c1, "xwedge;":0x22c0, - "yacute":0xfd, "yacute;":0xfd, - "yacy;":0x44f, "ycirc;":0x177, - "ycy;":0x44b, "yen":0xa5, - "yen;":0xa5, "yfr;":[0xd835,0xdd36], - "yicy;":0x457, "yopf;":[0xd835,0xdd6a], - "yscr;":[0xd835,0xdcce], "yucy;":0x44e, - "yuml":0xff, "yuml;":0xff, - "zacute;":0x17a, "zcaron;":0x17e, - "zcy;":0x437, "zdot;":0x17c, - "zeetrf;":0x2128, "zeta;":0x3b6, - "zfr;":[0xd835,0xdd37], "zhcy;":0x436, - "zigrarr;":0x21dd, "zopf;":[0xd835,0xdd6b], - "zscr;":[0xd835,0xdccf], "zwj;":0x200d, - "zwnj;":0x200c, -}; -/* - * This regexp is generated with test/tools/update-entities.js - * It will always match at least one character -- but note that there - * are no entities whose names are a single character long. - */ -var NAMEDCHARREF = /(A(?:Elig;?|MP;?|acute;?|breve;|c(?:irc;?|y;)|fr;|grave;?|lpha;|macr;|nd;|o(?:gon;|pf;)|pplyFunction;|ring;?|s(?:cr;|sign;)|tilde;?|uml;?)|B(?:a(?:ckslash;|r(?:v;|wed;))|cy;|e(?:cause;|rnoullis;|ta;)|fr;|opf;|reve;|scr;|umpeq;)|C(?:Hcy;|OPY;?|a(?:cute;|p(?:;|italDifferentialD;)|yleys;)|c(?:aron;|edil;?|irc;|onint;)|dot;|e(?:dilla;|nterDot;)|fr;|hi;|ircle(?:Dot;|Minus;|Plus;|Times;)|lo(?:ckwiseContourIntegral;|seCurly(?:DoubleQuote;|Quote;))|o(?:lon(?:;|e;)|n(?:gruent;|int;|tourIntegral;)|p(?:f;|roduct;)|unterClockwiseContourIntegral;)|ross;|scr;|up(?:;|Cap;))|D(?:D(?:;|otrahd;)|Jcy;|Scy;|Zcy;|a(?:gger;|rr;|shv;)|c(?:aron;|y;)|el(?:;|ta;)|fr;|i(?:a(?:critical(?:Acute;|Do(?:t;|ubleAcute;)|Grave;|Tilde;)|mond;)|fferentialD;)|o(?:pf;|t(?:;|Dot;|Equal;)|uble(?:ContourIntegral;|Do(?:t;|wnArrow;)|L(?:eft(?:Arrow;|RightArrow;|Tee;)|ong(?:Left(?:Arrow;|RightArrow;)|RightArrow;))|Right(?:Arrow;|Tee;)|Up(?:Arrow;|DownArrow;)|VerticalBar;)|wn(?:Arrow(?:;|Bar;|UpArrow;)|Breve;|Left(?:RightVector;|TeeVector;|Vector(?:;|Bar;))|Right(?:TeeVector;|Vector(?:;|Bar;))|Tee(?:;|Arrow;)|arrow;))|s(?:cr;|trok;))|E(?:NG;|TH;?|acute;?|c(?:aron;|irc;?|y;)|dot;|fr;|grave;?|lement;|m(?:acr;|pty(?:SmallSquare;|VerySmallSquare;))|o(?:gon;|pf;)|psilon;|qu(?:al(?:;|Tilde;)|ilibrium;)|s(?:cr;|im;)|ta;|uml;?|x(?:ists;|ponentialE;))|F(?:cy;|fr;|illed(?:SmallSquare;|VerySmallSquare;)|o(?:pf;|rAll;|uriertrf;)|scr;)|G(?:Jcy;|T;?|amma(?:;|d;)|breve;|c(?:edil;|irc;|y;)|dot;|fr;|g;|opf;|reater(?:Equal(?:;|Less;)|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|scr;|t;)|H(?:ARDcy;|a(?:cek;|t;)|circ;|fr;|ilbertSpace;|o(?:pf;|rizontalLine;)|s(?:cr;|trok;)|ump(?:DownHump;|Equal;))|I(?:Ecy;|Jlig;|Ocy;|acute;?|c(?:irc;?|y;)|dot;|fr;|grave;?|m(?:;|a(?:cr;|ginaryI;)|plies;)|n(?:t(?:;|e(?:gral;|rsection;))|visible(?:Comma;|Times;))|o(?:gon;|pf;|ta;)|scr;|tilde;|u(?:kcy;|ml;?))|J(?:c(?:irc;|y;)|fr;|opf;|s(?:cr;|ercy;)|ukcy;)|K(?:Hcy;|Jcy;|appa;|c(?:edil;|y;)|fr;|opf;|scr;)|L(?:Jcy;|T;?|a(?:cute;|mbda;|ng;|placetrf;|rr;)|c(?:aron;|edil;|y;)|e(?:ft(?:A(?:ngleBracket;|rrow(?:;|Bar;|RightArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|Right(?:Arrow;|Vector;)|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;|rightarrow;)|ss(?:EqualGreater;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;))|fr;|l(?:;|eftarrow;)|midot;|o(?:ng(?:Left(?:Arrow;|RightArrow;)|RightArrow;|left(?:arrow;|rightarrow;)|rightarrow;)|pf;|wer(?:LeftArrow;|RightArrow;))|s(?:cr;|h;|trok;)|t;)|M(?:ap;|cy;|e(?:diumSpace;|llintrf;)|fr;|inusPlus;|opf;|scr;|u;)|N(?:Jcy;|acute;|c(?:aron;|edil;|y;)|e(?:gative(?:MediumSpace;|Thi(?:ckSpace;|nSpace;)|VeryThinSpace;)|sted(?:GreaterGreater;|LessLess;)|wLine;)|fr;|o(?:Break;|nBreakingSpace;|pf;|t(?:;|C(?:ongruent;|upCap;)|DoubleVerticalBar;|E(?:lement;|qual(?:;|Tilde;)|xists;)|Greater(?:;|Equal;|FullEqual;|Greater;|Less;|SlantEqual;|Tilde;)|Hump(?:DownHump;|Equal;)|Le(?:ftTriangle(?:;|Bar;|Equal;)|ss(?:;|Equal;|Greater;|Less;|SlantEqual;|Tilde;))|Nested(?:GreaterGreater;|LessLess;)|Precedes(?:;|Equal;|SlantEqual;)|R(?:everseElement;|ightTriangle(?:;|Bar;|Equal;))|S(?:quareSu(?:bset(?:;|Equal;)|perset(?:;|Equal;))|u(?:bset(?:;|Equal;)|cceeds(?:;|Equal;|SlantEqual;|Tilde;)|perset(?:;|Equal;)))|Tilde(?:;|Equal;|FullEqual;|Tilde;)|VerticalBar;))|scr;|tilde;?|u;)|O(?:Elig;|acute;?|c(?:irc;?|y;)|dblac;|fr;|grave;?|m(?:acr;|ega;|icron;)|opf;|penCurly(?:DoubleQuote;|Quote;)|r;|s(?:cr;|lash;?)|ti(?:lde;?|mes;)|uml;?|ver(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;))|P(?:artialD;|cy;|fr;|hi;|i;|lusMinus;|o(?:incareplane;|pf;)|r(?:;|ecedes(?:;|Equal;|SlantEqual;|Tilde;)|ime;|o(?:duct;|portion(?:;|al;)))|s(?:cr;|i;))|Q(?:UOT;?|fr;|opf;|scr;)|R(?:Barr;|EG;?|a(?:cute;|ng;|rr(?:;|tl;))|c(?:aron;|edil;|y;)|e(?:;|verse(?:E(?:lement;|quilibrium;)|UpEquilibrium;))|fr;|ho;|ight(?:A(?:ngleBracket;|rrow(?:;|Bar;|LeftArrow;))|Ceiling;|Do(?:ubleBracket;|wn(?:TeeVector;|Vector(?:;|Bar;)))|Floor;|T(?:ee(?:;|Arrow;|Vector;)|riangle(?:;|Bar;|Equal;))|Up(?:DownVector;|TeeVector;|Vector(?:;|Bar;))|Vector(?:;|Bar;)|arrow;)|o(?:pf;|undImplies;)|rightarrow;|s(?:cr;|h;)|uleDelayed;)|S(?:H(?:CHcy;|cy;)|OFTcy;|acute;|c(?:;|aron;|edil;|irc;|y;)|fr;|hort(?:DownArrow;|LeftArrow;|RightArrow;|UpArrow;)|igma;|mallCircle;|opf;|q(?:rt;|uare(?:;|Intersection;|Su(?:bset(?:;|Equal;)|perset(?:;|Equal;))|Union;))|scr;|tar;|u(?:b(?:;|set(?:;|Equal;))|c(?:ceeds(?:;|Equal;|SlantEqual;|Tilde;)|hThat;)|m;|p(?:;|erset(?:;|Equal;)|set;)))|T(?:HORN;?|RADE;|S(?:Hcy;|cy;)|a(?:b;|u;)|c(?:aron;|edil;|y;)|fr;|h(?:e(?:refore;|ta;)|i(?:ckSpace;|nSpace;))|ilde(?:;|Equal;|FullEqual;|Tilde;)|opf;|ripleDot;|s(?:cr;|trok;))|U(?:a(?:cute;?|rr(?:;|ocir;))|br(?:cy;|eve;)|c(?:irc;?|y;)|dblac;|fr;|grave;?|macr;|n(?:der(?:B(?:ar;|rac(?:e;|ket;))|Parenthesis;)|ion(?:;|Plus;))|o(?:gon;|pf;)|p(?:Arrow(?:;|Bar;|DownArrow;)|DownArrow;|Equilibrium;|Tee(?:;|Arrow;)|arrow;|downarrow;|per(?:LeftArrow;|RightArrow;)|si(?:;|lon;))|ring;|scr;|tilde;|uml;?)|V(?:Dash;|bar;|cy;|dash(?:;|l;)|e(?:e;|r(?:bar;|t(?:;|ical(?:Bar;|Line;|Separator;|Tilde;))|yThinSpace;))|fr;|opf;|scr;|vdash;)|W(?:circ;|edge;|fr;|opf;|scr;)|X(?:fr;|i;|opf;|scr;)|Y(?:Acy;|Icy;|Ucy;|acute;?|c(?:irc;|y;)|fr;|opf;|scr;|uml;)|Z(?:Hcy;|acute;|c(?:aron;|y;)|dot;|e(?:roWidthSpace;|ta;)|fr;|opf;|scr;)|a(?:acute;?|breve;|c(?:;|E;|d;|irc;?|ute;?|y;)|elig;?|f(?:;|r;)|grave;?|l(?:e(?:fsym;|ph;)|pha;)|m(?:a(?:cr;|lg;)|p;?)|n(?:d(?:;|and;|d;|slope;|v;)|g(?:;|e;|le;|msd(?:;|a(?:a;|b;|c;|d;|e;|f;|g;|h;))|rt(?:;|vb(?:;|d;))|s(?:ph;|t;)|zarr;))|o(?:gon;|pf;)|p(?:;|E;|acir;|e;|id;|os;|prox(?:;|eq;))|ring;?|s(?:cr;|t;|ymp(?:;|eq;))|tilde;?|uml;?|w(?:conint;|int;))|b(?:Not;|a(?:ck(?:cong;|epsilon;|prime;|sim(?:;|eq;))|r(?:vee;|wed(?:;|ge;)))|brk(?:;|tbrk;)|c(?:ong;|y;)|dquo;|e(?:caus(?:;|e;)|mptyv;|psi;|rnou;|t(?:a;|h;|ween;))|fr;|ig(?:c(?:ap;|irc;|up;)|o(?:dot;|plus;|times;)|s(?:qcup;|tar;)|triangle(?:down;|up;)|uplus;|vee;|wedge;)|karow;|l(?:a(?:ck(?:lozenge;|square;|triangle(?:;|down;|left;|right;))|nk;)|k(?:1(?:2;|4;)|34;)|ock;)|n(?:e(?:;|quiv;)|ot;)|o(?:pf;|t(?:;|tom;)|wtie;|x(?:D(?:L;|R;|l;|r;)|H(?:;|D;|U;|d;|u;)|U(?:L;|R;|l;|r;)|V(?:;|H;|L;|R;|h;|l;|r;)|box;|d(?:L;|R;|l;|r;)|h(?:;|D;|U;|d;|u;)|minus;|plus;|times;|u(?:L;|R;|l;|r;)|v(?:;|H;|L;|R;|h;|l;|r;)))|prime;|r(?:eve;|vbar;?)|s(?:cr;|emi;|im(?:;|e;)|ol(?:;|b;|hsub;))|u(?:ll(?:;|et;)|mp(?:;|E;|e(?:;|q;))))|c(?:a(?:cute;|p(?:;|and;|brcup;|c(?:ap;|up;)|dot;|s;)|r(?:et;|on;))|c(?:a(?:ps;|ron;)|edil;?|irc;|ups(?:;|sm;))|dot;|e(?:dil;?|mptyv;|nt(?:;|erdot;|))|fr;|h(?:cy;|eck(?:;|mark;)|i;)|ir(?:;|E;|c(?:;|eq;|le(?:arrow(?:left;|right;)|d(?:R;|S;|ast;|circ;|dash;)))|e;|fnint;|mid;|scir;)|lubs(?:;|uit;)|o(?:lon(?:;|e(?:;|q;))|m(?:ma(?:;|t;)|p(?:;|fn;|le(?:ment;|xes;)))|n(?:g(?:;|dot;)|int;)|p(?:f;|rod;|y(?:;|sr;|)))|r(?:arr;|oss;)|s(?:cr;|u(?:b(?:;|e;)|p(?:;|e;)))|tdot;|u(?:darr(?:l;|r;)|e(?:pr;|sc;)|larr(?:;|p;)|p(?:;|brcap;|c(?:ap;|up;)|dot;|or;|s;)|r(?:arr(?:;|m;)|ly(?:eq(?:prec;|succ;)|vee;|wedge;)|ren;?|vearrow(?:left;|right;))|vee;|wed;)|w(?:conint;|int;)|ylcty;)|d(?:Arr;|Har;|a(?:gger;|leth;|rr;|sh(?:;|v;))|b(?:karow;|lac;)|c(?:aron;|y;)|d(?:;|a(?:gger;|rr;)|otseq;)|e(?:g;?|lta;|mptyv;)|f(?:isht;|r;)|har(?:l;|r;)|i(?:am(?:;|ond(?:;|suit;)|s;)|e;|gamma;|sin;|v(?:;|ide(?:;|ontimes;|)|onx;))|jcy;|lc(?:orn;|rop;)|o(?:llar;|pf;|t(?:;|eq(?:;|dot;)|minus;|plus;|square;)|ublebarwedge;|wn(?:arrow;|downarrows;|harpoon(?:left;|right;)))|r(?:bkarow;|c(?:orn;|rop;))|s(?:c(?:r;|y;)|ol;|trok;)|t(?:dot;|ri(?:;|f;))|u(?:arr;|har;)|wangle;|z(?:cy;|igrarr;))|e(?:D(?:Dot;|ot;)|a(?:cute;?|ster;)|c(?:aron;|ir(?:;|c;?)|olon;|y;)|dot;|e;|f(?:Dot;|r;)|g(?:;|rave;?|s(?:;|dot;))|l(?:;|inters;|l;|s(?:;|dot;))|m(?:acr;|pty(?:;|set;|v;)|sp(?:1(?:3;|4;)|;))|n(?:g;|sp;)|o(?:gon;|pf;)|p(?:ar(?:;|sl;)|lus;|si(?:;|lon;|v;))|q(?:c(?:irc;|olon;)|s(?:im;|lant(?:gtr;|less;))|u(?:als;|est;|iv(?:;|DD;))|vparsl;)|r(?:Dot;|arr;)|s(?:cr;|dot;|im;)|t(?:a;|h;?)|u(?:ml;?|ro;)|x(?:cl;|ist;|p(?:ectation;|onentiale;)))|f(?:allingdotseq;|cy;|emale;|f(?:ilig;|l(?:ig;|lig;)|r;)|ilig;|jlig;|l(?:at;|lig;|tns;)|nof;|o(?:pf;|r(?:all;|k(?:;|v;)))|partint;|r(?:a(?:c(?:1(?:2;?|3;|4;?|5;|6;|8;)|2(?:3;|5;)|3(?:4;?|5;|8;)|45;|5(?:6;|8;)|78;)|sl;)|own;)|scr;)|g(?:E(?:;|l;)|a(?:cute;|mma(?:;|d;)|p;)|breve;|c(?:irc;|y;)|dot;|e(?:;|l;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|l;))|l(?:;|es;)))|fr;|g(?:;|g;)|imel;|jcy;|l(?:;|E;|a;|j;)|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|opf;|rave;|s(?:cr;|im(?:;|e;|l;))|t(?:;|c(?:c;|ir;)|dot;|lPar;|quest;|r(?:a(?:pprox;|rr;)|dot;|eq(?:less;|qless;)|less;|sim;)|)|v(?:ertneqq;|nE;))|h(?:Arr;|a(?:irsp;|lf;|milt;|r(?:dcy;|r(?:;|cir;|w;)))|bar;|circ;|e(?:arts(?:;|uit;)|llip;|rcon;)|fr;|ks(?:earow;|warow;)|o(?:arr;|mtht;|ok(?:leftarrow;|rightarrow;)|pf;|rbar;)|s(?:cr;|lash;|trok;)|y(?:bull;|phen;))|i(?:acute;?|c(?:;|irc;?|y;)|e(?:cy;|xcl;?)|f(?:f;|r;)|grave;?|i(?:;|i(?:int;|nt;)|nfin;|ota;)|jlig;|m(?:a(?:cr;|g(?:e;|line;|part;)|th;)|of;|ped;)|n(?:;|care;|fin(?:;|tie;)|odot;|t(?:;|cal;|e(?:gers;|rcal;)|larhk;|prod;))|o(?:cy;|gon;|pf;|ta;)|prod;|quest;?|s(?:cr;|in(?:;|E;|dot;|s(?:;|v;)|v;))|t(?:;|ilde;)|u(?:kcy;|ml;?))|j(?:c(?:irc;|y;)|fr;|math;|opf;|s(?:cr;|ercy;)|ukcy;)|k(?:appa(?:;|v;)|c(?:edil;|y;)|fr;|green;|hcy;|jcy;|opf;|scr;)|l(?:A(?:arr;|rr;|tail;)|Barr;|E(?:;|g;)|Har;|a(?:cute;|emptyv;|gran;|mbda;|ng(?:;|d;|le;)|p;|quo;?|rr(?:;|b(?:;|fs;)|fs;|hk;|lp;|pl;|sim;|tl;)|t(?:;|ail;|e(?:;|s;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|quo(?:;|r;)|r(?:dhar;|ushar;)|sh;)|e(?:;|ft(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|leftarrows;|right(?:arrow(?:;|s;)|harpoons;|squigarrow;)|threetimes;)|g;|q(?:;|q;|slant;)|s(?:;|cc;|dot(?:;|o(?:;|r;))|g(?:;|es;)|s(?:approx;|dot;|eq(?:gtr;|qgtr;)|gtr;|sim;)))|f(?:isht;|loor;|r;)|g(?:;|E;)|h(?:ar(?:d;|u(?:;|l;))|blk;)|jcy;|l(?:;|arr;|corner;|hard;|tri;)|m(?:idot;|oust(?:;|ache;))|n(?:E;|ap(?:;|prox;)|e(?:;|q(?:;|q;))|sim;)|o(?:a(?:ng;|rr;)|brk;|ng(?:left(?:arrow;|rightarrow;)|mapsto;|rightarrow;)|oparrow(?:left;|right;)|p(?:ar;|f;|lus;)|times;|w(?:ast;|bar;)|z(?:;|enge;|f;))|par(?:;|lt;)|r(?:arr;|corner;|har(?:;|d;)|m;|tri;)|s(?:aquo;|cr;|h;|im(?:;|e;|g;)|q(?:b;|uo(?:;|r;))|trok;)|t(?:;|c(?:c;|ir;)|dot;|hree;|imes;|larr;|quest;|r(?:Par;|i(?:;|e;|f;))|)|ur(?:dshar;|uhar;)|v(?:ertneqq;|nE;))|m(?:DDot;|a(?:cr;?|l(?:e;|t(?:;|ese;))|p(?:;|sto(?:;|down;|left;|up;))|rker;)|c(?:omma;|y;)|dash;|easuredangle;|fr;|ho;|i(?:cro;?|d(?:;|ast;|cir;|dot;?)|nus(?:;|b;|d(?:;|u;)))|l(?:cp;|dr;)|nplus;|o(?:dels;|pf;)|p;|s(?:cr;|tpos;)|u(?:;|ltimap;|map;))|n(?:G(?:g;|t(?:;|v;))|L(?:eft(?:arrow;|rightarrow;)|l;|t(?:;|v;))|Rightarrow;|V(?:Dash;|dash;)|a(?:bla;|cute;|ng;|p(?:;|E;|id;|os;|prox;)|tur(?:;|al(?:;|s;)))|b(?:sp;?|ump(?:;|e;))|c(?:a(?:p;|ron;)|edil;|ong(?:;|dot;)|up;|y;)|dash;|e(?:;|Arr;|ar(?:hk;|r(?:;|ow;))|dot;|quiv;|s(?:ear;|im;)|xist(?:;|s;))|fr;|g(?:E;|e(?:;|q(?:;|q;|slant;)|s;)|sim;|t(?:;|r;))|h(?:Arr;|arr;|par;)|i(?:;|s(?:;|d;)|v;)|jcy;|l(?:Arr;|E;|arr;|dr;|e(?:;|ft(?:arrow;|rightarrow;)|q(?:;|q;|slant;)|s(?:;|s;))|sim;|t(?:;|ri(?:;|e;)))|mid;|o(?:pf;|t(?:;|in(?:;|E;|dot;|v(?:a;|b;|c;))|ni(?:;|v(?:a;|b;|c;))|))|p(?:ar(?:;|allel;|sl;|t;)|olint;|r(?:;|cue;|e(?:;|c(?:;|eq;))))|r(?:Arr;|arr(?:;|c;|w;)|ightarrow;|tri(?:;|e;))|s(?:c(?:;|cue;|e;|r;)|hort(?:mid;|parallel;)|im(?:;|e(?:;|q;))|mid;|par;|qsu(?:be;|pe;)|u(?:b(?:;|E;|e;|set(?:;|eq(?:;|q;)))|cc(?:;|eq;)|p(?:;|E;|e;|set(?:;|eq(?:;|q;)))))|t(?:gl;|ilde;?|lg;|riangle(?:left(?:;|eq;)|right(?:;|eq;)))|u(?:;|m(?:;|ero;|sp;))|v(?:Dash;|Harr;|ap;|dash;|g(?:e;|t;)|infin;|l(?:Arr;|e;|t(?:;|rie;))|r(?:Arr;|trie;)|sim;)|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|near;))|o(?:S;|a(?:cute;?|st;)|c(?:ir(?:;|c;?)|y;)|d(?:ash;|blac;|iv;|ot;|sold;)|elig;|f(?:cir;|r;)|g(?:on;|rave;?|t;)|h(?:bar;|m;)|int;|l(?:arr;|c(?:ir;|ross;)|ine;|t;)|m(?:acr;|ega;|i(?:cron;|d;|nus;))|opf;|p(?:ar;|erp;|lus;)|r(?:;|arr;|d(?:;|er(?:;|of;)|f;?|m;?)|igof;|or;|slope;|v;)|s(?:cr;|lash;?|ol;)|ti(?:lde;?|mes(?:;|as;))|uml;?|vbar;)|p(?:ar(?:;|a(?:;|llel;|)|s(?:im;|l;)|t;)|cy;|er(?:cnt;|iod;|mil;|p;|tenk;)|fr;|h(?:i(?:;|v;)|mmat;|one;)|i(?:;|tchfork;|v;)|l(?:an(?:ck(?:;|h;)|kv;)|us(?:;|acir;|b;|cir;|d(?:o;|u;)|e;|mn;?|sim;|two;))|m;|o(?:intint;|pf;|und;?)|r(?:;|E;|ap;|cue;|e(?:;|c(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;))|ime(?:;|s;)|n(?:E;|ap;|sim;)|o(?:d;|f(?:alar;|line;|surf;)|p(?:;|to;))|sim;|urel;)|s(?:cr;|i;)|uncsp;)|q(?:fr;|int;|opf;|prime;|scr;|u(?:at(?:ernions;|int;)|est(?:;|eq;)|ot;?))|r(?:A(?:arr;|rr;|tail;)|Barr;|Har;|a(?:c(?:e;|ute;)|dic;|emptyv;|ng(?:;|d;|e;|le;)|quo;?|rr(?:;|ap;|b(?:;|fs;)|c;|fs;|hk;|lp;|pl;|sim;|tl;|w;)|t(?:ail;|io(?:;|nals;)))|b(?:arr;|brk;|r(?:ac(?:e;|k;)|k(?:e;|sl(?:d;|u;))))|c(?:aron;|e(?:dil;|il;)|ub;|y;)|d(?:ca;|ldhar;|quo(?:;|r;)|sh;)|e(?:al(?:;|ine;|part;|s;)|ct;|g;?)|f(?:isht;|loor;|r;)|h(?:ar(?:d;|u(?:;|l;))|o(?:;|v;))|i(?:ght(?:arrow(?:;|tail;)|harpoon(?:down;|up;)|left(?:arrows;|harpoons;)|rightarrows;|squigarrow;|threetimes;)|ng;|singdotseq;)|l(?:arr;|har;|m;)|moust(?:;|ache;)|nmid;|o(?:a(?:ng;|rr;)|brk;|p(?:ar;|f;|lus;)|times;)|p(?:ar(?:;|gt;)|polint;)|rarr;|s(?:aquo;|cr;|h;|q(?:b;|uo(?:;|r;)))|t(?:hree;|imes;|ri(?:;|e;|f;|ltri;))|uluhar;|x;)|s(?:acute;|bquo;|c(?:;|E;|a(?:p;|ron;)|cue;|e(?:;|dil;)|irc;|n(?:E;|ap;|sim;)|polint;|sim;|y;)|dot(?:;|b;|e;)|e(?:Arr;|ar(?:hk;|r(?:;|ow;))|ct;?|mi;|swar;|tm(?:inus;|n;)|xt;)|fr(?:;|own;)|h(?:arp;|c(?:hcy;|y;)|ort(?:mid;|parallel;)|y;?)|i(?:gma(?:;|f;|v;)|m(?:;|dot;|e(?:;|q;)|g(?:;|E;)|l(?:;|E;)|ne;|plus;|rarr;))|larr;|m(?:a(?:llsetminus;|shp;)|eparsl;|i(?:d;|le;)|t(?:;|e(?:;|s;)))|o(?:ftcy;|l(?:;|b(?:;|ar;))|pf;)|pa(?:des(?:;|uit;)|r;)|q(?:c(?:ap(?:;|s;)|up(?:;|s;))|su(?:b(?:;|e;|set(?:;|eq;))|p(?:;|e;|set(?:;|eq;)))|u(?:;|ar(?:e;|f;)|f;))|rarr;|s(?:cr;|etmn;|mile;|tarf;)|t(?:ar(?:;|f;)|r(?:aight(?:epsilon;|phi;)|ns;))|u(?:b(?:;|E;|dot;|e(?:;|dot;)|mult;|n(?:E;|e;)|plus;|rarr;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;)))|cc(?:;|approx;|curlyeq;|eq;|n(?:approx;|eqq;|sim;)|sim;)|m;|ng;|p(?:1;?|2;?|3;?|;|E;|d(?:ot;|sub;)|e(?:;|dot;)|hs(?:ol;|ub;)|larr;|mult;|n(?:E;|e;)|plus;|s(?:et(?:;|eq(?:;|q;)|neq(?:;|q;))|im;|u(?:b;|p;))))|w(?:Arr;|ar(?:hk;|r(?:;|ow;))|nwar;)|zlig;?)|t(?:a(?:rget;|u;)|brk;|c(?:aron;|edil;|y;)|dot;|elrec;|fr;|h(?:e(?:re(?:4;|fore;)|ta(?:;|sym;|v;))|i(?:ck(?:approx;|sim;)|nsp;)|k(?:ap;|sim;)|orn;?)|i(?:lde;|mes(?:;|b(?:;|ar;)|d;|)|nt;)|o(?:ea;|p(?:;|bot;|cir;|f(?:;|ork;))|sa;)|prime;|r(?:ade;|i(?:angle(?:;|down;|left(?:;|eq;)|q;|right(?:;|eq;))|dot;|e;|minus;|plus;|sb;|time;)|pezium;)|s(?:c(?:r;|y;)|hcy;|trok;)|w(?:ixt;|ohead(?:leftarrow;|rightarrow;)))|u(?:Arr;|Har;|a(?:cute;?|rr;)|br(?:cy;|eve;)|c(?:irc;?|y;)|d(?:arr;|blac;|har;)|f(?:isht;|r;)|grave;?|h(?:ar(?:l;|r;)|blk;)|l(?:c(?:orn(?:;|er;)|rop;)|tri;)|m(?:acr;|l;?)|o(?:gon;|pf;)|p(?:arrow;|downarrow;|harpoon(?:left;|right;)|lus;|si(?:;|h;|lon;)|uparrows;)|r(?:c(?:orn(?:;|er;)|rop;)|ing;|tri;)|scr;|t(?:dot;|ilde;|ri(?:;|f;))|u(?:arr;|ml;?)|wangle;)|v(?:Arr;|Bar(?:;|v;)|Dash;|a(?:ngrt;|r(?:epsilon;|kappa;|nothing;|p(?:hi;|i;|ropto;)|r(?:;|ho;)|s(?:igma;|u(?:bsetneq(?:;|q;)|psetneq(?:;|q;)))|t(?:heta;|riangle(?:left;|right;))))|cy;|dash;|e(?:e(?:;|bar;|eq;)|llip;|r(?:bar;|t;))|fr;|ltri;|nsu(?:b;|p;)|opf;|prop;|rtri;|s(?:cr;|u(?:bn(?:E;|e;)|pn(?:E;|e;)))|zigzag;)|w(?:circ;|e(?:d(?:bar;|ge(?:;|q;))|ierp;)|fr;|opf;|p;|r(?:;|eath;)|scr;)|x(?:c(?:ap;|irc;|up;)|dtri;|fr;|h(?:Arr;|arr;)|i;|l(?:Arr;|arr;)|map;|nis;|o(?:dot;|p(?:f;|lus;)|time;)|r(?:Arr;|arr;)|s(?:cr;|qcup;)|u(?:plus;|tri;)|vee;|wedge;)|y(?:ac(?:ute;?|y;)|c(?:irc;|y;)|en;?|fr;|icy;|opf;|scr;|u(?:cy;|ml;?))|z(?:acute;|c(?:aron;|y;)|dot;|e(?:etrf;|ta;)|fr;|hcy;|igrarr;|opf;|scr;|w(?:j;|nj;)))|[\s\S]/g; - -var NAMEDCHARREF_MAXLEN = 32; - -// Regular expression constants used by the tokenizer and parser - -// Note that \r is included in all of these regexps because it will need -// to be converted to LF by the scanChars() function. -var DBLQUOTEATTRVAL = /[^\r"&\u0000]+/g; -var SINGLEQUOTEATTRVAL = /[^\r'&\u0000]+/g; -var UNQUOTEDATTRVAL = /[^\r\t\n\f &>\u0000]+/g; -var TAGNAME = /[^\r\t\n\f \/>A-Z\u0000]+/g; -var ATTRNAME = /[^\r\t\n\f \/=>A-Z\u0000]+/g; - -var CDATATEXT = /[^\]\r\u0000\uffff]*/g; -var DATATEXT = /[^&<\r\u0000\uffff]*/g; -var RAWTEXT = /[^<\r\u0000\uffff]*/g; -var PLAINTEXT = /[^\r\u0000\uffff]*/g; -// Since we don't have the 'sticky tag', add '|.' to the end of SIMPLETAG -// and SIMPLEATTR so that we are guaranteed to always match. This prevents -// us from scanning past the lastIndex set. (Note that the desired matches -// are always greater than 1 char long, so longest-match will ensure that . -// is not matched unless the desired match fails.) -var SIMPLETAG = /(?:(\/)?([a-z]+)>)|[\s\S]/g; -var SIMPLEATTR = /(?:([-a-z]+)[ \t\n\f]*=[ \t\n\f]*('[^'&\r\u0000]*'|"[^"&\r\u0000]*"|[^\t\n\r\f "&'\u0000>][^&> \t\n\r\f\u0000]*[ \t\n\f]))|[\s\S]/g; - -var NONWS = /[^\x09\x0A\x0C\x0D\x20]/; -var ALLNONWS = /[^\x09\x0A\x0C\x0D\x20]/g; // like above, with g flag -var NONWSNONNUL = /[^\x00\x09\x0A\x0C\x0D\x20]/; // don't allow NUL either -var LEADINGWS = /^[\x09\x0A\x0C\x0D\x20]+/; -var NULCHARS = /\x00/g; - -/*** - * These are utility functions that don't use any of the parser's - * internal state. - */ -function buf2str(buf) { - var CHUNKSIZE=16384; - if (buf.length < CHUNKSIZE) { - return String.fromCharCode.apply(String, buf); - } - // special case for large strings, to avoid busting the stack. - var result = ''; - for (var i = 0; i < buf.length; i += CHUNKSIZE) { - result += String.fromCharCode.apply(String, buf.slice(i, i+CHUNKSIZE)); - } - return result; -} - -function str2buf(s) { - var result = []; - for (var i=0; i 0; i--) { - var e = this.elements[i]; - if (isA(e, tag)) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Pop elements off the stack up to and including the first -// element that is an instance of the specified type -HTMLParser.ElementStack.prototype.popElementType = function(type) { - for(var i = this.elements.length-1; i > 0; i--) { - if (this.elements[i] instanceof type) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Pop elements off the stack up to and including the element e. -// Note that this is very different from removeElement() -// This requires that e is on the stack. -HTMLParser.ElementStack.prototype.popElement = function(e) { - for(var i = this.elements.length-1; i > 0; i--) { - if (this.elements[i] === e) break; - } - this.elements.length = i; - this.top = this.elements[i-1]; -}; - -// Remove a specific element from the stack. -// Do nothing if the element is not on the stack -HTMLParser.ElementStack.prototype.removeElement = function(e) { - if (this.top === e) this.pop(); - else { - var idx = this.elements.lastIndexOf(e); - if (idx !== -1) - this.elements.splice(idx, 1); - } -}; - -HTMLParser.ElementStack.prototype.clearToContext = function(set) { - // Note that we don't loop to 0. Never pop the elt off. - for(var i = this.elements.length-1; i > 0; i--) { - if (isA(this.elements[i], set)) break; - } - this.elements.length = i+1; - this.top = this.elements[i]; -}; - -HTMLParser.ElementStack.prototype.contains = function(tag) { - return this.inSpecificScope(tag, Object.create(null)); -}; - -HTMLParser.ElementStack.prototype.inSpecificScope = function(tag, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (isA(elt, tag)) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -// Like the above, but for a specific element, not a tagname -HTMLParser.ElementStack.prototype.elementInSpecificScope = function(target, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt === target) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -// Like the above, but for an element interface, not a tagname -HTMLParser.ElementStack.prototype.elementTypeInSpecificScope = function(target, set) { - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt instanceof target) return true; - if (isA(elt, set)) return false; - } - return false; -}; - -HTMLParser.ElementStack.prototype.inScope = function(tag) { - return this.inSpecificScope(tag, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.elementInScope = function(e) { - return this.elementInSpecificScope(e, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.elementTypeInScope = function(type) { - return this.elementTypeInSpecificScope(type, inScopeSet); -}; - -HTMLParser.ElementStack.prototype.inButtonScope = function(tag) { - return this.inSpecificScope(tag, inButtonScopeSet); -}; - -HTMLParser.ElementStack.prototype.inListItemScope = function(tag) { - return this.inSpecificScope(tag, inListItemScopeSet); -}; - -HTMLParser.ElementStack.prototype.inTableScope = function(tag) { - return this.inSpecificScope(tag, inTableScopeSet); -}; - -HTMLParser.ElementStack.prototype.inSelectScope = function(tag) { - // Can't implement this one with inSpecificScope, since it involves - // a set defined by inverting another set. So implement manually. - for(var i = this.elements.length-1; i >= 0; i--) { - var elt = this.elements[i]; - if (elt.namespaceURI !== NAMESPACE.HTML) return false; - var localname = elt.localName; - if (localname === tag) return true; - if (localname !== "optgroup" && localname !== "option") - return false; - } - return false; -}; - -HTMLParser.ElementStack.prototype.generateImpliedEndTags = function(butnot, thorough) { - var endTagSet = thorough ? thoroughImpliedEndTagsSet : impliedEndTagsSet; - for(var i = this.elements.length-1; i >= 0; i--) { - var e = this.elements[i]; - if (butnot && isA(e, butnot)) break; - if (!isA(this.elements[i], endTagSet)) break; - } - - this.elements.length = i+1; - this.top = this.elements[i]; -}; - -/*** - * The ActiveFormattingElements class - */ -HTMLParser.ActiveFormattingElements = function AFE() { - this.list = []; // elements - this.attrs = []; // attribute tokens for cloning -}; - -HTMLParser.ActiveFormattingElements.prototype.MARKER = { localName: "|" }; - -/* -// For debugging -HTMLParser.ActiveFormattingElements.prototype.toString = function() { - return "AFE: " + - this.list.map(function(e) { return e.localName; }).join("-"); -} -*/ - -HTMLParser.ActiveFormattingElements.prototype.insertMarker = function() { - this.list.push(this.MARKER); - this.attrs.push(this.MARKER); -}; - -HTMLParser.ActiveFormattingElements.prototype.push = function(elt, attrs) { - // Scan backwards: if there are already 3 copies of this element - // before we encounter a marker, then drop the last one - var count = 0; - for(var i = this.list.length-1; i >= 0; i--) { - if (this.list[i] === this.MARKER) break; - // equal() is defined below - if (equal(elt, this.list[i], this.attrs[i])) { - count++; - if (count === 3) { - this.list.splice(i, 1); - this.attrs.splice(i, 1); - break; - } - } - } - - - // Now push the element onto the list - this.list.push(elt); - - // Copy the attributes and push those on, too - var attrcopy = []; - for(var ii = 0; ii < attrs.length; ii++) { - attrcopy[ii] = attrs[ii]; - } - - this.attrs.push(attrcopy); - - // This function defines equality of two elements for the purposes - // of the AFE list. Note that it compares the new elements - // attributes to the saved array of attributes associated with - // the old element because a script could have changed the - // old element's set of attributes - function equal(newelt, oldelt, oldattrs) { - if (newelt.localName !== oldelt.localName) return false; - if (newelt._numattrs !== oldattrs.length) return false; - for(var i = 0, n = oldattrs.length; i < n; i++) { - var oldname = oldattrs[i][0]; - var oldval = oldattrs[i][1]; - if (!newelt.hasAttribute(oldname)) return false; - if (newelt.getAttribute(oldname) !== oldval) return false; - } - return true; - } -}; - -HTMLParser.ActiveFormattingElements.prototype.clearToMarker = function() { - for(var i = this.list.length-1; i >= 0; i--) { - if (this.list[i] === this.MARKER) break; - } - if (i < 0) i = 0; - this.list.length = i; - this.attrs.length = i; -}; - -// Find and return the last element with the specified tag between the -// end of the list and the last marker on the list. -// Used when parsing in_body_mode() -HTMLParser.ActiveFormattingElements.prototype.findElementByTag = function(tag) { - for(var i = this.list.length-1; i >= 0; i--) { - var elt = this.list[i]; - if (elt === this.MARKER) break; - if (elt.localName === tag) return elt; - } - return null; -}; - -HTMLParser.ActiveFormattingElements.prototype.indexOf = function(e) { - return this.list.lastIndexOf(e); -}; - -// Find the element e in the list and remove it -// Used when parsing in_body() -HTMLParser.ActiveFormattingElements.prototype.remove = function(e) { - var idx = this.list.lastIndexOf(e); - if (idx !== -1) { - this.list.splice(idx, 1); - this.attrs.splice(idx, 1); - } -}; - -// Find element a in the list and replace it with element b -// XXX: Do I need to handle attributes here? -HTMLParser.ActiveFormattingElements.prototype.replace = function(a, b, attrs) { - var idx = this.list.lastIndexOf(a); - if (idx !== -1) { - this.list[idx] = b; - this.attrs[idx] = attrs; - } -}; - -// Find a in the list and insert b after it -// This is only used for insert a bookmark object, so the -// attrs array doesn't really matter -HTMLParser.ActiveFormattingElements.prototype.insertAfter = function(a,b) { - var idx = this.list.lastIndexOf(a); - if (idx !== -1) { - this.list.splice(idx, 0, b); - this.attrs.splice(idx, 0, b); - } -}; - - - - -/*** - * This is the parser factory function. It is the return value of - * the outer closure that it is defined within. Most of the parser - * implementation details are inside this function. - */ -function HTMLParser(address, fragmentContext, options) { - /*** - * These are the parser's state variables - */ - // Scanner state - var chars = null; - var numchars = 0; // Length of chars - var nextchar = 0; // Index of next char - var input_complete = false; // Becomes true when end() called. - var scanner_skip_newline = false; // If previous char was CR - var reentrant_invocations = 0; - var saved_scanner_state = []; - var leftovers = ""; - var first_batch = true; - var paused = 0; // Becomes non-zero while loading scripts - - - // Tokenizer state - var tokenizer = data_state; // Current tokenizer state - var return_state; - var character_reference_code; - var tagnamebuf = ""; - var lasttagname = ""; // holds the target end tag for text states - var tempbuf = []; - var attrnamebuf = ""; - var attrvaluebuf = ""; - var commentbuf = []; - var doctypenamebuf = []; - var doctypepublicbuf = []; - var doctypesystembuf = []; - var attributes = []; - var is_end_tag = false; - - // Tree builder state - var parser = initial_mode; // Current insertion mode - var originalInsertionMode = null; // A saved insertion mode - var templateInsertionModes = []; // Stack of template insertion modes. - var stack = new HTMLParser.ElementStack(); // Stack of open elements - var afe = new HTMLParser.ActiveFormattingElements(); // mis-nested tags - var fragment = (fragmentContext!==undefined); // For innerHTML, etc. - var head_element_pointer = null; - var form_element_pointer = null; - var scripting_enabled = true; - if (fragmentContext) { - scripting_enabled = fragmentContext.ownerDocument._scripting_enabled; - } - if (options && options.scripting_enabled === false) - scripting_enabled = false; - var frameset_ok = true; - var force_quirks = false; - var pending_table_text; - var text_integration_mode; // XXX a spec bug workaround? - - // A single run of characters, buffered up to be sent to - // the parser as a single string. - var textrun = []; - var textIncludesNUL = false; - var ignore_linefeed = false; - - /*** - * This is the parser object that will be the return value of this - * factory function, which is some 5000 lines below. - * Note that the variable "parser" is the current state of the - * parser's state machine. This variable "htmlparser" is the - * return value and defines the public API of the parser - */ - var htmlparser = { - document: function() { - return doc; - }, - - // Convenience function for internal use. Can only be called once, - // as it removes the nodes from `doc` to add them to fragment. - _asDocumentFragment: function() { - var frag = doc.createDocumentFragment(); - var root = doc.firstChild; - while(root.hasChildNodes()) { - frag.appendChild(root.firstChild); - } - return frag; - }, - - // Internal function used from HTMLScriptElement to pause the - // parser while a script is being loaded from the network - pause: function() { - // print("pausing parser"); - paused++; - }, - - // Called when a script finishes loading - resume: function() { - // print("resuming parser"); - paused--; - // XXX: added this to force a resumption. - // Is this the right thing to do? - this.parse(""); - }, - - // Parse the HTML text s. - // The second argument should be true if there is no more - // text to be parsed, and should be false or omitted otherwise. - // The second argument must not be set for recursive invocations - // from document.write() - parse: function(s, end, shouldPauseFunc) { - var moreToDo; - - // If we're paused, remember the text to parse, but - // don't parse it now. - // (Don't invoke shouldPauseFunc because we haven't handled 'end' yet.) - if (paused > 0) { - leftovers += s; - return true; // more to do - } - - - if (reentrant_invocations === 0) { - // A normal, top-level invocation - if (leftovers) { - s = leftovers + s; - leftovers = ""; - } - - // Add a special marker character to the end of - // the buffer. If the scanner is at the end of - // the buffer and input_complete is set, then this - // character will transform into an EOF token. - // Having an actual character that represents EOF - // in the character buffer makes lookahead regexp - // matching work more easily, and this is - // important for character references. - if (end) { - s += "\uFFFF"; - input_complete = true; // Makes scanChars() send EOF - } - - chars = s; - numchars = s.length; - nextchar = 0; - - if (first_batch) { - // We skip a leading Byte Order Mark (\uFEFF) - // on first batch of text we're given - first_batch = false; - if (chars.charCodeAt(0) === 0xFEFF) nextchar = 1; - } - - reentrant_invocations++; - moreToDo = scanChars(shouldPauseFunc); - leftovers = chars.substring(nextchar, numchars); - reentrant_invocations--; - } - else { - // This is the re-entrant case, which we have to - // handle a little differently. - reentrant_invocations++; - - // Save current scanner state - saved_scanner_state.push(chars, numchars, nextchar); - - // Set new scanner state - chars = s; - numchars = s.length; - nextchar = 0; - - // Now scan as many of these new chars as we can - scanChars(); - moreToDo = false; - - leftovers = chars.substring(nextchar, numchars); - - // restore old scanner state - nextchar = saved_scanner_state.pop(); - numchars = saved_scanner_state.pop(); - chars = saved_scanner_state.pop(); - - // If there were leftover chars from this invocation - // insert them into the pending invocation's buffer - // and trim already processed chars at the same time - if (leftovers) { - chars = leftovers + chars.substring(nextchar); - numchars = chars.length; - nextchar = 0; - leftovers = ""; - } - - // Decrement the counter - reentrant_invocations--; - } - return moreToDo; - } - }; - - - // This is the document we'll be building up - var doc = new Document(true, address); - - // The document needs to know about the parser, for document.write(). - // This _parser property will be deleted when we're done parsing. - doc._parser = htmlparser; - - // XXX I think that any document we use this parser on should support - // scripts. But I may need to configure that through a parser parameter - // Only documents with windows ("browsing contexts" to be precise) - // allow scripting. - doc._scripting_enabled = scripting_enabled; - - - /*** - * The actual code of the HTMLParser() factory function begins here. - */ - - if (fragmentContext) { // for innerHTML parsing - if (fragmentContext.ownerDocument._quirks) - doc._quirks = true; - if (fragmentContext.ownerDocument._limitedQuirks) - doc._limitedQuirks = true; - - // Set the initial tokenizer state - if (fragmentContext.namespaceURI === NAMESPACE.HTML) { - switch(fragmentContext.localName) { - case "title": - case "textarea": - tokenizer = rcdata_state; - break; - case "style": - case "xmp": - case "iframe": - case "noembed": - case "noframes": - case "script": - case "plaintext": - tokenizer = plaintext_state; - break; - } - } - - var root = doc.createElement("html"); - doc._appendChild(root); - stack.push(root); - if (fragmentContext instanceof impl.HTMLTemplateElement) { - templateInsertionModes.push(in_template_mode); - } - resetInsertionMode(); - - for(var e = fragmentContext; e !== null; e = e.parentElement) { - if (e instanceof impl.HTMLFormElement) { - form_element_pointer = e; - break; - } - } - } - - /*** - * Scanner functions - */ - // Loop through the characters in chars, and pass them one at a time - // to the tokenizer FSM. Return when no more characters can be processed - // (This may leave 1 or more characters in the buffer: like a CR - // waiting to see if the next char is LF, or for states that require - // lookahead...) - function scanChars(shouldPauseFunc) { - var codepoint, s, pattern, eof; - - while(nextchar < numchars) { - - // If we just tokenized a tag, then the paused flag - // may have been set to tell us to stop tokenizing while - // the script is loading - if (paused > 0 || (shouldPauseFunc && shouldPauseFunc())) { - return true; - } - - - switch(typeof tokenizer.lookahead) { - case 'undefined': - codepoint = chars.charCodeAt(nextchar++); - if (scanner_skip_newline) { - scanner_skip_newline = false; - if (codepoint === 0x000A) { - nextchar++; - continue; - } - } - switch(codepoint) { - case 0x000D: - // CR always turns into LF, but if the next character - // is LF, then that second LF is skipped. - if (nextchar < numchars) { - if (chars.charCodeAt(nextchar) === 0x000A) - nextchar++; - } - else { - // We don't know the next char right now, so we - // can't check if it is a LF. So set a flag - scanner_skip_newline = true; - } - - // In either case, emit a LF - tokenizer(0x000A); - - break; - case 0xFFFF: - if (input_complete && nextchar === numchars) { - tokenizer(EOF); // codepoint will be 0xFFFF here - break; - } - /* falls through */ - default: - tokenizer(codepoint); - break; - } - break; - - case 'number': - codepoint = chars.charCodeAt(nextchar); - - // The only tokenizer states that require fixed lookahead - // only consume alphanum characters, so we don't have - // to worry about CR and LF in this case - - // tokenizer wants n chars of lookahead - var n = tokenizer.lookahead; - var needsString = true; - if (n < 0) { - needsString = false; - n = -n; - } - - if (n < numchars - nextchar) { - // If we can look ahead that far - s = needsString ? chars.substring(nextchar, nextchar+n) : null; - eof = false; - } - else { // if we don't have that many characters - if (input_complete) { // If no more are coming - // Just return what we have - s = needsString ? chars.substring(nextchar, numchars) : null; - eof = true; - if (codepoint === 0xFFFF && nextchar === numchars-1) - codepoint = EOF; - } - else { - // Return now and wait for more chars later - return true; - } - } - tokenizer(codepoint, s, eof); - break; - case 'string': - codepoint = chars.charCodeAt(nextchar); - - // tokenizer wants characters up to a matching string - pattern = tokenizer.lookahead; - var pos = chars.indexOf(pattern, nextchar); - if (pos !== -1) { - s = chars.substring(nextchar, pos + pattern.length); - eof = false; - } - else { // No match - // If more characters coming, wait for them - if (!input_complete) return true; - - // Otherwise, we've got to return what we've got - s = chars.substring(nextchar, numchars); - if (codepoint === 0xFFFF && nextchar === numchars-1) - codepoint = EOF; - eof = true; - } - - // The tokenizer states that require this kind of - // lookahead have to be careful to handle CR characters - // correctly - tokenizer(codepoint, s, eof); - break; - } - } - return false; // no more characters to scan! - } - - - /*** - * Tokenizer utility functions - */ - function addAttribute(name,value) { - // Make sure there isn't already an attribute with this name - // If there is, ignore this one. - for(var i = 0; i < attributes.length; i++) { - if (attributes[i][0] === name) return; - } - - if (value !== undefined) { - attributes.push([name, value]); - } - else { - attributes.push([name]); - } - } - - // Shortcut for simple attributes - function handleSimpleAttribute() { - SIMPLEATTR.lastIndex = nextchar-1; - var matched = SIMPLEATTR.exec(chars); - if (!matched) throw new Error("should never happen"); - var name = matched[1]; - if (!name) return false; - var value = matched[2]; - var len = value.length; - switch(value[0]) { - case '"': - case "'": - value = value.substring(1, len-1); - nextchar += (matched[0].length-1); - tokenizer = after_attribute_value_quoted_state; - break; - default: - tokenizer = before_attribute_name_state; - nextchar += (matched[0].length-1); - value = value.substring(0, len-1); - break; - } - - // Make sure there isn't already an attribute with this name - // If there is, ignore this one. - for(var i = 0; i < attributes.length; i++) { - if (attributes[i][0] === name) return true; - } - - attributes.push([name, value]); - return true; - } - - function beginTagName() { - is_end_tag = false; - tagnamebuf = ""; - attributes.length = 0; - } - function beginEndTagName() { - is_end_tag = true; - tagnamebuf = ""; - attributes.length = 0; - } - - function beginTempBuf() { tempbuf.length = 0; } - function beginAttrName() { attrnamebuf = ""; } - function beginAttrValue() { attrvaluebuf = ""; } - function beginComment() { commentbuf.length = 0; } - function beginDoctype() { - doctypenamebuf.length = 0; - doctypepublicbuf = null; - doctypesystembuf = null; - } - function beginDoctypePublicId() { doctypepublicbuf = []; } - function beginDoctypeSystemId() { doctypesystembuf = []; } - function forcequirks() { force_quirks = true; } - function cdataAllowed() { - return stack.top && - stack.top.namespaceURI !== "http://www.w3.org/1999/xhtml"; - } - - // Return true if the codepoints in the specified buffer match the - // characters of lasttagname - function appropriateEndTag(buf) { - return lasttagname === buf; - } - - function flushText() { - if (textrun.length > 0) { - var s = buf2str(textrun); - textrun.length = 0; - - if (ignore_linefeed) { - ignore_linefeed = false; - if (s[0] === "\n") s = s.substring(1); - if (s.length === 0) return; - } - - insertToken(TEXT, s); - textIncludesNUL = false; - } - ignore_linefeed = false; - } - - // Consume chars matched by the pattern and return them as a string. Starts - // matching at the current position, so users should drop the current char - // otherwise. - function getMatchingChars(pattern) { - pattern.lastIndex = nextchar - 1; - var match = pattern.exec(chars); - if (match && match.index === nextchar - 1) { - match = match[0]; - nextchar += match.length - 1; - /* Careful! Make sure we haven't matched the EOF character! */ - if (input_complete && nextchar === numchars) { - // Oops, backup one. - match = match.slice(0, -1); - nextchar--; - } - return match; - } else { - throw new Error("should never happen"); - } - } - - // emit a string of chars that match a regexp - // Returns false if no chars matched. - function emitCharsWhile(pattern) { - pattern.lastIndex = nextchar-1; - var match = pattern.exec(chars)[0]; - if (!match) return false; - emitCharString(match); - nextchar += match.length - 1; - return true; - } - - // This is used by CDATA sections - function emitCharString(s) { - if (textrun.length > 0) flushText(); - - if (ignore_linefeed) { - ignore_linefeed = false; - if (s[0] === "\n") s = s.substring(1); - if (s.length === 0) return; - } - - insertToken(TEXT, s); - } - - function emitTag() { - if (is_end_tag) insertToken(ENDTAG, tagnamebuf); - else { - // Remember the last open tag we emitted - var tagname = tagnamebuf; - tagnamebuf = ""; - lasttagname = tagname; - insertToken(TAG, tagname, attributes); - } - } - - - // A shortcut: look ahead and if this is a open or close tag - // in lowercase with no spaces and no attributes, just emit it now. - function emitSimpleTag() { - if (nextchar === numchars) { return false; /* not even 1 char left */ } - SIMPLETAG.lastIndex = nextchar; - var matched = SIMPLETAG.exec(chars); - if (!matched) throw new Error("should never happen"); - var tagname = matched[2]; - if (!tagname) return false; - var endtag = matched[1]; - if (endtag) { - nextchar += (tagname.length+2); - insertToken(ENDTAG, tagname); - } - else { - nextchar += (tagname.length+1); - lasttagname = tagname; - insertToken(TAG, tagname, NOATTRS); - } - return true; - } - - function emitSelfClosingTag() { - if (is_end_tag) insertToken(ENDTAG, tagnamebuf, null, true); - else { - insertToken(TAG, tagnamebuf, attributes, true); - } - } - - function emitDoctype() { - insertToken(DOCTYPE, - buf2str(doctypenamebuf), - doctypepublicbuf ? buf2str(doctypepublicbuf) : undefined, - doctypesystembuf ? buf2str(doctypesystembuf) : undefined); - } - - function emitEOF() { - flushText(); - parser(EOF); // EOF never goes to insertForeignContent() - doc.modclock = 1; // Start tracking modifications - } - - // Insert a token, either using the current parser insertion mode - // (for HTML stuff) or using the insertForeignToken() method. - var insertToken = htmlparser.insertToken = function insertToken(t, value, arg3, arg4) { - flushText(); - var current = stack.top; - - if (!current || current.namespaceURI === NAMESPACE.HTML) { - // This is the common case - parser(t, value, arg3, arg4); - } - else { - // Otherwise we may need to insert this token as foreign content - if (t !== TAG && t !== TEXT) { - insertForeignToken(t, value, arg3, arg4); - } - else { - // But in some cases we treat it as regular content - if ((isMathmlTextIntegrationPoint(current) && - (t === TEXT || - (t === TAG && - value !== "mglyph" && value !== "malignmark"))) || - (t === TAG && - value === "svg" && - current.namespaceURI === NAMESPACE.MATHML && - current.localName === "annotation-xml") || - isHTMLIntegrationPoint(current)) { - - // XXX: the text_integration_mode stuff is an - // attempted bug workaround of mine - text_integration_mode = true; - parser(t, value, arg3, arg4); - text_integration_mode = false; - } - // Otherwise it is foreign content - else { - insertForeignToken(t, value, arg3, arg4); - } - } - } - }; - - - /*** - * Tree building utility functions - */ - function insertComment(data) { - var parent = stack.top; - if (foster_parent_mode && isA(parent, tablesectionrowSet)) { - fosterParent(function(doc) { return doc.createComment(data); }); - } else { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - parent._appendChild(parent.ownerDocument.createComment(data)); - } - } - - function insertText(s) { - var parent = stack.top; - if (foster_parent_mode && isA(parent, tablesectionrowSet)) { - fosterParent(function(doc) { return doc.createTextNode(s); }); - } else { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - // "If there is a Text node immediately before the adjusted insertion - // location, then append data to that Text node's data." - var lastChild = parent.lastChild; - if (lastChild && lastChild.nodeType === Node.TEXT_NODE) { - lastChild.appendData(s); - } else { - parent._appendChild(parent.ownerDocument.createTextNode(s)); - } - } - } - - function createHTMLElt(doc, name, attrs) { - // Create the element this way, rather than with - // doc.createElement because createElement() does error - // checking on the element name that we need to avoid here. - var elt = html.createElement(doc, name, null); - - if (attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - // Use the _ version to avoid testing the validity - // of the attribute name - elt._setAttribute(attrs[i][0], attrs[i][1]); - } - } - // XXX - // If the element is a resettable form element, - // run its reset algorithm now - // XXX - // handle case where form-element-pointer is not null - return elt; - } - - // The in_table insertion mode turns on this flag, and that makes - // insertHTMLElement use the foster parenting algorithm for elements - // tags inside a table - var foster_parent_mode = false; - - function insertHTMLElement(name, attrs) { - var elt = insertElement(function(doc) { - return createHTMLElt(doc, name, attrs); - }); - - // XXX - // If this is a form element, set its form attribute property here - if (isA(elt, formassociatedSet)) { - elt._form = form_element_pointer; - } - - return elt; - } - - // Insert the element into the open element or foster parent it - function insertElement(eltFunc) { - var elt; - if (foster_parent_mode && isA(stack.top, tablesectionrowSet)) { - elt = fosterParent(eltFunc); - } - else if (stack.top instanceof impl.HTMLTemplateElement) { - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - elt = eltFunc(stack.top.content.ownerDocument); - stack.top.content._appendChild(elt); - } else { - elt = eltFunc(stack.top.ownerDocument); - stack.top._appendChild(elt); - } - - stack.push(elt); - return elt; - } - - function insertForeignElement(name, attrs, ns) { - return insertElement(function(doc) { - // We need to prevent createElementNS from trying to parse `name` as a - // `qname`, so use an internal Document#_createElementNS() interface. - var elt = doc._createElementNS(name, ns, null); - if (attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - var attr = attrs[i]; - if (attr.length === 2) - elt._setAttribute(attr[0], attr[1]); - else { - elt._setAttributeNS(attr[2], attr[0], attr[1]); - } - } - } - return elt; - }); - } - - function lastElementOfType(type) { - for(var i = stack.elements.length-1; i >= 0; i--) { - if (stack.elements[i] instanceof type) { - return i; - } - } - return -1; - } - - function fosterParent(eltFunc) { - var parent, before, lastTable = -1, lastTemplate = -1, elt; - - lastTable = lastElementOfType(impl.HTMLTableElement); - lastTemplate = lastElementOfType(impl.HTMLTemplateElement); - - if (lastTemplate >= 0 && (lastTable < 0 || lastTemplate > lastTable)) { - parent = stack.elements[lastTemplate]; - } else if (lastTable >= 0) { - parent = stack.elements[lastTable].parentNode; - if (parent) { - before = stack.elements[lastTable]; - } else { - parent = stack.elements[lastTable - 1]; - } - } - if (!parent) parent = stack.elements[0]; // the `html` element. - - // "If the adjusted insertion location is inside a template element, - // let it instead be inside the template element's template contents" - if (parent instanceof impl.HTMLTemplateElement) { - parent = parent.content; - } - // Create element in the appropriate document. - elt = eltFunc(parent.ownerDocument); - - if (elt.nodeType === Node.TEXT_NODE) { - var prev; - if (before) prev = before.previousSibling; - else prev = parent.lastChild; - if (prev && prev.nodeType === Node.TEXT_NODE) { - prev.appendData(elt.data); - return elt; - } - } - if (before) - parent.insertBefore(elt, before); - else - parent._appendChild(elt); - return elt; - } - - - function resetInsertionMode() { - var last = false; - for(var i = stack.elements.length-1; i >= 0; i--) { - var node = stack.elements[i]; - if (i === 0) { - last = true; - if (fragment) { - node = fragmentContext; - } - } - if (node.namespaceURI === NAMESPACE.HTML) { - var tag = node.localName; - switch(tag) { - case "select": - for(var j = i; j > 0; ) { - var ancestor = stack.elements[--j]; - if (ancestor instanceof impl.HTMLTemplateElement) { - break; - } else if (ancestor instanceof impl.HTMLTableElement) { - parser = in_select_in_table_mode; - return; - } - } - parser = in_select_mode; - return; - case "tr": - parser = in_row_mode; - return; - case "tbody": - case "tfoot": - case "thead": - parser = in_table_body_mode; - return; - case "caption": - parser = in_caption_mode; - return; - case "colgroup": - parser = in_column_group_mode; - return; - case "table": - parser = in_table_mode; - return; - case "template": - parser = templateInsertionModes[templateInsertionModes.length-1]; - return; - case "body": - parser = in_body_mode; - return; - case "frameset": - parser = in_frameset_mode; - return; - case "html": - if (head_element_pointer === null) { - parser = before_head_mode; - } else { - parser = after_head_mode; - } - return; - default: - if (!last) { - if (tag === "head") { - parser = in_head_mode; - return; - } - if (tag === "td" || tag === "th") { - parser = in_cell_mode; - return; - } - } - } - } - if (last) { - parser = in_body_mode; - return; - } - } - } - - - function parseRawText(name, attrs) { - insertHTMLElement(name, attrs); - tokenizer = rawtext_state; - originalInsertionMode = parser; - parser = text_mode; - } - - function parseRCDATA(name, attrs) { - insertHTMLElement(name, attrs); - tokenizer = rcdata_state; - originalInsertionMode = parser; - parser = text_mode; - } - - // Make a copy of element i on the list of active formatting - // elements, using its original attributes, not current - // attributes (which may have been modified by a script) - function afeclone(doc, i) { - return { - elt: createHTMLElt(doc, afe.list[i].localName, afe.attrs[i]), - attrs: afe.attrs[i], - }; - } - - - function afereconstruct() { - if (afe.list.length === 0) return; - var entry = afe.list[afe.list.length-1]; - // If the last is a marker , do nothing - if (entry === afe.MARKER) return; - // Or if it is an open element, do nothing - if (stack.elements.lastIndexOf(entry) !== -1) return; - - // Loop backward through the list until we find a marker or an - // open element, and then move forward one from there. - for(var i = afe.list.length-2; i >= 0; i--) { - entry = afe.list[i]; - if (entry === afe.MARKER) break; - if (stack.elements.lastIndexOf(entry) !== -1) break; - } - - // Now loop forward, starting from the element after the current - // one, recreating formatting elements and pushing them back onto - // the list of open elements - for(i = i+1; i < afe.list.length; i++) { - var newelt = insertElement(function(doc) { return afeclone(doc, i).elt; }); - afe.list[i] = newelt; - } - } - - // Used by the adoptionAgency() function - var BOOKMARK = {localName:"BM"}; - - function adoptionAgency(tag) { - // If the current node is an HTML element whose tag name is subject, - // and the current node is not in the list of active formatting - // elements, then pop the current node off the stack of open - // elements and abort these steps. - if (isA(stack.top, tag) && afe.indexOf(stack.top) === -1) { - stack.pop(); - return true; // no more handling required - } - - // Let outer loop counter be zero. - var outer = 0; - - // Outer loop: If outer loop counter is greater than or - // equal to eight, then abort these steps. - while(outer < 8) { - // Increment outer loop counter by one. - outer++; - - // Let the formatting element be the last element in the list - // of active formatting elements that: is between the end of - // the list and the last scope marker in the list, if any, or - // the start of the list otherwise, and has the same tag name - // as the token. - var fmtelt = afe.findElementByTag(tag); - - // If there is no such node, then abort these steps and instead - // act as described in the "any other end tag" entry below. - if (!fmtelt) { - return false; // false means handle by the default case - } - - // Otherwise, if there is such a node, but that node is not in - // the stack of open elements, then this is a parse error; - // remove the element from the list, and abort these steps. - var index = stack.elements.lastIndexOf(fmtelt); - if (index === -1) { - afe.remove(fmtelt); - return true; // true means no more handling required - } - - // Otherwise, if there is such a node, and that node is also in - // the stack of open elements, but the element is not in scope, - // then this is a parse error; ignore the token, and abort - // these steps. - if (!stack.elementInScope(fmtelt)) { - return true; - } - - // Let the furthest block be the topmost node in the stack of - // open elements that is lower in the stack than the formatting - // element, and is an element in the special category. There - // might not be one. - var furthestblock = null, furthestblockindex; - for(var i = index+1; i < stack.elements.length; i++) { - if (isA(stack.elements[i], specialSet)) { - furthestblock = stack.elements[i]; - furthestblockindex = i; - break; - } - } - - // If there is no furthest block, then the UA must skip the - // subsequent steps and instead just pop all the nodes from the - // bottom of the stack of open elements, from the current node - // up to and including the formatting element, and remove the - // formatting element from the list of active formatting - // elements. - if (!furthestblock) { - stack.popElement(fmtelt); - afe.remove(fmtelt); - return true; - } - else { - // Let the common ancestor be the element immediately above - // the formatting element in the stack of open elements. - var ancestor = stack.elements[index-1]; - - // Let a bookmark note the position of the formatting - // element in the list of active formatting elements - // relative to the elements on either side of it in the - // list. - afe.insertAfter(fmtelt, BOOKMARK); - - // Let node and last node be the furthest block. - var node = furthestblock; - var lastnode = furthestblock; - var nodeindex = furthestblockindex; - var nodeafeindex; - - // Let inner loop counter be zero. - var inner = 0; - - while (true) { - - // Increment inner loop counter by one. - inner++; - - // Let node be the element immediately above node in - // the stack of open elements, or if node is no longer - // in the stack of open elements (e.g. because it got - // removed by this algorithm), the element that was - // immediately above node in the stack of open elements - // before node was removed. - node = stack.elements[--nodeindex]; - - // If node is the formatting element, then go - // to the next step in the overall algorithm. - if (node === fmtelt) break; - - // If the inner loop counter is greater than three and node - // is in the list of active formatting elements, then remove - // node from the list of active formatting elements. - nodeafeindex = afe.indexOf(node); - if (inner > 3 && nodeafeindex !== -1) { - afe.remove(node); - nodeafeindex = -1; - } - - // If node is not in the list of active formatting - // elements, then remove node from the stack of open - // elements and then go back to the step labeled inner - // loop. - if (nodeafeindex === -1) { - stack.removeElement(node); - continue; - } - - // Create an element for the token for which the - // element node was created with common ancestor as - // the intended parent, replace the entry for node - // in the list of active formatting elements with an - // entry for the new element, replace the entry for - // node in the stack of open elements with an entry for - // the new element, and let node be the new element. - var newelt = afeclone(ancestor.ownerDocument, nodeafeindex); - afe.replace(node, newelt.elt, newelt.attrs); - stack.elements[nodeindex] = newelt.elt; - node = newelt.elt; - - // If last node is the furthest block, then move the - // aforementioned bookmark to be immediately after the - // new node in the list of active formatting elements. - if (lastnode === furthestblock) { - afe.remove(BOOKMARK); - afe.insertAfter(newelt.elt, BOOKMARK); - } - - // Insert last node into node, first removing it from - // its previous parent node if any. - node._appendChild(lastnode); - - // Let last node be node. - lastnode = node; - } - - // If the common ancestor node is a table, tbody, tfoot, - // thead, or tr element, then, foster parent whatever last - // node ended up being in the previous step, first removing - // it from its previous parent node if any. - if (foster_parent_mode && isA(ancestor, tablesectionrowSet)) { - fosterParent(function() { return lastnode; }); - } - // Otherwise, append whatever last node ended up being in - // the previous step to the common ancestor node, first - // removing it from its previous parent node if any. - else if (ancestor instanceof impl.HTMLTemplateElement) { - ancestor.content._appendChild(lastnode); - } else { - ancestor._appendChild(lastnode); - } - - // Create an element for the token for which the - // formatting element was created, with furthest block - // as the intended parent. - var newelt2 = afeclone(furthestblock.ownerDocument, afe.indexOf(fmtelt)); - - // Take all of the child nodes of the furthest block and - // append them to the element created in the last step. - while(furthestblock.hasChildNodes()) { - newelt2.elt._appendChild(furthestblock.firstChild); - } - - // Append that new element to the furthest block. - furthestblock._appendChild(newelt2.elt); - - // Remove the formatting element from the list of active - // formatting elements, and insert the new element into the - // list of active formatting elements at the position of - // the aforementioned bookmark. - afe.remove(fmtelt); - afe.replace(BOOKMARK, newelt2.elt, newelt2.attrs); - - // Remove the formatting element from the stack of open - // elements, and insert the new element into the stack of - // open elements immediately below the position of the - // furthest block in that stack. - stack.removeElement(fmtelt); - var pos = stack.elements.lastIndexOf(furthestblock); - stack.elements.splice(pos+1, 0, newelt2.elt); - } - } - - return true; - } - - // We do this when we get /script in in_text_mode - function handleScriptEnd() { - // XXX: - // This is just a stub implementation right now and doesn't run scripts. - // Getting this method right involves the event loop, URL resolution - // script fetching etc. For now I just want to be able to parse - // documents and test the parser. - - //var script = stack.top; - stack.pop(); - parser = originalInsertionMode; - //script._prepare(); - return; - - // XXX: here is what this method is supposed to do - - // Provide a stable state. - - // Let script be the current node (which will be a script - // element). - - // Pop the current node off the stack of open elements. - - // Switch the insertion mode to the original insertion mode. - - // Let the old insertion point have the same value as the current - // insertion point. Let the insertion point be just before the - // next input character. - - // Increment the parser's script nesting level by one. - - // Prepare the script. This might cause some script to execute, - // which might cause new characters to be inserted into the - // tokenizer, and might cause the tokenizer to output more tokens, - // resulting in a reentrant invocation of the parser. - - // Decrement the parser's script nesting level by one. If the - // parser's script nesting level is zero, then set the parser - // pause flag to false. - - // Let the insertion point have the value of the old insertion - // point. (In other words, restore the insertion point to its - // previous value. This value might be the "undefined" value.) - - // At this stage, if there is a pending parsing-blocking script, - // then: - - // If the script nesting level is not zero: - - // Set the parser pause flag to true, and abort the processing - // of any nested invocations of the tokenizer, yielding - // control back to the caller. (Tokenization will resume when - // the caller returns to the "outer" tree construction stage.) - - // The tree construction stage of this particular parser is - // being called reentrantly, say from a call to - // document.write(). - - // Otherwise: - - // Run these steps: - - // Let the script be the pending parsing-blocking - // script. There is no longer a pending - // parsing-blocking script. - - // Block the tokenizer for this instance of the HTML - // parser, such that the event loop will not run tasks - // that invoke the tokenizer. - - // If the parser's Document has a style sheet that is - // blocking scripts or the script's "ready to be - // parser-executed" flag is not set: spin the event - // loop until the parser's Document has no style sheet - // that is blocking scripts and the script's "ready to - // be parser-executed" flag is set. - - // Unblock the tokenizer for this instance of the HTML - // parser, such that tasks that invoke the tokenizer - // can again be run. - - // Let the insertion point be just before the next - // input character. - - // Increment the parser's script nesting level by one - // (it should be zero before this step, so this sets - // it to one). - - // Execute the script. - - // Decrement the parser's script nesting level by - // one. If the parser's script nesting level is zero - // (which it always should be at this point), then set - // the parser pause flag to false. - - // Let the insertion point be undefined again. - - // If there is once again a pending parsing-blocking - // script, then repeat these steps from step 1. - - - } - - function stopParsing() { - // XXX This is just a temporary implementation to get the parser working. - // A full implementation involves scripts and events and the event loop. - - // Remove the link from document to parser. - // This is instead of "set the insertion point to undefined". - // It means that document.write() can't write into the doc anymore. - delete doc._parser; - - stack.elements.length = 0; // pop everything off - - // If there is a window object associated with the document - // then trigger an load event on it - if (doc.defaultView) { - doc.defaultView.dispatchEvent(new impl.Event("load",{})); - } - - } - - /**** - * Tokenizer states - */ - - /** - * This file was partially mechanically generated from - * http://www.whatwg.org/specs/web-apps/current-work/multipage/tokenization.html - * - * After mechanical conversion, it was further converted from - * prose to JS by hand, but the intent is that it is a very - * faithful rendering of the HTML tokenization spec in - * JavaScript. - * - * It is not a goal of this tokenizer to detect or report - * parse errors. - * - * XXX The tokenizer is supposed to work with straight UTF32 - * codepoints. But I don't think it has any dependencies on - * any character outside of the BMP so I think it is safe to - * pass it UTF16 characters. I don't think it will ever change - * state in the middle of a surrogate pair. - */ - - /* - * Each state is represented by a function. For most states, the - * scanner simply passes the next character (as an integer - * codepoint) to the current state function and automatically - * consumes the character. If the state function can't process - * the character it can call pushback() to push it back to the - * scanner. - * - * Some states require lookahead, though. If a state function has - * a lookahead property, then it is invoked differently. In this - * case, the scanner invokes the function with 3 arguments: 1) the - * next codepoint 2) a string of lookahead text 3) a boolean that - * is true if the lookahead goes all the way to the EOF. (XXX - * actually maybe this third is not necessary... the lookahead - * could just include \uFFFF?) - * - * If the lookahead property of a state function is an integer, it - * specifies the number of characters required. If it is a string, - * then the scanner will scan for that string and return all - * characters up to and including that sequence, or up to EOF. If - * the lookahead property is a regexp, then the scanner will match - * the regexp at the current point and return the matching string. - * - * States that require lookahead are responsible for explicitly - * consuming the characters they process. They do this by - * incrementing nextchar by the number of processed characters. - */ - function reconsume(c, new_state) { - tokenizer = new_state; - nextchar--; // pushback - } - - function data_state(c) { - switch(c) { - case 0x0026: // AMPERSAND - return_state = data_state; - tokenizer = character_reference_state; - break; - case 0x003C: // LESS-THAN SIGN - if (emitSimpleTag()) // Shortcut for

    ,

    , etc. - break; - tokenizer = tag_open_state; - break; - case 0x0000: // NULL - // Usually null characters emitted by the tokenizer will be - // ignored by the tree builder, but sometimes they'll be - // converted to \uFFFD. I don't want to have the search every - // string emitted to replace NULs, so I'll set a flag - // if I've emitted a NUL. - textrun.push(c); - textIncludesNUL = true; - break; - case -1: // EOF - emitEOF(); - break; - default: - // Instead of just pushing a single character and then - // coming back to the very same place, lookahead and - // emit everything we can at once. - /*jshint -W030 */ - emitCharsWhile(DATATEXT) || textrun.push(c); - break; - } - } - - function rcdata_state(c) { - // Save the open tag so we can find a matching close tag - switch(c) { - case 0x0026: // AMPERSAND - return_state = rcdata_state; - tokenizer = character_reference_state; - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = rcdata_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - textIncludesNUL = true; - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function rawtext_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - tokenizer = rawtext_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(RAWTEXT) || textrun.push(c); - break; - } - } - - function script_data_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(RAWTEXT) || textrun.push(c); - break; - } - } - - function plaintext_state(c) { - switch(c) { - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - /*jshint -W030 */ - emitCharsWhile(PLAINTEXT) || textrun.push(c); - break; - } - } - - function tag_open_state(c) { - switch(c) { - case 0x0021: // EXCLAMATION MARK - tokenizer = markup_declaration_open_state; - break; - case 0x002F: // SOLIDUS - tokenizer = end_tag_open_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginTagName(); - reconsume(c, tag_name_state); - break; - case 0x003F: // QUESTION MARK - reconsume(c, bogus_comment_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, data_state); - break; - } - } - - function end_tag_open_state(c) { - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, tag_name_state); - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - break; - case -1: // EOF - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - emitEOF(); - break; - default: - reconsume(c, bogus_comment_state); - break; - } - } - - function tag_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_attribute_name_state; - break; - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - break; - case 0x0000: // NULL - tagnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - default: - tagnamebuf += getMatchingChars(TAGNAME); - break; - } - } - - function rcdata_less_than_sign_state(c) { - /* identical to the RAWTEXT less-than sign state, except s/RAWTEXT/RCDATA/g */ - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = rcdata_end_tag_open_state; - } - else { - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, rcdata_state); - } - } - - function rcdata_end_tag_open_state(c) { - /* identical to the RAWTEXT (and Script data) end tag open state, except s/RAWTEXT/RCDATA/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, rcdata_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, rcdata_state); - break; - } - } - - function rcdata_end_tag_name_state(c) { - /* identical to the RAWTEXT (and Script data) end tag name state, except s/RAWTEXT/RCDATA/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun, tempbuf); - reconsume(c, rcdata_state); - } - - function rawtext_less_than_sign_state(c) { - /* identical to the RCDATA less-than sign state, except s/RCDATA/RAWTEXT/g - */ - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = rawtext_end_tag_open_state; - } - else { - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, rawtext_state); - } - } - - function rawtext_end_tag_open_state(c) { - /* identical to the RCDATA (and Script data) end tag open state, except s/RCDATA/RAWTEXT/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, rawtext_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, rawtext_state); - break; - } - } - - function rawtext_end_tag_name_state(c) { - /* identical to the RCDATA (and Script data) end tag name state, except s/RCDATA/RAWTEXT/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, rawtext_state); - } - - function script_data_less_than_sign_state(c) { - switch(c) { - case 0x002F: // SOLIDUS - beginTempBuf(); - tokenizer = script_data_end_tag_open_state; - break; - case 0x0021: // EXCLAMATION MARK - tokenizer = script_data_escape_start_state; - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x0021); // EXCLAMATION MARK - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_state); - break; - } - } - - function script_data_end_tag_open_state(c) { - /* identical to the RCDATA (and RAWTEXT) end tag open state, except s/RCDATA/Script data/g */ - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, script_data_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, script_data_state); - break; - } - } - - function script_data_end_tag_name_state(c) { - /* identical to the RCDATA (and RAWTEXT) end tag name state, except s/RCDATA/Script data/g */ - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // If we don't return in one of the cases above, then this was not - // an appropriately matching close tag, so back out by emitting all - // the characters as text - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, script_data_state); - } - - function script_data_escape_start_state(c) { - if (c === 0x002D) { // HYPHEN-MINUS - tokenizer = script_data_escape_start_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - } - else { - reconsume(c, script_data_state); - } - } - - function script_data_escape_start_dash_state(c) { - if (c === 0x002D) { // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - } - else { - reconsume(c, script_data_state); - } - } - - function script_data_escaped_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function script_data_escaped_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x0000: // NULL - tokenizer = script_data_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_escaped_dash_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_escaped_less_than_sign_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = script_data_state; - textrun.push(0x003E); // GREATER-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_escaped_less_than_sign_state(c) { - switch(c) { - case 0x002F: // SOLIDUS - beginTempBuf(); - tokenizer = script_data_escaped_end_tag_open_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginTempBuf(); - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_double_escape_start_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_escaped_end_tag_open_state(c) { - switch(c) { - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - beginEndTagName(); - reconsume(c, script_data_escaped_end_tag_name_state); - break; - default: - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_escaped_end_tag_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - if (appropriateEndTag(tagnamebuf)) { - tokenizer = before_attribute_name_state; - return; - } - break; - case 0x002F: // SOLIDUS - if (appropriateEndTag(tagnamebuf)) { - tokenizer = self_closing_start_tag_state; - return; - } - break; - case 0x003E: // GREATER-THAN SIGN - if (appropriateEndTag(tagnamebuf)) { - tokenizer = data_state; - emitTag(); - return; - } - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tagnamebuf += String.fromCharCode(c + 0x0020); - tempbuf.push(c); - return; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tagnamebuf += String.fromCharCode(c); - tempbuf.push(c); - return; - default: - break; - } - - // We get here in the default case, and if the closing tagname - // is not an appropriate tagname. - textrun.push(0x003C); // LESS-THAN SIGN - textrun.push(0x002F); // SOLIDUS - pushAll(textrun,tempbuf); - reconsume(c, script_data_escaped_state); - } - - function script_data_double_escape_start_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - if (buf2str(tempbuf) === "script") { - tokenizer = script_data_double_escaped_state; - } - else { - tokenizer = script_data_escaped_state; - } - textrun.push(c); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tempbuf.push(c + 0x0020); - textrun.push(c); - break; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tempbuf.push(c); - textrun.push(c); - break; - default: - reconsume(c, script_data_escaped_state); - break; - } - } - - function script_data_double_escaped_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_double_escaped_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x0000: // NULL - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - textrun.push(c); - break; - } - } - - function script_data_double_escaped_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = script_data_double_escaped_dash_dash_state; - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_double_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_double_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_double_escaped_dash_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - textrun.push(0x002D); // HYPHEN-MINUS - break; - case 0x003C: // LESS-THAN SIGN - tokenizer = script_data_double_escaped_less_than_sign_state; - textrun.push(0x003C); // LESS-THAN SIGN - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = script_data_state; - textrun.push(0x003E); // GREATER-THAN SIGN - break; - case 0x0000: // NULL - tokenizer = script_data_double_escaped_state; - textrun.push(0xFFFD); // REPLACEMENT CHARACTER - break; - case -1: // EOF - emitEOF(); - break; - default: - tokenizer = script_data_double_escaped_state; - textrun.push(c); - break; - } - } - - function script_data_double_escaped_less_than_sign_state(c) { - if (c === 0x002F) { // SOLIDUS - beginTempBuf(); - tokenizer = script_data_double_escape_end_state; - textrun.push(0x002F); // SOLIDUS - } - else { - reconsume(c, script_data_double_escaped_state); - } - } - - function script_data_double_escape_end_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - if (buf2str(tempbuf) === "script") { - tokenizer = script_data_escaped_state; - } - else { - tokenizer = script_data_double_escaped_state; - } - textrun.push(c); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - tempbuf.push(c + 0x0020); - textrun.push(c); - break; - case 0x0061: // [a-z] - case 0x0062:case 0x0063:case 0x0064:case 0x0065:case 0x0066: - case 0x0067:case 0x0068:case 0x0069:case 0x006A:case 0x006B: - case 0x006C:case 0x006D:case 0x006E:case 0x006F:case 0x0070: - case 0x0071:case 0x0072:case 0x0073:case 0x0074:case 0x0075: - case 0x0076:case 0x0077:case 0x0078:case 0x0079:case 0x007A: - tempbuf.push(c); - textrun.push(c); - break; - default: - reconsume(c, script_data_double_escaped_state); - break; - } - } - - function before_attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - // For SOLIDUS, GREATER-THAN SIGN, and EOF, spec says "reconsume in - // the after attribute name state", but in our implementation that - // state always has an active attribute in attrnamebuf. Just clone - // the rules here, without the addAttribute business. - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case -1: // EOF - emitEOF(); - break; - case 0x003D: // EQUALS SIGN - beginAttrName(); - attrnamebuf += String.fromCharCode(c); - tokenizer = attribute_name_state; - break; - default: - if (handleSimpleAttribute()) break; - beginAttrName(); - reconsume(c, attribute_name_state); - break; - } - } - - // beginAttrName() must have been called before this point - // There is an active attribute in attrnamebuf (but not attrvaluebuf) - function attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - case 0x002F: // SOLIDUS - case 0x003E: // GREATER-THAN SIGN - case -1: // EOF - reconsume(c, after_attribute_name_state); - break; - case 0x003D: // EQUALS SIGN - tokenizer = before_attribute_value_state; - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - attrnamebuf += String.fromCharCode(c + 0x0020); - break; - case 0x0000: // NULL - attrnamebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x0022: // QUOTATION MARK - case 0x0027: // APOSTROPHE - case 0x003C: // LESS-THAN SIGN - /* falls through */ - default: - attrnamebuf += getMatchingChars(ATTRNAME); - break; - } - } - - // There is an active attribute in attrnamebuf, but not yet in attrvaluebuf. - function after_attribute_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x002F: // SOLIDUS - // Keep in sync with before_attribute_name_state. - addAttribute(attrnamebuf); - tokenizer = self_closing_start_tag_state; - break; - case 0x003D: // EQUALS SIGN - tokenizer = before_attribute_value_state; - break; - case 0x003E: // GREATER-THAN SIGN - // Keep in sync with before_attribute_name_state. - tokenizer = data_state; - addAttribute(attrnamebuf); - emitTag(); - break; - case -1: // EOF - // Keep in sync with before_attribute_name_state. - addAttribute(attrnamebuf); - emitEOF(); - break; - default: - addAttribute(attrnamebuf); - beginAttrName(); - reconsume(c, attribute_name_state); - break; - } - } - - function before_attribute_value_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0022: // QUOTATION MARK - beginAttrValue(); - tokenizer = attribute_value_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginAttrValue(); - tokenizer = attribute_value_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - /* falls through */ - default: - beginAttrValue(); - reconsume(c, attribute_value_unquoted_state); - break; - } - } - - function attribute_value_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = after_attribute_value_quoted_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_double_quoted_state; - tokenizer = character_reference_state; - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - case 0x000A: // LF - // this could be a converted \r, so don't use getMatchingChars - attrvaluebuf += String.fromCharCode(c); - break; - default: - attrvaluebuf += getMatchingChars(DBLQUOTEATTRVAL); - break; - } - } - - function attribute_value_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = after_attribute_value_quoted_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_single_quoted_state; - tokenizer = character_reference_state; - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - emitEOF(); - break; - case 0x000A: // LF - // this could be a converted \r, so don't use getMatchingChars - attrvaluebuf += String.fromCharCode(c); - break; - default: - attrvaluebuf += getMatchingChars(SINGLEQUOTEATTRVAL); - break; - } - } - - function attribute_value_unquoted_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = before_attribute_name_state; - break; - case 0x0026: // AMPERSAND - return_state = attribute_value_unquoted_state; - tokenizer = character_reference_state; - break; - case 0x003E: // GREATER-THAN SIGN - addAttribute(attrnamebuf, attrvaluebuf); - tokenizer = data_state; - emitTag(); - break; - case 0x0000: // NULL - attrvaluebuf += String.fromCharCode(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - nextchar--; // pushback - tokenizer = data_state; - break; - case 0x0022: // QUOTATION MARK - case 0x0027: // APOSTROPHE - case 0x003C: // LESS-THAN SIGN - case 0x003D: // EQUALS SIGN - case 0x0060: // GRAVE ACCENT - /* falls through */ - default: - attrvaluebuf += getMatchingChars(UNQUOTEDATTRVAL); - break; - } - } - - function after_attribute_value_quoted_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_attribute_name_state; - break; - case 0x002F: // SOLIDUS - tokenizer = self_closing_start_tag_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitTag(); - break; - case -1: // EOF - emitEOF(); - break; - default: - reconsume(c, before_attribute_name_state); - break; - } - } - - function self_closing_start_tag_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - // Set the self-closing flag of the current tag token. - tokenizer = data_state; - emitSelfClosingTag(true); - break; - case -1: // EOF - emitEOF(); - break; - default: - reconsume(c, before_attribute_name_state); - break; - } - } - - function bogus_comment_state(c, lookahead, eof) { - var len = lookahead.length; - - if (eof) { - nextchar += len-1; // don't consume the eof - } - else { - nextchar += len; - } - - var comment = lookahead.substring(0, len-1); - - comment = comment.replace(/\u0000/g,"\uFFFD"); - comment = comment.replace(/\u000D\u000A/g,"\u000A"); - comment = comment.replace(/\u000D/g,"\u000A"); - - insertToken(COMMENT, comment); - tokenizer = data_state; - } - bogus_comment_state.lookahead = ">"; - - function markup_declaration_open_state(c, lookahead, eof) { - if (lookahead[0] === "-" && lookahead[1] === "-") { - nextchar += 2; - beginComment(); - tokenizer = comment_start_state; - return; - } - - if (lookahead.toUpperCase() === "DOCTYPE") { - nextchar += 7; - tokenizer = doctype_state; - } - else if (lookahead === "[CDATA[" && cdataAllowed()) { - nextchar += 7; - tokenizer = cdata_section_state; - } - else { - tokenizer = bogus_comment_state; - } - } - markup_declaration_open_state.lookahead = 7; - - function comment_start_state(c) { - beginComment(); - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_start_dash_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; /* see comment in comment end state */ - default: - reconsume(c, comment_state); - break; - } - } - - function comment_start_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D /* HYPHEN-MINUS */); - reconsume(c, comment_state); - break; - } - } - - function comment_state(c) { - switch(c) { - case 0x003C: // LESS-THAN SIGN - commentbuf.push(c); - tokenizer = comment_less_than_sign_state; - break; - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_dash_state; - break; - case 0x0000: // NULL - commentbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(c); - break; - } - } - - function comment_less_than_sign_state(c) { - switch(c) { - case 0x0021: // EXCLAMATION MARK - commentbuf.push(c); - tokenizer = comment_less_than_sign_bang_state; - break; - case 0x003C: // LESS-THAN SIGN - commentbuf.push(c); - break; - default: - reconsume(c, comment_state); - break; - } - } - - function comment_less_than_sign_bang_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_less_than_sign_bang_dash_state; - break; - default: - reconsume(c, comment_state); - break; - } - } - - function comment_less_than_sign_bang_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_less_than_sign_bang_dash_dash_state; - break; - default: - reconsume(c, comment_end_dash_state); - break; - } - } - - function comment_less_than_sign_bang_dash_dash_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - case -1: // EOF - reconsume(c, comment_end_state); - break; - default: - // parse error - reconsume(c, comment_end_state); - break; - } - } - - function comment_end_dash_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - tokenizer = comment_end_state; - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D /* HYPHEN-MINUS */); - reconsume(c, comment_state); - break; - } - } - - function comment_end_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case 0x0021: // EXCLAMATION MARK - tokenizer = comment_end_bang_state; - break; - case 0x002D: // HYPHEN-MINUS - commentbuf.push(0x002D); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* For security reasons: otherwise, hostile user could put a script in a comment e.g. in a blog comment and then DOS the server so that the end tag isn't read, and then the commented script tag would be treated as live code */ - default: - commentbuf.push(0x002D); - commentbuf.push(0x002D); - reconsume(c, comment_state); - break; - } - } - - function comment_end_bang_state(c) { - switch(c) { - case 0x002D: // HYPHEN-MINUS - commentbuf.push(0x002D); - commentbuf.push(0x002D); - commentbuf.push(0x0021); - tokenizer = comment_end_dash_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - insertToken(COMMENT, buf2str(commentbuf)); - break; - case -1: // EOF - insertToken(COMMENT, buf2str(commentbuf)); - emitEOF(); - break; /* see comment in comment end state */ - default: - commentbuf.push(0x002D); - commentbuf.push(0x002D); - commentbuf.push(0x0021); - reconsume(c, comment_state); - break; - } - } - - function doctype_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_name_state; - break; - case -1: // EOF - beginDoctype(); - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - reconsume(c, before_doctype_name_state); - break; - } - } - - function before_doctype_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - beginDoctype(); - doctypenamebuf.push(c + 0x0020); - tokenizer = doctype_name_state; - break; - case 0x0000: // NULL - beginDoctype(); - doctypenamebuf.push(0xFFFD); - tokenizer = doctype_name_state; - break; - case 0x003E: // GREATER-THAN SIGN - beginDoctype(); - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - beginDoctype(); - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - beginDoctype(); - doctypenamebuf.push(c); - tokenizer = doctype_name_state; - break; - } - } - - function doctype_name_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = after_doctype_name_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0041: // [A-Z] - case 0x0042:case 0x0043:case 0x0044:case 0x0045:case 0x0046: - case 0x0047:case 0x0048:case 0x0049:case 0x004A:case 0x004B: - case 0x004C:case 0x004D:case 0x004E:case 0x004F:case 0x0050: - case 0x0051:case 0x0052:case 0x0053:case 0x0054:case 0x0055: - case 0x0056:case 0x0057:case 0x0058:case 0x0059:case 0x005A: - doctypenamebuf.push(c + 0x0020); - break; - case 0x0000: // NULL - doctypenamebuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypenamebuf.push(c); - break; - } - } - - function after_doctype_name_state(c, lookahead, eof) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - nextchar += 1; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - nextchar += 1; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - lookahead = lookahead.toUpperCase(); - if (lookahead === "PUBLIC") { - nextchar += 6; - tokenizer = after_doctype_public_keyword_state; - } - else if (lookahead === "SYSTEM") { - nextchar += 6; - tokenizer = after_doctype_system_keyword_state; - } - else { - forcequirks(); - tokenizer = bogus_doctype_state; - } - break; - } - } - after_doctype_name_state.lookahead = 6; - - function after_doctype_public_keyword_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_public_identifier_state; - break; - case 0x0022: // QUOTATION MARK - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function before_doctype_public_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x0022: // QUOTATION MARK - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypePublicId(); - tokenizer = doctype_public_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function doctype_public_identifier_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - tokenizer = after_doctype_public_identifier_state; - break; - case 0x0000: // NULL - doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypepublicbuf.push(c); - break; - } - } - - function doctype_public_identifier_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - tokenizer = after_doctype_public_identifier_state; - break; - case 0x0000: // NULL - doctypepublicbuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypepublicbuf.push(c); - break; - } - } - - function after_doctype_public_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = between_doctype_public_and_system_identifiers_state; - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function between_doctype_public_and_system_identifiers_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE Ignore the character. - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function after_doctype_system_keyword_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - tokenizer = before_doctype_system_identifier_state; - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function before_doctype_system_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE Ignore the character. - break; - case 0x0022: // QUOTATION MARK - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_double_quoted_state; - break; - case 0x0027: // APOSTROPHE - beginDoctypeSystemId(); - tokenizer = doctype_system_identifier_single_quoted_state; - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - forcequirks(); - tokenizer = bogus_doctype_state; - break; - } - } - - function doctype_system_identifier_double_quoted_state(c) { - switch(c) { - case 0x0022: // QUOTATION MARK - tokenizer = after_doctype_system_identifier_state; - break; - case 0x0000: // NULL - doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypesystembuf.push(c); - break; - } - } - - function doctype_system_identifier_single_quoted_state(c) { - switch(c) { - case 0x0027: // APOSTROPHE - tokenizer = after_doctype_system_identifier_state; - break; - case 0x0000: // NULL - doctypesystembuf.push(0xFFFD /* REPLACEMENT CHARACTER */); - break; - case 0x003E: // GREATER-THAN SIGN - forcequirks(); - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - doctypesystembuf.push(c); - break; - } - } - - function after_doctype_system_identifier_state(c) { - switch(c) { - case 0x0009: // CHARACTER TABULATION (tab) - case 0x000A: // LINE FEED (LF) - case 0x000C: // FORM FEED (FF) - case 0x0020: // SPACE - /* Ignore the character. */ - break; - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - forcequirks(); - emitDoctype(); - emitEOF(); - break; - default: - tokenizer = bogus_doctype_state; - /* This does *not* set the DOCTYPE token's force-quirks flag. */ - break; - } - } - - function bogus_doctype_state(c) { - switch(c) { - case 0x003E: // GREATER-THAN SIGN - tokenizer = data_state; - emitDoctype(); - break; - case -1: // EOF - emitDoctype(); - emitEOF(); - break; - default: - /* Ignore the character. */ - break; - } - } - - function cdata_section_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - tokenizer = cdata_section_bracket_state; - break; - case -1: // EOF - emitEOF(); - break; - case 0x0000: // NULL - textIncludesNUL = true; - /* fall through */ - default: - // Instead of just pushing a single character and then - // coming back to the very same place, lookahead and - // emit everything we can at once. - /*jshint -W030 */ - emitCharsWhile(CDATATEXT) || textrun.push(c); - break; - } - } - - function cdata_section_bracket_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - tokenizer = cdata_section_end_state; - break; - default: - textrun.push(0x005D); - reconsume(c, cdata_section_state); - break; - } - } - - function cdata_section_end_state(c) { - switch(c) { - case 0x005D: // RIGHT SQUARE BRACKET - textrun.push(0x005D); - break; - case 0x003E: // GREATER-THAN SIGN - flushText(); - tokenizer = data_state; - break; - default: - textrun.push(0x005D); - textrun.push(0x005D); - reconsume(c, cdata_section_state); - break; - } - } - - function character_reference_state(c) { - beginTempBuf(); - tempbuf.push(0x0026); - switch(c) { - case 0x0009: // TAB - case 0x000A: // LINE FEED - case 0x000C: // FORM FEED - case 0x0020: // SPACE - case 0x003C: // LESS-THAN SIGN - case 0x0026: // AMPERSAND - case -1: // EOF - reconsume(c, character_reference_end_state); - break; - case 0x0023: // NUMBER SIGN - tempbuf.push(c); - tokenizer = numeric_character_reference_state; - break; - default: - reconsume(c, named_character_reference_state); - break; - } - } - - function named_character_reference_state(c) { - NAMEDCHARREF.lastIndex = nextchar; // w/ lookahead no char has been consumed - var matched = NAMEDCHARREF.exec(chars); - if (!matched) throw new Error("should never happen"); - var name = matched[1]; - if (!name) { - // If no match can be made, switch to the character reference end state - tokenizer = character_reference_end_state; - return; - } - - // Consume the matched characters and append them to temporary buffer - nextchar += name.length; - pushAll(tempbuf, str2buf(name)); - - switch(return_state) { - case attribute_value_double_quoted_state: - case attribute_value_single_quoted_state: - case attribute_value_unquoted_state: - // If the character reference was consumed as part of an attribute... - if (name[name.length-1] !== ';') { // ...and the last char is not ; - if (/[=A-Za-z0-9]/.test(chars[nextchar])) { - tokenizer = character_reference_end_state; - return; - } - } - break; - default: - break; - } - - beginTempBuf(); - var rv = namedCharRefs[name]; - if (typeof rv === 'number') { - tempbuf.push(rv); - } else { - pushAll(tempbuf, rv); - } - tokenizer = character_reference_end_state; - } - // We might need to pause tokenization until we have enough characters - // in the buffer for longest possible character reference. - named_character_reference_state.lookahead = -NAMEDCHARREF_MAXLEN; - - function numeric_character_reference_state(c) { - character_reference_code = 0; - switch(c) { - case 0x0078: // x - case 0x0058: // X - tempbuf.push(c); - tokenizer = hexadecimal_character_reference_start_state; - break; - default: - reconsume(c, decimal_character_reference_start_state); - break; - } - } - - function hexadecimal_character_reference_start_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045: - case 0x0046: // [A-F] - case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065: - case 0x0066: // [a-f] - reconsume(c, hexadecimal_character_reference_state); - break; - default: - reconsume(c, character_reference_end_state); - break; - } - } - - function decimal_character_reference_start_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - reconsume(c, decimal_character_reference_state); - break; - default: - reconsume(c, character_reference_end_state); - break; - } - } - - function hexadecimal_character_reference_state(c) { - switch(c) { - case 0x0041: case 0x0042: case 0x0043: case 0x0044: case 0x0045: - case 0x0046: // [A-F] - character_reference_code *= 16; - character_reference_code += (c - 0x0037); - break; - case 0x0061: case 0x0062: case 0x0063: case 0x0064: case 0x0065: - case 0x0066: // [a-f] - character_reference_code *= 16; - character_reference_code += (c - 0x0057); - break; - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - character_reference_code *= 16; - character_reference_code += (c - 0x0030); - break; - case 0x003B: // SEMICOLON - tokenizer = numeric_character_reference_end_state; - break; - default: - reconsume(c, numeric_character_reference_end_state); - break; - } - } - - function decimal_character_reference_state(c) { - switch(c) { - case 0x0030: case 0x0031: case 0x0032: case 0x0033: case 0x0034: - case 0x0035: case 0x0036: case 0x0037: case 0x0038: case 0x0039: // [0-9] - character_reference_code *= 10; - character_reference_code += (c - 0x0030); - break; - case 0x003B: // SEMICOLON - tokenizer = numeric_character_reference_end_state; - break; - default: - reconsume(c, numeric_character_reference_end_state); - break; - } - } - - function numeric_character_reference_end_state(c) { - if (character_reference_code in numericCharRefReplacements) { - character_reference_code = numericCharRefReplacements[character_reference_code]; - } else if (character_reference_code > 0x10FFFF || (character_reference_code >= 0xD800 && character_reference_code < 0xE000)) { - character_reference_code = 0xFFFD; - } - - beginTempBuf(); - if (character_reference_code <= 0xFFFF) { - tempbuf.push(character_reference_code); - } else { - character_reference_code = character_reference_code - 0x10000; - /* jshint bitwise: false */ - tempbuf.push(0xD800 + (character_reference_code >> 10)); - tempbuf.push(0xDC00 + (character_reference_code & 0x03FF)); - } - reconsume(c, character_reference_end_state); - } - - function character_reference_end_state(c) { - switch(return_state) { - case attribute_value_double_quoted_state: - case attribute_value_single_quoted_state: - case attribute_value_unquoted_state: - // append each character to the current attribute's value - attrvaluebuf += buf2str(tempbuf); - break; - default: - pushAll(textrun, tempbuf); - break; - } - reconsume(c, return_state); - } - - /*** - * The tree builder insertion modes - */ - - // 11.2.5.4.1 The "initial" insertion mode - function initial_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - var name = value; - var publicid = arg3; - var systemid = arg4; - // Use the constructor directly instead of - // implementation.createDocumentType because the create - // function throws errors on invalid characters, and - // we don't want the parser to throw them. - doc.appendChild(new DocumentType(doc, name, publicid, systemid)); - - // Note that there is no public API for setting quirks mode We can - // do this here because we have access to implementation details - if (force_quirks || - name.toLowerCase() !== "html" || - quirkyPublicIds.test(publicid) || - (systemid && systemid.toLowerCase() === quirkySystemId) || - (systemid === undefined && - conditionallyQuirkyPublicIds.test(publicid))) - doc._quirks = true; - else if (limitedQuirkyPublicIds.test(publicid) || - (systemid !== undefined && - conditionallyQuirkyPublicIds.test(publicid))) - doc._limitedQuirks = true; - parser = before_html_mode; - return; - } - - // tags or non-whitespace text - doc._quirks = true; - parser = before_html_mode; - parser(t,value,arg3,arg4); - } - - // 11.2.5.4.2 The "before html" insertion mode - function before_html_mode(t,value,arg3,arg4) { - var elt; - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 5: // DOCTYPE - /* ignore the token */ - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 2: // TAG - if (value === "html") { - elt = createHTMLElt(doc, value, arg3); - stack.push(elt); - doc.appendChild(elt); - // XXX: handle application cache here - parser = before_head_mode; - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "html": - case "head": - case "body": - case "br": - break; // fall through on these - default: - return; // ignore most end tags - } - } - - // Anything that didn't get handled above is handled like this: - elt = createHTMLElt(doc, "html", null); - stack.push(elt); - doc.appendChild(elt); - // XXX: handle application cache here - parser = before_head_mode; - parser(t,value,arg3,arg4); - } - - // 11.2.5.4.3 The "before head" insertion mode - function before_head_mode(t,value,arg3,arg4) { - switch(t) { - case 1: // TEXT - value = value.replace(LEADINGWS, ""); // Ignore spaces - if (value.length === 0) return; // Are we done? - break; // Handle anything non-space text below - case 5: // DOCTYPE - /* ignore the token */ - return; - case 4: // COMMENT - insertComment(value); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t,value,arg3,arg4); - return; - case "head": - var elt = insertHTMLElement(value, arg3); - head_element_pointer = elt; - parser = in_head_mode; - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "html": - case "head": - case "body": - case "br": - break; - default: - return; // ignore most end tags - } - } - - // If not handled explicitly above - before_head_mode(TAG, "head", null); // create a head tag - parser(t, value, arg3, arg4); // then try again with this token - } - - function in_head_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "meta": - // XXX: - // May need to change the encoding based on this tag - /* falls through */ - case "base": - case "basefont": - case "bgsound": - case "link": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "title": - parseRCDATA(value, arg3); - return; - case "noscript": - if (!scripting_enabled) { - insertHTMLElement(value, arg3); - parser = in_head_noscript_mode; - return; - } - // Otherwise, if scripting is enabled... - /* falls through */ - case "noframes": - case "style": - parseRawText(value,arg3); - return; - case "script": - insertElement(function(doc) { - var elt = createHTMLElt(doc, value, arg3); - elt._parser_inserted = true; - elt._force_async = false; - if (fragment) elt._already_started = true; - flushText(); - return elt; - }); - tokenizer = script_data_state; - originalInsertionMode = parser; - parser = text_mode; - return; - case "template": - insertHTMLElement(value, arg3); - afe.insertMarker(); - frameset_ok = false; - parser = in_template_mode; - templateInsertionModes.push(parser); - return; - case "head": - return; // ignore it - } - break; - case 3: // ENDTAG - switch(value) { - case "head": - stack.pop(); - parser = after_head_mode; - return; - case "body": - case "html": - case "br": - break; // handle these at the bottom of the function - case "template": - if (!stack.contains("template")) { - return; - } - stack.generateImpliedEndTags(null, "thorough"); - stack.popTag("template"); - afe.clearToMarker(); - templateInsertionModes.pop(); - resetInsertionMode(); - return; - default: - // ignore any other end tag - return; - } - break; - } - - // If not handled above - in_head_mode(ENDTAG, "head", null); // synthetic - parser(t, value, arg3, arg4); // Then redo this one - } - - // 13.2.5.4.5 The "in head noscript" insertion mode - function in_head_noscript_mode(t, value, arg3, arg4) { - switch(t) { - case 5: // DOCTYPE - return; - case 4: // COMMENT - in_head_mode(t, value); - return; - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - in_head_mode(t, ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; // no more text - break; // Handle non-whitespace below - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "style": - in_head_mode(t, value, arg3); - return; - case "head": - case "noscript": - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "noscript": - stack.pop(); - parser = in_head_mode; - return; - case "br": - break; // goes to the outer default - default: - return; // ignore other end tags - } - break; - } - - // If not handled above - in_head_noscript_mode(ENDTAG, "noscript", null); - parser(t, value, arg3, arg4); - } - - function after_head_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "body": - insertHTMLElement(value, arg3); - frameset_ok = false; - parser = in_body_mode; - return; - case "frameset": - insertHTMLElement(value, arg3); - parser = in_frameset_mode; - return; - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - stack.push(head_element_pointer); - in_head_mode(TAG, value, arg3); - stack.removeElement(head_element_pointer); - return; - case "head": - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "template": - return in_head_mode(t, value, arg3, arg4); - case "body": - case "html": - case "br": - break; - default: - return; // ignore any other end tag - } - break; - } - - after_head_mode(TAG, "body", null); - frameset_ok = true; - parser(t, value, arg3, arg4); - } - - // 13.2.5.4.7 The "in body" insertion mode - function in_body_mode(t,value,arg3,arg4) { - var body, i, node, elt; - switch(t) { - case 1: // TEXT - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - // If any non-space characters - if (frameset_ok && NONWS.test(value)) - frameset_ok = false; - afereconstruct(); - insertText(value); - return; - case 5: // DOCTYPE - return; - case 4: // COMMENT - insertComment(value); - return; - case -1: // EOF - if (templateInsertionModes.length) { - return in_template_mode(t); - } - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - if (stack.contains("template")) { - return; - } - transferAttributes(arg3, stack.elements[0]); - return; - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - in_head_mode(TAG, value, arg3); - return; - case "body": - body = stack.elements[1]; - if (!body || !(body instanceof impl.HTMLBodyElement) || - stack.contains("template")) - return; - frameset_ok = false; - transferAttributes(arg3, body); - return; - case "frameset": - if (!frameset_ok) return; - body = stack.elements[1]; - if (!body || !(body instanceof impl.HTMLBodyElement)) - return; - if (body.parentNode) body.parentNode.removeChild(body); - while(!(stack.top instanceof impl.HTMLHtmlElement)) - stack.pop(); - insertHTMLElement(value, arg3); - parser = in_frameset_mode; - return; - - case "address": - case "article": - case "aside": - case "blockquote": - case "center": - case "details": - case "dialog": - case "dir": - case "div": - case "dl": - case "fieldset": - case "figcaption": - case "figure": - case "footer": - case "header": - case "hgroup": - case "main": - case "nav": - case "ol": - case "p": - case "section": - case "summary": - case "ul": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "menu": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - insertHTMLElement(value, arg3); - return; - - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (stack.top instanceof impl.HTMLHeadingElement) - stack.pop(); - insertHTMLElement(value, arg3); - return; - - case "pre": - case "listing": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - ignore_linefeed = true; - frameset_ok = false; - return; - - case "form": - if (form_element_pointer && !stack.contains("template")) return; - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - elt = insertHTMLElement(value, arg3); - if (!stack.contains("template")) - form_element_pointer = elt; - return; - - case "li": - frameset_ok = false; - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (node instanceof impl.HTMLLIElement) { - in_body_mode(ENDTAG, "li"); - break; - } - if (isA(node, specialSet) && !isA(node, addressdivpSet)) - break; - } - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "dd": - case "dt": - frameset_ok = false; - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (isA(node, dddtSet)) { - in_body_mode(ENDTAG, node.localName); - break; - } - if (isA(node, specialSet) && !isA(node, addressdivpSet)) - break; - } - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - return; - - case "plaintext": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - insertHTMLElement(value, arg3); - tokenizer = plaintext_state; - return; - - case "button": - if (stack.inScope("button")) { - in_body_mode(ENDTAG, "button"); - parser(t, value, arg3, arg4); - } - else { - afereconstruct(); - insertHTMLElement(value, arg3); - frameset_ok = false; - } - return; - - case "a": - var activeElement = afe.findElementByTag("a"); - if (activeElement) { - in_body_mode(ENDTAG, value); - afe.remove(activeElement); - stack.removeElement(activeElement); - } - /* falls through */ - case "b": - case "big": - case "code": - case "em": - case "font": - case "i": - case "s": - case "small": - case "strike": - case "strong": - case "tt": - case "u": - afereconstruct(); - afe.push(insertHTMLElement(value,arg3), arg3); - return; - - case "nobr": - afereconstruct(); - - if (stack.inScope(value)) { - in_body_mode(ENDTAG, value); - afereconstruct(); - } - afe.push(insertHTMLElement(value,arg3), arg3); - return; - - case "applet": - case "marquee": - case "object": - afereconstruct(); - insertHTMLElement(value,arg3); - afe.insertMarker(); - frameset_ok = false; - return; - - case "table": - if (!doc._quirks && stack.inButtonScope("p")) { - in_body_mode(ENDTAG, "p"); - } - insertHTMLElement(value,arg3); - frameset_ok = false; - parser = in_table_mode; - return; - - case "area": - case "br": - case "embed": - case "img": - case "keygen": - case "wbr": - afereconstruct(); - insertHTMLElement(value,arg3); - stack.pop(); - frameset_ok = false; - return; - - case "input": - afereconstruct(); - elt = insertHTMLElement(value,arg3); - stack.pop(); - var type = elt.getAttribute("type"); - if (!type || type.toLowerCase() !== "hidden") - frameset_ok = false; - return; - - case "param": - case "source": - case "track": - insertHTMLElement(value,arg3); - stack.pop(); - return; - - case "hr": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - insertHTMLElement(value,arg3); - stack.pop(); - frameset_ok = false; - return; - - case "image": - in_body_mode(TAG, "img", arg3, arg4); - return; - - case "textarea": - insertHTMLElement(value,arg3); - ignore_linefeed = true; - frameset_ok = false; - tokenizer = rcdata_state; - originalInsertionMode = parser; - parser = text_mode; - return; - - case "xmp": - if (stack.inButtonScope("p")) in_body_mode(ENDTAG, "p"); - afereconstruct(); - frameset_ok = false; - parseRawText(value, arg3); - return; - - case "iframe": - frameset_ok = false; - parseRawText(value, arg3); - return; - - case "noembed": - parseRawText(value,arg3); - return; - - case "select": - afereconstruct(); - insertHTMLElement(value,arg3); - frameset_ok = false; - if (parser === in_table_mode || - parser === in_caption_mode || - parser === in_table_body_mode || - parser === in_row_mode || - parser === in_cell_mode) - parser = in_select_in_table_mode; - else - parser = in_select_mode; - return; - - case "optgroup": - case "option": - if (stack.top instanceof impl.HTMLOptionElement) { - in_body_mode(ENDTAG, "option"); - } - afereconstruct(); - insertHTMLElement(value,arg3); - return; - - case "menuitem": - if (isA(stack.top, 'menuitem')) { - stack.pop(); - } - afereconstruct(); - insertHTMLElement(value, arg3); - return; - - case "rb": - case "rtc": - if (stack.inScope("ruby")) { - stack.generateImpliedEndTags(); - } - insertHTMLElement(value,arg3); - return; - - case "rp": - case "rt": - if (stack.inScope("ruby")) { - stack.generateImpliedEndTags("rtc"); - } - insertHTMLElement(value,arg3); - return; - - case "math": - afereconstruct(); - adjustMathMLAttributes(arg3); - adjustForeignAttributes(arg3); - insertForeignElement(value, arg3, NAMESPACE.MATHML); - if (arg4) // self-closing flag - stack.pop(); - return; - - case "svg": - afereconstruct(); - adjustSVGAttributes(arg3); - adjustForeignAttributes(arg3); - insertForeignElement(value, arg3, NAMESPACE.SVG); - if (arg4) // self-closing flag - stack.pop(); - return; - - case "caption": - case "col": - case "colgroup": - case "frame": - case "head": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - // Ignore table tags if we're not in_table mode - return; - } - - // Handle any other start tag here - // (and also noscript tags when scripting is disabled) - afereconstruct(); - insertHTMLElement(value,arg3); - return; - - case 3: // ENDTAG - switch(value) { - case "template": - in_head_mode(ENDTAG, value, arg3); - return; - case "body": - if (!stack.inScope("body")) return; - parser = after_body_mode; - return; - case "html": - if (!stack.inScope("body")) return; - parser = after_body_mode; - parser(t, value, arg3); - return; - - case "address": - case "article": - case "aside": - case "blockquote": - case "button": - case "center": - case "details": - case "dialog": - case "dir": - case "div": - case "dl": - case "fieldset": - case "figcaption": - case "figure": - case "footer": - case "header": - case "hgroup": - case "listing": - case "main": - case "menu": - case "nav": - case "ol": - case "pre": - case "section": - case "summary": - case "ul": - // Ignore if there is not a matching open tag - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - return; - - case "form": - if (!stack.contains("template")) { - var openform = form_element_pointer; - form_element_pointer = null; - if (!openform || !stack.elementInScope(openform)) return; - stack.generateImpliedEndTags(); - stack.removeElement(openform); - } else { - if (!stack.inScope("form")) return; - stack.generateImpliedEndTags(); - stack.popTag("form"); - } - return; - - case "p": - if (!stack.inButtonScope(value)) { - in_body_mode(TAG, value, null); - parser(t, value, arg3, arg4); - } - else { - stack.generateImpliedEndTags(value); - stack.popTag(value); - } - return; - - case "li": - if (!stack.inListItemScope(value)) return; - stack.generateImpliedEndTags(value); - stack.popTag(value); - return; - - case "dd": - case "dt": - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(value); - stack.popTag(value); - return; - - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - if (!stack.elementTypeInScope(impl.HTMLHeadingElement)) return; - stack.generateImpliedEndTags(); - stack.popElementType(impl.HTMLHeadingElement); - return; - - case "sarcasm": - // Take a deep breath, and then: - break; - - case "a": - case "b": - case "big": - case "code": - case "em": - case "font": - case "i": - case "nobr": - case "s": - case "small": - case "strike": - case "strong": - case "tt": - case "u": - var result = adoptionAgency(value); - if (result) return; // If we did something we're done - break; // Go to the "any other end tag" case - - case "applet": - case "marquee": - case "object": - if (!stack.inScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - afe.clearToMarker(); - return; - - case "br": - in_body_mode(TAG, value, null); // Turn
    into
    - return; - } - - // Any other end tag goes here - for(i = stack.elements.length-1; i >= 0; i--) { - node = stack.elements[i]; - if (isA(node, value)) { - stack.generateImpliedEndTags(value); - stack.popElement(node); - break; - } - else if (isA(node, specialSet)) { - return; - } - } - - return; - } - } - - function text_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - insertText(value); - return; - case -1: // EOF - if (stack.top instanceof impl.HTMLScriptElement) - stack.top._already_started = true; - stack.pop(); - parser = originalInsertionMode; - parser(t); - return; - case 3: // ENDTAG - if (value === "script") { - handleScriptEnd(); - } - else { - stack.pop(); - parser = originalInsertionMode; - } - return; - default: - // We should never get any other token types - return; - } - } - - function in_table_mode(t, value, arg3, arg4) { - function getTypeAttr(attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - if (attrs[i][0] === "type") - return attrs[i][1].toLowerCase(); - } - return null; - } - - switch(t) { - case 1: // TEXT - // XXX the text_integration_mode stuff is - // just a hack I made up - if (text_integration_mode) { - in_body_mode(t, value, arg3, arg4); - return; - } - else if (isA(stack.top, tablesectionrowSet)) { - pending_table_text = []; - originalInsertionMode = parser; - parser = in_table_text_mode; - parser(t, value, arg3, arg4); - return; - } - break; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "caption": - stack.clearToContext(tableContextSet); - afe.insertMarker(); - insertHTMLElement(value,arg3); - parser = in_caption_mode; - return; - case "colgroup": - stack.clearToContext(tableContextSet); - insertHTMLElement(value,arg3); - parser = in_column_group_mode; - return; - case "col": - in_table_mode(TAG, "colgroup", null); - parser(t, value, arg3, arg4); - return; - case "tbody": - case "tfoot": - case "thead": - stack.clearToContext(tableContextSet); - insertHTMLElement(value,arg3); - parser = in_table_body_mode; - return; - case "td": - case "th": - case "tr": - in_table_mode(TAG, "tbody", null); - parser(t, value, arg3, arg4); - return; - - case "table": - if (!stack.inTableScope(value)) { - return; // Ignore the token - } - in_table_mode(ENDTAG, value); - parser(t, value, arg3, arg4); - return; - - case "style": - case "script": - case "template": - in_head_mode(t, value, arg3, arg4); - return; - - case "input": - var type = getTypeAttr(arg3); - if (type !== "hidden") break; // to the anything else case - insertHTMLElement(value,arg3); - stack.pop(); - return; - - case "form": - if (form_element_pointer || stack.contains("template")) return; - form_element_pointer = insertHTMLElement(value, arg3); - stack.popElement(form_element_pointer); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "table": - if (!stack.inTableScope(value)) return; - stack.popTag(value); - resetInsertionMode(); - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - - break; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - } - - // This is the anything else case - foster_parent_mode = true; - in_body_mode(t, value, arg3, arg4); - foster_parent_mode = false; - } - - function in_table_text_mode(t, value, arg3, arg4) { - if (t === TEXT) { - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - pending_table_text.push(value); - } - else { - var s = pending_table_text.join(""); - pending_table_text.length = 0; - if (NONWS.test(s)) { // If any non-whitespace characters - // This must be the same code as the "anything else" - // case of the in_table mode above. - foster_parent_mode = true; - in_body_mode(TEXT, s); - foster_parent_mode = false; - } - else { - insertText(s); - } - parser = originalInsertionMode; - parser(t, value, arg3, arg4); - } - } - - - function in_caption_mode(t, value, arg3, arg4) { - function end_caption() { - if (!stack.inTableScope("caption")) return false; - stack.generateImpliedEndTags(); - stack.popTag("caption"); - afe.clearToMarker(); - parser = in_table_mode; - return true; - } - - switch(t) { - case 2: // TAG - switch(value) { - case "caption": - case "col": - case "colgroup": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - if (end_caption()) parser(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "caption": - end_caption(); - return; - case "table": - if (end_caption()) parser(t, value, arg3, arg4); - return; - case "body": - case "col": - case "colgroup": - case "html": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - return; - } - break; - } - - // The Anything Else case - in_body_mode(t, value, arg3, arg4); - } - - function in_column_group_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - var ws = value.match(LEADINGWS); - if (ws) { - insertText(ws[0]); - value = value.substring(ws[0].length); - } - if (value.length === 0) return; - break; // Handle non-whitespace below - - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "col": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "colgroup": - if (!isA(stack.top, 'colgroup')) { - return; // Ignore the token. - } - stack.pop(); - parser = in_table_mode; - return; - case "col": - return; - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - } - - // Anything else - if (!isA(stack.top, 'colgroup')) { - return; // Ignore the token. - } - in_column_group_mode(ENDTAG, "colgroup"); - parser(t, value, arg3, arg4); - } - - function in_table_body_mode(t, value, arg3, arg4) { - function endsect() { - if (!stack.inTableScope("tbody") && - !stack.inTableScope("thead") && - !stack.inTableScope("tfoot")) - return; - stack.clearToContext(tableBodyContextSet); - in_table_body_mode(ENDTAG, stack.top.localName, null); - parser(t, value, arg3, arg4); - } - - switch(t) { - case 2: // TAG - switch(value) { - case "tr": - stack.clearToContext(tableBodyContextSet); - insertHTMLElement(value, arg3); - parser = in_row_mode; - return; - case "th": - case "td": - in_table_body_mode(TAG, "tr", null); - parser(t, value, arg3, arg4); - return; - case "caption": - case "col": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - endsect(); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "table": - endsect(); - return; - case "tbody": - case "tfoot": - case "thead": - if (stack.inTableScope(value)) { - stack.clearToContext(tableBodyContextSet); - stack.pop(); - parser = in_table_mode; - } - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "td": - case "th": - case "tr": - return; - } - break; - } - - // Anything else: - in_table_mode(t, value, arg3, arg4); - } - - function in_row_mode(t, value, arg3, arg4) { - function endrow() { - if (!stack.inTableScope("tr")) return false; - stack.clearToContext(tableRowContextSet); - stack.pop(); - parser = in_table_body_mode; - return true; - } - - switch(t) { - case 2: // TAG - switch(value) { - case "th": - case "td": - stack.clearToContext(tableRowContextSet); - insertHTMLElement(value, arg3); - parser = in_cell_mode; - afe.insertMarker(); - return; - case "caption": - case "col": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - case "tr": - if (endrow()) parser(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "tr": - endrow(); - return; - case "table": - if (endrow()) parser(t, value, arg3, arg4); - return; - case "tbody": - case "tfoot": - case "thead": - if (stack.inTableScope(value)) { - if (endrow()) parser(t, value, arg3, arg4); - } - return; - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - case "td": - case "th": - return; - } - break; - } - - // anything else - in_table_mode(t, value, arg3, arg4); - } - - function in_cell_mode(t, value, arg3, arg4) { - switch(t) { - case 2: // TAG - switch(value) { - case "caption": - case "col": - case "colgroup": - case "tbody": - case "td": - case "tfoot": - case "th": - case "thead": - case "tr": - if (stack.inTableScope("td")) { - in_cell_mode(ENDTAG, "td"); - parser(t, value, arg3, arg4); - } - else if (stack.inTableScope("th")) { - in_cell_mode(ENDTAG, "th"); - parser(t, value, arg3, arg4); - } - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "td": - case "th": - if (!stack.inTableScope(value)) return; - stack.generateImpliedEndTags(); - stack.popTag(value); - afe.clearToMarker(); - parser = in_row_mode; - return; - - case "body": - case "caption": - case "col": - case "colgroup": - case "html": - return; - - case "table": - case "tbody": - case "tfoot": - case "thead": - case "tr": - if (!stack.inTableScope(value)) return; - in_cell_mode(ENDTAG, stack.inTableScope("td") ? "td" : "th"); - parser(t, value, arg3, arg4); - return; - } - break; - } - - // anything else - in_body_mode(t, value, arg3, arg4); - } - - function in_select_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - if (textIncludesNUL) { - value = value.replace(NULCHARS, ""); - if (value.length === 0) return; - } - insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - in_body_mode(t, value, arg3, arg4); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "option": - if (stack.top instanceof impl.HTMLOptionElement) - in_select_mode(ENDTAG, value); - insertHTMLElement(value, arg3); - return; - case "optgroup": - if (stack.top instanceof impl.HTMLOptionElement) - in_select_mode(ENDTAG, "option"); - if (stack.top instanceof impl.HTMLOptGroupElement) - in_select_mode(ENDTAG, value); - insertHTMLElement(value, arg3); - return; - case "select": - in_select_mode(ENDTAG, value); // treat it as a close tag - return; - - case "input": - case "keygen": - case "textarea": - if (!stack.inSelectScope("select")) return; - in_select_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - return; - - case "script": - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - switch(value) { - case "optgroup": - if (stack.top instanceof impl.HTMLOptionElement && - stack.elements[stack.elements.length-2] instanceof - impl.HTMLOptGroupElement) { - in_select_mode(ENDTAG, "option"); - } - if (stack.top instanceof impl.HTMLOptGroupElement) - stack.pop(); - - return; - - case "option": - if (stack.top instanceof impl.HTMLOptionElement) - stack.pop(); - return; - - case "select": - if (!stack.inSelectScope(value)) return; - stack.popTag(value); - resetInsertionMode(); - return; - - case "template": - in_head_mode(t, value, arg3, arg4); - return; - } - - break; - } - - // anything else: just ignore the token - } - - function in_select_in_table_mode(t, value, arg3, arg4) { - switch(value) { - case "caption": - case "table": - case "tbody": - case "tfoot": - case "thead": - case "tr": - case "td": - case "th": - switch(t) { - case 2: // TAG - in_select_in_table_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - return; - case 3: // ENDTAG - if (stack.inTableScope(value)) { - in_select_in_table_mode(ENDTAG, "select"); - parser(t, value, arg3, arg4); - } - return; - } - } - - // anything else - in_select_mode(t, value, arg3, arg4); - } - - function in_template_mode(t, value, arg3, arg4) { - function switchModeAndReprocess(mode) { - parser = mode; - templateInsertionModes[templateInsertionModes.length-1] = parser; - parser(t, value, arg3, arg4); - } - switch(t) { - case 1: // TEXT - case 4: // COMMENT - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - if (!stack.contains("template")) { - stopParsing(); - } else { - stack.popTag("template"); - afe.clearToMarker(); - templateInsertionModes.pop(); - resetInsertionMode(); - parser(t, value, arg3, arg4); - } - return; - case 2: // TAG - switch(value) { - case "base": - case "basefont": - case "bgsound": - case "link": - case "meta": - case "noframes": - case "script": - case "style": - case "template": - case "title": - in_head_mode(t, value, arg3, arg4); - return; - case "caption": - case "colgroup": - case "tbody": - case "tfoot": - case "thead": - switchModeAndReprocess(in_table_mode); - return; - case "col": - switchModeAndReprocess(in_column_group_mode); - return; - case "tr": - switchModeAndReprocess(in_table_body_mode); - return; - case "td": - case "th": - switchModeAndReprocess(in_row_mode); - return; - } - switchModeAndReprocess(in_body_mode); - return; - case 3: // ENDTAG - switch(value) { - case "template": - in_head_mode(t, value, arg3, arg4); - return; - default: - return; - } - } - } - - function after_body_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // If any non-space chars, handle below - if (NONWS.test(value)) break; - in_body_mode(t, value); - return; - case 4: // COMMENT - // Append it to the element - stack.elements[0]._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - if (value === "html") { - in_body_mode(t, value, arg3, arg4); - return; - } - break; // for any other tags - case 3: // ENDTAG - if (value === "html") { - if (fragment) return; - parser = after_after_body_mode; - return; - } - break; // for any other tags - } - - // anything else - parser = in_body_mode; - parser(t, value, arg3, arg4); - } - - function in_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "frameset": - insertHTMLElement(value, arg3); - return; - case "frame": - insertHTMLElement(value, arg3); - stack.pop(); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - if (value === "frameset") { - if (fragment && stack.top instanceof impl.HTMLHtmlElement) - return; - stack.pop(); - if (!fragment && - !(stack.top instanceof impl.HTMLFrameSetElement)) - parser = after_frameset_mode; - return; - } - break; - } - - // ignore anything else - } - - function after_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - case 3: // ENDTAG - if (value === "html") { - parser = after_after_frameset_mode; - return; - } - break; - } - - // ignore anything else - } - - function after_after_body_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // If any non-space chars, handle below - if (NONWS.test(value)) break; - in_body_mode(t, value, arg3, arg4); - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - if (value === "html") { - in_body_mode(t, value, arg3, arg4); - return; - } - break; - } - - // anything else - parser = in_body_mode; - parser(t, value, arg3, arg4); - } - - function after_after_frameset_mode(t, value, arg3, arg4) { - switch(t) { - case 1: // TEXT - // Ignore any non-space characters - value = value.replace(ALLNONWS, ""); - if (value.length > 0) - in_body_mode(t, value, arg3, arg4); - return; - case 4: // COMMENT - doc._appendChild(doc.createComment(value)); - return; - case 5: // DOCTYPE - in_body_mode(t, value, arg3, arg4); - return; - case -1: // EOF - stopParsing(); - return; - case 2: // TAG - switch(value) { - case "html": - in_body_mode(t, value, arg3, arg4); - return; - case "noframes": - in_head_mode(t, value, arg3, arg4); - return; - } - break; - } - - // ignore anything else - } - - - // 13.2.5.5 The rules for parsing tokens in foreign content - // - // This is like one of the insertion modes above, but is - // invoked somewhat differently when the current token is not HTML. - // See the insertToken() function. - function insertForeignToken(t, value, arg3, arg4) { - // A tag is an HTML font tag if it has a color, font, or size - // attribute. Otherwise we assume it is foreign content - function isHTMLFont(attrs) { - for(var i = 0, n = attrs.length; i < n; i++) { - switch(attrs[i][0]) { - case "color": - case "face": - case "size": - return true; - } - } - return false; - } - - var current; - - switch(t) { - case 1: // TEXT - // If any non-space, non-nul characters - if (frameset_ok && NONWSNONNUL.test(value)) - frameset_ok = false; - if (textIncludesNUL) { - value = value.replace(NULCHARS, "\uFFFD"); - } - insertText(value); - return; - case 4: // COMMENT - insertComment(value); - return; - case 5: // DOCTYPE - // ignore it - return; - case 2: // TAG - switch(value) { - case "font": - if (!isHTMLFont(arg3)) break; - /* falls through */ - case "b": - case "big": - case "blockquote": - case "body": - case "br": - case "center": - case "code": - case "dd": - case "div": - case "dl": - case "dt": - case "em": - case "embed": - case "h1": - case "h2": - case "h3": - case "h4": - case "h5": - case "h6": - case "head": - case "hr": - case "i": - case "img": - case "li": - case "listing": - case "menu": - case "meta": - case "nobr": - case "ol": - case "p": - case "pre": - case "ruby": - case "s": - case "small": - case "span": - case "strong": - case "strike": - case "sub": - case "sup": - case "table": - case "tt": - case "u": - case "ul": - case "var": - if (fragment) { - break; - } - do { - stack.pop(); - current = stack.top; - } while(current.namespaceURI !== NAMESPACE.HTML && - !isMathmlTextIntegrationPoint(current) && - !isHTMLIntegrationPoint(current)); - - insertToken(t, value, arg3, arg4); // reprocess - return; - } - - // Any other start tag case goes here - current = (stack.elements.length===1 && fragment) ? fragmentContext : - stack.top; - if (current.namespaceURI === NAMESPACE.MATHML) { - adjustMathMLAttributes(arg3); - } - else if (current.namespaceURI === NAMESPACE.SVG) { - value = adjustSVGTagName(value); - adjustSVGAttributes(arg3); - } - adjustForeignAttributes(arg3); - - insertForeignElement(value, arg3, current.namespaceURI); - if (arg4) { // the self-closing flag - if (value === 'script' && current.namespaceURI === NAMESPACE.SVG) { - // XXX deal with SVG scripts here - } - stack.pop(); - } - return; - - case 3: // ENDTAG - current = stack.top; - if (value === "script" && - current.namespaceURI === NAMESPACE.SVG && - current.localName === "script") { - - stack.pop(); - - // XXX - // Deal with SVG scripts here - } - else { - // The any other end tag case - var i = stack.elements.length-1; - var node = stack.elements[i]; - for(;;) { - if (node.localName.toLowerCase() === value) { - stack.popElement(node); - break; - } - node = stack.elements[--i]; - // If non-html, keep looping - if (node.namespaceURI !== NAMESPACE.HTML) - continue; - // Otherwise process the end tag as html - parser(t, value, arg3, arg4); - break; - } - } - return; - } - } - - /*** - * Finally, this is the end of the HTMLParser() factory function. - * It returns the htmlparser object with the append() and end() methods. - */ - - // Sneak another method into the htmlparser object to allow us to run - // tokenizer tests. This can be commented out in production code. - // This is a hook for testing the tokenizer. It has to be here - // because the tokenizer details are all hidden away within the closure. - // It should return an array of tokens generated while parsing the - // input string. - htmlparser.testTokenizer = function(input, initialState, lastStartTag, charbychar) { - var tokens = []; - - switch(initialState) { - case "PCDATA state": - tokenizer = data_state; - break; - case "RCDATA state": - tokenizer = rcdata_state; - break; - case "RAWTEXT state": - tokenizer = rawtext_state; - break; - case "PLAINTEXT state": - tokenizer = plaintext_state; - break; - } - - if (lastStartTag) { - lasttagname = lastStartTag; - } - - insertToken = function(t, value, arg3, arg4) { - flushText(); - switch(t) { - case 1: // TEXT - if (tokens.length > 0 && - tokens[tokens.length-1][0] === "Character") { - tokens[tokens.length-1][1] += value; - } - else tokens.push(["Character", value]); - break; - case 4: // COMMENT - tokens.push(["Comment", value]); - break; - case 5: // DOCTYPE - tokens.push(["DOCTYPE", value, - arg3 === undefined ? null : arg3, - arg4 === undefined ? null : arg4, - !force_quirks]); - break; - case 2: // TAG - var attrs = Object.create(null); - for(var i = 0; i < arg3.length; i++) { - // XXX: does attribute order matter? - var a = arg3[i]; - if (a.length === 1) { - attrs[a[0]] = ""; - } - else { - attrs[a[0]] = a[1]; - } - } - var token = ["StartTag", value, attrs]; - if (arg4) token.push(true); - tokens.push(token); - break; - case 3: // ENDTAG - tokens.push(["EndTag", value]); - break; - case -1: // EOF - break; - } - }; - - if (!charbychar) { - this.parse(input, true); - } - else { - for(var i = 0; i < input.length; i++) { - this.parse(input[i]); - } - this.parse("", true); - } - return tokens; - }; - - // Return the parser object from the HTMLParser() factory function - return htmlparser; -} - - -/***/ }), - -/***/ 8161: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Leaf; - -var Node = __webpack_require__(97537); -var NodeList = __webpack_require__(64965); -var utils = __webpack_require__(89076); -var HierarchyRequestError = utils.HierarchyRequestError; -var NotFoundError = utils.NotFoundError; - -// This class defines common functionality for node subtypes that -// can never have children -function Leaf() { - Node.call(this); -} - -Leaf.prototype = Object.create(Node.prototype, { - hasChildNodes: { value: function() { return false; }}, - firstChild: { value: null }, - lastChild: { value: null }, - insertBefore: { value: function(node, child) { - if (!node.nodeType) throw new TypeError('not a node'); - HierarchyRequestError(); - }}, - replaceChild: { value: function(node, child) { - if (!node.nodeType) throw new TypeError('not a node'); - HierarchyRequestError(); - }}, - removeChild: { value: function(node) { - if (!node.nodeType) throw new TypeError('not a node'); - NotFoundError(); - }}, - removeChildren: { value: function() { /* no op */ }}, - childNodes: { get: function() { - if (!this._childNodes) this._childNodes = new NodeList(); - return this._childNodes; - }} -}); - - -/***/ }), - -/***/ 41360: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -var LinkedList = module.exports = { - // basic validity tests on a circular linked list a - valid: function(a) { - utils.assert(a, "list falsy"); - utils.assert(a._previousSibling, "previous falsy"); - utils.assert(a._nextSibling, "next falsy"); - // xxx check that list is actually circular - return true; - }, - // insert a before b - insertBefore: function(a, b) { - utils.assert(LinkedList.valid(a) && LinkedList.valid(b)); - var a_first = a, a_last = a._previousSibling; - var b_first = b, b_last = b._previousSibling; - a_first._previousSibling = b_last; - a_last._nextSibling = b_first; - b_last._nextSibling = a_first; - b_first._previousSibling = a_last; - utils.assert(LinkedList.valid(a) && LinkedList.valid(b)); - }, - // replace a single node a with a list b (which could be null) - replace: function(a, b) { - utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b))); - if (b!==null) { - LinkedList.insertBefore(b, a); - } - LinkedList.remove(a); - utils.assert(LinkedList.valid(a) && (b===null || LinkedList.valid(b))); - }, - // remove single node a from its list - remove: function(a) { - utils.assert(LinkedList.valid(a)); - var prev = a._previousSibling; - if (prev === a) { return; } - var next = a._nextSibling; - prev._nextSibling = next; - next._previousSibling = prev; - a._previousSibling = a._nextSibling = a; - utils.assert(LinkedList.valid(a)); - } -}; - - -/***/ }), - -/***/ 63738: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var URL = __webpack_require__(85184); -var URLUtils = __webpack_require__(65531); - -module.exports = Location; - -function Location(window, href) { - this._window = window; - this._href = href; -} - -Location.prototype = Object.create(URLUtils.prototype, { - constructor: { value: Location }, - - // Special behavior when href is set - href: { - get: function() { return this._href; }, - set: function(v) { this.assign(v); } - }, - - assign: { value: function(url) { - // Resolve the new url against the current one - // XXX: - // This is not actually correct. It should be resolved against - // the URL of the document of the script. For now, though, I only - // support a single window and there is only one base url. - // So this is good enough for now. - var current = new URL(this._href); - var newurl = current.resolve(url); - - // Save the new url - this._href = newurl; - - // Start loading the new document! - // XXX - // This is just something hacked together. - // The real algorithm is: http://www.whatwg.org/specs/web-apps/current-work/multipage/history.html#navigate - }}, - - replace: { value: function(url) { - // XXX - // Since we aren't tracking history yet, replace is the same as assign - this.assign(url); - }}, - - reload: { value: function() { - // XXX: - // Actually, the spec is a lot more complicated than this - this.assign(this.href); - }}, - - toString: { value: function() { - return this.href; - }} - -}); - - -/***/ }), - -/***/ 21440: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var UIEvent = __webpack_require__(64259); - -module.exports = MouseEvent; - -function MouseEvent() { - // Just use the superclass constructor to initialize - UIEvent.call(this); - - this.screenX = this.screenY = this.clientX = this.clientY = 0; - this.ctrlKey = this.altKey = this.shiftKey = this.metaKey = false; - this.button = 0; - this.buttons = 1; - this.relatedTarget = null; -} -MouseEvent.prototype = Object.create(UIEvent.prototype, { - constructor: { value: MouseEvent }, - initMouseEvent: { value: function(type, bubbles, cancelable, - view, detail, - screenX, screenY, clientX, clientY, - ctrlKey, altKey, shiftKey, metaKey, - button, relatedTarget) { - - this.initEvent(type, bubbles, cancelable, view, detail); - this.screenX = screenX; - this.screenY = screenY; - this.clientX = clientX; - this.clientY = clientY; - this.ctrlKey = ctrlKey; - this.altKey = altKey; - this.shiftKey = shiftKey; - this.metaKey = metaKey; - this.button = button; - switch(button) { - case 0: this.buttons = 1; break; - case 1: this.buttons = 4; break; - case 2: this.buttons = 2; break; - default: this.buttons = 0; break; - } - this.relatedTarget = relatedTarget; - }}, - - getModifierState: { value: function(key) { - switch(key) { - case "Alt": return this.altKey; - case "Control": return this.ctrlKey; - case "Shift": return this.shiftKey; - case "Meta": return this.metaKey; - default: return false; - } - }} -}); - - -/***/ }), - -/***/ 40993: -/***/ ((module) => { - -"use strict"; - -module.exports = { - VALUE: 1, // The value of a Text, Comment or PI node changed - ATTR: 2, // A new attribute was added or an attribute value and/or prefix changed - REMOVE_ATTR: 3, // An attribute was removed - REMOVE: 4, // A node was removed - MOVE: 5, // A node was moved - INSERT: 6 // A node (or a subtree of nodes) was inserted -}; - -/***/ }), - -/***/ 49492: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = NamedNodeMap; - -var utils = __webpack_require__(89076); - -/* This is a hacky implementation of NamedNodeMap, intended primarily to - * satisfy clients (like dompurify and the web-platform-tests) which check - * to ensure that Node#attributes instanceof NamedNodeMap. */ - -function NamedNodeMap(element) { - this.element = element; -} -Object.defineProperties(NamedNodeMap.prototype, { - length: { get: utils.shouldOverride }, - item: { value: utils.shouldOverride }, - - getNamedItem: { value: function getNamedItem(qualifiedName) { - return this.element.getAttributeNode(qualifiedName); - } }, - getNamedItemNS: { value: function getNamedItemNS(namespace, localName) { - return this.element.getAttributeNodeNS(namespace, localName); - } }, - setNamedItem: { value: utils.nyi }, - setNamedItemNS: { value: utils.nyi }, - removeNamedItem: { value: function removeNamedItem(qualifiedName) { - var attr = this.element.getAttributeNode(qualifiedName); - if (attr) { - this.element.removeAttribute(qualifiedName); - return attr; - } - utils.NotFoundError(); - } }, - removeNamedItemNS: { value: function removeNamedItemNS(ns, lname) { - var attr = this.element.getAttributeNodeNS(ns, lname); - if (attr) { - this.element.removeAttributeNS(ns, lname); - return attr; - } - utils.NotFoundError(); - } }, -}); - - -/***/ }), - -/***/ 94993: -/***/ ((module) => { - -"use strict"; - - -// https://html.spec.whatwg.org/multipage/webappapis.html#navigatorid -var NavigatorID = Object.create(null, { - appCodeName: { value: "Mozilla" }, - appName: { value: "Netscape" }, - appVersion: { value: "4.0" }, - platform: { value: "" }, - product: { value: "Gecko" }, - productSub: { value: "20100101" }, - userAgent: { value: "" }, - vendor: { value: "" }, - vendorSub: { value: "" }, - taintEnabled: { value: function() { return false; } } -}); - -module.exports = NavigatorID; - - -/***/ }), - -/***/ 97537: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Node; - -var EventTarget = __webpack_require__(22356); -var LinkedList = __webpack_require__(41360); -var NodeUtils = __webpack_require__(41608); -var utils = __webpack_require__(89076); - -// All nodes have a nodeType and an ownerDocument. -// Once inserted, they also have a parentNode. -// This is an abstract class; all nodes in a document are instances -// of a subtype, so all the properties are defined by more specific -// constructors. -function Node() { - EventTarget.call(this); - this.parentNode = null; - this._nextSibling = this._previousSibling = this; - this._index = undefined; -} - -var ELEMENT_NODE = Node.ELEMENT_NODE = 1; -var ATTRIBUTE_NODE = Node.ATTRIBUTE_NODE = 2; -var TEXT_NODE = Node.TEXT_NODE = 3; -var CDATA_SECTION_NODE = Node.CDATA_SECTION_NODE = 4; -var ENTITY_REFERENCE_NODE = Node.ENTITY_REFERENCE_NODE = 5; -var ENTITY_NODE = Node.ENTITY_NODE = 6; -var PROCESSING_INSTRUCTION_NODE = Node.PROCESSING_INSTRUCTION_NODE = 7; -var COMMENT_NODE = Node.COMMENT_NODE = 8; -var DOCUMENT_NODE = Node.DOCUMENT_NODE = 9; -var DOCUMENT_TYPE_NODE = Node.DOCUMENT_TYPE_NODE = 10; -var DOCUMENT_FRAGMENT_NODE = Node.DOCUMENT_FRAGMENT_NODE = 11; -var NOTATION_NODE = Node.NOTATION_NODE = 12; - -var DOCUMENT_POSITION_DISCONNECTED = Node.DOCUMENT_POSITION_DISCONNECTED = 0x01; -var DOCUMENT_POSITION_PRECEDING = Node.DOCUMENT_POSITION_PRECEDING = 0x02; -var DOCUMENT_POSITION_FOLLOWING = Node.DOCUMENT_POSITION_FOLLOWING = 0x04; -var DOCUMENT_POSITION_CONTAINS = Node.DOCUMENT_POSITION_CONTAINS = 0x08; -var DOCUMENT_POSITION_CONTAINED_BY = Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10; -var DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC = 0x20; - -Node.prototype = Object.create(EventTarget.prototype, { - - // Node that are not inserted into the tree inherit a null parent - - // XXX: the baseURI attribute is defined by dom core, but - // a correct implementation of it requires HTML features, so - // we'll come back to this later. - baseURI: { get: utils.nyi }, - - parentElement: { get: function() { - return (this.parentNode && this.parentNode.nodeType===ELEMENT_NODE) ? this.parentNode : null; - }}, - - hasChildNodes: { value: utils.shouldOverride }, - - firstChild: { get: utils.shouldOverride }, - - lastChild: { get: utils.shouldOverride }, - - isConnected: { - get: function () { - let node = this; - while (node != null) { - if (node.nodeType === Node.DOCUMENT_NODE) { - return true; - } - - node = node.parentNode; - if (node != null && node.nodeType === Node.DOCUMENT_FRAGMENT_NODE) { - node = node.host; - } - } - return false; - }, - }, - - previousSibling: { get: function() { - var parent = this.parentNode; - if (!parent) return null; - if (this === parent.firstChild) return null; - return this._previousSibling; - }}, - - nextSibling: { get: function() { - var parent = this.parentNode, next = this._nextSibling; - if (!parent) return null; - if (next === parent.firstChild) return null; - return next; - }}, - - textContent: { - // Should override for DocumentFragment/Element/Attr/Text/PI/Comment - get: function() { return null; }, - set: function(v) { /* do nothing */ }, - }, - - innerText: { - // Should override for DocumentFragment/Element/Attr/Text/PI/Comment - get: function() { return null; }, - set: function(v) { /* do nothing */ }, - }, - - _countChildrenOfType: { value: function(type) { - var sum = 0; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === type) sum++; - } - return sum; - }}, - - _ensureInsertValid: { value: function _ensureInsertValid(node, child, isPreinsert) { - var parent = this, i, kid; - if (!node.nodeType) throw new TypeError('not a node'); - // 1. If parent is not a Document, DocumentFragment, or Element - // node, throw a HierarchyRequestError. - switch (parent.nodeType) { - case DOCUMENT_NODE: - case DOCUMENT_FRAGMENT_NODE: - case ELEMENT_NODE: - break; - default: utils.HierarchyRequestError(); - } - // 2. If node is a host-including inclusive ancestor of parent, - // throw a HierarchyRequestError. - if (node.isAncestor(parent)) utils.HierarchyRequestError(); - // 3. If child is not null and its parent is not parent, then - // throw a NotFoundError. (replaceChild omits the 'child is not null' - // and throws a TypeError here if child is null.) - if (child !== null || !isPreinsert) { - if (child.parentNode !== parent) utils.NotFoundError(); - } - // 4. If node is not a DocumentFragment, DocumentType, Element, - // Text, ProcessingInstruction, or Comment node, throw a - // HierarchyRequestError. - switch (node.nodeType) { - case DOCUMENT_FRAGMENT_NODE: - case DOCUMENT_TYPE_NODE: - case ELEMENT_NODE: - case TEXT_NODE: - case PROCESSING_INSTRUCTION_NODE: - case COMMENT_NODE: - break; - default: utils.HierarchyRequestError(); - } - // 5. If either node is a Text node and parent is a document, or - // node is a doctype and parent is not a document, throw a - // HierarchyRequestError. - // 6. If parent is a document, and any of the statements below, switched - // on node, are true, throw a HierarchyRequestError. - if (parent.nodeType === DOCUMENT_NODE) { - switch (node.nodeType) { - case TEXT_NODE: - utils.HierarchyRequestError(); - break; - case DOCUMENT_FRAGMENT_NODE: - // 6a1. If node has more than one element child or has a Text - // node child. - if (node._countChildrenOfType(TEXT_NODE) > 0) - utils.HierarchyRequestError(); - switch (node._countChildrenOfType(ELEMENT_NODE)) { - case 0: - break; - case 1: - // 6a2. Otherwise, if node has one element child and either - // parent has an element child, child is a doctype, or child - // is not null and a doctype is following child. [preinsert] - // 6a2. Otherwise, if node has one element child and either - // parent has an element child that is not child or a - // doctype is following child. [replaceWith] - if (child !== null /* always true here for replaceWith */) { - if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(ELEMENT_NODE); - if (isPreinsert) { - // "parent has an element child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an element child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE)) - utils.HierarchyRequestError(); - } - break; - default: // 6a1, continued. (more than one Element child) - utils.HierarchyRequestError(); - } - break; - case ELEMENT_NODE: - // 6b. parent has an element child, child is a doctype, or - // child is not null and a doctype is following child. [preinsert] - // 6b. parent has an element child that is not child or a - // doctype is following child. [replaceWith] - if (child !== null /* always true here for replaceWith */) { - if (isPreinsert && child.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - for (kid = child.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === DOCUMENT_TYPE_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(ELEMENT_NODE); - if (isPreinsert) { - // "parent has an element child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an element child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== ELEMENT_NODE)) - utils.HierarchyRequestError(); - } - break; - case DOCUMENT_TYPE_NODE: - // 6c. parent has a doctype child, child is non-null and an - // element is preceding child, or child is null and parent has - // an element child. [preinsert] - // 6c. parent has a doctype child that is not child, or an - // element is preceding child. [replaceWith] - if (child === null) { - if (parent._countChildrenOfType(ELEMENT_NODE)) - utils.HierarchyRequestError(); - } else { - // child is always non-null for [replaceWith] case - for (kid = parent.firstChild; kid !== null; kid = kid.nextSibling) { - if (kid === child) break; - if (kid.nodeType === ELEMENT_NODE) - utils.HierarchyRequestError(); - } - } - i = parent._countChildrenOfType(DOCUMENT_TYPE_NODE); - if (isPreinsert) { - // "parent has an doctype child" - if (i > 0) - utils.HierarchyRequestError(); - } else { - // "parent has an doctype child that is not child" - if (i > 1 || (i === 1 && child.nodeType !== DOCUMENT_TYPE_NODE)) - utils.HierarchyRequestError(); - } - break; - } - } else { - // 5, continued: (parent is not a document) - if (node.nodeType === DOCUMENT_TYPE_NODE) utils.HierarchyRequestError(); - } - }}, - - insertBefore: { value: function insertBefore(node, child) { - var parent = this; - // 1. Ensure pre-insertion validity - parent._ensureInsertValid(node, child, true); - // 2. Let reference child be child. - var refChild = child; - // 3. If reference child is node, set it to node's next sibling - if (refChild === node) { refChild = node.nextSibling; } - // 4. Adopt node into parent's node document. - parent.doc.adoptNode(node); - // 5. Insert node into parent before reference child. - node._insertOrReplace(parent, refChild, false); - // 6. Return node - return node; - }}, - - - appendChild: { value: function(child) { - // This invokes _appendChild after doing validity checks. - return this.insertBefore(child, null); - }}, - - _appendChild: { value: function(child) { - child._insertOrReplace(this, null, false); - }}, - - removeChild: { value: function removeChild(child) { - var parent = this; - if (!child.nodeType) throw new TypeError('not a node'); - if (child.parentNode !== parent) utils.NotFoundError(); - child.remove(); - return child; - }}, - - // To replace a `child` with `node` within a `parent` (this) - replaceChild: { value: function replaceChild(node, child) { - var parent = this; - // Ensure validity (slight differences from pre-insertion check) - parent._ensureInsertValid(node, child, false); - // Adopt node into parent's node document. - if (node.doc !== parent.doc) { - // XXX adoptNode has side-effect of removing node from its parent - // and generating a mutation event, thus causing the _insertOrReplace - // to generate two deletes and an insert instead of a 'move' - // event. It looks like the new MutationObserver stuff avoids - // this problem, but for now let's only adopt (ie, remove `node` - // from its parent) here if we need to. - parent.doc.adoptNode(node); - } - // Do the replace. - node._insertOrReplace(parent, child, true); - return child; - }}, - - // See: http://ejohn.org/blog/comparing-document-position/ - contains: { value: function contains(node) { - if (node === null) { return false; } - if (this === node) { return true; /* inclusive descendant */ } - /* jshint bitwise: false */ - return (this.compareDocumentPosition(node) & - DOCUMENT_POSITION_CONTAINED_BY) !== 0; - }}, - - compareDocumentPosition: { value: function compareDocumentPosition(that){ - // Basic algorithm for finding the relative position of two nodes. - // Make a list the ancestors of each node, starting with the - // document element and proceeding down to the nodes themselves. - // Then, loop through the lists, looking for the first element - // that differs. The order of those two elements give the - // order of their descendant nodes. Or, if one list is a prefix - // of the other one, then that node contains the other. - - if (this === that) return 0; - - // If they're not owned by the same document or if one is rooted - // and one is not, then they're disconnected. - if (this.doc !== that.doc || - this.rooted !== that.rooted) - return (DOCUMENT_POSITION_DISCONNECTED + - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC); - - // Get arrays of ancestors for this and that - var these = [], those = []; - for(var n = this; n !== null; n = n.parentNode) these.push(n); - for(n = that; n !== null; n = n.parentNode) those.push(n); - these.reverse(); // So we start with the outermost - those.reverse(); - - if (these[0] !== those[0]) // No common ancestor - return (DOCUMENT_POSITION_DISCONNECTED + - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC); - - n = Math.min(these.length, those.length); - for(var i = 1; i < n; i++) { - if (these[i] !== those[i]) { - // We found two different ancestors, so compare - // their positions - if (these[i].index < those[i].index) - return DOCUMENT_POSITION_FOLLOWING; - else - return DOCUMENT_POSITION_PRECEDING; - } - } - - // If we get to here, then one of the nodes (the one with the - // shorter list of ancestors) contains the other one. - if (these.length < those.length) - return (DOCUMENT_POSITION_FOLLOWING + - DOCUMENT_POSITION_CONTAINED_BY); - else - return (DOCUMENT_POSITION_PRECEDING + - DOCUMENT_POSITION_CONTAINS); - }}, - - isSameNode: {value : function isSameNode(node) { - return this === node; - }}, - - - // This method implements the generic parts of node equality testing - // and defers to the (non-recursive) type-specific isEqual() method - // defined by subclasses - isEqualNode: { value: function isEqualNode(node) { - if (!node) return false; - if (node.nodeType !== this.nodeType) return false; - - // Check type-specific properties for equality - if (!this.isEqual(node)) return false; - - // Now check children for number and equality - for (var c1 = this.firstChild, c2 = node.firstChild; - c1 && c2; - c1 = c1.nextSibling, c2 = c2.nextSibling) { - if (!c1.isEqualNode(c2)) return false; - } - return c1 === null && c2 === null; - }}, - - // This method delegates shallow cloning to a clone() method - // that each concrete subclass must implement - cloneNode: { value: function(deep) { - // Clone this node - var clone = this.clone(); - - // Handle the recursive case if necessary - if (deep) { - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - clone._appendChild(kid.cloneNode(true)); - } - } - - return clone; - }}, - - lookupPrefix: { value: function lookupPrefix(ns) { - var e; - if (ns === '' || ns === null || ns === undefined) return null; - switch(this.nodeType) { - case ELEMENT_NODE: - return this._lookupNamespacePrefix(ns, this); - case DOCUMENT_NODE: - e = this.documentElement; - return e ? e.lookupPrefix(ns) : null; - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_FRAGMENT_NODE: - case DOCUMENT_TYPE_NODE: - return null; - case ATTRIBUTE_NODE: - e = this.ownerElement; - return e ? e.lookupPrefix(ns) : null; - default: - e = this.parentElement; - return e ? e.lookupPrefix(ns) : null; - } - }}, - - - lookupNamespaceURI: {value: function lookupNamespaceURI(prefix) { - if (prefix === '' || prefix === undefined) { prefix = null; } - var e; - switch(this.nodeType) { - case ELEMENT_NODE: - return utils.shouldOverride(); - case DOCUMENT_NODE: - e = this.documentElement; - return e ? e.lookupNamespaceURI(prefix) : null; - case ENTITY_NODE: - case NOTATION_NODE: - case DOCUMENT_TYPE_NODE: - case DOCUMENT_FRAGMENT_NODE: - return null; - case ATTRIBUTE_NODE: - e = this.ownerElement; - return e ? e.lookupNamespaceURI(prefix) : null; - default: - e = this.parentElement; - return e ? e.lookupNamespaceURI(prefix) : null; - } - }}, - - isDefaultNamespace: { value: function isDefaultNamespace(ns) { - if (ns === '' || ns === undefined) { ns = null; } - var defaultNamespace = this.lookupNamespaceURI(null); - return (defaultNamespace === ns); - }}, - - // Utility methods for nodes. Not part of the DOM - - // Return the index of this node in its parent. - // Throw if no parent, or if this node is not a child of its parent - index: { get: function() { - var parent = this.parentNode; - if (this === parent.firstChild) return 0; // fast case - var kids = parent.childNodes; - if (this._index === undefined || kids[this._index] !== this) { - // Ensure that we don't have an O(N^2) blowup if none of the - // kids have defined indices yet and we're traversing via - // nextSibling or previousSibling - for (var i=0; i 2 ? spliceArgs[2] : null); - } else if (len > 2 && n !== null) { - LinkedList.insertBefore(spliceArgs[2], n); - } - if (parent._childNodes) { - spliceArgs[0] = (before === null) ? - parent._childNodes.length : before._index; - parent._childNodes.splice.apply(parent._childNodes, spliceArgs); - for (i=2; i 2) { - parent._firstChild = spliceArgs[2]; - } else if (isReplace) { - parent._firstChild = null; - } - } - // Remove all nodes from the document fragment - if (child._childNodes) { - child._childNodes.length = 0; - } else { - child._firstChild = null; - } - // Call the mutation handlers - // Use spliceArgs since the original array has been destroyed. The - // liveness guarantee requires us to clone the array so that - // references to the childNodes of the DocumentFragment will be empty - // when the insertion handlers are called. - if (parent.rooted) { - parent.modify(); - for (i = 2; i < len; i++) { - parent.doc.mutateInsert(spliceArgs[i]); - } - } - } else { - if (before === child) { return; } - if (bothRooted) { - // Remove the child from its current position in the tree - // without calling remove(), since we don't want to uproot it. - child._remove(); - } else if (child.parentNode) { - child.remove(); - } - - // Insert it as a child of its new parent - child.parentNode = parent; - if (isReplace) { - LinkedList.replace(n, child); - if (parent._childNodes) { - child._index = before_index; - parent._childNodes[before_index] = child; - } else if (parent._firstChild === before) { - parent._firstChild = child; - } - } else { - if (n !== null) { - LinkedList.insertBefore(child, n); - } - if (parent._childNodes) { - child._index = before_index; - parent._childNodes.splice(before_index, 0, child); - } else if (parent._firstChild === before) { - parent._firstChild = child; - } - } - if (bothRooted) { - parent.modify(); - // Generate a move mutation event - parent.doc.mutateMove(child); - } else if (parent.rooted) { - parent.modify(); - parent.doc.mutateInsert(child); - } - } - }}, - - - // Return the lastModTime value for this node. (For use as a - // cache invalidation mechanism. If the node does not already - // have one, initialize it from the owner document's modclock - // property. (Note that modclock does not return the actual - // time; it is simply a counter incremented on each document - // modification) - lastModTime: { get: function() { - if (!this._lastModTime) { - this._lastModTime = this.doc.modclock; - } - return this._lastModTime; - }}, - - // Increment the owner document's modclock and use the new - // value to update the lastModTime value for this node and - // all of its ancestors. Nodes that have never had their - // lastModTime value queried do not need to have a - // lastModTime property set on them since there is no - // previously queried value to ever compare the new value - // against, so only update nodes that already have a - // _lastModTime property. - modify: { value: function() { - if (this.doc.modclock) { // Skip while doc.modclock == 0 - var time = ++this.doc.modclock; - for(var n = this; n; n = n.parentElement) { - if (n._lastModTime) { - n._lastModTime = time; - } - } - } - }}, - - // This attribute is not part of the DOM but is quite helpful. - // It returns the document with which a node is associated. Usually - // this is the ownerDocument. But ownerDocument is null for the - // document object itself, so this is a handy way to get the document - // regardless of the node type - doc: { get: function() { - return this.ownerDocument || this; - }}, - - - // If the node has a nid (node id), then it is rooted in a document - rooted: { get: function() { - return !!this._nid; - }}, - - normalize: { value: function() { - var next; - for (var child=this.firstChild; child !== null; child=next) { - next = child.nextSibling; - - if (child.normalize) { - child.normalize(); - } - - if (child.nodeType !== Node.TEXT_NODE) { - continue; - } - - if (child.nodeValue === "") { - this.removeChild(child); - continue; - } - - var prevChild = child.previousSibling; - if (prevChild === null) { - continue; - } else if (prevChild.nodeType === Node.TEXT_NODE) { - // merge this with previous and remove the child - prevChild.appendData(child.nodeValue); - this.removeChild(child); - } - } - }}, - - // Convert the children of a node to an HTML string. - // This is used by the innerHTML getter - // The serialization spec is at: - // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#serializing-html-fragments - // - // The serialization logic is intentionally implemented in a separate - // `NodeUtils` helper instead of the more obvious choice of a private - // `_serializeOne()` method on the `Node.prototype` in order to avoid - // the megamorphic `this._serializeOne` property access, which reduces - // performance unnecessarily. If you need specialized behavior for a - // certain subclass, you'll need to implement that in `NodeUtils`. - // See https://github.com/fgnass/domino/pull/142 for more information. - serialize: { value: function() { - if (this._innerHTML) { - return this._innerHTML; - } - var s = ''; - for (var kid = this.firstChild; kid !== null; kid = kid.nextSibling) { - s += NodeUtils.serializeOne(kid, this); - } - return s; - }}, - - // Non-standard, but often useful for debugging. - outerHTML: { - get: function() { - return NodeUtils.serializeOne(this, { nodeType: 0 }); - }, - set: utils.nyi, - }, - - // mirror node type properties in the prototype, so they are present - // in instances of Node (and subclasses) - ELEMENT_NODE: { value: ELEMENT_NODE }, - ATTRIBUTE_NODE: { value: ATTRIBUTE_NODE }, - TEXT_NODE: { value: TEXT_NODE }, - CDATA_SECTION_NODE: { value: CDATA_SECTION_NODE }, - ENTITY_REFERENCE_NODE: { value: ENTITY_REFERENCE_NODE }, - ENTITY_NODE: { value: ENTITY_NODE }, - PROCESSING_INSTRUCTION_NODE: { value: PROCESSING_INSTRUCTION_NODE }, - COMMENT_NODE: { value: COMMENT_NODE }, - DOCUMENT_NODE: { value: DOCUMENT_NODE }, - DOCUMENT_TYPE_NODE: { value: DOCUMENT_TYPE_NODE }, - DOCUMENT_FRAGMENT_NODE: { value: DOCUMENT_FRAGMENT_NODE }, - NOTATION_NODE: { value: NOTATION_NODE }, - - DOCUMENT_POSITION_DISCONNECTED: { value: DOCUMENT_POSITION_DISCONNECTED }, - DOCUMENT_POSITION_PRECEDING: { value: DOCUMENT_POSITION_PRECEDING }, - DOCUMENT_POSITION_FOLLOWING: { value: DOCUMENT_POSITION_FOLLOWING }, - DOCUMENT_POSITION_CONTAINS: { value: DOCUMENT_POSITION_CONTAINS }, - DOCUMENT_POSITION_CONTAINED_BY: { value: DOCUMENT_POSITION_CONTAINED_BY }, - DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC: { value: DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC }, -}); - - -/***/ }), - -/***/ 383: -/***/ ((module) => { - -"use strict"; - -var NodeFilter = { - // Constants for acceptNode() - FILTER_ACCEPT: 1, - FILTER_REJECT: 2, - FILTER_SKIP: 3, - - // Constants for whatToShow - SHOW_ALL: 0xFFFFFFFF, - SHOW_ELEMENT: 0x1, - SHOW_ATTRIBUTE: 0x2, // historical - SHOW_TEXT: 0x4, - SHOW_CDATA_SECTION: 0x8, // historical - SHOW_ENTITY_REFERENCE: 0x10, // historical - SHOW_ENTITY: 0x20, // historical - SHOW_PROCESSING_INSTRUCTION: 0x40, - SHOW_COMMENT: 0x80, - SHOW_DOCUMENT: 0x100, - SHOW_DOCUMENT_TYPE: 0x200, - SHOW_DOCUMENT_FRAGMENT: 0x400, - SHOW_NOTATION: 0x800 // historical -}; - -module.exports = (NodeFilter.constructor = NodeFilter.prototype = NodeFilter); - - -/***/ }), - -/***/ 30419: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = NodeIterator; - -var NodeFilter = __webpack_require__(383); -var NodeTraversal = __webpack_require__(72059); -var utils = __webpack_require__(89076); - -/* Private methods and helpers */ - -/** - * @based on WebKit's NodeIterator::moveToNext and NodeIterator::moveToPrevious - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeIterator.cpp?rev=186279#L51 - */ -function move(node, stayWithin, directionIsNext) { - if (directionIsNext) { - return NodeTraversal.next(node, stayWithin); - } else { - if (node === stayWithin) { - return null; - } - return NodeTraversal.previous(node, null); - } -} - -function isInclusiveAncestor(node, possibleChild) { - for ( ; possibleChild; possibleChild = possibleChild.parentNode) { - if (node === possibleChild) { return true; } - } - return false; -} - -/** - * @spec http://www.w3.org/TR/dom/#concept-nodeiterator-traverse - * @method - * @access private - * @param {NodeIterator} ni - * @param {string} direction One of 'next' or 'previous'. - * @return {Node|null} - */ -function traverse(ni, directionIsNext) { - var node, beforeNode; - node = ni._referenceNode; - beforeNode = ni._pointerBeforeReferenceNode; - while (true) { - if (beforeNode === directionIsNext) { - beforeNode = !beforeNode; - } else { - node = move(node, ni._root, directionIsNext); - if (node === null) { - return null; - } - } - var result = ni._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - break; - } - } - ni._referenceNode = node; - ni._pointerBeforeReferenceNode = beforeNode; - return node; -} - -/* Public API */ - -/** - * Implemented version: http://www.w3.org/TR/2015/WD-dom-20150618/#nodeiterator - * Latest version: http://www.w3.org/TR/dom/#nodeiterator - * - * @constructor - * @param {Node} root - * @param {number} whatToShow [optional] - * @param {Function|NodeFilter} filter [optional] - * @throws Error - */ -function NodeIterator(root, whatToShow, filter) { - if (!root || !root.nodeType) { - utils.NotSupportedError(); - } - - // Read-only properties - this._root = root; - this._referenceNode = root; - this._pointerBeforeReferenceNode = true; - this._whatToShow = Number(whatToShow) || 0; - this._filter = filter || null; - this._active = false; - // Record active node iterators in the document, in order to perform - // "node iterator pre-removal steps". - root.doc._attachNodeIterator(this); -} - -Object.defineProperties(NodeIterator.prototype, { - root: { get: function root() { - return this._root; - } }, - referenceNode: { get: function referenceNode() { - return this._referenceNode; - } }, - pointerBeforeReferenceNode: { get: function pointerBeforeReferenceNode() { - return this._pointerBeforeReferenceNode; - } }, - whatToShow: { get: function whatToShow() { - return this._whatToShow; - } }, - filter: { get: function filter() { - return this._filter; - } }, - - /** - * @method - * @param {Node} node - * @return {Number} Constant NodeFilter.FILTER_ACCEPT, - * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP. - */ - _internalFilter: { value: function _internalFilter(node) { - /* jshint bitwise: false */ - var result, filter; - if (this._active) { - utils.InvalidStateError(); - } - - // Maps nodeType to whatToShow - if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) { - return NodeFilter.FILTER_SKIP; - } - - filter = this._filter; - if (filter === null) { - result = NodeFilter.FILTER_ACCEPT; - } else { - this._active = true; - try { - if (typeof filter === 'function') { - result = filter(node); - } else { - result = filter.acceptNode(node); - } - } finally { - this._active = false; - } - } - - // Note that coercing to a number means that - // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT) - // `false` becomes `0` (neither accept, reject, or skip) - return (+result); - } }, - - /** - * @spec https://dom.spec.whatwg.org/#nodeiterator-pre-removing-steps - * @method - * @return void - */ - _preremove: { value: function _preremove(toBeRemovedNode) { - if (isInclusiveAncestor(toBeRemovedNode, this._root)) { return; } - if (!isInclusiveAncestor(toBeRemovedNode, this._referenceNode)) { return; } - if (this._pointerBeforeReferenceNode) { - var next = toBeRemovedNode; - while (next.lastChild) { - next = next.lastChild; - } - next = NodeTraversal.next(next, this.root); - if (next) { - this._referenceNode = next; - return; - } - this._pointerBeforeReferenceNode = false; - // fall through - } - if (toBeRemovedNode.previousSibling === null) { - this._referenceNode = toBeRemovedNode.parentNode; - } else { - this._referenceNode = toBeRemovedNode.previousSibling; - var lastChild; - for (lastChild = this._referenceNode.lastChild; - lastChild; - lastChild = this._referenceNode.lastChild) { - this._referenceNode = lastChild; - } - } - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-nextnode - * @method - * @return {Node|null} - */ - nextNode: { value: function nextNode() { - return traverse(this, true); - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-previousnode - * @method - * @return {Node|null} - */ - previousNode: { value: function previousNode() { - return traverse(this, false); - } }, - - /** - * @spec http://www.w3.org/TR/dom/#dom-nodeiterator-detach - * @method - * @return void - */ - detach: { value: function detach() { - /* "The detach() method must do nothing. - * Its functionality (disabling a NodeIterator object) was removed, - * but the method itself is preserved for compatibility. - */ - } }, - - /** For compatibility with web-platform-tests. */ - toString: { value: function toString() { - return "[object NodeIterator]"; - } }, -}); - - -/***/ }), - -/***/ 52516: -/***/ ((module) => { - -"use strict"; - - -// No support for subclassing array, return an actual Array object. -function item(i) { - /* jshint validthis: true */ - return this[i] || null; -} - -function NodeList(a) { - if (!a) a = []; - a.item = item; - return a; -} - -module.exports = NodeList; - - -/***/ }), - -/***/ 77101: -/***/ ((module) => { - -"use strict"; -/* jshint esversion: 6 */ - - -module.exports = class NodeList extends Array { - constructor(a) { - super((a && a.length) || 0); - if (a) { - for (var idx in a) { this[idx] = a[idx]; } - } - } - item(i) { return this[i] || null; } -}; - - -/***/ }), - -/***/ 64965: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var NodeList; - -try { - // Attempt to use ES6-style Array subclass if possible. - NodeList = __webpack_require__(77101); -} catch (e) { - // No support for subclassing array, return an actual Array object. - NodeList = __webpack_require__(52516); -} - -module.exports = NodeList; - - -/***/ }), - -/***/ 72059: -/***/ ((module) => { - -"use strict"; - -/* exported NodeTraversal */ -var NodeTraversal = module.exports = { - nextSkippingChildren: nextSkippingChildren, - nextAncestorSibling: nextAncestorSibling, - next: next, - previous: previous, - deepLastChild: deepLastChild -}; - -/** - * @based on WebKit's NodeTraversal::nextSkippingChildren - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L109 - */ -function nextSkippingChildren(node, stayWithin) { - if (node === stayWithin) { - return null; - } - if (node.nextSibling !== null) { - return node.nextSibling; - } - return nextAncestorSibling(node, stayWithin); -} - -/** - * @based on WebKit's NodeTraversal::nextAncestorSibling - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L93 - */ -function nextAncestorSibling(node, stayWithin) { - for (node = node.parentNode; node !== null; node = node.parentNode) { - if (node === stayWithin) { - return null; - } - if (node.nextSibling !== null) { - return node.nextSibling; - } - } - return null; -} - -/** - * @based on WebKit's NodeTraversal::next - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L99 - */ -function next(node, stayWithin) { - var n; - n = node.firstChild; - if (n !== null) { - return n; - } - if (node === stayWithin) { - return null; - } - n = node.nextSibling; - if (n !== null) { - return n; - } - return nextAncestorSibling(node, stayWithin); -} - -/** - * @based on WebKit's NodeTraversal::deepLastChild - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.cpp?rev=179143#L116 - */ -function deepLastChild(node) { - while (node.lastChild) { - node = node.lastChild; - } - return node; -} - -/** - * @based on WebKit's NodeTraversal::previous - * https://trac.webkit.org/browser/trunk/Source/WebCore/dom/NodeTraversal.h?rev=179143#L121 - */ -function previous(node, stayWithin) { - var p; - p = node.previousSibling; - if (p !== null) { - return deepLastChild(p); - } - p = node.parentNode; - if (p === stayWithin) { - return null; - } - return p; -} - - -/***/ }), - -/***/ 41608: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = { - // NOTE: The `serializeOne()` function used to live on the `Node.prototype` - // as a private method `Node#_serializeOne(child)`, however that requires - // a megamorphic property access `this._serializeOne` just to get to the - // method, and this is being done on lots of different `Node` subclasses, - // which puts a lot of pressure on V8's megamorphic stub cache. So by - // moving the helper off of the `Node.prototype` and into a separate - // function in this helper module, we get a monomorphic property access - // `NodeUtils.serializeOne` to get to the function and reduce pressure - // on the megamorphic stub cache. - // See https://github.com/fgnass/domino/pull/142 for more information. - serializeOne: serializeOne, - - // Export util functions so that we can run extra test for them. - // Note: we prefix function names with `ɵ`, similar to what we do - // with internal functions in Angular packages. - ɵescapeMatchingClosingTag: escapeMatchingClosingTag, - ɵescapeClosingCommentTag: escapeClosingCommentTag, - ɵescapeProcessingInstructionContent: escapeProcessingInstructionContent -}; - -var utils = __webpack_require__(89076); -var NAMESPACE = utils.NAMESPACE; - -var hasRawContent = { - STYLE: true, - SCRIPT: true, - XMP: true, - IFRAME: true, - NOEMBED: true, - NOFRAMES: true, - PLAINTEXT: true -}; - -var emptyElements = { - area: true, - base: true, - basefont: true, - bgsound: true, - br: true, - col: true, - embed: true, - frame: true, - hr: true, - img: true, - input: true, - keygen: true, - link: true, - meta: true, - param: true, - source: true, - track: true, - wbr: true -}; - -var extraNewLine = { - /* Removed in https://github.com/whatwg/html/issues/944 - pre: true, - textarea: true, - listing: true - */ -}; - -const ESCAPE_REGEXP = /[&<>\u00A0]/g; -const ESCAPE_ATTR_REGEXP = /[&"<>\u00A0]/g; - -function escape(s) { - if (!ESCAPE_REGEXP.test(s)) { - // nothing to do, fast path - return s; - } - - return s.replace(ESCAPE_REGEXP, (c) => { - switch (c) { - case "&": - return "&"; - case "<": - return "<"; - case ">": - return ">"; - case "\u00A0": - return " "; - } - }); -} - -function escapeAttr(s) { - if (!ESCAPE_ATTR_REGEXP.test(s)) { - // nothing to do, fast path - return s; - } - - return s.replace(ESCAPE_ATTR_REGEXP, (c) => { - switch (c) { - case "<": - return "<"; - case ">": - return ">"; - case "&": - return "&"; - case '"': - return """; - case "\u00A0": - return " "; - } - }); -} - -function attrname(a) { - var ns = a.namespaceURI; - if (!ns) - return a.localName; - if (ns === NAMESPACE.XML) - return 'xml:' + a.localName; - if (ns === NAMESPACE.XLINK) - return 'xlink:' + a.localName; - - if (ns === NAMESPACE.XMLNS) { - if (a.localName === 'xmlns') return 'xmlns'; - else return 'xmlns:' + a.localName; - } - return a.name; -} - -/** - * Escapes matching closing tag in a raw text. - * - * For example, given `)`, - * the parent tag would by "style" and the raw text is - * "". If we come across a matching closing tag - * (in out case ``) - replace `<` with `<` to avoid unexpected - * and unsafe behavior after de-serialization. - */ -function escapeMatchingClosingTag(rawText, parentTag) { - const parentClosingTag = '/; - -/** - * Escapes closing comment tag in a comment content. - * - * For example, given `#comment('-->')`, the content of a comment would be - * updated to `-->` to avoid unexpected and unsafe behavior after - * de-serialization. - */ -function escapeClosingCommentTag(rawContent) { - if (!CLOSING_COMMENT_REGEXP.test(rawContent)) { - return rawContent; // fast path - } - return rawContent.replace(/(--\!?)>/g, '$1>'); -} - -/** - * Escapes processing instruction content by replacing `>` with `>`. - */ -function escapeProcessingInstructionContent(rawContent) { - return rawContent.includes('>') - ? rawContent.replaceAll('>', '>') - : rawContent; -} - -function serializeOne(kid, parent) { - var s = ''; - switch(kid.nodeType) { - case 1: //ELEMENT_NODE - var ns = kid.namespaceURI; - var html = ns === NAMESPACE.HTML; - var tagname = (html || ns === NAMESPACE.SVG || ns === NAMESPACE.MATHML) ? kid.localName : kid.tagName; - - s += '<' + tagname; - - for(var j = 0, k = kid._numattrs; j < k; j++) { - var a = kid._attr(j); - s += ' ' + attrname(a); - if (a.value !== undefined) s += '="' + escapeAttr(a.value) + '"'; - } - s += '>'; - - if (!(html && emptyElements[tagname])) { - var ss = kid.serialize(); - // If an element can have raw content, this content may - // potentially require escaping to avoid XSS. - if (hasRawContent[tagname.toUpperCase()]) { - ss = escapeMatchingClosingTag(ss, tagname); - } - if (html && extraNewLine[tagname] && ss.charAt(0)==='\n') s += '\n'; - // Serialize children and add end tag for all others - s += ss; - s += ''; - } - break; - case 3: //TEXT_NODE - case 4: //CDATA_SECTION_NODE - var parenttag; - if (parent.nodeType === 1 /*ELEMENT_NODE*/ && - parent.namespaceURI === NAMESPACE.HTML) - parenttag = parent.tagName; - else - parenttag = ''; - - if (hasRawContent[parenttag] || - (parenttag==='NOSCRIPT' && parent.ownerDocument._scripting_enabled)) { - s += kid.data; - } else { - s += escape(kid.data); - } - break; - case 8: //COMMENT_NODE - s += ''; - break; - case 7: //PROCESSING_INSTRUCTION_NODE - const content = escapeProcessingInstructionContent(kid.data); - s += ''; - break; - case 10: //DOCUMENT_TYPE_NODE - s += ''; - break; - default: - utils.InvalidStateError(); - } - return s; -} - - -/***/ }), - -/***/ 32001: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Node = __webpack_require__(97537); - -var NonDocumentTypeChildNode = { - - nextElementSibling: { get: function() { - if (this.parentNode) { - for (var kid = this.nextSibling; kid !== null; kid = kid.nextSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - } - return null; - }}, - - previousElementSibling: { get: function() { - if (this.parentNode) { - for (var kid = this.previousSibling; kid !== null; kid = kid.previousSibling) { - if (kid.nodeType === Node.ELEMENT_NODE) return kid; - } - } - return null; - }} - -}; - -module.exports = NonDocumentTypeChildNode; - - -/***/ }), - -/***/ 81248: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = ProcessingInstruction; - -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function ProcessingInstruction(doc, target, data) { - CharacterData.call(this); - this.nodeType = Node.PROCESSING_INSTRUCTION_NODE; - this.ownerDocument = doc; - this.target = target; - this._data = data; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - this._data = v; - if (this.rooted) this.ownerDocument.mutateValue(this); - } -}; - -ProcessingInstruction.prototype = Object.create(CharacterData.prototype, { - nodeName: { get: function() { return this.target; }}, - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - // Utility methods - clone: { value: function clone() { - return new ProcessingInstruction(this.ownerDocument, this.target, this._data); - }}, - isEqual: { value: function isEqual(n) { - return this.target === n.target && this._data === n._data; - }} - -}); - - -/***/ }), - -/***/ 58210: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = Text; - -var utils = __webpack_require__(89076); -var Node = __webpack_require__(97537); -var CharacterData = __webpack_require__(90086); - -function Text(doc, data) { - CharacterData.call(this); - this.nodeType = Node.TEXT_NODE; - this.ownerDocument = doc; - this._data = data; - this._index = undefined; -} - -var nodeValue = { - get: function() { return this._data; }, - set: function(v) { - if (v === null || v === undefined) { v = ''; } else { v = String(v); } - if (v === this._data) return; - this._data = v; - if (this.rooted) - this.ownerDocument.mutateValue(this); - if (this.parentNode && - this.parentNode._textchangehook) - this.parentNode._textchangehook(this); - } -}; - -Text.prototype = Object.create(CharacterData.prototype, { - nodeName: { value: "#text" }, - // These three attributes are all the same. - // The data attribute has a [TreatNullAs=EmptyString] but we'll - // implement that at the interface level - nodeValue: nodeValue, - textContent: nodeValue, - innerText: nodeValue, - data: { - get: nodeValue.get, - set: function(v) { - nodeValue.set.call(this, v===null ? '' : String(v)); - }, - }, - - splitText: { value: function splitText(offset) { - if (offset > this._data.length || offset < 0) utils.IndexSizeError(); - - var newdata = this._data.substring(offset), - newnode = this.ownerDocument.createTextNode(newdata); - this.data = this.data.substring(0, offset); - - var parent = this.parentNode; - if (parent !== null) - parent.insertBefore(newnode, this.nextSibling); - - return newnode; - }}, - - wholeText: { get: function wholeText() { - var result = this.textContent; - for (var next = this.nextSibling; next; next = next.nextSibling) { - if (next.nodeType !== Node.TEXT_NODE) { break; } - result += next.textContent; - } - return result; - }}, - // Obsolete, removed from spec. - replaceWholeText: { value: utils.nyi }, - - // Utility methods - clone: { value: function clone() { - return new Text(this.ownerDocument, this._data); - }}, - -}); - - -/***/ }), - -/***/ 44507: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = TreeWalker; - -var Node = __webpack_require__(97537); -var NodeFilter = __webpack_require__(383); -var NodeTraversal = __webpack_require__(72059); -var utils = __webpack_require__(89076); - -var mapChild = { - first: 'firstChild', - last: 'lastChild', - next: 'firstChild', - previous: 'lastChild' -}; - -var mapSibling = { - first: 'nextSibling', - last: 'previousSibling', - next: 'nextSibling', - previous: 'previousSibling' -}; - -/* Private methods and helpers */ - -/** - * @spec https://dom.spec.whatwg.org/#concept-traverse-children - * @method - * @access private - * @param {TreeWalker} tw - * @param {string} type One of 'first' or 'last'. - * @return {Node|null} - */ -function traverseChildren(tw, type) { - var child, node, parent, result, sibling; - node = tw._currentNode[mapChild[type]]; - while (node !== null) { - result = tw._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - tw._currentNode = node; - return node; - } - if (result === NodeFilter.FILTER_SKIP) { - child = node[mapChild[type]]; - if (child !== null) { - node = child; - continue; - } - } - while (node !== null) { - sibling = node[mapSibling[type]]; - if (sibling !== null) { - node = sibling; - break; - } - parent = node.parentNode; - if (parent === null || parent === tw.root || parent === tw._currentNode) { - return null; - } else { - node = parent; - } - } - } - return null; -} - -/** - * @spec https://dom.spec.whatwg.org/#concept-traverse-siblings - * @method - * @access private - * @param {TreeWalker} tw - * @param {TreeWalker} type One of 'next' or 'previous'. - * @return {Node|nul} - */ -function traverseSiblings(tw, type) { - var node, result, sibling; - node = tw._currentNode; - if (node === tw.root) { - return null; - } - while (true) { - sibling = node[mapSibling[type]]; - while (sibling !== null) { - node = sibling; - result = tw._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - tw._currentNode = node; - return node; - } - sibling = node[mapChild[type]]; - if (result === NodeFilter.FILTER_REJECT || sibling === null) { - sibling = node[mapSibling[type]]; - } - } - node = node.parentNode; - if (node === null || node === tw.root) { - return null; - } - if (tw._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - return null; - } - } -} - - -/* Public API */ - -/** - * Latest version: https://dom.spec.whatwg.org/#treewalker - * - * @constructor - * @param {Node} root - * @param {number} whatToShow [optional] - * @param {Function|NodeFilter} filter [optional] - * @throws Error - */ -function TreeWalker(root, whatToShow, filter) { - if (!root || !root.nodeType) { - utils.NotSupportedError(); - } - - // Read-only properties - this._root = root; - this._whatToShow = Number(whatToShow) || 0; - this._filter = filter || null; - this._active = false; - // Read-write property - this._currentNode = root; -} - -Object.defineProperties(TreeWalker.prototype, { - root: { get: function() { return this._root; } }, - whatToShow: { get: function() { return this._whatToShow; } }, - filter: { get: function() { return this._filter; } }, - - currentNode: { - get: function currentNode() { - return this._currentNode; - }, - set: function setCurrentNode(v) { - if (!(v instanceof Node)) { - throw new TypeError("Not a Node"); // `null` is also not a node - } - this._currentNode = v; - }, - }, - - /** - * @method - * @param {Node} node - * @return {Number} Constant NodeFilter.FILTER_ACCEPT, - * NodeFilter.FILTER_REJECT or NodeFilter.FILTER_SKIP. - */ - _internalFilter: { value: function _internalFilter(node) { - /* jshint bitwise: false */ - var result, filter; - if (this._active) { - utils.InvalidStateError(); - } - - // Maps nodeType to whatToShow - if (!(((1 << (node.nodeType - 1)) & this._whatToShow))) { - return NodeFilter.FILTER_SKIP; - } - - filter = this._filter; - if (filter === null) { - result = NodeFilter.FILTER_ACCEPT; - } else { - this._active = true; - try { - if (typeof filter === 'function') { - result = filter(node); - } else { - result = filter.acceptNode(node); - } - } finally { - this._active = false; - } - } - - // Note that coercing to a number means that - // `true` becomes `1` (which is NodeFilter.FILTER_ACCEPT) - // `false` becomes `0` (neither accept, reject, or skip) - return (+result); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-parentnode - * @based on WebKit's TreeWalker::parentNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L50 - * @method - * @return {Node|null} - */ - parentNode: { value: function parentNode() { - var node = this._currentNode; - while (node !== this.root) { - node = node.parentNode; - if (node === null) { - return null; - } - if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - return null; - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-firstchild - * @method - * @return {Node|null} - */ - firstChild: { value: function firstChild() { - return traverseChildren(this, 'first'); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-lastchild - * @method - * @return {Node|null} - */ - lastChild: { value: function lastChild() { - return traverseChildren(this, 'last'); - }}, - - /** - * @spec http://www.w3.org/TR/dom/#dom-treewalker-previoussibling - * @method - * @return {Node|null} - */ - previousSibling: { value: function previousSibling() { - return traverseSiblings(this, 'previous'); - }}, - - /** - * @spec http://www.w3.org/TR/dom/#dom-treewalker-nextsibling - * @method - * @return {Node|null} - */ - nextSibling: { value: function nextSibling() { - return traverseSiblings(this, 'next'); - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-previousnode - * @based on WebKit's TreeWalker::previousNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L181 - * @method - * @return {Node|null} - */ - previousNode: { value: function previousNode() { - var node, result, previousSibling, lastChild; - node = this._currentNode; - while (node !== this._root) { - for (previousSibling = node.previousSibling; - previousSibling; - previousSibling = node.previousSibling) { - node = previousSibling; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_REJECT) { - continue; - } - for (lastChild = node.lastChild; - lastChild; - lastChild = node.lastChild) { - node = lastChild; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_REJECT) { - break; - } - } - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - if (node === this.root || node.parentNode === null) { - return null; - } - node = node.parentNode; - if (this._internalFilter(node) === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } - } - return null; - }}, - - /** - * @spec https://dom.spec.whatwg.org/#dom-treewalker-nextnode - * @based on WebKit's TreeWalker::nextNode - * https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/dom/TreeWalker.cpp?rev=220453#L228 - * @method - * @return {Node|null} - */ - nextNode: { value: function nextNode() { - var node, result, firstChild, nextSibling; - node = this._currentNode; - result = NodeFilter.FILTER_ACCEPT; - - CHILDREN: - while (true) { - for (firstChild = node.firstChild; - firstChild; - firstChild = node.firstChild) { - node = firstChild; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } else if (result === NodeFilter.FILTER_REJECT) { - break; - } - } - for (nextSibling = NodeTraversal.nextSkippingChildren(node, this.root); - nextSibling; - nextSibling = NodeTraversal.nextSkippingChildren(node, this.root)) { - node = nextSibling; - result = this._internalFilter(node); - if (result === NodeFilter.FILTER_ACCEPT) { - this._currentNode = node; - return node; - } else if (result === NodeFilter.FILTER_SKIP) { - continue CHILDREN; - } - } - return null; - } - }}, - - /** For compatibility with web-platform-tests. */ - toString: { value: function toString() { - return "[object TreeWalker]"; - }}, -}); - - -/***/ }), - -/***/ 64259: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var Event = __webpack_require__(13441); - -module.exports = UIEvent; - -function UIEvent() { - // Just use the superclass constructor to initialize - Event.call(this); - this.view = null; // FF uses the current window - this.detail = 0; -} -UIEvent.prototype = Object.create(Event.prototype, { - constructor: { value: UIEvent }, - initUIEvent: { value: function(type, bubbles, cancelable, view, detail) { - this.initEvent(type, bubbles, cancelable); - this.view = view; - this.detail = detail; - }} -}); - - -/***/ }), - -/***/ 85184: -/***/ ((module) => { - -"use strict"; - -module.exports = URL; - -function URL(url) { - if (!url) return Object.create(URL.prototype); - // Can't use String.trim() since it defines whitespace differently than HTML - this.url = url.replace(/^[ \t\n\r\f]+|[ \t\n\r\f]+$/g, ""); - - // See http://tools.ietf.org/html/rfc3986#appendix-B - // and https://url.spec.whatwg.org/#parsing - var match = URL.pattern.exec(this.url); - if (match) { - if (match[2]) this.scheme = match[2]; - if (match[4]) { - // parse username/password - var userinfo = match[4].match(URL.userinfoPattern); - if (userinfo) { - this.username = userinfo[1]; - this.password = userinfo[3]; - match[4] = match[4].substring(userinfo[0].length); - } - if (match[4].match(URL.portPattern)) { - var pos = match[4].lastIndexOf(':'); - this.host = match[4].substring(0, pos); - this.port = match[4].substring(pos+1); - } - else { - this.host = match[4]; - } - } - if (match[5]) this.path = match[5]; - if (match[6]) this.query = match[7]; - if (match[8]) this.fragment = match[9]; - } -} - -URL.pattern = /^(([^:\/?#]+):)?(\/\/([^\/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?$/; -URL.userinfoPattern = /^([^@:]*)(:([^@]*))?@/; -URL.portPattern = /:\d+$/; -URL.authorityPattern = /^[^:\/?#]+:\/\//; -URL.hierarchyPattern = /^[^:\/?#]+:\//; - -// Return a percentEncoded version of s. -// S should be a single-character string -// XXX: needs to do utf-8 encoding? -URL.percentEncode = function percentEncode(s) { - var c = s.charCodeAt(0); - if (c < 256) return "%" + c.toString(16); - else throw Error("can't percent-encode codepoints > 255 yet"); -}; - -URL.prototype = { - constructor: URL, - - // XXX: not sure if this is the precise definition of absolute - isAbsolute: function() { return !!this.scheme; }, - isAuthorityBased: function() { - return URL.authorityPattern.test(this.url); - }, - isHierarchical: function() { - return URL.hierarchyPattern.test(this.url); - }, - - toString: function() { - var s = ""; - if (this.scheme !== undefined) s += this.scheme + ":"; - if (this.isAbsolute()) { - s += '//'; - if (this.username || this.password) { - s += this.username || ''; - if (this.password) { - s += ':' + this.password; - } - s += '@'; - } - if (this.host) { - s += this.host; - } - } - if (this.port !== undefined) s += ":" + this.port; - if (this.path !== undefined) s += this.path; - if (this.query !== undefined) s += "?" + this.query; - if (this.fragment !== undefined) s += "#" + this.fragment; - return s; - }, - - // See: http://tools.ietf.org/html/rfc3986#section-5.2 - // and https://url.spec.whatwg.org/#constructors - resolve: function(relative) { - var base = this; // The base url we're resolving against - var r = new URL(relative); // The relative reference url to resolve - var t = new URL(); // The absolute target url we will return - - if (r.scheme !== undefined) { - t.scheme = r.scheme; - t.username = r.username; - t.password = r.password; - t.host = r.host; - t.port = r.port; - t.path = remove_dot_segments(r.path); - t.query = r.query; - } - else { - t.scheme = base.scheme; - if (r.host !== undefined) { - t.username = r.username; - t.password = r.password; - t.host = r.host; - t.port = r.port; - t.path = remove_dot_segments(r.path); - t.query = r.query; - } - else { - t.username = base.username; - t.password = base.password; - t.host = base.host; - t.port = base.port; - if (!r.path) { // undefined or empty - t.path = base.path; - if (r.query !== undefined) - t.query = r.query; - else - t.query = base.query; - } - else { - if (r.path.charAt(0) === "/") { - t.path = remove_dot_segments(r.path); - } - else { - t.path = merge(base.path, r.path); - t.path = remove_dot_segments(t.path); - } - t.query = r.query; - } - } - } - t.fragment = r.fragment; - - return t.toString(); - - - function merge(basepath, refpath) { - if (base.host !== undefined && !base.path) - return "/" + refpath; - - var lastslash = basepath.lastIndexOf("/"); - if (lastslash === -1) - return refpath; - else - return basepath.substring(0, lastslash+1) + refpath; - } - - function remove_dot_segments(path) { - if (!path) return path; // For "" or undefined - - var output = ""; - while(path.length > 0) { - if (path === "." || path === "..") { - path = ""; - break; - } - - var twochars = path.substring(0,2); - var threechars = path.substring(0,3); - var fourchars = path.substring(0,4); - if (threechars === "../") { - path = path.substring(3); - } - else if (twochars === "./") { - path = path.substring(2); - } - else if (threechars === "/./") { - path = "/" + path.substring(3); - } - else if (twochars === "/." && path.length === 2) { - path = "/"; - } - else if (fourchars === "/../" || - (threechars === "/.." && path.length === 3)) { - path = "/" + path.substring(4); - - output = output.replace(/\/?[^\/]*$/, ""); - } - else { - var segment = path.match(/(\/?([^\/]*))/)[0]; - output += segment; - path = path.substring(segment.length); - } - } - - return output; - } - }, -}; - - -/***/ }), - -/***/ 65531: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var URL = __webpack_require__(85184); - -module.exports = URLUtils; - -// Allow the `x == null` pattern. This is eslint's "null: 'ignore'" option, -// but jshint doesn't support this. -/* jshint eqeqeq: false */ - -// This is an abstract superclass for Location, HTMLAnchorElement and -// other types that have the standard complement of "URL decomposition -// IDL attributes". This is now standardized as URLUtils, see: -// https://url.spec.whatwg.org/#urlutils -// Subclasses must define a getter/setter on href. -// The getter and setter methods parse and rebuild the URL on each -// invocation; there is no attempt to cache the value and be more efficient -function URLUtils() {} -URLUtils.prototype = Object.create(Object.prototype, { - - _url: { get: function() { - // XXX: this should do the "Reinitialize url" steps, and "null" should - // be a valid return value. - return new URL(this.href); - } }, - - protocol: { - get: function() { - var url = this._url; - if (url && url.scheme) return url.scheme + ":"; - else return ":"; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - v = v.replace(/:+$/, ""); - v = v.replace(/[^-+\.a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.scheme = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - host: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased()) - return url.host + (url.port ? (":" + url.port) : ""); - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = v.replace(/[^-+\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.host = v; - delete url.port; - output = url.toString(); - } - } - this.href = output; - }, - }, - - hostname: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased()) - return url.host; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = v.replace(/^\/+/, ""); - v = v.replace(/[^-+\._~!$&'()*,;:=a-zA-Z0-9]/g, URL.percentEncode); - if (v.length > 0) { - url.host = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - port: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isAuthorityBased() && url.port!==undefined) - return url.port; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isAuthorityBased()) { - v = '' + v; - v = v.replace(/[^0-9].*$/, ""); - v = v.replace(/^0+/, ""); - if (v.length === 0) v = "0"; - if (parseInt(v, 10) <= 65535) { - url.port = v; - output = url.toString(); - } - } - this.href = output; - }, - }, - - pathname: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isHierarchical()) - return url.path; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isHierarchical()) { - if (v.charAt(0) !== "/") - v = "/" + v; - v = v.replace(/[^-+\._~!$&'()*,;:=@\/a-zA-Z0-9]/g, URL.percentEncode); - url.path = v; - output = url.toString(); - } - this.href = output; - }, - }, - - search: { - get: function() { - var url = this._url; - if (url.isAbsolute() && url.isHierarchical() && url.query!==undefined) - return "?" + url.query; - else - return ""; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute() && url.isHierarchical()) { - if (v.charAt(0) === "?") v = v.substring(1); - v = v.replace(/[^-+\._~!$&'()*,;:=@\/?a-zA-Z0-9]/g, URL.percentEncode); - url.query = v; - output = url.toString(); - } - this.href = output; - }, - }, - - hash: { - get: function() { - var url = this._url; - if (url == null || url.fragment == null || url.fragment === '') { - return ""; - } else { - return "#" + url.fragment; - } - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - - if (v.charAt(0) === "#") v = v.substring(1); - v = v.replace(/[^-+\._~!$&'()*,;:=@\/?a-zA-Z0-9]/g, URL.percentEncode); - url.fragment = v; - output = url.toString(); - - this.href = output; - }, - }, - - username: { - get: function() { - var url = this._url; - return url.username || ''; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - v = v.replace(/[\x00-\x1F\x7F-\uFFFF "#<>?`\/@\\:]/g, URL.percentEncode); - url.username = v; - output = url.toString(); - } - this.href = output; - }, - }, - - password: { - get: function() { - var url = this._url; - return url.password || ''; - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - if (url.isAbsolute()) { - if (v==='') { - url.password = null; - } else { - v = v.replace(/[\x00-\x1F\x7F-\uFFFF "#<>?`\/@\\]/g, URL.percentEncode); - url.password = v; - } - output = url.toString(); - } - this.href = output; - }, - }, - - origin: { get: function() { - var url = this._url; - if (url == null) { return ''; } - var originForPort = function(defaultPort) { - var origin = [url.scheme, url.host, +url.port || defaultPort]; - // XXX should be "unicode serialization" - return origin[0] + '://' + origin[1] + - (origin[2] === defaultPort ? '' : (':' + origin[2])); - }; - switch (url.scheme) { - case 'ftp': - return originForPort(21); - case 'gopher': - return originForPort(70); - case 'http': - case 'ws': - return originForPort(80); - case 'https': - case 'wss': - return originForPort(443); - default: - // this is what chrome does - return url.scheme + '://'; - } - } }, - - /* - searchParams: { - get: function() { - var url = this._url; - // XXX - }, - set: function(v) { - var output = this.href; - var url = new URL(output); - // XXX - this.href = output; - }, - }, - */ -}); - -URLUtils._inherit = function(proto) { - // copy getters/setters from URLUtils to o. - Object.getOwnPropertyNames(URLUtils.prototype).forEach(function(p) { - if (p==='constructor' || p==='href') { return; } - var desc = Object.getOwnPropertyDescriptor(URLUtils.prototype, p); - Object.defineProperty(proto, p, desc); - }); -}; - - -/***/ }), - -/***/ 21865: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -var DOMImplementation = __webpack_require__(80931); -var EventTarget = __webpack_require__(22356); -var Location = __webpack_require__(63738); -var utils = __webpack_require__(89076); - -module.exports = Window; - -function Window(document) { - this.document = document || new DOMImplementation(null).createHTMLDocument(""); - this.document._scripting_enabled = true; - this.document.defaultView = this; - this.location = new Location(this, this.document._address || 'about:blank'); -} - -Window.prototype = Object.create(EventTarget.prototype, { - console: { value: console }, - history: { value: { - back: utils.nyi, - forward: utils.nyi, - go: utils.nyi - }}, - navigator: { value: __webpack_require__(94993) }, - - // Self-referential properties - window: { get: function() { return this; }}, - self: { get: function() { return this; }}, - frames: { get: function() { return this; }}, - - // Self-referential properties for a top-level window - parent: { get: function() { return this; }}, - top: { get: function() { return this; }}, - - // We don't support any other windows for now - length: { value: 0 }, // no frames - frameElement: { value: null }, // not part of a frame - opener: { value: null }, // not opened by another window - - // The onload event handler. - // XXX: need to support a bunch of other event types, too, - // and have them interoperate with document.body. - - onload: { - get: function() { - return this._getEventHandler("load"); - }, - set: function(v) { - this._setEventHandler("load", v); - } - }, - - // XXX This is a completely broken implementation - getComputedStyle: { value: function getComputedStyle(elt) { - return elt.style; - }} - -}); - -utils.expose(__webpack_require__(23811), Window); -utils.expose(__webpack_require__(31575), Window); - - -/***/ }), - -/***/ 23811: -/***/ ((module) => { - -"use strict"; - - -// https://html.spec.whatwg.org/multipage/webappapis.html#windowtimers -var WindowTimers = { - setTimeout: setTimeout, - clearTimeout: clearTimeout, - setInterval: setInterval, - clearInterval: clearInterval -}; - -module.exports = WindowTimers; - - -/***/ }), - -/***/ 6548: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -exports.property = function(attr) { - if (Array.isArray(attr.type)) { - var valid = Object.create(null); - attr.type.forEach(function(val) { - valid[val.value || val] = val.alias || val; - }); - var missingValueDefault = attr.missing; - if (missingValueDefault===undefined) { missingValueDefault = null; } - var invalidValueDefault = attr.invalid; - if (invalidValueDefault===undefined) { invalidValueDefault = missingValueDefault; } - return { - get: function() { - var v = this._getattr(attr.name); - if (v === null) return missingValueDefault; - - v = valid[v.toLowerCase()]; - if (v !== undefined) return v; - if (invalidValueDefault !== null) return invalidValueDefault; - return v; - }, - set: function(v) { - this._setattr(attr.name, v); - } - }; - } - else if (attr.type === Boolean) { - return { - get: function() { - return this.hasAttribute(attr.name); - }, - set: function(v) { - if (v) { - this._setattr(attr.name, ''); - } - else { - this.removeAttribute(attr.name); - } - } - }; - } - else if (attr.type === Number || - attr.type === "long" || - attr.type === "unsigned long" || - attr.type === "limited unsigned long with fallback") { - return numberPropDesc(attr); - } - else if (!attr.type || attr.type === String) { - return { - get: function() { return this._getattr(attr.name) || ''; }, - set: function(v) { - if (attr.treatNullAsEmptyString && v === null) { v = ''; } - this._setattr(attr.name, v); - } - }; - } - else if (typeof attr.type === 'function') { - return attr.type(attr.name, attr); - } - throw new Error('Invalid attribute definition'); -}; - -// See http://www.whatwg.org/specs/web-apps/current-work/#reflect -// -// defval is the default value. If it is a function, then that function -// will be invoked as a method of the element to obtain the default. -// If no default is specified for a given attribute, then the default -// depends on the type of the attribute, but since this function handles -// 4 integer cases, you must specify the default value in each call -// -// min and max define a valid range for getting the attribute. -// -// setmin defines a minimum value when setting. If the value is less -// than that, then throw INDEX_SIZE_ERR. -// -// Conveniently, JavaScript's parseInt function appears to be -// compatible with HTML's 'rules for parsing integers' -function numberPropDesc(a) { - var def; - if(typeof a.default === 'function') { - def = a.default; - } - else if(typeof a.default === 'number') { - def = function() { return a.default; }; - } - else { - def = function() { utils.assert(false, typeof a.default); }; - } - var unsigned_long = (a.type === 'unsigned long'); - var signed_long = (a.type === 'long'); - var unsigned_fallback = (a.type === 'limited unsigned long with fallback'); - var min = a.min, max = a.max, setmin = a.setmin; - if (min === undefined) { - if (unsigned_long) min = 0; - if (signed_long) min = -0x80000000; - if (unsigned_fallback) min = 1; - } - if (max === undefined) { - if (unsigned_long || signed_long || unsigned_fallback) max = 0x7FFFFFFF; - } - - return { - get: function() { - var v = this._getattr(a.name); - var n = a.float ? parseFloat(v) : parseInt(v, 10); - if (v === null || !isFinite(n) || (min !== undefined && n < min) || (max !== undefined && n > max)) { - return def.call(this); - } - if (unsigned_long || signed_long || unsigned_fallback) { - if (!/^[ \t\n\f\r]*[-+]?[0-9]/.test(v)) { return def.call(this); } - n = n|0; // jshint ignore:line - } - return n; - }, - set: function(v) { - if (!a.float) { v = Math.floor(v); } - if (setmin !== undefined && v < setmin) { - utils.IndexSizeError(a.name + ' set to ' + v); - } - if (unsigned_long) { - v = (v < 0 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } else if (unsigned_fallback) { - v = (v < 1 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } else if (signed_long) { - v = (v < -0x80000000 || v > 0x7FFFFFFF) ? def.call(this) : - (v|0); // jshint ignore:line - } - this._setattr(a.name, String(v)); - } - }; -} - -// This is a utility function for setting up change handler functions -// for attributes like 'id' that require special handling when they change. -exports.registerChangeHandler = function(c, name, handler) { - var p = c.prototype; - - // If p does not already have its own _attributeChangeHandlers - // then create one for it, inheriting from the inherited - // _attributeChangeHandlers. At the top (for the Element class) the - // _attributeChangeHandlers object will be created with a null prototype. - if (!Object.prototype.hasOwnProperty.call(p, '_attributeChangeHandlers')) { - p._attributeChangeHandlers = - Object.create(p._attributeChangeHandlers || null); - } - - p._attributeChangeHandlers[name] = handler; -}; - - -/***/ }), - -/***/ 66139: -/***/ ((__unused_webpack_module, exports) => { - -/* - * This file defines Domino behaviour that can be externally configured. - * To change these settings, set the relevant global property *before* - * you call `require("domino")`. - */ - -exports.h = !globalThis.__domino_frozen__; - - -/***/ }), - -/***/ 5244: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - - -var attributes = __webpack_require__(6548); -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -module.exports = function(spec, defaultConstructor, tagList, tagNameToImpl) { - var c = spec.ctor; - if (c) { - var props = spec.props || {}; - - if (spec.attributes) { - for (var n in spec.attributes) { - var attr = spec.attributes[n]; - if (typeof attr !== 'object' || Array.isArray(attr)) attr = {type: attr}; - if (!attr.name) attr.name = n.toLowerCase(); - props[n] = attributes.property(attr); - } - } - - props.constructor = { value : c, writable: isApiWritable }; - c.prototype = Object.create((spec.superclass || defaultConstructor).prototype, props); - if (spec.events) { - addEventHandlers(c, spec.events); - } - tagList[spec.name] = c; - } - else { - c = defaultConstructor; - } - - (spec.tags || spec.tag && [spec.tag] || []).forEach(function(tag) { - tagNameToImpl[tag] = c; - }); - - return c; -}; - -function EventHandlerBuilder(body, document, form, element) { - this.body = body; - this.document = document; - this.form = form; - this.element = element; -} - -EventHandlerBuilder.prototype.build = function () { - return () => {}; -}; - -function EventHandlerChangeHandler(elt, name, oldval, newval) { - var doc = elt.ownerDocument || Object.create(null); - var form = elt.form || Object.create(null); - elt[name] = new EventHandlerBuilder(newval, doc, form, elt).build(); -} - -function addEventHandlers(c, eventHandlerTypes) { - var p = c.prototype; - eventHandlerTypes.forEach(function(type) { - // Define the event handler registration IDL attribute for this type - Object.defineProperty(p, "on" + type, { - get: function() { - return this._getEventHandler(type); - }, - set: function(v) { - this._setEventHandler(type, v); - }, - }); - - // Define special behavior for the content attribute as well - attributes.registerChangeHandler(c, "on" + type, EventHandlerChangeHandler); - }); -} - - -/***/ }), - -/***/ 18196: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -"use strict"; - -module.exports = { - Event: __webpack_require__(13441), - UIEvent: __webpack_require__(64259), - MouseEvent: __webpack_require__(21440), - CustomEvent: __webpack_require__(22112) -}; - - -/***/ }), - -/***/ 96324: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var Node = __webpack_require__(97537); -var Element = __webpack_require__(77301); -var CSSStyleDeclaration = __webpack_require__(53141); -var utils = __webpack_require__(89076); -var URLUtils = __webpack_require__(65531); -var defineElement = __webpack_require__(5244); - -var htmlElements = exports.elements = {}; -var htmlNameToImpl = Object.create(null); - -exports.createElement = function(doc, localName, prefix) { - var impl = htmlNameToImpl[localName] || HTMLUnknownElement; - return new impl(doc, localName, prefix); -}; - -function define(spec) { - return defineElement(spec, HTMLElement, htmlElements, htmlNameToImpl); -} - -function URL(attr) { - return { - get: function() { - var v = this._getattr(attr); - if (v === null) { return ''; } - var url = this.doc._resolve(v); - return (url === null) ? v : url; - }, - set: function(value) { - this._setattr(attr, value); - } - }; -} - -function CORS(attr) { - return { - get: function() { - var v = this._getattr(attr); - if (v === null) { return null; } - if (v.toLowerCase() === 'use-credentials') { return 'use-credentials'; } - return 'anonymous'; - }, - set: function(value) { - if (value===null || value===undefined) { - this.removeAttribute(attr); - } else { - this._setattr(attr, value); - } - } - }; -} - -const REFERRER = { - type: ["", "no-referrer", "no-referrer-when-downgrade", "same-origin", "origin", "strict-origin", "origin-when-cross-origin", "strict-origin-when-cross-origin", "unsafe-url"], - missing: '', -}; - - -// XXX: the default value for tabIndex should be 0 if the element is -// focusable and -1 if it is not. But the full definition of focusable -// is actually hard to compute, so for now, I'll follow Firefox and -// just base the default value on the type of the element. -var focusableElements = { - "A":true, "LINK":true, "BUTTON":true, "INPUT":true, - "SELECT":true, "TEXTAREA":true, "COMMAND":true -}; - -var HTMLFormElement = function(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - this._form = null; // Prevent later deoptimization -}; - -var HTMLElement = exports.HTMLElement = define({ - superclass: Element, - name: 'HTMLElement', - ctor: function HTMLElement(doc, localName, prefix) { - Element.call(this, doc, localName, utils.NAMESPACE.HTML, prefix); - }, - props: { - dangerouslySetInnerHTML: { - set: function (v) { - this._innerHTML = v; - }, - }, - innerHTML: { - get: function() { - return this.serialize(); - }, - set: function(v) { - var parser = this.ownerDocument.implementation.mozHTMLParser( - this.ownerDocument._address, - this); - parser.parse(v===null ? '' : String(v), true); - - // Remove any existing children of this node - var target = (this instanceof htmlNameToImpl.template) ? - this.content : this; - while(target.hasChildNodes()) - target.removeChild(target.firstChild); - - // Now copy newly parsed children to this node - target.appendChild(parser._asDocumentFragment()); - } - }, - style: { get: function() { - if (!this._style) - this._style = new CSSStyleDeclaration(this); - return this._style; - }, set: function(v) { - if (v===null||v===undefined) { v = ''; } - this._setattr('style', String(v)); - }}, - - // These can't really be implemented server-side in a reasonable way. - blur: { value: function() {}}, - focus: { value: function() {}}, - forceSpellCheck: { value: function() {}}, - - click: { value: function() { - if (this._click_in_progress) return; - this._click_in_progress = true; - try { - if (this._pre_click_activation_steps) - this._pre_click_activation_steps(); - - var event = this.ownerDocument.createEvent("MouseEvent"); - event.initMouseEvent("click", true, true, - this.ownerDocument.defaultView, 1, - 0, 0, 0, 0, - // These 4 should be initialized with - // the actually current keyboard state - // somehow... - false, false, false, false, - 0, null - ); - - // Dispatch this as an untrusted event since it is synthetic - var success = this.dispatchEvent(event); - - if (success) { - if (this._post_click_activation_steps) - this._post_click_activation_steps(event); - } - else { - if (this._cancelled_activation_steps) - this._cancelled_activation_steps(); - } - } - finally { - this._click_in_progress = false; - } - }}, - submit: { value: utils.nyi }, - }, - attributes: { - title: String, - lang: String, - dir: {type: ["ltr", "rtl", "auto"], missing: ''}, - draggable: {type: ["true", "false"], treatNullAsEmptyString: true }, - spellcheck: {type: ["true", "false"], missing: ''}, - enterKeyHint: {type: ["enter", "done", "go", "next", "previous", "search", "send"], missing: ''}, - autoCapitalize: {type: ["off", "on", "none", "sentences", "words", "characters"], missing: '' }, - autoFocus: Boolean, - accessKey: String, - nonce: String, - hidden: Boolean, - translate: {type: ["no", "yes"], missing: '' }, - tabIndex: {type: "long", default: function() { - if (this.tagName in focusableElements || - this.contentEditable) - return 0; - else - return -1; - }} - }, - events: [ - "abort", "canplay", "canplaythrough", "change", "click", "contextmenu", - "cuechange", "dblclick", "drag", "dragend", "dragenter", "dragleave", - "dragover", "dragstart", "drop", "durationchange", "emptied", "ended", - "input", "invalid", "keydown", "keypress", "keyup", "loadeddata", - "loadedmetadata", "loadstart", "mousedown", "mousemove", "mouseout", - "mouseover", "mouseup", "mousewheel", "pause", "play", "playing", - "progress", "ratechange", "readystatechange", "reset", "seeked", - "seeking", "select", "show", "stalled", "submit", "suspend", - "timeupdate", "volumechange", "waiting", - - // These last 5 event types will be overriden by HTMLBodyElement - "blur", "error", "focus", "load", "scroll" - ] -}); - - -// XXX: reflect contextmenu as contextMenu, with element type - - -// style: the spec doesn't call this a reflected attribute. -// may want to handle it manually. - -// contentEditable: enumerated, not clear if it is actually -// reflected or requires custom getter/setter. Not listed as -// "limited to known values". Raises syntax_err on bad setting, -// so I think this is custom. - -// contextmenu: content is element id, idl type is an element -// draggable: boolean, but not a reflected attribute -// dropzone: reflected SettableTokenList, experimental, so don't -// implement it right away. - -// data-* attributes: need special handling in setAttribute? -// Or maybe that isn't necessary. Can I just scan the attribute list -// when building the dataset? Liveness and caching issues? - -// microdata attributes: many are simple reflected attributes, but -// I'm not going to implement this now. - - -var HTMLUnknownElement = define({ - name: 'HTMLUnknownElement', - ctor: function HTMLUnknownElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - - -var formAssociatedProps = { - // See http://www.w3.org/TR/html5/association-of-controls-and-forms.html#form-owner - form: { get: function() { - return this._form; - }} -}; - -define({ - tag: 'a', - name: 'HTMLAnchorElement', - ctor: function HTMLAnchorElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - _post_click_activation_steps: { value: function(e) { - if (this.href) { - // Follow the link - // XXX: this is just a quick hack - // XXX: the HTML spec probably requires more than this - this.ownerDocument.defaultView.location = this.href; - } - }}, - }, - attributes: { - href: URL, - ping: String, - download: String, - target: String, - rel: String, - media: String, - hreflang: String, - type: String, - referrerPolicy: REFERRER, - // Obsolete - coords: String, - charset: String, - name: String, - rev: String, - shape: String, - } -}); -// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils -URLUtils._inherit(htmlNameToImpl.a.prototype); - -define({ - tag: 'area', - name: 'HTMLAreaElement', - ctor: function HTMLAreaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - alt: String, - target: String, - download: String, - rel: String, - media: String, - href: URL, - hreflang: String, - type: String, - shape: String, - coords: String, - ping: String, - // XXX: also reflect relList - referrerPolicy: REFERRER, - // Obsolete - noHref: Boolean, - } -}); -// Latest WhatWG spec says these methods come via HTMLHyperlinkElementUtils -URLUtils._inherit(htmlNameToImpl.area.prototype); - -define({ - tag: 'br', - name: 'HTMLBRElement', - ctor: function HTMLBRElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - clear: String - }, -}); - -define({ - tag: 'base', - name: 'HTMLBaseElement', - ctor: function HTMLBaseElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - "target": String - } -}); - - -define({ - tag: 'body', - name: 'HTMLBodyElement', - ctor: function HTMLBodyElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - // Certain event handler attributes on a tag actually set - // handlers for the window rather than just that element. Define - // getters and setters for those here. Note that some of these override - // properties on HTMLElement.prototype. - // XXX: If I add support for , these have to go there, too - // XXX - // When the Window object is implemented, these attribute will have - // to work with the same-named attributes on the Window. - events: [ - "afterprint", "beforeprint", "beforeunload", "blur", "error", - "focus","hashchange", "load", "message", "offline", "online", - "pagehide", "pageshow","popstate","resize","scroll","storage","unload", - ], - attributes: { - // Obsolete - text: { type: String, treatNullAsEmptyString: true }, - link: { type: String, treatNullAsEmptyString: true }, - vLink: { type: String, treatNullAsEmptyString: true }, - aLink: { type: String, treatNullAsEmptyString: true }, - bgColor: { type: String, treatNullAsEmptyString: true }, - background: String, - } -}); - -define({ - tag: 'button', - name: 'HTMLButtonElement', - ctor: function HTMLButtonElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - name: String, - value: String, - disabled: Boolean, - autofocus: Boolean, - type: { type:["submit", "reset", "button", "menu"], missing: 'submit' }, - formTarget: String, - formAction: URL, - formNoValidate: Boolean, - formMethod: { type: ["get", "post", "dialog"], invalid: 'get', missing: '' }, - formEnctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: '' }, - } -}); - -define({ - tag: 'dl', - name: 'HTMLDListElement', - ctor: function HTMLDListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'data', - name: 'HTMLDataElement', - ctor: function HTMLDataElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - value: String, - } -}); - -define({ - tag: 'datalist', - name: 'HTMLDataListElement', - ctor: function HTMLDataListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'details', - name: 'HTMLDetailsElement', - ctor: function HTMLDetailsElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - "open": Boolean - } -}); - -define({ - tag: 'div', - name: 'HTMLDivElement', - ctor: function HTMLDivElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - } -}); - -define({ - tag: 'embed', - name: 'HTMLEmbedElement', - ctor: function HTMLEmbedElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - type: String, - width: String, - height: String, - // Obsolete - align: String, - name: String, - } -}); - -define({ - tag: 'fieldset', - name: 'HTMLFieldSetElement', - ctor: function HTMLFieldSetElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - disabled: Boolean, - name: String - } -}); - -define({ - tag: 'form', - name: 'HTMLFormElement', - ctor: function HTMLFormElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - action: String, - autocomplete: {type:['on', 'off'], missing: 'on'}, - name: String, - acceptCharset: {name: "accept-charset"}, - target: String, - noValidate: Boolean, - method: { type: ["get", "post", "dialog"], invalid: 'get', missing: 'get' }, - // Both enctype and encoding reflect the enctype content attribute - enctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: "application/x-www-form-urlencoded" }, - encoding: {name: 'enctype', type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: "application/x-www-form-urlencoded" }, - } -}); - -define({ - tag: 'hr', - name: 'HTMLHRElement', - ctor: function HTMLHRElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - color: String, - noShade: Boolean, - size: String, - width: String, - }, -}); - -define({ - tag: 'head', - name: 'HTMLHeadElement', - ctor: function HTMLHeadElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tags: ['h1','h2','h3','h4','h5','h6'], - name: 'HTMLHeadingElement', - ctor: function HTMLHeadingElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - }, -}); - -define({ - tag: 'html', - name: 'HTMLHtmlElement', - ctor: function HTMLHtmlElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - xmlns: URL, - // Obsolete - version: String - } -}); - -define({ - tag: 'iframe', - name: 'HTMLIFrameElement', - ctor: function HTMLIFrameElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - srcdoc: String, - name: String, - width: String, - height: String, - // XXX: sandbox is a reflected settable token list - seamless: Boolean, - allow: Boolean, - allowFullscreen: Boolean, - allowUserMedia: Boolean, - allowPaymentRequest: Boolean, - referrerPolicy: REFERRER, - loading: { type:['eager','lazy'], treatNullAsEmptyString: true }, - // Obsolete - align: String, - scrolling: String, - frameBorder: String, - longDesc: URL, - marginHeight: { type: String, treatNullAsEmptyString: true }, - marginWidth: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'img', - name: 'HTMLImageElement', - ctor: function HTMLImageElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - alt: String, - src: URL, - srcset: String, - crossOrigin: CORS, - useMap: String, - isMap: Boolean, - sizes: String, - height: { type: "unsigned long", default: 0 }, - width: { type: "unsigned long", default: 0 }, - referrerPolicy: REFERRER, - loading: { type:['eager','lazy'], missing: '' }, - // Obsolete: - name: String, - lowsrc: URL, - align: String, - hspace: { type: "unsigned long", default: 0 }, - vspace: { type: "unsigned long", default: 0 }, - longDesc: URL, - border: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'input', - name: 'HTMLInputElement', - ctor: function HTMLInputElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - _post_click_activation_steps: { value: function(e) { - if (this.type === 'checkbox') { - this.checked = !this.checked; - } - else if (this.type === 'radio') { - var group = this.form.getElementsByName(this.name); - for (var i=group.length-1; i >= 0; i--) { - var el = group[i]; - el.checked = (el === this); - } - } - }}, - }, - attributes: { - name: String, - disabled: Boolean, - autofocus: Boolean, - accept: String, - alt: String, - max: String, - min: String, - pattern: String, - placeholder: String, - step: String, - dirName: String, - defaultValue: {name: 'value'}, - multiple: Boolean, - required: Boolean, - readOnly: Boolean, - checked: Boolean, - value: String, - src: URL, - defaultChecked: {name: 'checked', type: Boolean}, - size: {type: 'unsigned long', default: 20, min: 1, setmin: 1}, - width: {type: 'unsigned long', min: 0, setmin: 0, default: 0}, - height: {type: 'unsigned long', min: 0, setmin: 0, default: 0}, - minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - autocomplete: String, // It's complicated - type: { type: - ["text", "hidden", "search", "tel", "url", "email", "password", - "datetime", "date", "month", "week", "time", "datetime-local", - "number", "range", "color", "checkbox", "radio", "file", "submit", - "image", "reset", "button"], - missing: 'text' }, - formTarget: String, - formNoValidate: Boolean, - formMethod: { type: ["get", "post"], invalid: 'get', missing: '' }, - formEnctype: { type: ["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"], invalid: "application/x-www-form-urlencoded", missing: '' }, - inputMode: { type: [ "verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "kana-name", "katakana", "numeric", "tel", "email", "url" ], missing: '' }, - // Obsolete - align: String, - useMap: String, - } -}); - -define({ - tag: 'keygen', - name: 'HTMLKeygenElement', - ctor: function HTMLKeygenElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - name: String, - disabled: Boolean, - autofocus: Boolean, - challenge: String, - keytype: { type:["rsa"], missing: '' }, - } -}); - -define({ - tag: 'li', - name: 'HTMLLIElement', - ctor: function HTMLLIElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - value: {type: "long", default: 0}, - // Obsolete - type: String, - } -}); - -define({ - tag: 'label', - name: 'HTMLLabelElement', - ctor: function HTMLLabelElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - htmlFor: {name: 'for', type: String} - } -}); - -define({ - tag: 'legend', - name: 'HTMLLegendElement', - ctor: function HTMLLegendElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - }, -}); - -define({ - tag: 'link', - name: 'HTMLLinkElement', - ctor: function HTMLLinkElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // XXX Reflect DOMSettableTokenList sizes also DOMTokenList relList - href: URL, - rel: String, - media: String, - hreflang: String, - type: String, - crossOrigin: CORS, - nonce: String, - integrity: String, - referrerPolicy: REFERRER, - imageSizes: String, - imageSrcset: String, - // Obsolete - charset: String, - rev: String, - target: String, - } -}); - -define({ - tag: 'map', - name: 'HTMLMapElement', - ctor: function HTMLMapElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String - } -}); - -define({ - tag: 'menu', - name: 'HTMLMenuElement', - ctor: function HTMLMenuElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // XXX: not quite right, default should be popup if parent element is - // popup. - type: { type: [ 'context', 'popup', 'toolbar' ], missing: 'toolbar' }, - label: String, - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'meta', - name: 'HTMLMetaElement', - ctor: function HTMLMetaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String, - content: String, - httpEquiv: {name: 'http-equiv', type: String}, - // Obsolete - scheme: String, - } -}); - -define({ - tag: 'meter', - name: 'HTMLMeterElement', - ctor: function HTMLMeterElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps -}); - -define({ - tags: ['ins', 'del'], - name: 'HTMLModElement', - ctor: function HTMLModElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - cite: URL, - dateTime: String - } -}); - -define({ - tag: 'ol', - name: 'HTMLOListElement', - ctor: function HTMLOListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - // Utility function (see the start attribute default value). Returns - // the number of
  • children of this element - _numitems: { get: function() { - var items = 0; - this.childNodes.forEach(function(n) { - if (n.nodeType === Node.ELEMENT_NODE && n.tagName === "LI") - items++; - }); - return items; - }} - }, - attributes: { - type: String, - reversed: Boolean, - start: { - type: "long", - default: function() { - // The default value of the start attribute is 1 unless the list is - // reversed. Then it is the # of li children - if (this.reversed) - return this._numitems; - else - return 1; - } - }, - // Obsolete - compact: Boolean, - } -}); - -define({ - tag: 'object', - name: 'HTMLObjectElement', - ctor: function HTMLObjectElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - data: URL, - type: String, - name: String, - useMap: String, - typeMustMatch: Boolean, - width: String, - height: String, - // Obsolete - align: String, - archive: String, - code: String, - declare: Boolean, - hspace: { type: "unsigned long", default: 0 }, - standby: String, - vspace: { type: "unsigned long", default: 0 }, - codeBase: URL, - codeType: String, - border: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'optgroup', - name: 'HTMLOptGroupElement', - ctor: function HTMLOptGroupElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - disabled: Boolean, - label: String - } -}); - -define({ - tag: 'option', - name: 'HTMLOptionElement', - ctor: function HTMLOptionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - form: { get: function() { - var p = this.parentNode; - while (p && p.nodeType === Node.ELEMENT_NODE) { - if (p.localName === 'select') return p.form; - p = p.parentNode; - } - }}, - value: { - get: function() { return this._getattr('value') || this.text; }, - set: function(v) { this._setattr('value', v); }, - }, - text: { - get: function() { - // Strip and collapse whitespace - return this.textContent.replace(/[ \t\n\f\r]+/g, ' ').trim(); - }, - set: function(v) { this.textContent = v; }, - }, - // missing: index - }, - attributes: { - disabled: Boolean, - defaultSelected: {name: 'selected', type: Boolean}, - label: String, - } -}); - -define({ - tag: 'output', - name: 'HTMLOutputElement', - ctor: function HTMLOutputElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - // XXX Reflect for/htmlFor as a settable token list - name: String - } -}); - -define({ - tag: 'p', - name: 'HTMLParagraphElement', - ctor: function HTMLParagraphElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String - } -}); - -define({ - tag: 'param', - name: 'HTMLParamElement', - ctor: function HTMLParamElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - name: String, - value: String, - // Obsolete - type: String, - valueType: String, - } -}); - -define({ - tags: ['pre',/*legacy elements:*/'listing','xmp'], - name: 'HTMLPreElement', - ctor: function HTMLPreElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - width: { type: "long", default: 0 }, - } -}); - -define({ - tag: 'progress', - name: 'HTMLProgressElement', - ctor: function HTMLProgressElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: formAssociatedProps, - attributes: { - max: {type: Number, float: true, default: 1.0, min: 0} - } -}); - -define({ - tags: ['q', 'blockquote'], - name: 'HTMLQuoteElement', - ctor: function HTMLQuoteElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - cite: URL - } -}); - -define({ - tag: 'script', - name: 'HTMLScriptElement', - ctor: function HTMLScriptElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - text: { - get: function() { - var s = ""; - for(var i = 0, n = this.childNodes.length; i < n; i++) { - var child = this.childNodes[i]; - if (child.nodeType === Node.TEXT_NODE) - s += child._data; - } - return s; - }, - set: function(value) { - this.removeChildren(); - if (value !== null && value !== "") { - this.appendChild(this.ownerDocument.createTextNode(value)); - } - } - } - }, - attributes: { - src: URL, - type: String, - charset: String, - referrerPolicy: REFERRER, - defer: Boolean, - async: Boolean, - nomodule: Boolean, - crossOrigin: CORS, - nonce: String, - integrity: String, - } -}); - -define({ - tag: 'select', - name: 'HTMLSelectElement', - ctor: function HTMLSelectElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - options: { get: function() { - return this.getElementsByTagName('option'); - }} - }, - attributes: { - autocomplete: String, // It's complicated - name: String, - disabled: Boolean, - autofocus: Boolean, - multiple: Boolean, - required: Boolean, - size: {type: "unsigned long", default: 0} - } -}); - -define({ - tag: 'span', - name: 'HTMLSpanElement', - ctor: function HTMLSpanElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'style', - name: 'HTMLStyleElement', - ctor: function HTMLStyleElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - media: String, - type: String, - scoped: Boolean - } -}); - -define({ - tag: 'caption', - name: 'HTMLTableCaptionElement', - ctor: function HTMLTableCaptionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - // Obsolete - align: String, - } -}); - - -define({ - name: 'HTMLTableCellElement', - ctor: function HTMLTableCellElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - colSpan: {type: "unsigned long", default: 1}, - rowSpan: {type: "unsigned long", default: 1}, - //XXX Also reflect settable token list headers - scope: { type: ['row','col','rowgroup','colgroup'], missing: '' }, - abbr: String, - // Obsolete - align: String, - axis: String, - height: String, - width: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - noWrap: Boolean, - vAlign: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tags: ['col', 'colgroup'], - name: 'HTMLTableColElement', - ctor: function HTMLTableColElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - span: {type: 'limited unsigned long with fallback', default: 1, min: 1}, - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - width: String, - } -}); - -define({ - tag: 'table', - name: 'HTMLTableElement', - ctor: function HTMLTableElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - rows: { get: function() { - return this.getElementsByTagName('tr'); - }} - }, - attributes: { - // Obsolete - align: String, - border: String, - frame: String, - rules: String, - summary: String, - width: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - cellPadding: { type: String, treatNullAsEmptyString: true }, - cellSpacing: { type: String, treatNullAsEmptyString: true }, - } -}); - -define({ - tag: 'template', - name: 'HTMLTemplateElement', - ctor: function HTMLTemplateElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - this._contentFragment = doc._templateDoc.createDocumentFragment(); - }, - props: { - content: { get: function() { return this._contentFragment; } }, - serialize: { value: function() { return this.content.serialize(); } } - } -}); - -define({ - tag: 'tr', - name: 'HTMLTableRowElement', - ctor: function HTMLTableRowElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - cells: { get: function() { - return this.querySelectorAll('td,th'); - }} - }, - attributes: { - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - bgColor: { type: String, treatNullAsEmptyString: true }, - }, -}); - -define({ - tags: ['thead', 'tfoot', 'tbody'], - name: 'HTMLTableSectionElement', - ctor: function HTMLTableSectionElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - rows: { get: function() { - return this.getElementsByTagName('tr'); - }} - }, - attributes: { - // Obsolete - align: String, - ch: { name: 'char', type: String }, - chOff: { name: 'charoff', type: String }, - vAlign: String, - } -}); - -define({ - tag: 'textarea', - name: 'HTMLTextAreaElement', - ctor: function HTMLTextAreaElement(doc, localName, prefix) { - HTMLFormElement.call(this, doc, localName, prefix); - }, - props: { - form: formAssociatedProps.form, - type: { get: function() { return 'textarea'; } }, - defaultValue: { - get: function() { return this.textContent; }, - set: function(v) { this.textContent = v; }, - }, - value: { - get: function() { return this.defaultValue; /* never dirty */ }, - set: function(v) { - // This isn't completely correct: according to the spec, this - // should "dirty" the API value, and result in - // `this.value !== this.defaultValue`. But for most of what - // folks want to do, this implementation should be fine: - this.defaultValue = v; - }, - }, - textLength: { get: function() { return this.value.length; } }, - }, - attributes: { - autocomplete: String, // It's complicated - name: String, - disabled: Boolean, - autofocus: Boolean, - placeholder: String, - wrap: String, - dirName: String, - required: Boolean, - readOnly: Boolean, - rows: {type: 'limited unsigned long with fallback', default: 2 }, - cols: {type: 'limited unsigned long with fallback', default: 20 }, - maxLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - minLength: {type: 'unsigned long', min: 0, setmin: 0, default: -1}, - inputMode: { type: [ "verbatim", "latin", "latin-name", "latin-prose", "full-width-latin", "kana", "kana-name", "katakana", "numeric", "tel", "email", "url" ], missing: '' }, - } -}); - -define({ - tag: 'time', - name: 'HTMLTimeElement', - ctor: function HTMLTimeElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - dateTime: String, - pubDate: Boolean - } -}); - -define({ - tag: 'title', - name: 'HTMLTitleElement', - ctor: function HTMLTitleElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - text: { get: function() { - return this.textContent; - }} - } -}); - -define({ - tag: 'ul', - name: 'HTMLUListElement', - ctor: function HTMLUListElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - type: String, - // Obsolete - compact: Boolean, - } -}); - -define({ - name: 'HTMLMediaElement', - ctor: function HTMLMediaElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - crossOrigin: CORS, - preload: { type:["metadata", "none", "auto", {value: "", alias: "auto"}], missing: 'auto' }, - loop: Boolean, - autoplay: Boolean, - mediaGroup: String, - controls: Boolean, - defaultMuted: {name: "muted", type: Boolean} - } -}); - -define({ - name: 'HTMLAudioElement', - tag: 'audio', - superclass: htmlElements.HTMLMediaElement, - ctor: function HTMLAudioElement(doc, localName, prefix) { - htmlElements.HTMLMediaElement.call(this, doc, localName, prefix); - } -}); - -define({ - name: 'HTMLVideoElement', - tag: 'video', - superclass: htmlElements.HTMLMediaElement, - ctor: function HTMLVideoElement(doc, localName, prefix) { - htmlElements.HTMLMediaElement.call(this, doc, localName, prefix); - }, - attributes: { - poster: URL, - width: {type: "unsigned long", min: 0, default: 0 }, - height: {type: "unsigned long", min: 0, default: 0 } - } -}); - -define({ - tag: 'td', - name: 'HTMLTableDataCellElement', - superclass: htmlElements.HTMLTableCellElement, - ctor: function HTMLTableDataCellElement(doc, localName, prefix) { - htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'th', - name: 'HTMLTableHeaderCellElement', - superclass: htmlElements.HTMLTableCellElement, - ctor: function HTMLTableHeaderCellElement(doc, localName, prefix) { - htmlElements.HTMLTableCellElement.call(this, doc, localName, prefix); - }, -}); - -define({ - tag: 'frameset', - name: 'HTMLFrameSetElement', - ctor: function HTMLFrameSetElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'frame', - name: 'HTMLFrameElement', - ctor: function HTMLFrameElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - } -}); - -define({ - tag: 'canvas', - name: 'HTMLCanvasElement', - ctor: function HTMLCanvasElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - getContext: { value: utils.nyi }, - probablySupportsContext: { value: utils.nyi }, - setContext: { value: utils.nyi }, - transferControlToProxy: { value: utils.nyi }, - toDataURL: { value: utils.nyi }, - toBlob: { value: utils.nyi } - }, - attributes: { - width: { type: "unsigned long", default: 300}, - height: { type: "unsigned long", default: 150} - } -}); - -define({ - tag: 'dialog', - name: 'HTMLDialogElement', - ctor: function HTMLDialogElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - show: { value: utils.nyi }, - showModal: { value: utils.nyi }, - close: { value: utils.nyi } - }, - attributes: { - open: Boolean, - returnValue: String - } -}); - -define({ - tag: 'menuitem', - name: 'HTMLMenuItemElement', - ctor: function HTMLMenuItemElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - props: { - // The menuitem's label - _label: { - get: function() { - var val = this._getattr('label'); - if (val !== null && val !== '') { return val; } - val = this.textContent; - // Strip and collapse whitespace - return val.replace(/[ \t\n\f\r]+/g, ' ').trim(); - } - }, - // The menuitem label IDL attribute - label: { - get: function() { - var val = this._getattr('label'); - if (val !== null) { return val; } - return this._label; - }, - set: function(v) { - this._setattr('label', v); - }, - } - }, - attributes: { - type: { type: ["command","checkbox","radio"], missing: 'command' }, - icon: URL, - disabled: Boolean, - checked: Boolean, - radiogroup: String, - default: Boolean - } -}); - -define({ - tag: 'source', - name: 'HTMLSourceElement', - ctor: function HTMLSourceElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - srcset: String, - sizes: String, - media: String, - src: URL, - type: String, - width: String, - height: String, - } -}); - -define({ - tag: 'track', - name: 'HTMLTrackElement', - ctor: function HTMLTrackElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - src: URL, - srclang: String, - label: String, - default: Boolean, - kind: { type: ["subtitles", "captions", "descriptions", "chapters", "metadata"], missing: 'subtitles', invalid: 'metadata' }, - }, - props: { - NONE: { get: function() { return 0; } }, - LOADING: { get: function() { return 1; } }, - LOADED: { get: function() { return 2; } }, - ERROR: { get: function() { return 3; } }, - readyState: { get: utils.nyi }, - track: { get: utils.nyi } - } -}); - -define({ - // obsolete - tag: 'font', - name: 'HTMLFontElement', - ctor: function HTMLFontElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - color: { type: String, treatNullAsEmptyString: true }, - face: { type: String }, - size: { type: String }, - }, -}); - -define({ - // obsolete - tag: 'dir', - name: 'HTMLDirectoryElement', - ctor: function HTMLDirectoryElement(doc, localName, prefix) { - HTMLElement.call(this, doc, localName, prefix); - }, - attributes: { - compact: Boolean, - }, -}); - -define({ - tags: [ - "abbr", "address", "article", "aside", "b", "bdi", "bdo", "cite", "content", "code", - "dd", "dfn", "dt", "em", "figcaption", "figure", "footer", "header", "hgroup", "i", "kbd", - "main", "mark", "nav", "noscript", "rb", "rp", "rt", "rtc", - "ruby", "s", "samp", "section", "small", "strong", "sub", "summary", "sup", "u", "var", "wbr", - // Legacy elements - "acronym", "basefont", "big", "center", "nobr", "noembed", "noframes", - "plaintext", "strike", "tt" - ] -}); - - -/***/ }), - -/***/ 31575: -/***/ ((module, exports, __webpack_require__) => { - -"use strict"; - -var utils = __webpack_require__(89076); - -exports = module.exports = { - CSSStyleDeclaration: __webpack_require__(53141), - CharacterData: __webpack_require__(90086), - Comment: __webpack_require__(17548), - DOMException: __webpack_require__(46364), - DOMImplementation: __webpack_require__(80931), - DOMTokenList: __webpack_require__(82840), - Document: __webpack_require__(35452), - DocumentFragment: __webpack_require__(17948), - DocumentType: __webpack_require__(73092), - Element: __webpack_require__(77301), - HTMLParser: __webpack_require__(91895), - NamedNodeMap: __webpack_require__(49492), - Node: __webpack_require__(97537), - NodeList: __webpack_require__(64965), - NodeFilter: __webpack_require__(383), - ProcessingInstruction: __webpack_require__(81248), - Text: __webpack_require__(58210), - Window: __webpack_require__(21865) -}; - -utils.merge(exports, __webpack_require__(18196)); -utils.merge(exports, (__webpack_require__(96324).elements)); -utils.merge(exports, (__webpack_require__(967).elements)); - - -/***/ }), - -/***/ 31993: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var DOMImplementation = __webpack_require__(80931); -var HTMLParser = __webpack_require__(91895); -var Window = __webpack_require__(21865); -var impl = __webpack_require__(31575); - -exports.createDOMImplementation = function() { - return new DOMImplementation(null); -}; - -exports.createDocument = function(html, force) { - // Previous API couldn't let you pass '' as a document, and that - // yields a slightly different document than createHTMLDocument('') - // does. The new `force` parameter lets you pass '' if you want to. - if (html || force) { - var parser = new HTMLParser(); - parser.parse(html || '', true); - return parser.document(); - } - return new DOMImplementation(null).createHTMLDocument(""); -}; - -exports.createIncrementalHTMLParser = function() { - var parser = new HTMLParser(); - /** API for incremental parser. */ - return { - /** Provide an additional chunk of text to be parsed. */ - write: function(s) { - if (s.length > 0) { - parser.parse(s, false, function() { return true; }); - } - }, - /** - * Signal that we are done providing input text, optionally - * providing one last chunk as a parameter. - */ - end: function(s) { - parser.parse(s || '', true, function() { return true; }); - }, - /** - * Performs a chunk of parsing work, returning at the end of - * the next token as soon as shouldPauseFunc() returns true. - * Returns true iff there is more work to do. - * - * For example: - * ``` - * var incrParser = domino.createIncrementalHTMLParser(); - * incrParser.end('...long html document...'); - * while (true) { - * // Pause every 10ms - * var start = Date.now(); - * var pauseIn10 = function() { return (Date.now() - start) >= 10; }; - * if (!incrParser.process(pauseIn10)) { - * break; - * } - * ...yield to other tasks, do other housekeeping, etc... - * } - * ``` - */ - process: function(shouldPauseFunc) { - return parser.parse('', false, shouldPauseFunc); - }, - /** - * Returns the result of the incremental parse. Valid after - * `this.end()` has been called and `this.process()` has returned - * false. - */ - document: function() { - return parser.document(); - }, - }; -}; - -exports.createWindow = function(html, address) { - var document = exports.createDocument(html); - if (address !== undefined) { document._address = address; } - return new impl.Window(document); -}; - -exports.impl = impl; - -/***/ }), - -/***/ 23509: -/***/ ((module, exports) => { - -"use strict"; - -/* jshint eqnull: true */ -/** - * Zest (https://github.com/chjj/zest) - * A css selector engine. - * Copyright (c) 2011-2012, Christopher Jeffrey. (MIT Licensed) - * Domino version based on Zest v0.1.3 with bugfixes applied. - */ - -/** - * Helpers - */ - -var window = Object.create(null, { - location: { get: function() { - throw new Error('window.location is not supported.'); - } } -}); - -var compareDocumentPosition = function(a, b) { - return a.compareDocumentPosition(b); -}; - -var order = function(a, b) { - /* jshint bitwise: false */ - return compareDocumentPosition(a, b) & 2 ? 1 : -1; -}; - -var next = function(el) { - while ((el = el.nextSibling) - && el.nodeType !== 1); - return el; -}; - -var prev = function(el) { - while ((el = el.previousSibling) - && el.nodeType !== 1); - return el; -}; - -var child = function(el) { - /*jshint -W084 */ - if (el = el.firstChild) { - while (el.nodeType !== 1 - && (el = el.nextSibling)); - } - return el; -}; - -var lastChild = function(el) { - /*jshint -W084 */ - if (el = el.lastChild) { - while (el.nodeType !== 1 - && (el = el.previousSibling)); - } - return el; -}; - -var parentIsElement = function(n) { - if (!n.parentNode) { return false; } - var nodeType = n.parentNode.nodeType; - // The root `html` element can be a first- or last-child, too. - return nodeType === 1 || nodeType === 9; -}; - -var unquote = function(str) { - if (!str) return str; - var ch = str[0]; - if (ch === '"' || ch === '\'') { - if (str[str.length-1] === ch) { - str = str.slice(1, -1); - } else { - // bad string. - str = str.slice(1); - } - return str.replace(rules.str_escape, function(s) { - var m = /^\\(?:([0-9A-Fa-f]+)|([\r\n\f]+))/.exec(s); - if (!m) { return s.slice(1); } - if (m[2]) { return ''; /* escaped newlines are ignored in strings. */ } - var cp = parseInt(m[1], 16); - return String.fromCodePoint ? String.fromCodePoint(cp) : - // Not all JavaScript implementations have String.fromCodePoint yet. - String.fromCharCode(cp); - }); - } else if (rules.ident.test(str)) { - return decodeid(str); - } else { - // NUMBER, PERCENTAGE, DIMENSION, etc - return str; - } -}; - -var decodeid = function(str) { - return str.replace(rules.escape, function(s) { - var m = /^\\([0-9A-Fa-f]+)/.exec(s); - if (!m) { return s[1]; } - var cp = parseInt(m[1], 16); - return String.fromCodePoint ? String.fromCodePoint(cp) : - // Not all JavaScript implementations have String.fromCodePoint yet. - String.fromCharCode(cp); - }); -}; - -var indexOf = (function() { - if (Array.prototype.indexOf) { - return Array.prototype.indexOf; - } - return function(obj, item) { - var i = this.length; - while (i--) { - if (this[i] === item) return i; - } - return -1; - }; -})(); - -var makeInside = function(start, end) { - var regex = rules.inside.source - .replace(//g, end); - - return new RegExp(regex); -}; - -var replace = function(regex, name, val) { - regex = regex.source; - regex = regex.replace(name, val.source || val); - return new RegExp(regex); -}; - -var truncateUrl = function(url, num) { - return url - .replace(/^(?:\w+:\/\/|\/+)/, '') - .replace(/(?:\/+|\/*#.*?)$/, '') - .split('/', num) - .join('/'); -}; - -/** - * Handle `nth` Selectors - */ - -var parseNth = function(param_, test) { - var param = param_.replace(/\s+/g, '') - , cap; - - if (param === 'even') { - param = '2n+0'; - } else if (param === 'odd') { - param = '2n+1'; - } else if (param.indexOf('n') === -1) { - param = '0n' + param; - } - - cap = /^([+-])?(\d+)?n([+-])?(\d+)?$/.exec(param); - - return { - group: cap[1] === '-' - ? -(cap[2] || 1) - : +(cap[2] || 1), - offset: cap[4] - ? (cap[3] === '-' ? -cap[4] : +cap[4]) - : 0 - }; -}; - -var nth = function(param_, test, last) { - var param = parseNth(param_) - , group = param.group - , offset = param.offset - , find = !last ? child : lastChild - , advance = !last ? next : prev; - - return function(el) { - if (!parentIsElement(el)) return; - - var rel = find(el.parentNode) - , pos = 0; - - while (rel) { - if (test(rel, el)) pos++; - if (rel === el) { - pos -= offset; - return group && pos - ? (pos % group) === 0 && (pos < 0 === group < 0) - : !pos; - } - rel = advance(rel); - } - }; -}; - -/** - * Simple Selectors - */ - -var selectors = { - '*': (function() { - if (false/*function() { - var el = document.createElement('div'); - el.appendChild(document.createComment('')); - return !!el.getElementsByTagName('*')[0]; - }()*/) {} - return function() { - return true; - }; - })(), - 'type': function(type) { - type = type.toLowerCase(); - return function(el) { - return el.nodeName.toLowerCase() === type; - }; - }, - 'attr': function(key, op, val, i) { - op = operators[op]; - return function(el) { - var attr; - switch (key) { - case 'for': - attr = el.htmlFor; - break; - case 'class': - // className is '' when non-existent - // getAttribute('class') is null - attr = el.className; - if (attr === '' && el.getAttribute('class') == null) { - attr = null; - } - break; - case 'href': - case 'src': - attr = el.getAttribute(key, 2); - break; - case 'title': - // getAttribute('title') can be '' when non-existent sometimes? - attr = el.getAttribute('title') || null; - break; - // careful with attributes with special getter functions - case 'id': - case 'lang': - case 'dir': - case 'accessKey': - case 'hidden': - case 'tabIndex': - case 'style': - if (el.getAttribute) { - attr = el.getAttribute(key); - break; - } - /* falls through */ - default: - if (el.hasAttribute && !el.hasAttribute(key)) { - break; - } - attr = el[key] != null - ? el[key] - : el.getAttribute && el.getAttribute(key); - break; - } - if (attr == null) return; - attr = attr + ''; - if (i) { - attr = attr.toLowerCase(); - val = val.toLowerCase(); - } - return op(attr, val); - }; - }, - ':first-child': function(el) { - return !prev(el) && parentIsElement(el); - }, - ':last-child': function(el) { - return !next(el) && parentIsElement(el); - }, - ':only-child': function(el) { - return !prev(el) && !next(el) && parentIsElement(el); - }, - ':nth-child': function(param, last) { - return nth(param, function() { - return true; - }, last); - }, - ':nth-last-child': function(param) { - return selectors[':nth-child'](param, true); - }, - ':root': function(el) { - return el.ownerDocument.documentElement === el; - }, - ':empty': function(el) { - return !el.firstChild; - }, - ':not': function(sel) { - var test = compileGroup(sel); - return function(el) { - return !test(el); - }; - }, - ':first-of-type': function(el) { - if (!parentIsElement(el)) return; - var type = el.nodeName; - /*jshint -W084 */ - while (el = prev(el)) { - if (el.nodeName === type) return; - } - return true; - }, - ':last-of-type': function(el) { - if (!parentIsElement(el)) return; - var type = el.nodeName; - /*jshint -W084 */ - while (el = next(el)) { - if (el.nodeName === type) return; - } - return true; - }, - ':only-of-type': function(el) { - return selectors[':first-of-type'](el) - && selectors[':last-of-type'](el); - }, - ':nth-of-type': function(param, last) { - return nth(param, function(rel, el) { - return rel.nodeName === el.nodeName; - }, last); - }, - ':nth-last-of-type': function(param) { - return selectors[':nth-of-type'](param, true); - }, - ':checked': function(el) { - return !!(el.checked || el.selected); - }, - ':indeterminate': function(el) { - return !selectors[':checked'](el); - }, - ':enabled': function(el) { - return !el.disabled && el.type !== 'hidden'; - }, - ':disabled': function(el) { - return !!el.disabled; - }, - ':target': function(el) { - return el.id === window.location.hash.substring(1); - }, - ':focus': function(el) { - return el === el.ownerDocument.activeElement; - }, - ':is': function(sel) { - return compileGroup(sel); - }, - // :matches is an older name for :is; see - // https://github.com/w3c/csswg-drafts/issues/3258 - ':matches': function(sel) { - return selectors[':is'](sel); - }, - ':nth-match': function(param, last) { - var args = param.split(/\s*,\s*/) - , arg = args.shift() - , test = compileGroup(args.join(',')); - - return nth(arg, test, last); - }, - ':nth-last-match': function(param) { - return selectors[':nth-match'](param, true); - }, - ':links-here': function(el) { - return el + '' === window.location + ''; - }, - ':lang': function(param) { - return function(el) { - while (el) { - if (el.lang) return el.lang.indexOf(param) === 0; - el = el.parentNode; - } - }; - }, - ':dir': function(param) { - return function(el) { - while (el) { - if (el.dir) return el.dir === param; - el = el.parentNode; - } - }; - }, - ':scope': function(el, con) { - var context = con || el.ownerDocument; - if (context.nodeType === 9) { - return el === context.documentElement; - } - return el === context; - }, - ':any-link': function(el) { - return typeof el.href === 'string'; - }, - ':local-link': function(el) { - if (el.nodeName) { - return el.href && el.host === window.location.host; - } - var param = +el + 1; - return function(el) { - if (!el.href) return; - - var url = window.location + '' - , href = el + ''; - - return truncateUrl(url, param) === truncateUrl(href, param); - }; - }, - ':default': function(el) { - return !!el.defaultSelected; - }, - ':valid': function(el) { - return el.willValidate || (el.validity && el.validity.valid); - }, - ':invalid': function(el) { - return !selectors[':valid'](el); - }, - ':in-range': function(el) { - return el.value > el.min && el.value <= el.max; - }, - ':out-of-range': function(el) { - return !selectors[':in-range'](el); - }, - ':required': function(el) { - return !!el.required; - }, - ':optional': function(el) { - return !el.required; - }, - ':read-only': function(el) { - if (el.readOnly) return true; - - var attr = el.getAttribute('contenteditable') - , prop = el.contentEditable - , name = el.nodeName.toLowerCase(); - - name = name !== 'input' && name !== 'textarea'; - - return (name || el.disabled) && attr == null && prop !== 'true'; - }, - ':read-write': function(el) { - return !selectors[':read-only'](el); - }, - ':hover': function() { - throw new Error(':hover is not supported.'); - }, - ':active': function() { - throw new Error(':active is not supported.'); - }, - ':link': function() { - throw new Error(':link is not supported.'); - }, - ':visited': function() { - throw new Error(':visited is not supported.'); - }, - ':column': function() { - throw new Error(':column is not supported.'); - }, - ':nth-column': function() { - throw new Error(':nth-column is not supported.'); - }, - ':nth-last-column': function() { - throw new Error(':nth-last-column is not supported.'); - }, - ':current': function() { - throw new Error(':current is not supported.'); - }, - ':past': function() { - throw new Error(':past is not supported.'); - }, - ':future': function() { - throw new Error(':future is not supported.'); - }, - // Non-standard, for compatibility purposes. - ':contains': function(param) { - return function(el) { - var text = el.innerText || el.textContent || el.value || ''; - return text.indexOf(param) !== -1; - }; - }, - ':has': function(param) { - return function(el) { - return find(param, el).length > 0; - }; - } - // Potentially add more pseudo selectors for - // compatibility with sizzle and most other - // selector engines (?). -}; - -/** - * Attribute Operators - */ - -var operators = { - '-': function() { - return true; - }, - '=': function(attr, val) { - return attr === val; - }, - '*=': function(attr, val) { - return attr.indexOf(val) !== -1; - }, - '~=': function(attr, val) { - var i - , s - , f - , l; - - for (s = 0; true; s = i + 1) { - i = attr.indexOf(val, s); - if (i === -1) return false; - f = attr[i - 1]; - l = attr[i + val.length]; - if ((!f || f === ' ') && (!l || l === ' ')) return true; - } - }, - '|=': function(attr, val) { - var i = attr.indexOf(val) - , l; - - if (i !== 0) return; - l = attr[i + val.length]; - - return l === '-' || !l; - }, - '^=': function(attr, val) { - return attr.indexOf(val) === 0; - }, - '$=': function(attr, val) { - var i = attr.lastIndexOf(val); - return i !== -1 && i + val.length === attr.length; - }, - // non-standard - '!=': function(attr, val) { - return attr !== val; - } -}; - -/** - * Combinator Logic - */ - -var combinators = { - ' ': function(test) { - return function(el) { - /*jshint -W084 */ - while (el = el.parentNode) { - if (test(el)) return el; - } - }; - }, - '>': function(test) { - return function(el) { - /*jshint -W084 */ - if (el = el.parentNode) { - return test(el) && el; - } - }; - }, - '+': function(test) { - return function(el) { - /*jshint -W084 */ - if (el = prev(el)) { - return test(el) && el; - } - }; - }, - '~': function(test) { - return function(el) { - /*jshint -W084 */ - while (el = prev(el)) { - if (test(el)) return el; - } - }; - }, - 'noop': function(test) { - return function(el) { - return test(el) && el; - }; - }, - 'ref': function(test, name) { - var node; - - function ref(el) { - var doc = el.ownerDocument - , nodes = doc.getElementsByTagName('*') - , i = nodes.length; - - while (i--) { - node = nodes[i]; - if (ref.test(el)) { - node = null; - return true; - } - } - - node = null; - } - - ref.combinator = function(el) { - if (!node || !node.getAttribute) return; - - var attr = node.getAttribute(name) || ''; - if (attr[0] === '#') attr = attr.substring(1); - - if (attr === el.id && test(node)) { - return node; - } - }; - - return ref; - } -}; - -/** - * Grammar - */ - -var rules = { - escape: /\\(?:[^0-9A-Fa-f\r\n]|[0-9A-Fa-f]{1,6}[\r\n\t ]?)/g, - str_escape: /(escape)|\\(\n|\r\n?|\f)/g, - nonascii: /[\u00A0-\uFFFF]/, - cssid: /(?:(?!-?[0-9])(?:escape|nonascii|[-_a-zA-Z0-9])+)/, - qname: /^ *(cssid|\*)/, - simple: /^(?:([.#]cssid)|pseudo|attr)/, - ref: /^ *\/(cssid)\/ */, - combinator: /^(?: +([^ \w*.#\\]) +|( )+|([^ \w*.#\\]))(?! *$)/, - attr: /^\[(cssid)(?:([^\w]?=)(inside))?\]/, - pseudo: /^(:cssid)(?:\((inside)\))?/, - inside: /(?:"(?:\\"|[^"])*"|'(?:\\'|[^'])*'|<[^"'>]*>|\\["'>]|[^"'>])*/, - ident: /^(cssid)$/ -}; - -rules.cssid = replace(rules.cssid, 'nonascii', rules.nonascii); -rules.cssid = replace(rules.cssid, 'escape', rules.escape); -rules.qname = replace(rules.qname, 'cssid', rules.cssid); -rules.simple = replace(rules.simple, 'cssid', rules.cssid); -rules.ref = replace(rules.ref, 'cssid', rules.cssid); -rules.attr = replace(rules.attr, 'cssid', rules.cssid); -rules.pseudo = replace(rules.pseudo, 'cssid', rules.cssid); -rules.inside = replace(rules.inside, '[^"\'>]*', rules.inside); -rules.attr = replace(rules.attr, 'inside', makeInside('\\[', '\\]')); -rules.pseudo = replace(rules.pseudo, 'inside', makeInside('\\(', '\\)')); -rules.simple = replace(rules.simple, 'pseudo', rules.pseudo); -rules.simple = replace(rules.simple, 'attr', rules.attr); -rules.ident = replace(rules.ident, 'cssid', rules.cssid); -rules.str_escape = replace(rules.str_escape, 'escape', rules.escape); - -/** - * Compiling - */ - -var compile = function(sel_) { - var sel = sel_.replace(/^\s+|\s+$/g, '') - , test - , filter = [] - , buff = [] - , subject - , qname - , cap - , op - , ref; - - /*jshint -W084 */ - while (sel) { - if (cap = rules.qname.exec(sel)) { - sel = sel.substring(cap[0].length); - qname = decodeid(cap[1]); - buff.push(tok(qname, true)); - } else if (cap = rules.simple.exec(sel)) { - sel = sel.substring(cap[0].length); - qname = '*'; - buff.push(tok(qname, true)); - buff.push(tok(cap)); - } else { - throw new SyntaxError('Invalid selector.'); - } - - while (cap = rules.simple.exec(sel)) { - sel = sel.substring(cap[0].length); - buff.push(tok(cap)); - } - - if (sel[0] === '!') { - sel = sel.substring(1); - subject = makeSubject(); - subject.qname = qname; - buff.push(subject.simple); - } - - if (cap = rules.ref.exec(sel)) { - sel = sel.substring(cap[0].length); - ref = combinators.ref(makeSimple(buff), decodeid(cap[1])); - filter.push(ref.combinator); - buff = []; - continue; - } - - if (cap = rules.combinator.exec(sel)) { - sel = sel.substring(cap[0].length); - op = cap[1] || cap[2] || cap[3]; - if (op === ',') { - filter.push(combinators.noop(makeSimple(buff))); - break; - } - } else { - op = 'noop'; - } - - if (!combinators[op]) { throw new SyntaxError('Bad combinator.'); } - filter.push(combinators[op](makeSimple(buff))); - buff = []; - } - - test = makeTest(filter); - test.qname = qname; - test.sel = sel; - - if (subject) { - subject.lname = test.qname; - - subject.test = test; - subject.qname = subject.qname; - subject.sel = test.sel; - test = subject; - } - - if (ref) { - ref.test = test; - ref.qname = test.qname; - ref.sel = test.sel; - test = ref; - } - - return test; -}; - -var tok = function(cap, qname) { - // qname - if (qname) { - return cap === '*' - ? selectors['*'] - : selectors.type(cap); - } - - // class/id - if (cap[1]) { - return cap[1][0] === '.' - // XXX unescape here? or in attr? - ? selectors.attr('class', '~=', decodeid(cap[1].substring(1)), false) - : selectors.attr('id', '=', decodeid(cap[1].substring(1)), false); - } - - // pseudo-name - // inside-pseudo - if (cap[2]) { - return cap[3] - ? selectors[decodeid(cap[2])](unquote(cap[3])) - : selectors[decodeid(cap[2])]; - } - - // attr name - // attr op - // attr value - if (cap[4]) { - var value = cap[6]; - var i = /["'\s]\s*I$/i.test(value); - if (i) { - value = value.replace(/\s*I$/i, ''); - } - return selectors.attr(decodeid(cap[4]), cap[5] || '-', unquote(value), i); - } - - throw new SyntaxError('Unknown Selector.'); -}; - -var makeSimple = function(func) { - var l = func.length - , i; - - // Potentially make sure - // `el` is truthy. - if (l < 2) return func[0]; - - return function(el) { - if (!el) return; - for (i = 0; i < l; i++) { - if (!func[i](el)) return; - } - return true; - }; -}; - -var makeTest = function(func) { - if (func.length < 2) { - return function(el) { - return !!func[0](el); - }; - } - return function(el) { - var i = func.length; - while (i--) { - if (!(el = func[i](el))) return; - } - return true; - }; -}; - -var makeSubject = function() { - var target; - - function subject(el) { - var node = el.ownerDocument - , scope = node.getElementsByTagName(subject.lname) - , i = scope.length; - - while (i--) { - if (subject.test(scope[i]) && target === el) { - target = null; - return true; - } - } - - target = null; - } - - subject.simple = function(el) { - target = el; - return true; - }; - - return subject; -}; - -var compileGroup = function(sel) { - var test = compile(sel) - , tests = [ test ]; - - while (test.sel) { - test = compile(test.sel); - tests.push(test); - } - - if (tests.length < 2) return test; - - return function(el) { - var l = tests.length - , i = 0; - - for (; i < l; i++) { - if (tests[i](el)) return true; - } - }; -}; - -/** - * Selection - */ - -var find = function(sel, node) { - var results = [] - , test = compile(sel) - , scope = node.getElementsByTagName(test.qname) - , i = 0 - , el; - - /*jshint -W084 */ - while (el = scope[i++]) { - if (test(el)) results.push(el); - } - - if (test.sel) { - while (test.sel) { - test = compile(test.sel); - scope = node.getElementsByTagName(test.qname); - i = 0; - /*jshint -W084 */ - while (el = scope[i++]) { - if (test(el) && indexOf.call(results, el) === -1) { - results.push(el); - } - } - } - results.sort(order); - } - - return results; -}; - -/** - * Expose - */ - -module.exports = exports = function(sel, context) { - /* when context isn't a DocumentFragment and the selector is simple: */ - var id, r; - if (context.nodeType !== 11 && sel.indexOf(' ') === -1) { - if (sel[0] === '#' && context.rooted && /^#[A-Z_][-A-Z0-9_]*$/i.test(sel)) { - if (context.doc._hasMultipleElementsWithId) { - id = sel.substring(1); - if (!context.doc._hasMultipleElementsWithId(id)) { - r = context.doc.getElementById(id); - return r ? [r] : []; - } - } - } - if (sel[0] === '.' && /^\.\w+$/.test(sel)) { - return context.getElementsByClassName(sel.substring(1)); - } - if (/^\w+$/.test(sel)) { - return context.getElementsByTagName(sel); - } - } - /* do things the hard/slow way */ - return find(sel, context); -}; - -exports.selectors = selectors; -exports.operators = operators; -exports.combinators = combinators; - -exports.matches = function(el, sel) { - var test = { sel: sel }; - do { - test = compile(test.sel); - if (test(el)) { return true; } - } while (test.sel); - return false; -}; - - -/***/ }), - -/***/ 72636: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -/** - * @license - * Copyright Google LLC All Rights Reserved. - * - * Use of this source code is governed by an MIT-style license that can be - * found in the LICENSE file at https://angular.io/license - */ - -// The below is a compiled copy of https://github.com/angular/angular/blob/92e41e9cb417223d9888a4c23b4c0e73188f87d0/packages/compiler/src/render3/view/style_parser.ts - -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.hyphenate = exports.parse = void 0; -/** - * Parses string representation of a style and converts it into object literal. - * - * @param value string representation of style as used in the `style` attribute in HTML. - * Example: `color: red; height: auto`. - * @returns An array of style property name and value pairs, e.g. `['color', 'red', 'height', - * 'auto']` - */ -function parse(value) { - // we use a string array here instead of a string map - // because a string-map is not guaranteed to retain the - // order of the entries whereas a string array can be - // constructed in a [key, value, key, value] format. - const styles = []; - let i = 0; - let parenDepth = 0; - let quote = 0; /* Char.QuoteNone */ - let valueStart = 0; - let propStart = 0; - let currentProp = null; - while (i < value.length) { - const token = value.charCodeAt(i++); - switch (token) { - case 40 /* Char.OpenParen */: - parenDepth++; - break; - case 41 /* Char.CloseParen */: - parenDepth--; - break; - case 39 /* Char.QuoteSingle */: - // valueStart needs to be there since prop values don't - // have quotes in CSS - if (quote === 0 /* Char.QuoteNone */) { - quote = 39 /* Char.QuoteSingle */; - } else if ( - quote === 39 /* Char.QuoteSingle */ && - value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */ - ) { - quote = 0 /* Char.QuoteNone */; - } - break; - case 34 /* Char.QuoteDouble */: - // same logic as above - if (quote === 0 /* Char.QuoteNone */) { - quote = 34 /* Char.QuoteDouble */; - } else if ( - quote === 34 /* Char.QuoteDouble */ && - value.charCodeAt(i - 1) !== 92 /* Char.BackSlash */ - ) { - quote = 0 /* Char.QuoteNone */; - } - break; - case 58 /* Char.Colon */: - if ( - !currentProp && - parenDepth === 0 && - quote === 0 /* Char.QuoteNone */ - ) { - currentProp = hyphenate(value.substring(propStart, i - 1).trim()); - valueStart = i; - } - break; - case 59 /* Char.Semicolon */: - if ( - currentProp && - valueStart > 0 && - parenDepth === 0 && - quote === 0 /* Char.QuoteNone */ - ) { - const styleVal = value.substring(valueStart, i - 1).trim(); - styles.push(currentProp, styleVal); - propStart = i; - valueStart = 0; - currentProp = null; - } - break; - } - } - if (currentProp && valueStart) { - const styleVal = value.slice(valueStart).trim(); - styles.push(currentProp, styleVal); - } - return styles; -} -exports.parse = parse; -function hyphenate(value) { - return value - .replace(/[a-z][A-Z]/g, (v) => { - return v.charAt(0) + "-" + v.charAt(1); - }) - .toLowerCase(); -} -exports.hyphenate = hyphenate; - - -/***/ }), - -/***/ 967: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var Element = __webpack_require__(77301); -var defineElement = __webpack_require__(5244); -var utils = __webpack_require__(89076); -var CSSStyleDeclaration = __webpack_require__(53141); - -var svgElements = exports.elements = {}; -var svgNameToImpl = Object.create(null); - -exports.createElement = function(doc, localName, prefix) { - var impl = svgNameToImpl[localName] || SVGElement; - return new impl(doc, localName, prefix); -}; - -function define(spec) { - return defineElement(spec, SVGElement, svgElements, svgNameToImpl); -} - -var SVGElement = define({ - superclass: Element, - name: 'SVGElement', - ctor: function SVGElement(doc, localName, prefix) { - Element.call(this, doc, localName, utils.NAMESPACE.SVG, prefix); - }, - props: { - style: { get: function() { - if (!this._style) - this._style = new CSSStyleDeclaration(this); - return this._style; - }} - } -}); - -define({ - name: 'SVGSVGElement', - ctor: function SVGSVGElement(doc, localName, prefix) { - SVGElement.call(this, doc, localName, prefix); - }, - tag: 'svg', - props: { - createSVGRect: { value: function () { - return exports.createElement(this.ownerDocument, 'rect', null); - } } - } -}); - -define({ - tags: [ - 'a', 'altGlyph', 'altGlyphDef', 'altGlyphItem', 'animate', 'animateColor', 'animateMotion', 'animateTransform', - 'circle', 'clipPath', 'color-profile', 'cursor', 'defs', 'desc', 'ellipse', 'feBlend', 'feColorMatrix', - 'feComponentTransfer', 'feComposite', 'feConvolveMatrix', 'feDiffuseLighting', 'feDisplacementMap', 'feDistantLight', - 'feFlood', 'feFuncA', 'feFuncB', 'feFuncG', 'feFuncR', 'feGaussianBlur', 'feImage', 'feMerge', 'feMergeNode', - 'feMorphology', 'feOffset', 'fePointLight', 'feSpecularLighting', 'feSpotLight', 'feTile', 'feTurbulence', 'filter', - 'font', 'font-face', 'font-face-format', 'font-face-name', 'font-face-src', 'font-face-uri', 'foreignObject', 'g', - 'glyph', 'glyphRef', 'hkern', 'image', 'line', 'linearGradient', 'marker', 'mask', 'metadata', 'missing-glyph', - 'mpath', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'script', 'set', 'stop', 'style', - 'switch', 'symbol', 'text', 'textPath', 'title', 'tref', 'tspan', 'use', 'view', 'vkern' - ] -}); - - -/***/ }), - -/***/ 89076: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -"use strict"; - -var DOMException = __webpack_require__(46364); -var ERR = DOMException; -var isApiWritable = (__webpack_require__(66139)/* .isApiWritable */ .h); - -exports.NAMESPACE = { - HTML: 'http://www.w3.org/1999/xhtml', - XML: 'http://www.w3.org/XML/1998/namespace', - XMLNS: 'http://www.w3.org/2000/xmlns/', - MATHML: 'http://www.w3.org/1998/Math/MathML', - SVG: 'http://www.w3.org/2000/svg', - XLINK: 'http://www.w3.org/1999/xlink' -}; - -// -// Shortcut functions for throwing errors of various types. -// -exports.IndexSizeError = function() { throw new DOMException(ERR.INDEX_SIZE_ERR); }; -exports.HierarchyRequestError = function() { throw new DOMException(ERR.HIERARCHY_REQUEST_ERR); }; -exports.WrongDocumentError = function() { throw new DOMException(ERR.WRONG_DOCUMENT_ERR); }; -exports.InvalidCharacterError = function() { throw new DOMException(ERR.INVALID_CHARACTER_ERR); }; -exports.NoModificationAllowedError = function() { throw new DOMException(ERR.NO_MODIFICATION_ALLOWED_ERR); }; -exports.NotFoundError = function() { throw new DOMException(ERR.NOT_FOUND_ERR); }; -exports.NotSupportedError = function() { throw new DOMException(ERR.NOT_SUPPORTED_ERR); }; -exports.InvalidStateError = function() { throw new DOMException(ERR.INVALID_STATE_ERR); }; -exports.SyntaxError = function() { throw new DOMException(ERR.SYNTAX_ERR); }; -exports.InvalidModificationError = function() { throw new DOMException(ERR.INVALID_MODIFICATION_ERR); }; -exports.NamespaceError = function() { throw new DOMException(ERR.NAMESPACE_ERR); }; -exports.InvalidAccessError = function() { throw new DOMException(ERR.INVALID_ACCESS_ERR); }; -exports.TypeMismatchError = function() { throw new DOMException(ERR.TYPE_MISMATCH_ERR); }; -exports.SecurityError = function() { throw new DOMException(ERR.SECURITY_ERR); }; -exports.NetworkError = function() { throw new DOMException(ERR.NETWORK_ERR); }; -exports.AbortError = function() { throw new DOMException(ERR.ABORT_ERR); }; -exports.UrlMismatchError = function() { throw new DOMException(ERR.URL_MISMATCH_ERR); }; -exports.QuotaExceededError = function() { throw new DOMException(ERR.QUOTA_EXCEEDED_ERR); }; -exports.TimeoutError = function() { throw new DOMException(ERR.TIMEOUT_ERR); }; -exports.InvalidNodeTypeError = function() { throw new DOMException(ERR.INVALID_NODE_TYPE_ERR); }; -exports.DataCloneError = function() { throw new DOMException(ERR.DATA_CLONE_ERR); }; - -exports.nyi = function() { - throw new Error("NotYetImplemented"); -}; - -exports.shouldOverride = function() { - throw new Error("Abstract function; should be overriding in subclass."); -}; - -exports.assert = function(expr, msg) { - if (!expr) { - throw new Error("Assertion failed: " + (msg || "") + "\n" + new Error().stack); - } -}; - -exports.expose = function(src, c) { - for (var n in src) { - Object.defineProperty(c.prototype, n, { value: src[n], writable: isApiWritable }); - } -}; - -exports.merge = function(a, b) { - for (var n in b) { - a[n] = b[n]; - } -}; - -// Compare two nodes based on their document order. This function is intended -// to be passed to sort(). Assumes that the array being sorted does not -// contain duplicates. And that all nodes are connected and comparable. -// Clever code by ppk via jeresig. -exports.documentOrder = function(n,m) { - /* jshint bitwise: false */ - return 3 - (n.compareDocumentPosition(m) & 6); -}; - -exports.toASCIILowerCase = function(s) { - return s.replace(/[A-Z]+/g, function(c) { - return c.toLowerCase(); - }); -}; - -exports.toASCIIUpperCase = function(s) { - return s.replace(/[a-z]+/g, function(c) { - return c.toUpperCase(); - }); -}; - - -/***/ }), - -/***/ 66798: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -// This grammar is from the XML and XML Namespace specs. It specifies whether -// a string (such as an element or attribute name) is a valid Name or QName. -// -// Name ::= NameStartChar (NameChar)* -// NameStartChar ::= ":" | [A-Z] | "_" | [a-z] | -// [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x2FF] | -// [#x370-#x37D] | [#x37F-#x1FFF] | -// [#x200C-#x200D] | [#x2070-#x218F] | -// [#x2C00-#x2FEF] | [#x3001-#xD7FF] | -// [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | -// [#x10000-#xEFFFF] -// -// NameChar ::= NameStartChar | "-" | "." | [0-9] | -// #xB7 | [#x0300-#x036F] | [#x203F-#x2040] -// -// QName ::= PrefixedName| UnprefixedName -// PrefixedName ::= Prefix ':' LocalPart -// UnprefixedName ::= LocalPart -// Prefix ::= NCName -// LocalPart ::= NCName -// NCName ::= Name - (Char* ':' Char*) -// # An XML Name, minus the ":" -// - -exports.isValidName = isValidName; -exports.isValidQName = isValidQName; - -// Most names will be ASCII only. Try matching against simple regexps first -var simplename = /^[_:A-Za-z][-.:\w]+$/; -var simpleqname = /^([_A-Za-z][-.\w]+|[_A-Za-z][-.\w]+:[_A-Za-z][-.\w]+)$/; - -// If the regular expressions above fail, try more complex ones that work -// for any identifiers using codepoints from the Unicode BMP -var ncnamestartchars = "_A-Za-z\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; -var ncnamechars = "-._A-Za-z0-9\u00B7\u00C0-\u00D6\u00D8-\u00F6\u00F8-\u02ff\u0300-\u037D\u037F-\u1FFF\u200C\u200D\u203f\u2040\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD"; - -var ncname = "[" + ncnamestartchars + "][" + ncnamechars + "]*"; -var namestartchars = ncnamestartchars + ":"; -var namechars = ncnamechars + ":"; -var name = new RegExp("^[" + namestartchars + "]" + "[" + namechars + "]*$"); -var qname = new RegExp("^(" + ncname + "|" + ncname + ":" + ncname + ")$"); - -// XML says that these characters are also legal: -// [#x10000-#xEFFFF]. So if the patterns above fail, and the -// target string includes surrogates, then try the following -// patterns that allow surrogates and then run an extra validation -// step to make sure that the surrogates are in valid pairs and in -// the right range. Note that since the characters \uf0000 to \u1f0000 -// are not allowed, it means that the high surrogate can only go up to -// \uDB7f instead of \uDBFF. -var hassurrogates = /[\uD800-\uDB7F\uDC00-\uDFFF]/; -var surrogatechars = /[\uD800-\uDB7F\uDC00-\uDFFF]/g; -var surrogatepairs = /[\uD800-\uDB7F][\uDC00-\uDFFF]/g; - -// Modify the variables above to allow surrogates -ncnamestartchars += "\uD800-\uDB7F\uDC00-\uDFFF"; -ncnamechars += "\uD800-\uDB7F\uDC00-\uDFFF"; -ncname = "[" + ncnamestartchars + "][" + ncnamechars + "]*"; -namestartchars = ncnamestartchars + ":"; -namechars = ncnamechars + ":"; - -// Build another set of regexps that include surrogates -var surrogatename = new RegExp("^[" + namestartchars + "]" + "[" + namechars + "]*$"); -var surrogateqname = new RegExp("^(" + ncname + "|" + ncname + ":" + ncname + ")$"); - -function isValidName(s) { - if (simplename.test(s)) return true; // Plain ASCII - if (name.test(s)) return true; // Unicode BMP - - // Maybe the tests above failed because s includes surrogate pairs - // Most likely, though, they failed for some more basic syntax problem - if (!hassurrogates.test(s)) return false; - - // Is the string a valid name if we allow surrogates? - if (!surrogatename.test(s)) return false; - - // Finally, are the surrogates all correctly paired up? - var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs); - return pairs !== null && 2*pairs.length === chars.length; -} - -function isValidQName(s) { - if (simpleqname.test(s)) return true; // Plain ASCII - if (qname.test(s)) return true; // Unicode BMP - - if (!hassurrogates.test(s)) return false; - if (!surrogateqname.test(s)) return false; - var chars = s.match(surrogatechars), pairs = s.match(surrogatepairs); - return pairs !== null && 2*pairs.length === chars.length; -} - - /***/ }), /***/ 43295: @@ -21419,234 +4289,6 @@ function range(a, b, str) { } -/***/ }), - -/***/ 79272: -/***/ ((module, exports, __webpack_require__) => { - -/** - * Module dependencies. - */ - -var fs = __webpack_require__(79896), - path = __webpack_require__(16928), - fileURLToPath = __webpack_require__(25241), - join = path.join, - dirname = path.dirname, - exists = - (fs.accessSync && - function(path) { - try { - fs.accessSync(path); - } catch (e) { - return false; - } - return true; - }) || - fs.existsSync || - path.existsSync, - defaults = { - arrow: process.env.NODE_BINDINGS_ARROW || ' → ', - compiled: process.env.NODE_BINDINGS_COMPILED_DIR || 'compiled', - platform: process.platform, - arch: process.arch, - nodePreGyp: - 'node-v' + - process.versions.modules + - '-' + - process.platform + - '-' + - process.arch, - version: process.versions.node, - bindings: 'bindings.node', - try: [ - // node-gyp's linked version in the "build" dir - ['module_root', 'build', 'bindings'], - // node-waf and gyp_addon (a.k.a node-gyp) - ['module_root', 'build', 'Debug', 'bindings'], - ['module_root', 'build', 'Release', 'bindings'], - // Debug files, for development (legacy behavior, remove for node v0.9) - ['module_root', 'out', 'Debug', 'bindings'], - ['module_root', 'Debug', 'bindings'], - // Release files, but manually compiled (legacy behavior, remove for node v0.9) - ['module_root', 'out', 'Release', 'bindings'], - ['module_root', 'Release', 'bindings'], - // Legacy from node-waf, node <= 0.4.x - ['module_root', 'build', 'default', 'bindings'], - // Production "Release" buildtype binary (meh...) - ['module_root', 'compiled', 'version', 'platform', 'arch', 'bindings'], - // node-qbs builds - ['module_root', 'addon-build', 'release', 'install-root', 'bindings'], - ['module_root', 'addon-build', 'debug', 'install-root', 'bindings'], - ['module_root', 'addon-build', 'default', 'install-root', 'bindings'], - // node-pre-gyp path ./lib/binding/{node_abi}-{platform}-{arch} - ['module_root', 'lib', 'binding', 'nodePreGyp', 'bindings'] - ] - }; - -/** - * The main `bindings()` function loads the compiled bindings for a given module. - * It uses V8's Error API to determine the parent filename that this function is - * being invoked from, which is then used to find the root directory. - */ - -function bindings(opts) { - // Argument surgery - if (typeof opts == 'string') { - opts = { bindings: opts }; - } else if (!opts) { - opts = {}; - } - - // maps `defaults` onto `opts` object - Object.keys(defaults).map(function(i) { - if (!(i in opts)) opts[i] = defaults[i]; - }); - - // Get the module root - if (!opts.module_root) { - opts.module_root = exports.getRoot(exports.getFileName()); - } - - // Ensure the given bindings name ends with .node - if (path.extname(opts.bindings) != '.node') { - opts.bindings += '.node'; - } - - // https://github.com/webpack/webpack/issues/4175#issuecomment-342931035 - var requireFunc = - true - ? require - : 0; - - var tries = [], - i = 0, - l = opts.try.length, - n, - b, - err; - - for (; i < l; i++) { - n = join.apply( - null, - opts.try[i].map(function(p) { - return opts[p] || p; - }) - ); - tries.push(n); - try { - b = opts.path ? requireFunc.resolve(n) : requireFunc(n); - if (!opts.path) { - b.path = n; - } - return b; - } catch (e) { - if (e.code !== 'MODULE_NOT_FOUND' && - e.code !== 'QUALIFIED_PATH_RESOLUTION_FAILED' && - !/not find/i.test(e.message)) { - throw e; - } - } - } - - err = new Error( - 'Could not locate the bindings file. Tried:\n' + - tries - .map(function(a) { - return opts.arrow + a; - }) - .join('\n') - ); - err.tries = tries; - throw err; -} -module.exports = exports = bindings; - -/** - * Gets the filename of the JavaScript file that invokes this function. - * Used to help find the root directory of a module. - * Optionally accepts an filename argument to skip when searching for the invoking filename - */ - -exports.getFileName = function getFileName(calling_file) { - var origPST = Error.prepareStackTrace, - origSTL = Error.stackTraceLimit, - dummy = {}, - fileName; - - Error.stackTraceLimit = 10; - - Error.prepareStackTrace = function(e, st) { - for (var i = 0, l = st.length; i < l; i++) { - fileName = st[i].getFileName(); - if (fileName !== __filename) { - if (calling_file) { - if (fileName !== calling_file) { - return; - } - } else { - return; - } - } - } - }; - - // run the 'prepareStackTrace' function above - Error.captureStackTrace(dummy); - dummy.stack; - - // cleanup - Error.prepareStackTrace = origPST; - Error.stackTraceLimit = origSTL; - - // handle filename that starts with "file://" - var fileSchema = 'file://'; - if (fileName.indexOf(fileSchema) === 0) { - fileName = fileURLToPath(fileName); - } - - return fileName; -}; - -/** - * Gets the root directory of a module, given an arbitrary filename - * somewhere in the module tree. The "root directory" is the directory - * containing the `package.json` file. - * - * In: /home/nate/node-native-module/lib/index.js - * Out: /home/nate/node-native-module - */ - -exports.getRoot = function getRoot(file) { - var dir = dirname(file), - prev; - while (true) { - if (dir === '.') { - // Avoids an infinite loop in rare cases, like the REPL - dir = process.cwd(); - } - if ( - exists(join(dir, 'package.json')) || - exists(join(dir, 'node_modules')) - ) { - // Found the 'package.json' file or 'node_modules' dir; we're done - return dir; - } - if (prev === dir) { - // Got to the top - throw new Error( - 'Could not find module root given file: "' + - file + - '". Do you have a `package.json` file? ' - ); - } - // Try the parent dir next - prev = dir; - dir = join(dir, '..'); - } -}; - - /***/ }), /***/ 96586: @@ -28961,79 +11603,6 @@ var fecha = { //# sourceMappingURL=fecha.js.map -/***/ }), - -/***/ 25241: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - - -/** - * Module dependencies. - */ - -var sep = (__webpack_require__(16928).sep) || '/'; - -/** - * Module exports. - */ - -module.exports = fileUriToPath; - -/** - * File URI to Path function. - * - * @param {String} uri - * @return {String} path - * @api public - */ - -function fileUriToPath (uri) { - if ('string' != typeof uri || - uri.length <= 7 || - 'file://' != uri.substring(0, 7)) { - throw new TypeError('must pass in a file:// URI to convert to a file path'); - } - - var rest = decodeURI(uri.substring(7)); - var firstSlash = rest.indexOf('/'); - var host = rest.substring(0, firstSlash); - var path = rest.substring(firstSlash + 1); - - // 2. Scheme Definition - // As a special case, can be the string "localhost" or the empty - // string; this is interpreted as "the machine from which the URL is - // being interpreted". - if ('localhost' == host) host = ''; - - if (host) { - host = sep + sep + host; - } - - // 3.2 Drives, drive letters, mount points, file system root - // Drive letters are mapped into the top of a file URI in various ways, - // depending on the implementation; some applications substitute - // vertical bar ("|") for the colon after the drive letter, yielding - // "file:///c|/tmp/test.txt". In some cases, the colon is left - // unchanged, as in "file:///c:/tmp/test.txt". In other cases, the - // colon is simply omitted, as in "file:///c/tmp/test.txt". - path = path.replace(/^(.+)\|/, '$1:'); - - // for Windows, we need to invert the path separators from what a URI uses - if (sep == '\\') { - path = path.replace(/\//g, '\\'); - } - - if (/^.+\:/.test(path)) { - // has Windows drive at beginning of path - } else { - // unix path… - path = sep + path; - } - - return host + path; -} - - /***/ }), /***/ 67027: @@ -29084,6 +11653,2157 @@ module.exports = function name(fn) { }; +/***/ }), + +/***/ 95270: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) + +const BUF_LENGTH = 64 * 1024 +const _buff = __webpack_require__(34549)(BUF_LENGTH) + +function copyFileSync (srcFile, destFile, options) { + const overwrite = options.overwrite + const errorOnExist = options.errorOnExist + const preserveTimestamps = options.preserveTimestamps + + if (fs.existsSync(destFile)) { + if (overwrite) { + fs.unlinkSync(destFile) + } else if (errorOnExist) { + throw new Error(`${destFile} already exists`) + } else return + } + + const fdr = fs.openSync(srcFile, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(destFile, 'w', stat.mode) + let bytesRead = 1 + let pos = 0 + + while (bytesRead > 0) { + bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) + fs.writeSync(fdw, _buff, 0, bytesRead) + pos += bytesRead + } + + if (preserveTimestamps) { + fs.futimesSync(fdw, stat.atime, stat.mtime) + } + + fs.closeSync(fdr) + fs.closeSync(fdw) +} + +module.exports = copyFileSync + + +/***/ }), + +/***/ 86793: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const copyFileSync = __webpack_require__(95270) +const mkdir = __webpack_require__(60327) + +function copySync (src, dest, options) { + if (typeof options === 'function' || options instanceof RegExp) { + options = {filter: options} + } + + options = options || {} + options.recursive = !!options.recursive + + // default to true for now + options.clobber = 'clobber' in options ? !!options.clobber : true + // overwrite falls back to clobber + options.overwrite = 'overwrite' in options ? !!options.overwrite : options.clobber + options.dereference = 'dereference' in options ? !!options.dereference : false + options.preserveTimestamps = 'preserveTimestamps' in options ? !!options.preserveTimestamps : false + + options.filter = options.filter || function () { return true } + + // Warn about using preserveTimestamps on 32-bit node: + if (options.preserveTimestamps && process.arch === 'ia32') { + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) + } + + const stats = (options.recursive && !options.dereference) ? fs.lstatSync(src) : fs.statSync(src) + const destFolder = path.dirname(dest) + const destFolderExists = fs.existsSync(destFolder) + let performCopy = false + + if (options.filter instanceof RegExp) { + console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') + performCopy = options.filter.test(src) + } else if (typeof options.filter === 'function') performCopy = options.filter(src, dest) + + if (stats.isFile() && performCopy) { + if (!destFolderExists) mkdir.mkdirsSync(destFolder) + copyFileSync(src, dest, { + overwrite: options.overwrite, + errorOnExist: options.errorOnExist, + preserveTimestamps: options.preserveTimestamps + }) + } else if (stats.isDirectory() && performCopy) { + if (!fs.existsSync(dest)) mkdir.mkdirsSync(dest) + const contents = fs.readdirSync(src) + contents.forEach(content => { + const opts = options + opts.recursive = true + copySync(path.join(src, content), path.join(dest, content), opts) + }) + } else if (options.recursive && stats.isSymbolicLink() && performCopy) { + const srcPath = fs.readlinkSync(src) + fs.symlinkSync(srcPath, dest) + } +} + +module.exports = copySync + + +/***/ }), + +/***/ 88510: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +module.exports = { + copySync: __webpack_require__(86793) +} + + +/***/ }), + +/***/ 20881: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const ncp = __webpack_require__(57967) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function copy (src, dest, options, callback) { + if (typeof options === 'function' && !callback) { + callback = options + options = {} + } else if (typeof options === 'function' || options instanceof RegExp) { + options = {filter: options} + } + callback = callback || function () {} + options = options || {} + + // Warn about using preserveTimestamps on 32-bit node: + if (options.preserveTimestamps && process.arch === 'ia32') { + console.warn(`fs-extra: Using the preserveTimestamps option in 32-bit node is not recommended;\n + see https://github.com/jprichardson/node-fs-extra/issues/269`) + } + + // don't allow src and dest to be the same + const basePath = process.cwd() + const currentPath = path.resolve(basePath, src) + const targetPath = path.resolve(basePath, dest) + if (currentPath === targetPath) return callback(new Error('Source and destination must not be the same.')) + + fs.lstat(src, (err, stats) => { + if (err) return callback(err) + + let dir = null + if (stats.isDirectory()) { + const parts = dest.split(path.sep) + parts.pop() + dir = parts.join(path.sep) + } else { + dir = path.dirname(dest) + } + + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return ncp(src, dest, options, callback) + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + ncp(src, dest, options, callback) + }) + }) + }) +} + +module.exports = copy + + +/***/ }), + +/***/ 33430: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +module.exports = { + copy: u(__webpack_require__(20881)) +} + + +/***/ }), + +/***/ 57967: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// imported from ncp (this is temporary, will rewrite) + +var fs = __webpack_require__(71174) +var path = __webpack_require__(16928) +var utimes = __webpack_require__(90348) + +function ncp (source, dest, options, callback) { + if (!callback) { + callback = options + options = {} + } + + var basePath = process.cwd() + var currentPath = path.resolve(basePath, source) + var targetPath = path.resolve(basePath, dest) + + var filter = options.filter + var transform = options.transform + var overwrite = options.overwrite + // If overwrite is undefined, use clobber, otherwise default to true: + if (overwrite === undefined) overwrite = options.clobber + if (overwrite === undefined) overwrite = true + var errorOnExist = options.errorOnExist + var dereference = options.dereference + var preserveTimestamps = options.preserveTimestamps === true + + var started = 0 + var finished = 0 + var running = 0 + + var errored = false + + startCopy(currentPath) + + function startCopy (source) { + started++ + if (filter) { + if (filter instanceof RegExp) { + console.warn('Warning: fs-extra: Passing a RegExp filter is deprecated, use a function') + if (!filter.test(source)) { + return doneOne(true) + } + } else if (typeof filter === 'function') { + if (!filter(source, dest)) { + return doneOne(true) + } + } + } + return getStats(source) + } + + function getStats (source) { + var stat = dereference ? fs.stat : fs.lstat + running++ + stat(source, function (err, stats) { + if (err) return onError(err) + + // We need to get the mode from the stats object and preserve it. + var item = { + name: source, + mode: stats.mode, + mtime: stats.mtime, // modified time + atime: stats.atime, // access time + stats: stats // temporary + } + + if (stats.isDirectory()) { + return onDir(item) + } else if (stats.isFile() || stats.isCharacterDevice() || stats.isBlockDevice()) { + return onFile(item) + } else if (stats.isSymbolicLink()) { + // Symlinks don't really need to know about the mode. + return onLink(source) + } + }) + } + + function onFile (file) { + var target = file.name.replace(currentPath, targetPath.replace('$', '$$$$')) // escapes '$' with '$$' + isWritable(target, function (writable) { + if (writable) { + copyFile(file, target) + } else { + if (overwrite) { + rmFile(target, function () { + copyFile(file, target) + }) + } else if (errorOnExist) { + onError(new Error(target + ' already exists')) + } else { + doneOne() + } + } + }) + } + + function copyFile (file, target) { + var readStream = fs.createReadStream(file.name) + var writeStream = fs.createWriteStream(target, { mode: file.mode }) + + readStream.on('error', onError) + writeStream.on('error', onError) + + if (transform) { + transform(readStream, writeStream, file) + } else { + writeStream.on('open', function () { + readStream.pipe(writeStream) + }) + } + + writeStream.once('close', function () { + fs.chmod(target, file.mode, function (err) { + if (err) return onError(err) + if (preserveTimestamps) { + utimes.utimesMillis(target, file.atime, file.mtime, function (err) { + if (err) return onError(err) + return doneOne() + }) + } else { + doneOne() + } + }) + }) + } + + function rmFile (file, done) { + fs.unlink(file, function (err) { + if (err) return onError(err) + return done() + }) + } + + function onDir (dir) { + var target = dir.name.replace(currentPath, targetPath.replace('$', '$$$$')) // escapes '$' with '$$' + isWritable(target, function (writable) { + if (writable) { + return mkDir(dir, target) + } + copyDir(dir.name) + }) + } + + function mkDir (dir, target) { + fs.mkdir(target, dir.mode, function (err) { + if (err) return onError(err) + // despite setting mode in fs.mkdir, doesn't seem to work + // so we set it here. + fs.chmod(target, dir.mode, function (err) { + if (err) return onError(err) + copyDir(dir.name) + }) + }) + } + + function copyDir (dir) { + fs.readdir(dir, function (err, items) { + if (err) return onError(err) + items.forEach(function (item) { + startCopy(path.join(dir, item)) + }) + return doneOne() + }) + } + + function onLink (link) { + var target = link.replace(currentPath, targetPath) + fs.readlink(link, function (err, resolvedPath) { + if (err) return onError(err) + checkLink(resolvedPath, target) + }) + } + + function checkLink (resolvedPath, target) { + if (dereference) { + resolvedPath = path.resolve(basePath, resolvedPath) + } + isWritable(target, function (writable) { + if (writable) { + return makeLink(resolvedPath, target) + } + fs.readlink(target, function (err, targetDest) { + if (err) return onError(err) + + if (dereference) { + targetDest = path.resolve(basePath, targetDest) + } + if (targetDest === resolvedPath) { + return doneOne() + } + return rmFile(target, function () { + makeLink(resolvedPath, target) + }) + }) + }) + } + + function makeLink (linkPath, target) { + fs.symlink(linkPath, target, function (err) { + if (err) return onError(err) + return doneOne() + }) + } + + function isWritable (path, done) { + fs.lstat(path, function (err) { + if (err) { + if (err.code === 'ENOENT') return done(true) + return done(false) + } + return done(false) + }) + } + + function onError (err) { + // ensure callback is defined & called only once: + if (!errored && callback !== undefined) { + errored = true + return callback(err) + } + } + + function doneOne (skipped) { + if (!skipped) running-- + finished++ + if ((started === finished) && (running === 0)) { + if (callback !== undefined) { + return callback(null) + } + } + } +} + +module.exports = ncp + + +/***/ }), + +/***/ 53760: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(79896) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const remove = __webpack_require__(16195) + +const emptyDir = u(function emptyDir (dir, callback) { + callback = callback || function () {} + fs.readdir(dir, (err, items) => { + if (err) return mkdir.mkdirs(dir, callback) + + items = items.map(item => path.join(dir, item)) + + deleteItem() + + function deleteItem () { + const item = items.pop() + if (!item) return callback() + remove.remove(item, err => { + if (err) return callback(err) + deleteItem() + }) + } + }) +}) + +function emptyDirSync (dir) { + let items + try { + items = fs.readdirSync(dir) + } catch (err) { + return mkdir.mkdirsSync(dir) + } + + items.forEach(item => { + item = path.join(dir, item) + remove.removeSync(item) + }) +} + +module.exports = { + emptyDirSync, + emptydirSync: emptyDirSync, + emptyDir, + emptydir: emptyDir +} + + +/***/ }), + +/***/ 23771: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function createFile (file, callback) { + function makeFile () { + fs.writeFile(file, '', err => { + if (err) return callback(err) + callback() + }) + } + + fs.stat(file, (err, stats) => { // eslint-disable-line handle-callback-err + if (!err && stats.isFile()) return callback() + const dir = path.dirname(file) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return makeFile() + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeFile() + }) + }) + }) +} + +function createFileSync (file) { + let stats + try { + stats = fs.statSync(file) + } catch (e) {} + if (stats && stats.isFile()) return + + const dir = path.dirname(file) + if (!fs.existsSync(dir)) { + mkdir.mkdirsSync(dir) + } + + fs.writeFileSync(file, '') +} + +module.exports = { + createFile: u(createFile), + createFileSync +} + + +/***/ }), + +/***/ 29081: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const file = __webpack_require__(23771) +const link = __webpack_require__(44181) +const symlink = __webpack_require__(98950) + +module.exports = { + // file + createFile: file.createFile, + createFileSync: file.createFileSync, + ensureFile: file.createFile, + ensureFileSync: file.createFileSync, + // link + createLink: link.createLink, + createLinkSync: link.createLinkSync, + ensureLink: link.createLink, + ensureLinkSync: link.createLinkSync, + // symlink + createSymlink: symlink.createSymlink, + createSymlinkSync: symlink.createSymlinkSync, + ensureSymlink: symlink.createSymlink, + ensureSymlinkSync: symlink.createSymlinkSync +} + + +/***/ }), + +/***/ 44181: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function createLink (srcpath, dstpath, callback) { + function makeLink (srcpath, dstpath) { + fs.link(srcpath, dstpath, err => { + if (err) return callback(err) + callback(null) + }) + } + + pathExists(dstpath, (err, destinationExists) => { + if (err) return callback(err) + if (destinationExists) return callback(null) + fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureLink') + return callback(err) + } + + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return makeLink(srcpath, dstpath) + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + makeLink(srcpath, dstpath) + }) + }) + }) + }) +} + +function createLinkSync (srcpath, dstpath, callback) { + const destinationExists = fs.existsSync(dstpath) + if (destinationExists) return undefined + + try { + fs.lstatSync(srcpath) + } catch (err) { + err.message = err.message.replace('lstat', 'ensureLink') + throw err + } + + const dir = path.dirname(dstpath) + const dirExists = fs.existsSync(dir) + if (dirExists) return fs.linkSync(srcpath, dstpath) + mkdir.mkdirsSync(dir) + + return fs.linkSync(srcpath, dstpath) +} + +module.exports = { + createLink: u(createLink), + createLinkSync +} + + +/***/ }), + +/***/ 57979: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const pathExists = (__webpack_require__(49767).pathExists) + +/** + * Function that returns two types of paths, one relative to symlink, and one + * relative to the current working directory. Checks if path is absolute or + * relative. If the path is relative, this function checks if the path is + * relative to symlink or relative to current working directory. This is an + * initiative to find a smarter `srcpath` to supply when building symlinks. + * This allows you to determine which path to use out of one of three possible + * types of source paths. The first is an absolute path. This is detected by + * `path.isAbsolute()`. When an absolute path is provided, it is checked to + * see if it exists. If it does it's used, if not an error is returned + * (callback)/ thrown (sync). The other two options for `srcpath` are a + * relative url. By default Node's `fs.symlink` works by creating a symlink + * using `dstpath` and expects the `srcpath` to be relative to the newly + * created symlink. If you provide a `srcpath` that does not exist on the file + * system it results in a broken symlink. To minimize this, the function + * checks to see if the 'relative to symlink' source file exists, and if it + * does it will use it. If it does not, it checks if there's a file that + * exists that is relative to the current working directory, if does its used. + * This preserves the expectations of the original fs.symlink spec and adds + * the ability to pass in `relative to current working direcotry` paths. + */ + +function symlinkPaths (srcpath, dstpath, callback) { + if (path.isAbsolute(srcpath)) { + return fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + 'toCwd': srcpath, + 'toDst': srcpath + }) + }) + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + return pathExists(relativeToDst, (err, exists) => { + if (err) return callback(err) + if (exists) { + return callback(null, { + 'toCwd': relativeToDst, + 'toDst': srcpath + }) + } else { + return fs.lstat(srcpath, (err, stat) => { + if (err) { + err.message = err.message.replace('lstat', 'ensureSymlink') + return callback(err) + } + return callback(null, { + 'toCwd': srcpath, + 'toDst': path.relative(dstdir, srcpath) + }) + }) + } + }) + } +} + +function symlinkPathsSync (srcpath, dstpath) { + let exists + if (path.isAbsolute(srcpath)) { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('absolute srcpath does not exist') + return { + 'toCwd': srcpath, + 'toDst': srcpath + } + } else { + const dstdir = path.dirname(dstpath) + const relativeToDst = path.join(dstdir, srcpath) + exists = fs.existsSync(relativeToDst) + if (exists) { + return { + 'toCwd': relativeToDst, + 'toDst': srcpath + } + } else { + exists = fs.existsSync(srcpath) + if (!exists) throw new Error('relative srcpath does not exist') + return { + 'toCwd': srcpath, + 'toDst': path.relative(dstdir, srcpath) + } + } + } +} + +module.exports = { + symlinkPaths, + symlinkPathsSync +} + + +/***/ }), + +/***/ 44127: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) + +function symlinkType (srcpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + if (type) return callback(null, type) + fs.lstat(srcpath, (err, stats) => { + if (err) return callback(null, 'file') + type = (stats && stats.isDirectory()) ? 'dir' : 'file' + callback(null, type) + }) +} + +function symlinkTypeSync (srcpath, type) { + let stats + + if (type) return type + try { + stats = fs.lstatSync(srcpath) + } catch (e) { + return 'file' + } + return (stats && stats.isDirectory()) ? 'dir' : 'file' +} + +module.exports = { + symlinkType, + symlinkTypeSync +} + + +/***/ }), + +/***/ 98950: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const path = __webpack_require__(16928) +const fs = __webpack_require__(71174) +const _mkdirs = __webpack_require__(60327) +const mkdirs = _mkdirs.mkdirs +const mkdirsSync = _mkdirs.mkdirsSync + +const _symlinkPaths = __webpack_require__(57979) +const symlinkPaths = _symlinkPaths.symlinkPaths +const symlinkPathsSync = _symlinkPaths.symlinkPathsSync + +const _symlinkType = __webpack_require__(44127) +const symlinkType = _symlinkType.symlinkType +const symlinkTypeSync = _symlinkType.symlinkTypeSync + +const pathExists = (__webpack_require__(49767).pathExists) + +function createSymlink (srcpath, dstpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + + pathExists(dstpath, (err, destinationExists) => { + if (err) return callback(err) + if (destinationExists) return callback(null) + symlinkPaths(srcpath, dstpath, (err, relative) => { + if (err) return callback(err) + srcpath = relative.toDst + symlinkType(relative.toCwd, type, (err, type) => { + if (err) return callback(err) + const dir = path.dirname(dstpath) + pathExists(dir, (err, dirExists) => { + if (err) return callback(err) + if (dirExists) return fs.symlink(srcpath, dstpath, type, callback) + mkdirs(dir, err => { + if (err) return callback(err) + fs.symlink(srcpath, dstpath, type, callback) + }) + }) + }) + }) + }) +} + +function createSymlinkSync (srcpath, dstpath, type, callback) { + callback = (typeof type === 'function') ? type : callback + type = (typeof type === 'function') ? false : type + + const destinationExists = fs.existsSync(dstpath) + if (destinationExists) return undefined + + const relative = symlinkPathsSync(srcpath, dstpath) + srcpath = relative.toDst + type = symlinkTypeSync(relative.toCwd, type) + const dir = path.dirname(dstpath) + const exists = fs.existsSync(dir) + if (exists) return fs.symlinkSync(srcpath, dstpath, type) + mkdirsSync(dir) + return fs.symlinkSync(srcpath, dstpath, type) +} + +module.exports = { + createSymlink: u(createSymlink), + createSymlinkSync +} + + +/***/ }), + +/***/ 46596: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +// This is adapted from https://github.com/normalize/mz +// Copyright (c) 2014-2016 Jonathan Ong me@jongleberry.com and Contributors +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) + +const api = [ + 'access', + 'appendFile', + 'chmod', + 'chown', + 'close', + 'copyFile', + 'fchmod', + 'fchown', + 'fdatasync', + 'fstat', + 'fsync', + 'ftruncate', + 'futimes', + 'lchown', + 'link', + 'lstat', + 'mkdir', + 'mkdtemp', + 'open', + 'readFile', + 'readdir', + 'readlink', + 'realpath', + 'rename', + 'rmdir', + 'stat', + 'symlink', + 'truncate', + 'unlink', + 'utimes', + 'writeFile' +].filter(key => { + // Some commands are not available on some systems. Ex: + // fs.copyFile was added in Node.js v8.5.0 + // fs.mkdtemp was added in Node.js v5.10.0 + // fs.lchown is not available on at least some Linux + return typeof fs[key] === 'function' +}) + +// Export all keys: +Object.keys(fs).forEach(key => { + exports[key] = fs[key] +}) + +// Universalify async methods: +api.forEach(method => { + exports[method] = u(fs[method]) +}) + +// We differ from mz/fs in that we still ship the old, broken, fs.exists() +// since we are a drop-in replacement for the native module +exports.exists = function (filename, callback) { + if (typeof callback === 'function') { + return fs.exists(filename, callback) + } + return new Promise(resolve => { + return fs.exists(filename, resolve) + }) +} + +// fs.read() & fs.write need special treatment due to multiple callback args + +exports.read = function (fd, buffer, offset, length, position, callback) { + if (typeof callback === 'function') { + return fs.read(fd, buffer, offset, length, position, callback) + } + return new Promise((resolve, reject) => { + fs.read(fd, buffer, offset, length, position, (err, bytesRead, buffer) => { + if (err) return reject(err) + resolve({ bytesRead, buffer }) + }) + }) +} + +// Function signature can be +// fs.write(fd, buffer[, offset[, length[, position]]], callback) +// OR +// fs.write(fd, string[, position[, encoding]], callback) +// so we need to handle both cases +exports.write = function (fd, buffer, a, b, c, callback) { + if (typeof arguments[arguments.length - 1] === 'function') { + return fs.write(fd, buffer, a, b, c, callback) + } + + // Check for old, depricated fs.write(fd, string[, position[, encoding]], callback) + if (typeof buffer === 'string') { + return new Promise((resolve, reject) => { + fs.write(fd, buffer, a, b, (err, bytesWritten, buffer) => { + if (err) return reject(err) + resolve({ bytesWritten, buffer }) + }) + }) + } + + return new Promise((resolve, reject) => { + fs.write(fd, buffer, a, b, c, (err, bytesWritten, buffer) => { + if (err) return reject(err) + resolve({ bytesWritten, buffer }) + }) + }) +} + + +/***/ }), + +/***/ 56922: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const assign = __webpack_require__(3762) + +const fs = {} + +// Export graceful-fs: +assign(fs, __webpack_require__(46596)) +// Export extra methods: +assign(fs, __webpack_require__(33430)) +assign(fs, __webpack_require__(88510)) +assign(fs, __webpack_require__(60327)) +assign(fs, __webpack_require__(16195)) +assign(fs, __webpack_require__(5793)) +assign(fs, __webpack_require__(68126)) +assign(fs, __webpack_require__(2566)) +assign(fs, __webpack_require__(53760)) +assign(fs, __webpack_require__(29081)) +assign(fs, __webpack_require__(79858)) +assign(fs, __webpack_require__(49767)) + +module.exports = fs + + +/***/ }), + +/***/ 5793: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const jsonFile = __webpack_require__(71461) + +jsonFile.outputJson = u(__webpack_require__(58147)) +jsonFile.outputJsonSync = __webpack_require__(36275) +// aliases +jsonFile.outputJSON = jsonFile.outputJson +jsonFile.outputJSONSync = jsonFile.outputJsonSync +jsonFile.writeJSON = jsonFile.writeJson +jsonFile.writeJSONSync = jsonFile.writeJsonSync +jsonFile.readJSON = jsonFile.readJson +jsonFile.readJSONSync = jsonFile.readJsonSync + +module.exports = jsonFile + + +/***/ }), + +/***/ 71461: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const jsonFile = __webpack_require__(82162) + +module.exports = { + // jsonfile exports + readJson: u(jsonFile.readFile), + readJsonSync: jsonFile.readFileSync, + writeJson: u(jsonFile.writeFile), + writeJsonSync: jsonFile.writeFileSync +} + + +/***/ }), + +/***/ 36275: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const jsonFile = __webpack_require__(71461) + +function outputJsonSync (file, data, options) { + const dir = path.dirname(file) + + if (!fs.existsSync(dir)) { + mkdir.mkdirsSync(dir) + } + + jsonFile.writeJsonSync(file, data, options) +} + +module.exports = outputJsonSync + + +/***/ }), + +/***/ 58147: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) +const jsonFile = __webpack_require__(71461) + +function outputJson (file, data, options, callback) { + if (typeof options === 'function') { + callback = options + options = {} + } + + const dir = path.dirname(file) + + pathExists(dir, (err, itDoes) => { + if (err) return callback(err) + if (itDoes) return jsonFile.writeJson(file, data, options, callback) + + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + jsonFile.writeJson(file, data, options, callback) + }) + }) +} + +module.exports = outputJson + + +/***/ }), + +/***/ 60327: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const mkdirs = u(__webpack_require__(42987)) +const mkdirsSync = __webpack_require__(56891) + +module.exports = { + mkdirs: mkdirs, + mkdirsSync: mkdirsSync, + // alias + mkdirp: mkdirs, + mkdirpSync: mkdirsSync, + ensureDir: mkdirs, + ensureDirSync: mkdirsSync +} + + +/***/ }), + +/***/ 56891: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const invalidWin32Path = (__webpack_require__(54752).invalidWin32Path) + +const o777 = parseInt('0777', 8) + +function mkdirsSync (p, opts, made) { + if (!opts || typeof opts !== 'object') { + opts = { mode: opts } + } + + let mode = opts.mode + const xfs = opts.fs || fs + + if (process.platform === 'win32' && invalidWin32Path(p)) { + const errInval = new Error(p + ' contains invalid WIN32 path characters.') + errInval.code = 'EINVAL' + throw errInval + } + + if (mode === undefined) { + mode = o777 & (~process.umask()) + } + if (!made) made = null + + p = path.resolve(p) + + try { + xfs.mkdirSync(p, mode) + made = made || p + } catch (err0) { + switch (err0.code) { + case 'ENOENT': + if (path.dirname(p) === p) throw err0 + made = mkdirsSync(path.dirname(p), opts, made) + mkdirsSync(p, opts, made) + break + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + let stat + try { + stat = xfs.statSync(p) + } catch (err1) { + throw err0 + } + if (!stat.isDirectory()) throw err0 + break + } + } + + return made +} + +module.exports = mkdirsSync + + +/***/ }), + +/***/ 42987: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const invalidWin32Path = (__webpack_require__(54752).invalidWin32Path) + +const o777 = parseInt('0777', 8) + +function mkdirs (p, opts, callback, made) { + if (typeof opts === 'function') { + callback = opts + opts = {} + } else if (!opts || typeof opts !== 'object') { + opts = { mode: opts } + } + + if (process.platform === 'win32' && invalidWin32Path(p)) { + const errInval = new Error(p + ' contains invalid WIN32 path characters.') + errInval.code = 'EINVAL' + return callback(errInval) + } + + let mode = opts.mode + const xfs = opts.fs || fs + + if (mode === undefined) { + mode = o777 & (~process.umask()) + } + if (!made) made = null + + callback = callback || function () {} + p = path.resolve(p) + + xfs.mkdir(p, mode, er => { + if (!er) { + made = made || p + return callback(null, made) + } + switch (er.code) { + case 'ENOENT': + if (path.dirname(p) === p) return callback(er) + mkdirs(path.dirname(p), opts, (er, made) => { + if (er) callback(er, made) + else mkdirs(p, opts, callback, made) + }) + break + + // In the case of any other error, just see if there's a dir + // there already. If so, then hooray! If not, then something + // is borked. + default: + xfs.stat(p, (er2, stat) => { + // if the stat fails, then that's super weird. + // let the original error be the failure reason. + if (er2 || !stat.isDirectory()) callback(er, made) + else callback(null, made) + }) + break + } + }) +} + +module.exports = mkdirs + + +/***/ }), + +/***/ 54752: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const path = __webpack_require__(16928) + +// get drive on windows +function getRootPath (p) { + p = path.normalize(path.resolve(p)).split(path.sep) + if (p.length > 0) return p[0] + return null +} + +// http://stackoverflow.com/a/62888/10333 contains more accurate +// TODO: expand to include the rest +const INVALID_PATH_CHARS = /[<>:"|?*]/ + +function invalidWin32Path (p) { + const rp = getRootPath(p) + p = p.replace(rp, '') + return INVALID_PATH_CHARS.test(p) +} + +module.exports = { + getRootPath, + invalidWin32Path +} + + +/***/ }), + +/***/ 2566: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const copySync = (__webpack_require__(88510).copySync) +const removeSync = (__webpack_require__(16195).removeSync) +const mkdirpSync = (__webpack_require__(60327).mkdirsSync) +const buffer = __webpack_require__(34549) + +function moveSync (src, dest, options) { + options = options || {} + const overwrite = options.overwrite || options.clobber || false + + src = path.resolve(src) + dest = path.resolve(dest) + + if (src === dest) return fs.accessSync(src) + + if (isSrcSubdir(src, dest)) throw new Error(`Cannot move '${src}' into itself '${dest}'.`) + + mkdirpSync(path.dirname(dest)) + tryRenameSync() + + function tryRenameSync () { + if (overwrite) { + try { + return fs.renameSync(src, dest) + } catch (err) { + if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST' || err.code === 'EPERM') { + removeSync(dest) + options.overwrite = false // just overwriteed it, no need to do it again + return moveSync(src, dest, options) + } + + if (err.code !== 'EXDEV') throw err + return moveSyncAcrossDevice(src, dest, overwrite) + } + } else { + try { + fs.linkSync(src, dest) + return fs.unlinkSync(src) + } catch (err) { + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + return moveSyncAcrossDevice(src, dest, overwrite) + } + throw err + } + } + } +} + +function moveSyncAcrossDevice (src, dest, overwrite) { + const stat = fs.statSync(src) + + if (stat.isDirectory()) { + return moveDirSyncAcrossDevice(src, dest, overwrite) + } else { + return moveFileSyncAcrossDevice(src, dest, overwrite) + } +} + +function moveFileSyncAcrossDevice (src, dest, overwrite) { + const BUF_LENGTH = 64 * 1024 + const _buff = buffer(BUF_LENGTH) + + const flags = overwrite ? 'w' : 'wx' + + const fdr = fs.openSync(src, 'r') + const stat = fs.fstatSync(fdr) + const fdw = fs.openSync(dest, flags, stat.mode) + let bytesRead = 1 + let pos = 0 + + while (bytesRead > 0) { + bytesRead = fs.readSync(fdr, _buff, 0, BUF_LENGTH, pos) + fs.writeSync(fdw, _buff, 0, bytesRead) + pos += bytesRead + } + + fs.closeSync(fdr) + fs.closeSync(fdw) + return fs.unlinkSync(src) +} + +function moveDirSyncAcrossDevice (src, dest, overwrite) { + const options = { + overwrite: false + } + + if (overwrite) { + removeSync(dest) + tryCopySync() + } else { + tryCopySync() + } + + function tryCopySync () { + copySync(src, dest, options) + return removeSync(src) + } +} + +// return true if dest is a subdir of src, otherwise false. +// extract dest base dir and check if that is the same as src basename +function isSrcSubdir (src, dest) { + try { + return fs.statSync(src).isDirectory() && + src !== dest && + dest.indexOf(src) > -1 && + dest.split(path.dirname(src) + path.sep)[1].split(path.sep)[0] === path.basename(src) + } catch (e) { + return false + } +} + +module.exports = { + moveSync +} + + +/***/ }), + +/***/ 68126: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +// most of this code was written by Andrew Kelley +// licensed under the BSD license: see +// https://github.com/andrewrk/node-mv/blob/master/package.json + +// this needs a cleanup + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) +const ncp = __webpack_require__(57967) +const path = __webpack_require__(16928) +const remove = (__webpack_require__(16195).remove) +const mkdirp = (__webpack_require__(60327).mkdirs) + +function move (src, dest, options, callback) { + if (typeof options === 'function') { + callback = options + options = {} + } + + const overwrite = options.overwrite || options.clobber || false + + isSrcSubdir(src, dest, (err, itIs) => { + if (err) return callback(err) + if (itIs) return callback(new Error(`Cannot move '${src}' to a subdirectory of itself, '${dest}'.`)) + mkdirp(path.dirname(dest), err => { + if (err) return callback(err) + doRename() + }) + }) + + function doRename () { + if (path.resolve(src) === path.resolve(dest)) { + fs.access(src, callback) + } else if (overwrite) { + fs.rename(src, dest, err => { + if (!err) return callback() + + if (err.code === 'ENOTEMPTY' || err.code === 'EEXIST') { + remove(dest, err => { + if (err) return callback(err) + options.overwrite = false // just overwriteed it, no need to do it again + move(src, dest, options, callback) + }) + return + } + + // weird Windows shit + if (err.code === 'EPERM') { + setTimeout(() => { + remove(dest, err => { + if (err) return callback(err) + options.overwrite = false + move(src, dest, options, callback) + }) + }, 200) + return + } + + if (err.code !== 'EXDEV') return callback(err) + moveAcrossDevice(src, dest, overwrite, callback) + }) + } else { + fs.link(src, dest, err => { + if (err) { + if (err.code === 'EXDEV' || err.code === 'EISDIR' || err.code === 'EPERM' || err.code === 'ENOTSUP') { + return moveAcrossDevice(src, dest, overwrite, callback) + } + return callback(err) + } + return fs.unlink(src, callback) + }) + } + } +} + +function moveAcrossDevice (src, dest, overwrite, callback) { + fs.stat(src, (err, stat) => { + if (err) return callback(err) + + if (stat.isDirectory()) { + moveDirAcrossDevice(src, dest, overwrite, callback) + } else { + moveFileAcrossDevice(src, dest, overwrite, callback) + } + }) +} + +function moveFileAcrossDevice (src, dest, overwrite, callback) { + const flags = overwrite ? 'w' : 'wx' + const ins = fs.createReadStream(src) + const outs = fs.createWriteStream(dest, { flags }) + + ins.on('error', err => { + ins.destroy() + outs.destroy() + outs.removeListener('close', onClose) + + // may want to create a directory but `out` line above + // creates an empty file for us: See #108 + // don't care about error here + fs.unlink(dest, () => { + // note: `err` here is from the input stream errror + if (err.code === 'EISDIR' || err.code === 'EPERM') { + moveDirAcrossDevice(src, dest, overwrite, callback) + } else { + callback(err) + } + }) + }) + + outs.on('error', err => { + ins.destroy() + outs.destroy() + outs.removeListener('close', onClose) + callback(err) + }) + + outs.once('close', onClose) + ins.pipe(outs) + + function onClose () { + fs.unlink(src, callback) + } +} + +function moveDirAcrossDevice (src, dest, overwrite, callback) { + const options = { + overwrite: false + } + + if (overwrite) { + remove(dest, err => { + if (err) return callback(err) + startNcp() + }) + } else { + startNcp() + } + + function startNcp () { + ncp(src, dest, options, err => { + if (err) return callback(err) + remove(src, callback) + }) + } +} + +// return true if dest is a subdir of src, otherwise false. +// extract dest base dir and check if that is the same as src basename +function isSrcSubdir (src, dest, cb) { + fs.stat(src, (err, st) => { + if (err) return cb(err) + if (st.isDirectory()) { + const baseDir = dest.split(path.dirname(src) + path.sep)[1] + if (baseDir) { + const destBasename = baseDir.split(path.sep)[0] + if (destBasename) return cb(null, src !== dest && dest.indexOf(src) > -1 && destBasename === path.basename(src)) + return cb(null, false) + } + return cb(null, false) + } + return cb(null, false) + }) +} + +module.exports = { + move: u(move) +} + + +/***/ }), + +/***/ 79858: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const mkdir = __webpack_require__(60327) +const pathExists = (__webpack_require__(49767).pathExists) + +function outputFile (file, data, encoding, callback) { + if (typeof encoding === 'function') { + callback = encoding + encoding = 'utf8' + } + + const dir = path.dirname(file) + pathExists(dir, (err, itDoes) => { + if (err) return callback(err) + if (itDoes) return fs.writeFile(file, data, encoding, callback) + + mkdir.mkdirs(dir, err => { + if (err) return callback(err) + + fs.writeFile(file, data, encoding, callback) + }) + }) +} + +function outputFileSync (file, data, encoding) { + const dir = path.dirname(file) + if (fs.existsSync(dir)) { + return fs.writeFileSync.apply(fs, arguments) + } + mkdir.mkdirsSync(dir) + fs.writeFileSync.apply(fs, arguments) +} + +module.exports = { + outputFile: u(outputFile), + outputFileSync +} + + +/***/ }), + +/***/ 49767: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +const u = (__webpack_require__(55399)/* .fromPromise */ .z) +const fs = __webpack_require__(46596) + +function pathExists (path) { + return fs.access(path).then(() => true).catch(() => false) +} + +module.exports = { + pathExists: u(pathExists), + pathExistsSync: fs.existsSync +} + + +/***/ }), + +/***/ 16195: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const u = (__webpack_require__(55399)/* .fromCallback */ .S) +const rimraf = __webpack_require__(54322) + +module.exports = { + remove: u(rimraf), + removeSync: rimraf.sync +} + + +/***/ }), + +/***/ 54322: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const path = __webpack_require__(16928) +const assert = __webpack_require__(42613) + +const isWindows = (process.platform === 'win32') + +function defaults (options) { + const methods = [ + 'unlink', + 'chmod', + 'stat', + 'lstat', + 'rmdir', + 'readdir' + ] + methods.forEach(m => { + options[m] = options[m] || fs[m] + m = m + 'Sync' + options[m] = options[m] || fs[m] + }) + + options.maxBusyTries = options.maxBusyTries || 3 +} + +function rimraf (p, options, cb) { + let busyTries = 0 + + if (typeof options === 'function') { + cb = options + options = {} + } + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert.equal(typeof cb, 'function', 'rimraf: callback function required') + assert(options, 'rimraf: invalid options argument provided') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + defaults(options) + + rimraf_(p, options, function CB (er) { + if (er) { + if ((er.code === 'EBUSY' || er.code === 'ENOTEMPTY' || er.code === 'EPERM') && + busyTries < options.maxBusyTries) { + busyTries++ + let time = busyTries * 100 + // try again, with the same exact callback as this one. + return setTimeout(() => rimraf_(p, options, CB), time) + } + + // already gone + if (er.code === 'ENOENT') er = null + } + + cb(er) + }) +} + +// Two possible strategies. +// 1. Assume it's a file. unlink it, then do the dir stuff on EPERM or EISDIR +// 2. Assume it's a directory. readdir, then do the file stuff on ENOTDIR +// +// Both result in an extra syscall when you guess wrong. However, there +// are likely far more normal files in the world than directories. This +// is based on the assumption that a the average number of files per +// directory is >= 1. +// +// If anyone ever complains about this, then I guess the strategy could +// be made configurable somehow. But until then, YAGNI. +function rimraf_ (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + // sunos lets the root user unlink directories, which is... weird. + // so we have to lstat here and make sure it's not a dir. + options.lstat(p, (er, st) => { + if (er && er.code === 'ENOENT') { + return cb(null) + } + + // Windows can EPERM on stat. Life is suffering. + if (er && er.code === 'EPERM' && isWindows) { + return fixWinEPERM(p, options, er, cb) + } + + if (st && st.isDirectory()) { + return rmdir(p, options, er, cb) + } + + options.unlink(p, er => { + if (er) { + if (er.code === 'ENOENT') { + return cb(null) + } + if (er.code === 'EPERM') { + return (isWindows) + ? fixWinEPERM(p, options, er, cb) + : rmdir(p, options, er, cb) + } + if (er.code === 'EISDIR') { + return rmdir(p, options, er, cb) + } + } + return cb(er) + }) + }) +} + +function fixWinEPERM (p, options, er, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + if (er) { + assert(er instanceof Error) + } + + options.chmod(p, 0o666, er2 => { + if (er2) { + cb(er2.code === 'ENOENT' ? null : er) + } else { + options.stat(p, (er3, stats) => { + if (er3) { + cb(er3.code === 'ENOENT' ? null : er) + } else if (stats.isDirectory()) { + rmdir(p, options, er, cb) + } else { + options.unlink(p, cb) + } + }) + } + }) +} + +function fixWinEPERMSync (p, options, er) { + let stats + + assert(p) + assert(options) + if (er) { + assert(er instanceof Error) + } + + try { + options.chmodSync(p, 0o666) + } catch (er2) { + if (er2.code === 'ENOENT') { + return + } else { + throw er + } + } + + try { + stats = options.statSync(p) + } catch (er3) { + if (er3.code === 'ENOENT') { + return + } else { + throw er + } + } + + if (stats.isDirectory()) { + rmdirSync(p, options, er) + } else { + options.unlinkSync(p) + } +} + +function rmdir (p, options, originalEr, cb) { + assert(p) + assert(options) + if (originalEr) { + assert(originalEr instanceof Error) + } + assert(typeof cb === 'function') + + // try to rmdir first, and only readdir on ENOTEMPTY or EEXIST (SunOS) + // if we guessed wrong, and it's not a directory, then + // raise the original error. + options.rmdir(p, er => { + if (er && (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM')) { + rmkids(p, options, cb) + } else if (er && er.code === 'ENOTDIR') { + cb(originalEr) + } else { + cb(er) + } + }) +} + +function rmkids (p, options, cb) { + assert(p) + assert(options) + assert(typeof cb === 'function') + + options.readdir(p, (er, files) => { + if (er) return cb(er) + + let n = files.length + let errState + + if (n === 0) return options.rmdir(p, cb) + + files.forEach(f => { + rimraf(path.join(p, f), options, er => { + if (errState) { + return + } + if (er) return cb(errState = er) + if (--n === 0) { + options.rmdir(p, cb) + } + }) + }) + }) +} + +// this looks simpler, and is strictly *faster*, but will +// tie up the JavaScript thread and fail on excessively +// deep directory trees. +function rimrafSync (p, options) { + let st + + options = options || {} + defaults(options) + + assert(p, 'rimraf: missing path') + assert.equal(typeof p, 'string', 'rimraf: path should be a string') + assert(options, 'rimraf: missing options') + assert.equal(typeof options, 'object', 'rimraf: options should be object') + + try { + st = options.lstatSync(p) + } catch (er) { + if (er.code === 'ENOENT') { + return + } + + // Windows can EPERM on stat. Life is suffering. + if (er.code === 'EPERM' && isWindows) { + fixWinEPERMSync(p, options, er) + } + } + + try { + // sunos lets the root user unlink directories, which is... weird. + if (st && st.isDirectory()) { + rmdirSync(p, options, null) + } else { + options.unlinkSync(p) + } + } catch (er) { + if (er.code === 'ENOENT') { + return + } else if (er.code === 'EPERM') { + return isWindows ? fixWinEPERMSync(p, options, er) : rmdirSync(p, options, er) + } else if (er.code !== 'EISDIR') { + throw er + } + rmdirSync(p, options, er) + } +} + +function rmdirSync (p, options, originalEr) { + assert(p) + assert(options) + if (originalEr) { + assert(originalEr instanceof Error) + } + + try { + options.rmdirSync(p) + } catch (er) { + if (er.code === 'ENOTDIR') { + throw originalEr + } else if (er.code === 'ENOTEMPTY' || er.code === 'EEXIST' || er.code === 'EPERM') { + rmkidsSync(p, options) + } else if (er.code !== 'ENOENT') { + throw er + } + } +} + +function rmkidsSync (p, options) { + assert(p) + assert(options) + options.readdirSync(p).forEach(f => rimrafSync(path.join(p, f), options)) + + // We only end up here once we got ENOTEMPTY at least once, and + // at this point, we are guaranteed to have removed all the kids. + // So, we know that it won't be ENOENT or ENOTDIR or anything else. + // try really hard to delete stuff on windows, because it has a + // PROFOUNDLY annoying habit of not closing handles promptly when + // files are deleted, resulting in spurious ENOTEMPTY errors. + const retries = isWindows ? 100 : 1 + let i = 0 + do { + let threw = true + try { + const ret = options.rmdirSync(p, options) + threw = false + return ret + } finally { + if (++i < retries && threw) continue // eslint-disable-line + } + } while (true) +} + +module.exports = rimraf +rimraf.sync = rimrafSync + + +/***/ }), + +/***/ 3762: +/***/ ((module) => { + +"use strict"; + + +// simple mutable assign +function assign () { + const args = [].slice.call(arguments).filter(i => i) + const dest = args.shift() + args.forEach(src => { + Object.keys(src).forEach(key => { + dest[key] = src[key] + }) + }) + + return dest +} + +module.exports = assign + + +/***/ }), + +/***/ 34549: +/***/ ((module) => { + +/* eslint-disable node/no-deprecated-api */ +module.exports = function (size) { + if (typeof Buffer.allocUnsafe === 'function') { + try { + return Buffer.allocUnsafe(size) + } catch (e) { + return new Buffer(size) + } + } + return new Buffer(size) +} + + +/***/ }), + +/***/ 90348: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + + +const fs = __webpack_require__(71174) +const os = __webpack_require__(70857) +const path = __webpack_require__(16928) + +// HFS, ext{2,3}, FAT do not, Node.js v0.10 does not +function hasMillisResSync () { + let tmpfile = path.join('millis-test-sync' + Date.now().toString() + Math.random().toString().slice(2)) + tmpfile = path.join(os.tmpdir(), tmpfile) + + // 550 millis past UNIX epoch + const d = new Date(1435410243862) + fs.writeFileSync(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141') + const fd = fs.openSync(tmpfile, 'r+') + fs.futimesSync(fd, d, d) + fs.closeSync(fd) + return fs.statSync(tmpfile).mtime > 1435410243000 +} + +function hasMillisRes (callback) { + let tmpfile = path.join('millis-test' + Date.now().toString() + Math.random().toString().slice(2)) + tmpfile = path.join(os.tmpdir(), tmpfile) + + // 550 millis past UNIX epoch + const d = new Date(1435410243862) + fs.writeFile(tmpfile, 'https://github.com/jprichardson/node-fs-extra/pull/141', err => { + if (err) return callback(err) + fs.open(tmpfile, 'r+', (err, fd) => { + if (err) return callback(err) + fs.futimes(fd, d, d, err => { + if (err) return callback(err) + fs.close(fd, err => { + if (err) return callback(err) + fs.stat(tmpfile, (err, stats) => { + if (err) return callback(err) + callback(null, stats.mtime > 1435410243000) + }) + }) + }) + }) + }) +} + +function timeRemoveMillis (timestamp) { + if (typeof timestamp === 'number') { + return Math.floor(timestamp / 1000) * 1000 + } else if (timestamp instanceof Date) { + return new Date(Math.floor(timestamp.getTime() / 1000) * 1000) + } else { + throw new Error('fs-extra: timeRemoveMillis() unknown parameter type') + } +} + +function utimesMillis (path, atime, mtime, callback) { + // if (!HAS_MILLIS_RES) return fs.utimes(path, atime, mtime, callback) + fs.open(path, 'r+', (err, fd) => { + if (err) return callback(err) + fs.futimes(fd, atime, mtime, futimesErr => { + fs.close(fd, closeErr => { + if (callback) callback(futimesErr || closeErr) + }) + }) + }) +} + +module.exports = { + hasMillisRes, + hasMillisResSync, + timeRemoveMillis, + utimesMillis +} + + /***/ }), /***/ 63423: @@ -29294,6 +14014,979 @@ function expand(str, isTop) { +/***/ }), + +/***/ 77398: +/***/ ((module) => { + +"use strict"; + + +module.exports = clone + +var getPrototypeOf = Object.getPrototypeOf || function (obj) { + return obj.__proto__ +} + +function clone (obj) { + if (obj === null || typeof obj !== 'object') + return obj + + if (obj instanceof Object) + var copy = { __proto__: getPrototypeOf(obj) } + else + var copy = Object.create(null) + + Object.getOwnPropertyNames(obj).forEach(function (key) { + Object.defineProperty(copy, key, Object.getOwnPropertyDescriptor(obj, key)) + }) + + return copy +} + + +/***/ }), + +/***/ 71174: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var fs = __webpack_require__(79896) +var polyfills = __webpack_require__(19023) +var legacy = __webpack_require__(76244) +var clone = __webpack_require__(77398) + +var util = __webpack_require__(39023) + +/* istanbul ignore next - node 0.x polyfill */ +var gracefulQueue +var previousSymbol + +/* istanbul ignore else - node 0.x polyfill */ +if (typeof Symbol === 'function' && typeof Symbol.for === 'function') { + gracefulQueue = Symbol.for('graceful-fs.queue') + // This is used in testing by future versions + previousSymbol = Symbol.for('graceful-fs.previous') +} else { + gracefulQueue = '___graceful-fs.queue' + previousSymbol = '___graceful-fs.previous' +} + +function noop () {} + +function publishQueue(context, queue) { + Object.defineProperty(context, gracefulQueue, { + get: function() { + return queue + } + }) +} + +var debug = noop +if (util.debuglog) + debug = util.debuglog('gfs4') +else if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) + debug = function() { + var m = util.format.apply(util, arguments) + m = 'GFS4: ' + m.split(/\n/).join('\nGFS4: ') + console.error(m) + } + +// Once time initialization +if (!fs[gracefulQueue]) { + // This queue can be shared by multiple loaded instances + var queue = global[gracefulQueue] || [] + publishQueue(fs, queue) + + // Patch fs.close/closeSync to shared queue version, because we need + // to retry() whenever a close happens *anywhere* in the program. + // This is essential when multiple graceful-fs instances are + // in play at the same time. + fs.close = (function (fs$close) { + function close (fd, cb) { + return fs$close.call(fs, fd, function (err) { + // This function uses the graceful-fs shared queue + if (!err) { + resetQueue() + } + + if (typeof cb === 'function') + cb.apply(this, arguments) + }) + } + + Object.defineProperty(close, previousSymbol, { + value: fs$close + }) + return close + })(fs.close) + + fs.closeSync = (function (fs$closeSync) { + function closeSync (fd) { + // This function uses the graceful-fs shared queue + fs$closeSync.apply(fs, arguments) + resetQueue() + } + + Object.defineProperty(closeSync, previousSymbol, { + value: fs$closeSync + }) + return closeSync + })(fs.closeSync) + + if (/\bgfs4\b/i.test(process.env.NODE_DEBUG || '')) { + process.on('exit', function() { + debug(fs[gracefulQueue]) + __webpack_require__(42613).equal(fs[gracefulQueue].length, 0) + }) + } +} + +if (!global[gracefulQueue]) { + publishQueue(global, fs[gracefulQueue]); +} + +module.exports = patch(clone(fs)) +if (process.env.TEST_GRACEFUL_FS_GLOBAL_PATCH && !fs.__patched) { + module.exports = patch(fs) + fs.__patched = true; +} + +function patch (fs) { + // Everything that references the open() function needs to be in here + polyfills(fs) + fs.gracefulify = patch + + fs.createReadStream = createReadStream + fs.createWriteStream = createWriteStream + var fs$readFile = fs.readFile + fs.readFile = readFile + function readFile (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$readFile(path, options, cb) + + function go$readFile (path, options, cb, startTime) { + return fs$readFile(path, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$readFile, [path, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$writeFile = fs.writeFile + fs.writeFile = writeFile + function writeFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$writeFile(path, data, options, cb) + + function go$writeFile (path, data, options, cb, startTime) { + return fs$writeFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$writeFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$appendFile = fs.appendFile + if (fs$appendFile) + fs.appendFile = appendFile + function appendFile (path, data, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + return go$appendFile(path, data, options, cb) + + function go$appendFile (path, data, options, cb, startTime) { + return fs$appendFile(path, data, options, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$appendFile, [path, data, options, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$copyFile = fs.copyFile + if (fs$copyFile) + fs.copyFile = copyFile + function copyFile (src, dest, flags, cb) { + if (typeof flags === 'function') { + cb = flags + flags = 0 + } + return go$copyFile(src, dest, flags, cb) + + function go$copyFile (src, dest, flags, cb, startTime) { + return fs$copyFile(src, dest, flags, function (err) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$copyFile, [src, dest, flags, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + var fs$readdir = fs.readdir + fs.readdir = readdir + var noReaddirOptionVersions = /^v[0-5]\./ + function readdir (path, options, cb) { + if (typeof options === 'function') + cb = options, options = null + + var go$readdir = noReaddirOptionVersions.test(process.version) + ? function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, fs$readdirCallback( + path, options, cb, startTime + )) + } + : function go$readdir (path, options, cb, startTime) { + return fs$readdir(path, options, fs$readdirCallback( + path, options, cb, startTime + )) + } + + return go$readdir(path, options, cb) + + function fs$readdirCallback (path, options, cb, startTime) { + return function (err, files) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([ + go$readdir, + [path, options, cb], + err, + startTime || Date.now(), + Date.now() + ]) + else { + if (files && files.sort) + files.sort() + + if (typeof cb === 'function') + cb.call(this, err, files) + } + } + } + } + + if (process.version.substr(0, 4) === 'v0.8') { + var legStreams = legacy(fs) + ReadStream = legStreams.ReadStream + WriteStream = legStreams.WriteStream + } + + var fs$ReadStream = fs.ReadStream + if (fs$ReadStream) { + ReadStream.prototype = Object.create(fs$ReadStream.prototype) + ReadStream.prototype.open = ReadStream$open + } + + var fs$WriteStream = fs.WriteStream + if (fs$WriteStream) { + WriteStream.prototype = Object.create(fs$WriteStream.prototype) + WriteStream.prototype.open = WriteStream$open + } + + Object.defineProperty(fs, 'ReadStream', { + get: function () { + return ReadStream + }, + set: function (val) { + ReadStream = val + }, + enumerable: true, + configurable: true + }) + Object.defineProperty(fs, 'WriteStream', { + get: function () { + return WriteStream + }, + set: function (val) { + WriteStream = val + }, + enumerable: true, + configurable: true + }) + + // legacy names + var FileReadStream = ReadStream + Object.defineProperty(fs, 'FileReadStream', { + get: function () { + return FileReadStream + }, + set: function (val) { + FileReadStream = val + }, + enumerable: true, + configurable: true + }) + var FileWriteStream = WriteStream + Object.defineProperty(fs, 'FileWriteStream', { + get: function () { + return FileWriteStream + }, + set: function (val) { + FileWriteStream = val + }, + enumerable: true, + configurable: true + }) + + function ReadStream (path, options) { + if (this instanceof ReadStream) + return fs$ReadStream.apply(this, arguments), this + else + return ReadStream.apply(Object.create(ReadStream.prototype), arguments) + } + + function ReadStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + if (that.autoClose) + that.destroy() + + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + that.read() + } + }) + } + + function WriteStream (path, options) { + if (this instanceof WriteStream) + return fs$WriteStream.apply(this, arguments), this + else + return WriteStream.apply(Object.create(WriteStream.prototype), arguments) + } + + function WriteStream$open () { + var that = this + open(that.path, that.flags, that.mode, function (err, fd) { + if (err) { + that.destroy() + that.emit('error', err) + } else { + that.fd = fd + that.emit('open', fd) + } + }) + } + + function createReadStream (path, options) { + return new fs.ReadStream(path, options) + } + + function createWriteStream (path, options) { + return new fs.WriteStream(path, options) + } + + var fs$open = fs.open + fs.open = open + function open (path, flags, mode, cb) { + if (typeof mode === 'function') + cb = mode, mode = null + + return go$open(path, flags, mode, cb) + + function go$open (path, flags, mode, cb, startTime) { + return fs$open(path, flags, mode, function (err, fd) { + if (err && (err.code === 'EMFILE' || err.code === 'ENFILE')) + enqueue([go$open, [path, flags, mode, cb], err, startTime || Date.now(), Date.now()]) + else { + if (typeof cb === 'function') + cb.apply(this, arguments) + } + }) + } + } + + return fs +} + +function enqueue (elem) { + debug('ENQUEUE', elem[0].name, elem[1]) + fs[gracefulQueue].push(elem) + retry() +} + +// keep track of the timeout between retry() calls +var retryTimer + +// reset the startTime and lastTime to now +// this resets the start of the 60 second overall timeout as well as the +// delay between attempts so that we'll retry these jobs sooner +function resetQueue () { + var now = Date.now() + for (var i = 0; i < fs[gracefulQueue].length; ++i) { + // entries that are only a length of 2 are from an older version, don't + // bother modifying those since they'll be retried anyway. + if (fs[gracefulQueue][i].length > 2) { + fs[gracefulQueue][i][3] = now // startTime + fs[gracefulQueue][i][4] = now // lastTime + } + } + // call retry to make sure we're actively processing the queue + retry() +} + +function retry () { + // clear the timer and remove it to help prevent unintended concurrency + clearTimeout(retryTimer) + retryTimer = undefined + + if (fs[gracefulQueue].length === 0) + return + + var elem = fs[gracefulQueue].shift() + var fn = elem[0] + var args = elem[1] + // these items may be unset if they were added by an older graceful-fs + var err = elem[2] + var startTime = elem[3] + var lastTime = elem[4] + + // if we don't have a startTime we have no way of knowing if we've waited + // long enough, so go ahead and retry this item now + if (startTime === undefined) { + debug('RETRY', fn.name, args) + fn.apply(null, args) + } else if (Date.now() - startTime >= 60000) { + // it's been more than 60 seconds total, bail now + debug('TIMEOUT', fn.name, args) + var cb = args.pop() + if (typeof cb === 'function') + cb.call(null, err) + } else { + // the amount of time between the last attempt and right now + var sinceAttempt = Date.now() - lastTime + // the amount of time between when we first tried, and when we last tried + // rounded up to at least 1 + var sinceStart = Math.max(lastTime - startTime, 1) + // backoff. wait longer than the total time we've been retrying, but only + // up to a maximum of 100ms + var desiredDelay = Math.min(sinceStart * 1.2, 100) + // it's been long enough since the last retry, do it again + if (sinceAttempt >= desiredDelay) { + debug('RETRY', fn.name, args) + fn.apply(null, args.concat([startTime])) + } else { + // if we can't do this job yet, push it to the end of the queue + // and let the next iteration check again + fs[gracefulQueue].push(elem) + } + } + + // schedule our next run if one isn't already scheduled + if (retryTimer === undefined) { + retryTimer = setTimeout(retry, 0) + } +} + + +/***/ }), + +/***/ 76244: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var Stream = (__webpack_require__(2203).Stream) + +module.exports = legacy + +function legacy (fs) { + return { + ReadStream: ReadStream, + WriteStream: WriteStream + } + + function ReadStream (path, options) { + if (!(this instanceof ReadStream)) return new ReadStream(path, options); + + Stream.call(this); + + var self = this; + + this.path = path; + this.fd = null; + this.readable = true; + this.paused = false; + + this.flags = 'r'; + this.mode = 438; /*=0666*/ + this.bufferSize = 64 * 1024; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.encoding) this.setEncoding(this.encoding); + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.end === undefined) { + this.end = Infinity; + } else if ('number' !== typeof this.end) { + throw TypeError('end must be a Number'); + } + + if (this.start > this.end) { + throw new Error('start must be <= end'); + } + + this.pos = this.start; + } + + if (this.fd !== null) { + process.nextTick(function() { + self._read(); + }); + return; + } + + fs.open(this.path, this.flags, this.mode, function (err, fd) { + if (err) { + self.emit('error', err); + self.readable = false; + return; + } + + self.fd = fd; + self.emit('open', fd); + self._read(); + }) + } + + function WriteStream (path, options) { + if (!(this instanceof WriteStream)) return new WriteStream(path, options); + + Stream.call(this); + + this.path = path; + this.fd = null; + this.writable = true; + + this.flags = 'w'; + this.encoding = 'binary'; + this.mode = 438; /*=0666*/ + this.bytesWritten = 0; + + options = options || {}; + + // Mixin options into this + var keys = Object.keys(options); + for (var index = 0, length = keys.length; index < length; index++) { + var key = keys[index]; + this[key] = options[key]; + } + + if (this.start !== undefined) { + if ('number' !== typeof this.start) { + throw TypeError('start must be a Number'); + } + if (this.start < 0) { + throw new Error('start must be >= zero'); + } + + this.pos = this.start; + } + + this.busy = false; + this._queue = []; + + if (this.fd === null) { + this._open = fs.open; + this._queue.push([this._open, this.path, this.flags, this.mode, undefined]); + this.flush(); + } + } +} + + +/***/ }), + +/***/ 19023: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var constants = __webpack_require__(49140) + +var origCwd = process.cwd +var cwd = null + +var platform = process.env.GRACEFUL_FS_PLATFORM || process.platform + +process.cwd = function() { + if (!cwd) + cwd = origCwd.call(process) + return cwd +} +try { + process.cwd() +} catch (er) {} + +// This check is needed until node.js 12 is required +if (typeof process.chdir === 'function') { + var chdir = process.chdir + process.chdir = function (d) { + cwd = null + chdir.call(process, d) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(process.chdir, chdir) +} + +module.exports = patch + +function patch (fs) { + // (re-)implement some things that are known busted or missing. + + // lchmod, broken prior to 0.6.2 + // back-port the fix here. + if (constants.hasOwnProperty('O_SYMLINK') && + process.version.match(/^v0\.6\.[0-2]|^v0\.5\./)) { + patchLchmod(fs) + } + + // lutimes implementation, or no-op + if (!fs.lutimes) { + patchLutimes(fs) + } + + // https://github.com/isaacs/node-graceful-fs/issues/4 + // Chown should not fail on einval or eperm if non-root. + // It should not fail on enosys ever, as this just indicates + // that a fs doesn't support the intended operation. + + fs.chown = chownFix(fs.chown) + fs.fchown = chownFix(fs.fchown) + fs.lchown = chownFix(fs.lchown) + + fs.chmod = chmodFix(fs.chmod) + fs.fchmod = chmodFix(fs.fchmod) + fs.lchmod = chmodFix(fs.lchmod) + + fs.chownSync = chownFixSync(fs.chownSync) + fs.fchownSync = chownFixSync(fs.fchownSync) + fs.lchownSync = chownFixSync(fs.lchownSync) + + fs.chmodSync = chmodFixSync(fs.chmodSync) + fs.fchmodSync = chmodFixSync(fs.fchmodSync) + fs.lchmodSync = chmodFixSync(fs.lchmodSync) + + fs.stat = statFix(fs.stat) + fs.fstat = statFix(fs.fstat) + fs.lstat = statFix(fs.lstat) + + fs.statSync = statFixSync(fs.statSync) + fs.fstatSync = statFixSync(fs.fstatSync) + fs.lstatSync = statFixSync(fs.lstatSync) + + // if lchmod/lchown do not exist, then make them no-ops + if (fs.chmod && !fs.lchmod) { + fs.lchmod = function (path, mode, cb) { + if (cb) process.nextTick(cb) + } + fs.lchmodSync = function () {} + } + if (fs.chown && !fs.lchown) { + fs.lchown = function (path, uid, gid, cb) { + if (cb) process.nextTick(cb) + } + fs.lchownSync = function () {} + } + + // on Windows, A/V software can lock the directory, causing this + // to fail with an EACCES or EPERM if the directory contains newly + // created files. Try again on failure, for up to 60 seconds. + + // Set the timeout this long because some Windows Anti-Virus, such as Parity + // bit9, may lock files for up to a minute, causing npm package install + // failures. Also, take care to yield the scheduler. Windows scheduling gives + // CPU to a busy looping process, which can cause the program causing the lock + // contention to be starved of CPU by node, so the contention doesn't resolve. + if (platform === "win32") { + fs.rename = typeof fs.rename !== 'function' ? fs.rename + : (function (fs$rename) { + function rename (from, to, cb) { + var start = Date.now() + var backoff = 0; + fs$rename(from, to, function CB (er) { + if (er + && (er.code === "EACCES" || er.code === "EPERM" || er.code === "EBUSY") + && Date.now() - start < 60000) { + setTimeout(function() { + fs.stat(to, function (stater, st) { + if (stater && stater.code === "ENOENT") + fs$rename(from, to, CB); + else + cb(er) + }) + }, backoff) + if (backoff < 100) + backoff += 10; + return; + } + if (cb) cb(er) + }) + } + if (Object.setPrototypeOf) Object.setPrototypeOf(rename, fs$rename) + return rename + })(fs.rename) + } + + // if read() returns EAGAIN, then just try it again. + fs.read = typeof fs.read !== 'function' ? fs.read + : (function (fs$read) { + function read (fd, buffer, offset, length, position, callback_) { + var callback + if (callback_ && typeof callback_ === 'function') { + var eagCounter = 0 + callback = function (er, _, __) { + if (er && er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + callback_.apply(this, arguments) + } + } + return fs$read.call(fs, fd, buffer, offset, length, position, callback) + } + + // This ensures `util.promisify` works as it does for native `fs.read`. + if (Object.setPrototypeOf) Object.setPrototypeOf(read, fs$read) + return read + })(fs.read) + + fs.readSync = typeof fs.readSync !== 'function' ? fs.readSync + : (function (fs$readSync) { return function (fd, buffer, offset, length, position) { + var eagCounter = 0 + while (true) { + try { + return fs$readSync.call(fs, fd, buffer, offset, length, position) + } catch (er) { + if (er.code === 'EAGAIN' && eagCounter < 10) { + eagCounter ++ + continue + } + throw er + } + } + }})(fs.readSync) + + function patchLchmod (fs) { + fs.lchmod = function (path, mode, callback) { + fs.open( path + , constants.O_WRONLY | constants.O_SYMLINK + , mode + , function (err, fd) { + if (err) { + if (callback) callback(err) + return + } + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + fs.fchmod(fd, mode, function (err) { + fs.close(fd, function(err2) { + if (callback) callback(err || err2) + }) + }) + }) + } + + fs.lchmodSync = function (path, mode) { + var fd = fs.openSync(path, constants.O_WRONLY | constants.O_SYMLINK, mode) + + // prefer to return the chmod error, if one occurs, + // but still try to close, and report closing errors if they occur. + var threw = true + var ret + try { + ret = fs.fchmodSync(fd, mode) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + } + + function patchLutimes (fs) { + if (constants.hasOwnProperty("O_SYMLINK") && fs.futimes) { + fs.lutimes = function (path, at, mt, cb) { + fs.open(path, constants.O_SYMLINK, function (er, fd) { + if (er) { + if (cb) cb(er) + return + } + fs.futimes(fd, at, mt, function (er) { + fs.close(fd, function (er2) { + if (cb) cb(er || er2) + }) + }) + }) + } + + fs.lutimesSync = function (path, at, mt) { + var fd = fs.openSync(path, constants.O_SYMLINK) + var ret + var threw = true + try { + ret = fs.futimesSync(fd, at, mt) + threw = false + } finally { + if (threw) { + try { + fs.closeSync(fd) + } catch (er) {} + } else { + fs.closeSync(fd) + } + } + return ret + } + + } else if (fs.futimes) { + fs.lutimes = function (_a, _b, _c, cb) { if (cb) process.nextTick(cb) } + fs.lutimesSync = function () {} + } + } + + function chmodFix (orig) { + if (!orig) return orig + return function (target, mode, cb) { + return orig.call(fs, target, mode, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chmodFixSync (orig) { + if (!orig) return orig + return function (target, mode) { + try { + return orig.call(fs, target, mode) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + + function chownFix (orig) { + if (!orig) return orig + return function (target, uid, gid, cb) { + return orig.call(fs, target, uid, gid, function (er) { + if (chownErOk(er)) er = null + if (cb) cb.apply(this, arguments) + }) + } + } + + function chownFixSync (orig) { + if (!orig) return orig + return function (target, uid, gid) { + try { + return orig.call(fs, target, uid, gid) + } catch (er) { + if (!chownErOk(er)) throw er + } + } + } + + function statFix (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options, cb) { + if (typeof options === 'function') { + cb = options + options = null + } + function callback (er, stats) { + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + if (cb) cb.apply(this, arguments) + } + return options ? orig.call(fs, target, options, callback) + : orig.call(fs, target, callback) + } + } + + function statFixSync (orig) { + if (!orig) return orig + // Older versions of Node erroneously returned signed integers for + // uid + gid. + return function (target, options) { + var stats = options ? orig.call(fs, target, options) + : orig.call(fs, target) + if (stats) { + if (stats.uid < 0) stats.uid += 0x100000000 + if (stats.gid < 0) stats.gid += 0x100000000 + } + return stats; + } + } + + // ENOSYS means that the fs doesn't support the op. Just ignore + // that, because it doesn't matter. + // + // if there's no getuid, or if getuid() is something other + // than 0, and the error is EINVAL or EPERM, then just ignore + // it. + // + // This specific case is a silent failure in cp, install, tar, + // and most other unix tools that manage permissions. + // + // When running as root, or if other types of errors are + // encountered, then it's strict. + function chownErOk (er) { + if (!er) + return true + + if (er.code === "ENOSYS") + return true + + var nonroot = !process.getuid || process.getuid() !== 0 + if (nonroot) { + if (er.code === "EINVAL" || er.code === "EPERM") + return true + } + + return false + } +} + + /***/ }), /***/ 53972: @@ -29438,6 +15131,656 @@ isStream.transform = stream => module.exports = isStream; +/***/ }), + +/***/ 82162: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +var _fs +try { + _fs = __webpack_require__(71174) +} catch (_) { + _fs = __webpack_require__(79896) +} + +function readFile (file, options, callback) { + if (callback == null) { + callback = options + options = {} + } + + if (typeof options === 'string') { + options = {encoding: options} + } + + options = options || {} + var fs = options.fs || _fs + + var shouldThrow = true + if ('throws' in options) { + shouldThrow = options.throws + } + + fs.readFile(file, options, function (err, data) { + if (err) return callback(err) + + data = stripBom(data) + + var obj + try { + obj = JSON.parse(data, options ? options.reviver : null) + } catch (err2) { + if (shouldThrow) { + err2.message = file + ': ' + err2.message + return callback(err2) + } else { + return callback(null, null) + } + } + + callback(null, obj) + }) +} + +function readFileSync (file, options) { + options = options || {} + if (typeof options === 'string') { + options = {encoding: options} + } + + var fs = options.fs || _fs + + var shouldThrow = true + if ('throws' in options) { + shouldThrow = options.throws + } + + try { + var content = fs.readFileSync(file, options) + content = stripBom(content) + return JSON.parse(content, options.reviver) + } catch (err) { + if (shouldThrow) { + err.message = file + ': ' + err.message + throw err + } else { + return null + } + } +} + +function stringify (obj, options) { + var spaces + var EOL = '\n' + if (typeof options === 'object' && options !== null) { + if (options.spaces) { + spaces = options.spaces + } + if (options.EOL) { + EOL = options.EOL + } + } + + var str = JSON.stringify(obj, options ? options.replacer : null, spaces) + + return str.replace(/\n/g, EOL) + EOL +} + +function writeFile (file, obj, options, callback) { + if (callback == null) { + callback = options + options = {} + } + options = options || {} + var fs = options.fs || _fs + + var str = '' + try { + str = stringify(obj, options) + } catch (err) { + // Need to return whether a callback was passed or not + if (callback) callback(err, null) + return + } + + fs.writeFile(file, str, options, callback) +} + +function writeFileSync (file, obj, options) { + options = options || {} + var fs = options.fs || _fs + + var str = stringify(obj, options) + // not sure if fs.writeFileSync returns anything, but just in case + return fs.writeFileSync(file, str, options) +} + +function stripBom (content) { + // we do this because JSON.parse would convert it to a utf8 string if encoding wasn't specified + if (Buffer.isBuffer(content)) content = content.toString('utf8') + content = content.replace(/^\uFEFF/, '') + return content +} + +var jsonfile = { + readFile: readFile, + readFileSync: readFileSync, + writeFile: writeFile, + writeFileSync: writeFileSync +} + +module.exports = jsonfile + + +/***/ }), + +/***/ 58538: +/***/ ((__unused_webpack_module, exports, __webpack_require__) => { + +"use strict"; +var __webpack_unused_export__; + +__webpack_unused_export__ = ({ value: true }); +__webpack_unused_export__ = exports.Sk = exports.Ur = void 0; +__webpack_unused_export__ = makeField; +const tslib_1 = __webpack_require__(94914); +const os = tslib_1.__importStar(__webpack_require__(70857)); +const fs = tslib_1.__importStar(__webpack_require__(56922)); +const events_1 = tslib_1.__importDefault(__webpack_require__(24434)); +const serialize_1 = __webpack_require__(77283); +exports.Ur = { + deserialize: serialize_1.defaultDeserialize, + dialect: 'redis', + expiredCheckDelay: 24 * 3600 * 1000, // ms + filename: `${os.tmpdir()}/keyv-file/default.json`, + serialize: serialize_1.defaultSerialize, + writeDelay: 100, // ms + checkFileLock: false, +}; +function isNumber(val) { + return typeof val === 'number'; +} +class KeyvFile extends events_1.default { + constructor(options) { + super(); + this.ttlSupport = true; + this.opts = Object.assign({}, exports.Ur, options); + if (this.opts.checkFileLock) { + this.acquireFileLock(); + } + try { + const data = this.opts.deserialize(fs.readFileSync(this.opts.filename, 'utf8')); + if (!Array.isArray(data.cache)) { + const _cache = data.cache; + data.cache = []; + for (const key in _cache) { + if (_cache.hasOwnProperty(key)) { + data.cache.push([key, _cache[key]]); + } + } + } + this._cache = new Map(data.cache); + this._lastExpire = data.lastExpire; + } + catch (e) { + this._cache = new Map(); + this._lastExpire = Date.now(); + } + } + get _lockFile() { + return this.opts.filename + '.lock'; + } + acquireFileLock() { + try { + let fd = fs.openSync(this._lockFile, 'wx'); + fs.closeSync(fd); + process.on('SIGINT', () => { + this.releaseFileLock(); + process.exit(0); + }); + process.on('exit', () => { + this.releaseFileLock(); + }); + } + catch (error) { + console.error(`[keyv-file] There is another process using this file`); + throw error; + } + } + releaseFileLock() { + try { + fs.unlinkSync(this._lockFile); + } + catch (_a) { + //pass + } + } + get(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + return Promise.resolve(this.getSync(key)); + }); + } + getSync(key) { + try { + const data = this._cache.get(key); + if (!data) { + return undefined; + } + else if (this.isExpired(data)) { + this.delete(key); + return undefined; + } + else { + return data.value; + } + } + catch (error) { + // do nothing; + } + } + getMany(keys) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const results = yield Promise.all(keys.map((key) => tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield this.get(key); + return value; + }))); + return results; + }); + } + set(key, value, ttl) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + if (ttl === 0) { + ttl = undefined; + } + this._cache.set(key, { + expire: isNumber(ttl) ? Date.now() + ttl : undefined, + value: value, + }); + return this.save(); + }); + } + delete(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const ret = this._cache.delete(key); + yield this.save(); + return ret; + }); + } + deleteMany(keys) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const deletePromises = keys.map((key) => this.delete(key)); + const results = yield Promise.all(deletePromises); + return results.every((result) => result); + }); + } + clear() { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + this._cache = new Map(); + this._lastExpire = Date.now(); + return this.save(); + }); + } + has(key) { + return tslib_1.__awaiter(this, void 0, void 0, function* () { + const value = yield this.get(key); + return value !== undefined; + }); + } + isExpired(data) { + return isNumber(data.expire) && data.expire <= Date.now(); + } + clearExpire() { + const now = Date.now(); + if (now - this._lastExpire <= this.opts.expiredCheckDelay) { + return; + } + for (const key of this._cache.keys()) { + const data = this._cache.get(key); + if (this.isExpired(data)) { + this._cache.delete(key); + } + } + this._lastExpire = now; + } + saveToDisk() { + const cache = []; + for (const [key, val] of this._cache) { + cache.push([key, val]); + } + const data = this.opts.serialize({ + cache, + lastExpire: this._lastExpire, + }); + return new Promise((resolve, reject) => { + fs.outputFile(this.opts.filename, data, (err) => { + if (err) { + reject(err); + } + else { + resolve(); + } + }); + }); + } + save() { + this.clearExpire(); + if (this._savePromise) { + return this._savePromise; + } + this._savePromise = new Promise((resolve, reject) => { + setTimeout(() => { + this.saveToDisk() + .then(resolve, reject) + .finally(() => { + this._savePromise = void 0; + }); + }, this.opts.writeDelay); + }); + return this._savePromise; + } + disconnect() { + return Promise.resolve(); + } + iterator(namespace) { + return tslib_1.__asyncGenerator(this, arguments, function* iterator_1() { + for (const [key, data] of this._cache.entries()) { + if (key === undefined) { + continue; + } + // Filter by namespace if provided + if (!namespace || key.includes(namespace)) { + yield yield tslib_1.__await([key, data.value]); + } + } + }); + } +} +exports.Sk = KeyvFile; +__webpack_unused_export__ = KeyvFile; +class Field { + constructor(kv, key, defaults) { + this.kv = kv; + this.key = key; + this.defaults = defaults; + } + get() { + return tslib_1.__awaiter(this, arguments, void 0, function* (def = this.defaults) { + var _a; + return (_a = (yield this.kv.get(this.key))) !== null && _a !== void 0 ? _a : def; + }); + } + getSync(def = this.defaults) { + var _a; + if ('getSync' in this.kv) { + return (_a = this.kv.getSync(this.key)) !== null && _a !== void 0 ? _a : def; + } + throw new Error('kv does not support getSync'); + } + set(val, ttl) { + return this.kv.set(this.key, val, ttl); + } + delete() { + return this.kv.delete(this.key); + } +} +__webpack_unused_export__ = Field; +function makeField(kv, key, defaults) { + return new Field(kv, key, defaults); +} + + +/***/ }), + +/***/ 94914: +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ __assign: () => (/* binding */ __assign), +/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator), +/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator), +/* harmony export */ __asyncValues: () => (/* binding */ __asyncValues), +/* harmony export */ __await: () => (/* binding */ __await), +/* harmony export */ __awaiter: () => (/* binding */ __awaiter), +/* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet), +/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet), +/* harmony export */ __createBinding: () => (/* binding */ __createBinding), +/* harmony export */ __decorate: () => (/* binding */ __decorate), +/* harmony export */ __exportStar: () => (/* binding */ __exportStar), +/* harmony export */ __extends: () => (/* binding */ __extends), +/* harmony export */ __generator: () => (/* binding */ __generator), +/* harmony export */ __importDefault: () => (/* binding */ __importDefault), +/* harmony export */ __importStar: () => (/* binding */ __importStar), +/* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject), +/* harmony export */ __metadata: () => (/* binding */ __metadata), +/* harmony export */ __param: () => (/* binding */ __param), +/* harmony export */ __read: () => (/* binding */ __read), +/* harmony export */ __rest: () => (/* binding */ __rest), +/* harmony export */ __spread: () => (/* binding */ __spread), +/* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays), +/* harmony export */ __values: () => (/* binding */ __values) +/* harmony export */ }); +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ +/* global Reflect, Promise */ + +var extendStatics = function(d, b) { + extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return extendStatics(d, b); +}; + +function __extends(d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); +} + +var __assign = function() { + __assign = Object.assign || function __assign(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; + } + return t; + } + return __assign.apply(this, arguments); +} + +function __rest(s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) { + if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) + t[p[i]] = s[p[i]]; + } + return t; +} + +function __decorate(decorators, target, key, desc) { + var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; + if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); + else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; + return c > 3 && r && Object.defineProperty(target, key, r), r; +} + +function __param(paramIndex, decorator) { + return function (target, key) { decorator(target, key, paramIndex); } +} + +function __metadata(metadataKey, metadataValue) { + if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue); +} + +function __awaiter(thisArg, _arguments, P, generator) { + function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } + return new (P || (P = Promise))(function (resolve, reject) { + function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } + function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } + function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } + step((generator = generator.apply(thisArg, _arguments || [])).next()); + }); +} + +function __generator(thisArg, body) { + var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; + return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; + function verb(n) { return function (v) { return step([n, v]); }; } + function step(op) { + if (f) throw new TypeError("Generator is already executing."); + while (_) try { + if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t; + if (y = 0, t) op = [op[0] & 2, t.value]; + switch (op[0]) { + case 0: case 1: t = op; break; + case 4: _.label++; return { value: op[1], done: false }; + case 5: _.label++; y = op[1]; op = [0]; continue; + case 7: op = _.ops.pop(); _.trys.pop(); continue; + default: + if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } + if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } + if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } + if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } + if (t[2]) _.ops.pop(); + _.trys.pop(); continue; + } + op = body.call(thisArg, _); + } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } + if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; + } +} + +function __createBinding(o, m, k, k2) { + if (k2 === undefined) k2 = k; + o[k2] = m[k]; +} + +function __exportStar(m, exports) { + for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p]; +} + +function __values(o) { + var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0; + if (m) return m.call(o); + if (o && typeof o.length === "number") return { + next: function () { + if (o && i >= o.length) o = void 0; + return { value: o && o[i++], done: !o }; + } + }; + throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined."); +} + +function __read(o, n) { + var m = typeof Symbol === "function" && o[Symbol.iterator]; + if (!m) return o; + var i = m.call(o), r, ar = [], e; + try { + while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value); + } + catch (error) { e = { error: error }; } + finally { + try { + if (r && !r.done && (m = i["return"])) m.call(i); + } + finally { if (e) throw e.error; } + } + return ar; +} + +function __spread() { + for (var ar = [], i = 0; i < arguments.length; i++) + ar = ar.concat(__read(arguments[i])); + return ar; +} + +function __spreadArrays() { + for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length; + for (var r = Array(s), k = 0, i = 0; i < il; i++) + for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++) + r[k] = a[j]; + return r; +}; + +function __await(v) { + return this instanceof __await ? (this.v = v, this) : new __await(v); +} + +function __asyncGenerator(thisArg, _arguments, generator) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var g = generator.apply(thisArg, _arguments || []), i, q = []; + return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i; + function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; } + function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } } + function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); } + function fulfill(value) { resume("next", value); } + function reject(value) { resume("throw", value); } + function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); } +} + +function __asyncDelegator(o) { + var i, p; + return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i; + function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; } +} + +function __asyncValues(o) { + if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined."); + var m = o[Symbol.asyncIterator], i; + return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i); + function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; } + function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); } +} + +function __makeTemplateObject(cooked, raw) { + if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; } + return cooked; +}; + +function __importStar(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k]; + result.default = mod; + return result; +} + +function __importDefault(mod) { + return (mod && mod.__esModule) ? mod : { default: mod }; +} + +function __classPrivateFieldGet(receiver, privateMap) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to get private field on non-instance"); + } + return privateMap.get(receiver); +} + +function __classPrivateFieldSet(receiver, privateMap, value) { + if (!privateMap.has(receiver)) { + throw new TypeError("attempted to set private field on non-instance"); + } + privateMap.set(receiver, value); + return value; +} + + /***/ }), /***/ 61747: @@ -37415,273 +23758,6 @@ const removeCirculars = (obj, branch = new Map(), path = "root") => { }; -/***/ }), - -/***/ 67322: -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -module.exports = __webpack_require__(79272)('node_sqlite3.node'); - - -/***/ }), - -/***/ 45430: -/***/ ((module, exports, __webpack_require__) => { - -const path = __webpack_require__(16928); -const sqlite3 = __webpack_require__(67322); -const EventEmitter = (__webpack_require__(24434).EventEmitter); -module.exports = exports = sqlite3; - -function normalizeMethod (fn) { - return function (sql) { - let errBack; - const args = Array.prototype.slice.call(arguments, 1); - - if (typeof args[args.length - 1] === 'function') { - const callback = args[args.length - 1]; - errBack = function(err) { - if (err) { - callback(err); - } - }; - } - const statement = new Statement(this, sql, errBack); - return fn.call(this, statement, args); - }; -} - -function inherits(target, source) { - for (const k in source.prototype) - target.prototype[k] = source.prototype[k]; -} - -sqlite3.cached = { - Database: function(file, a, b) { - if (file === '' || file === ':memory:') { - // Don't cache special databases. - return new Database(file, a, b); - } - - let db; - file = path.resolve(file); - - if (!sqlite3.cached.objects[file]) { - db = sqlite3.cached.objects[file] = new Database(file, a, b); - } - else { - // Make sure the callback is called. - db = sqlite3.cached.objects[file]; - const callback = (typeof a === 'number') ? b : a; - if (typeof callback === 'function') { - function cb() { callback.call(db, null); } - if (db.open) process.nextTick(cb); - else db.once('open', cb); - } - } - - return db; - }, - objects: {} -}; - - -const Database = sqlite3.Database; -const Statement = sqlite3.Statement; -const Backup = sqlite3.Backup; - -inherits(Database, EventEmitter); -inherits(Statement, EventEmitter); -inherits(Backup, EventEmitter); - -// Database#prepare(sql, [bind1, bind2, ...], [callback]) -Database.prototype.prepare = normalizeMethod(function(statement, params) { - return params.length - ? statement.bind.apply(statement, params) - : statement; -}); - -// Database#run(sql, [bind1, bind2, ...], [callback]) -Database.prototype.run = normalizeMethod(function(statement, params) { - statement.run.apply(statement, params).finalize(); - return this; -}); - -// Database#get(sql, [bind1, bind2, ...], [callback]) -Database.prototype.get = normalizeMethod(function(statement, params) { - statement.get.apply(statement, params).finalize(); - return this; -}); - -// Database#all(sql, [bind1, bind2, ...], [callback]) -Database.prototype.all = normalizeMethod(function(statement, params) { - statement.all.apply(statement, params).finalize(); - return this; -}); - -// Database#each(sql, [bind1, bind2, ...], [callback], [complete]) -Database.prototype.each = normalizeMethod(function(statement, params) { - statement.each.apply(statement, params).finalize(); - return this; -}); - -Database.prototype.map = normalizeMethod(function(statement, params) { - statement.map.apply(statement, params).finalize(); - return this; -}); - -// Database#backup(filename, [callback]) -// Database#backup(filename, destName, sourceName, filenameIsDest, [callback]) -Database.prototype.backup = function() { - let backup; - if (arguments.length <= 2) { - // By default, we write the main database out to the main database of the named file. - // This is the most likely use of the backup api. - backup = new Backup(this, arguments[0], 'main', 'main', true, arguments[1]); - } else { - // Otherwise, give the user full control over the sqlite3_backup_init arguments. - backup = new Backup(this, arguments[0], arguments[1], arguments[2], arguments[3], arguments[4]); - } - // Per the sqlite docs, exclude the following errors as non-fatal by default. - backup.retryErrors = [sqlite3.BUSY, sqlite3.LOCKED]; - return backup; -}; - -Statement.prototype.map = function() { - const params = Array.prototype.slice.call(arguments); - const callback = params.pop(); - params.push(function(err, rows) { - if (err) return callback(err); - const result = {}; - if (rows.length) { - const keys = Object.keys(rows[0]); - const key = keys[0]; - if (keys.length > 2) { - // Value is an object - for (let i = 0; i < rows.length; i++) { - result[rows[i][key]] = rows[i]; - } - } else { - const value = keys[1]; - // Value is a plain value - for (let i = 0; i < rows.length; i++) { - result[rows[i][key]] = rows[i][value]; - } - } - } - callback(err, result); - }); - return this.all.apply(this, params); -}; - -let isVerbose = false; - -const supportedEvents = [ 'trace', 'profile', 'change' ]; - -Database.prototype.addListener = Database.prototype.on = function(type) { - const val = EventEmitter.prototype.addListener.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0) { - this.configure(type, true); - } - return val; -}; - -Database.prototype.removeListener = function(type) { - const val = EventEmitter.prototype.removeListener.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0 && !this._events[type]) { - this.configure(type, false); - } - return val; -}; - -Database.prototype.removeAllListeners = function(type) { - const val = EventEmitter.prototype.removeAllListeners.apply(this, arguments); - if (supportedEvents.indexOf(type) >= 0) { - this.configure(type, false); - } - return val; -}; - -// Save the stack trace over EIO callbacks. -sqlite3.verbose = function() { - if (!isVerbose) { - const trace = __webpack_require__(60738); - [ - 'prepare', - 'get', - 'run', - 'all', - 'each', - 'map', - 'close', - 'exec' - ].forEach(function (name) { - trace.extendTrace(Database.prototype, name); - }); - [ - 'bind', - 'get', - 'run', - 'all', - 'each', - 'map', - 'reset', - 'finalize', - ].forEach(function (name) { - trace.extendTrace(Statement.prototype, name); - }); - isVerbose = true; - } - - return sqlite3; -}; - - -/***/ }), - -/***/ 60738: -/***/ ((__unused_webpack_module, exports, __webpack_require__) => { - -// Inspired by https://github.com/tlrobinson/long-stack-traces -const util = __webpack_require__(39023); - -function extendTrace(object, property, pos) { - const old = object[property]; - object[property] = function() { - const error = new Error(); - const name = object.constructor.name + '#' + property + '(' + - Array.prototype.slice.call(arguments).map(function(el) { - return util.inspect(el, false, 0); - }).join(', ') + ')'; - - if (typeof pos === 'undefined') pos = -1; - if (pos < 0) pos += arguments.length; - const cb = arguments[pos]; - if (typeof arguments[pos] === 'function') { - arguments[pos] = function replacement() { - const err = arguments[0]; - if (err && err.stack && !err.__augmented) { - err.stack = filter(err).join('\n'); - err.stack += '\n--> in ' + name; - err.stack += '\n' + filter(error).slice(1).join('\n'); - err.__augmented = true; - } - return cb.apply(this, arguments); - }; - } - return old.apply(this, arguments); - }; -} -exports.extendTrace = extendTrace; - - -function filter(error) { - return error.stack.split('\n').filter(function(line) { - return line.indexOf(__filename) < 0; - }); -} - - /***/ }), /***/ 91370: @@ -38980,6 +25056,39 @@ Object.defineProperty(exports, "configs", ({ })); +/***/ }), + +/***/ 55399: +/***/ ((__unused_webpack_module, exports) => { + +"use strict"; + + +exports.S = function (fn) { + return Object.defineProperty(function () { + if (typeof arguments[arguments.length - 1] === 'function') fn.apply(this, arguments) + else { + return new Promise((resolve, reject) => { + arguments[arguments.length] = (err, res) => { + if (err) return reject(err) + resolve(res) + } + arguments.length++ + fn.apply(this, arguments) + }) + } + }, 'name', { value: fn.name }) +} + +exports.z = function (fn) { + return Object.defineProperty(function () { + const cb = arguments[arguments.length - 1] + if (typeof cb !== 'function') return fn.apply(this, arguments) + else fn.apply(this, arguments).then(r => cb(null, r), cb) + }, 'name', { value: fn.name }) +} + + /***/ }), /***/ 32926: @@ -135808,6 +121917,14 @@ module.exports = require("child_process"); /***/ }), +/***/ 49140: +/***/ ((module) => { + +"use strict"; +module.exports = require("constants"); + +/***/ }), + /***/ 76982: /***/ ((module) => { @@ -136006,6 +122123,90 @@ module.exports = require("worker_threads"); "use strict"; module.exports = require("zlib"); +/***/ }), + +/***/ 77283: +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +"use strict"; + +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __export = (target, all) => { + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __copyProps = (to, from, except, desc) => { + if (from && typeof from === "object" || typeof from === "function") { + for (let key of __getOwnPropNames(from)) + if (!__hasOwnProp.call(to, key) && key !== except) + __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable }); + } + return to; +}; +var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod); + +// src/index.ts +var index_exports = {}; +__export(index_exports, { + defaultDeserialize: () => defaultDeserialize, + defaultSerialize: () => defaultSerialize +}); +module.exports = __toCommonJS(index_exports); +var import_node_buffer = __webpack_require__(20181); +var defaultSerialize = (data) => { + if (data === void 0 || data === null) { + return "null"; + } + if (typeof data === "string") { + return JSON.stringify(data.startsWith(":") ? ":" + data : data); + } + if (import_node_buffer.Buffer.isBuffer(data)) { + return JSON.stringify(":base64:" + data.toString("base64")); + } + if (data?.toJSON) { + data = data.toJSON(); + } + if (typeof data === "object") { + let s = ""; + const array = Array.isArray(data); + s = array ? "[" : "{"; + let first = true; + for (const k in data) { + const ignore = typeof data[k] === "function" || !array && data[k] === void 0; + if (!Object.hasOwn(data, k) || ignore) { + continue; + } + if (!first) { + s += ","; + } + first = false; + if (array) { + s += defaultSerialize(data[k]); + } else if (data[k] !== void 0) { + s += defaultSerialize(k) + ":" + defaultSerialize(data[k]); + } + } + s += array ? "]" : "}"; + return s; + } + return JSON.stringify(data); +}; +var defaultDeserialize = (data) => JSON.parse(data, (_, value) => { + if (typeof value === "string") { + if (value.startsWith(":base64:")) { + return import_node_buffer.Buffer.from(value.slice(8), "base64"); + } + return value.startsWith(":") ? value.slice(1) : value; + } + return value; +}); +// Annotate the CommonJS export names for ESM import in node: +0 && (0); + + /***/ }), /***/ 47892: @@ -166150,11 +152351,10 @@ const createClient = (options) => { // EXPORTS __webpack_require__.d(__webpack_exports__, { - X4: () => (/* binding */ default_sort), eF: () => (/* binding */ run) }); -// UNUSED EXPORTS: complete_messages, complete_options, complete_params, execute_request, processRun +// UNUSED EXPORTS: complete_messages, complete_options, complete_params, default_sort, execute_request, processRun // EXTERNAL MODULE: external "node:path" var external_node_path_ = __webpack_require__(76760); @@ -168483,8 +154683,8 @@ const load = async (options) => { return profile.variables; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHJvZmlsZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9wcm9maWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBRWpDLE9BQU8sRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDbkQsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQVksS0FBSyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFJbkQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRXpDLE1BQU0sUUFBUSxHQUFHLENBQUMsV0FBbUIsRUFBRSxFQUFFO0lBQ3JDLElBQUcsQ0FBQyxXQUFXLEVBQUMsQ0FBQztRQUNiLE9BQU07SUFDVixDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUUsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDLENBQUE7SUFDaEUsSUFBRyxNQUFNLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxHQUFHLENBQUE7QUFDOUIsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLEtBQUssRUFBRSxPQUFrQixFQUFtQyxFQUFFO0lBQzlFLElBQUksT0FBTyxHQUFhLEVBQUUsUUFBUSxFQUFFLEVBQUUsRUFBRSxTQUFTLEVBQUUsT0FBTyxDQUFDLFNBQVMsSUFBSSxFQUFFLEVBQUUsR0FBRyxFQUFFLEVBQUUsRUFBRSxDQUFBO0lBQ3JGLElBQUksV0FBVyxHQUFHLFFBQVEsQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQWMsRUFBRSxjQUFjLENBQUMsQ0FBQyxDQUFBO0lBQ2hHLElBQUcsQ0FBQyxXQUFXLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDLEVBQUMsQ0FBQztRQUM3RCxPQUFPLE9BQU8sQ0FBQyxTQUFTLENBQUE7SUFDNUIsQ0FBQztJQUNELE9BQU8sR0FBRyxLQUFLLENBQUMsV0FBVyxFQUFFLE9BQU8sRUFBRSxFQUFFLEdBQUcsRUFBRSxPQUFPLENBQUMsR0FBRyxJQUFJLFNBQVMsRUFBRSxDQUFDLElBQUksT0FBTyxDQUFBO0lBQ25GLE9BQU8sT0FBTyxDQUFDLFNBQVMsQ0FBQTtBQUM1QixDQUFDLENBQUEifQ== -// EXTERNAL MODULE: ./dist-in/tools.js + 88 modules -var tools = __webpack_require__(49315); +// EXTERNAL MODULE: ./dist-in/tools.js + 84 modules +var tools = __webpack_require__(3043); ;// ./dist-in/utils/content.js const content = (result) => { return result?.choices?.[0]?.message?.content || ""; @@ -169809,6 +156009,9 @@ var E_OPENROUTER_MODEL; ;// ./dist-in/models/cache/openrouter-models-free.js var E_OPENROUTER_MODEL_FREE; (function (E_OPENROUTER_MODEL_FREE) { + E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_NEMOTRON_NANO_9B_V2_FREE"] = "nvidia/nemotron-nano-9b-v2:free"; + E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENROUTER_SONOMA_DUSK_ALPHA"] = "openrouter/sonoma-dusk-alpha"; + E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENROUTER_SONOMA_SKY_ALPHA"] = "openrouter/sonoma-sky-alpha"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_CHAT_V3_1_FREE"] = "deepseek/deepseek-chat-v3.1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENAI_GPT_OSS_120B_FREE"] = "openai/gpt-oss-120b:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_OPENAI_GPT_OSS_20B_FREE"] = "openai/gpt-oss-20b:free"; @@ -169840,7 +156043,6 @@ var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_NVIDIA_LLAMA_3_1_NEMOTRON_ULTRA_253B_V1_FREE"] = "nvidia/llama-3.1-nemotron-ultra-253b-v1:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_MAVERICK_FREE"] = "meta-llama/llama-4-maverick:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_META_LLAMA_LLAMA_4_SCOUT_FREE"] = "meta-llama/llama-4-scout:free"; - E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMINI_2_5_PRO_EXP_03_25"] = "google/gemini-2.5-pro-exp-03-25"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_QWEN_QWEN2_5_VL_32B_INSTRUCT_FREE"] = "qwen/qwen2.5-vl-32b-instruct:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_DEEPSEEK_DEEPSEEK_CHAT_V3_0324_FREE"] = "deepseek/deepseek-chat-v3-0324:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_SMALL_3_1_24B_INSTRUCT_FREE"] = "mistralai/mistral-small-3.1-24b-instruct:free"; @@ -169867,7 +156069,7 @@ var E_OPENROUTER_MODEL_FREE; E_OPENROUTER_MODEL_FREE["MODEL_FREE_GOOGLE_GEMMA_2_9B_IT_FREE"] = "google/gemma-2-9b-it:free"; E_OPENROUTER_MODEL_FREE["MODEL_FREE_MISTRALAI_MISTRAL_7B_INSTRUCT_FREE"] = "mistralai/mistral-7b-instruct:free"; })(E_OPENROUTER_MODEL_FREE || (E_OPENROUTER_MODEL_FREE = {})); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkEwRFg7QUExREQsV0FBWSx1QkFBdUI7SUFDakMsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsbUlBQXdHLENBQUE7SUFDeEcsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUseUdBQThFLENBQUE7SUFDOUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQTFEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBMERsQyJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3BlbnJvdXRlci1tb2RlbHMtZnJlZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9tb2RlbHMvY2FjaGUvb3BlbnJvdXRlci1tb2RlbHMtZnJlZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxNQUFNLENBQU4sSUFBWSx1QkE0RFg7QUE1REQsV0FBWSx1QkFBdUI7SUFDakMseUdBQThFLENBQUE7SUFDOUUsbUdBQXdFLENBQUE7SUFDeEUsaUdBQXNFLENBQUE7SUFDdEUsMkdBQWdGLENBQUE7SUFDaEYsMkZBQWdFLENBQUE7SUFDaEUseUZBQThELENBQUE7SUFDOUQscUZBQTBELENBQUE7SUFDMUQscUZBQTBELENBQUE7SUFDMUQseUZBQThELENBQUE7SUFDOUQscUtBQTBJLENBQUE7SUFDMUksaUdBQXNFLENBQUE7SUFDdEUsK0dBQW9GLENBQUE7SUFDcEYsK0dBQW9GLENBQUE7SUFDcEYscUlBQTBHLENBQUE7SUFDMUcsbUdBQXdFLENBQUE7SUFDeEUseUhBQThGLENBQUE7SUFDOUYsdUdBQTRFLENBQUE7SUFDNUUsK0dBQW9GLENBQUE7SUFDcEYsaUdBQXNFLENBQUE7SUFDdEUscUhBQTBGLENBQUE7SUFDMUYsK0VBQW9ELENBQUE7SUFDcEQseUZBQThELENBQUE7SUFDOUQsK0VBQW9ELENBQUE7SUFDcEQsaUZBQXNELENBQUE7SUFDdEQsNkZBQWtFLENBQUE7SUFDbEUsNkdBQWtGLENBQUE7SUFDbEYsMkZBQWdFLENBQUE7SUFDaEUsaUhBQXNGLENBQUE7SUFDdEYsNkdBQWtGLENBQUE7SUFDbEYseUhBQThGLENBQUE7SUFDOUYsbUhBQXdGLENBQUE7SUFDeEYsbUlBQXdHLENBQUE7SUFDeEcsMkdBQWdGLENBQUE7SUFDaEYscUdBQTBFLENBQUE7SUFDMUUsNkdBQWtGLENBQUE7SUFDbEYsaUhBQXNGLENBQUE7SUFDdEYscUlBQTBHLENBQUE7SUFDMUcsNkZBQWtFLENBQUE7SUFDbEUsK0ZBQW9FLENBQUE7SUFDcEUsMkZBQWdFLENBQUE7SUFDaEUsK0ZBQW9FLENBQUE7SUFDcEUsNkVBQWtELENBQUE7SUFDbEQsNklBQWtILENBQUE7SUFDbEgsbUpBQXdILENBQUE7SUFDeEgsNklBQWtILENBQUE7SUFDbEgsNkdBQWtGLENBQUE7SUFDbEYsdUlBQTRHLENBQUE7SUFDNUcsK0hBQW9HLENBQUE7SUFDcEcsaUlBQXNHLENBQUE7SUFDdEcsNkZBQWtFLENBQUE7SUFDbEUsMkdBQWdGLENBQUE7SUFDaEYsdUhBQTRGLENBQUE7SUFDNUYscUhBQTBGLENBQUE7SUFDMUYscUhBQTBGLENBQUE7SUFDMUYseUdBQThFLENBQUE7SUFDOUUseUhBQThGLENBQUE7SUFDOUYsaUdBQXNFLENBQUE7SUFDdEUsNkZBQWtFLENBQUE7SUFDbEUsK0dBQW9GLENBQUE7QUFDdEYsQ0FBQyxFQTVEVyx1QkFBdUIsS0FBdkIsdUJBQXVCLFFBNERsQyJ9 ;// ./dist-in/index.js @@ -170249,7 +156451,7 @@ function listModelsAsStrings(models) { /***/ }), -/***/ 49315: +/***/ 3043: /***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { "use strict"; @@ -188080,1055 +174282,6 @@ const search_tools = (target, options) => { ]; }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VhcmNoLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLDJCQUEyQixDQUFBO0FBQ25ELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNsRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsTUFBYyxFQUFFLE9BQWtCLEVBQWMsRUFBRTtJQUNwRSxNQUFNLE1BQU0sR0FBRyxVQUFVLENBQUMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxDQUFBO0lBQzVDLE9BQU87UUFDSDtZQUNJLElBQUksRUFBRSxVQUFVO1lBQ2hCLFFBQVEsRUFBRTtnQkFDTixJQUFJLEVBQUUsUUFBUTtnQkFDZCxXQUFXLEVBQUUscUNBQXFDO2dCQUNsRCxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUU7cUJBQzVCO29CQUNELFFBQVEsRUFBRSxDQUFDLE9BQU8sQ0FBQztpQkFDdEI7Z0JBQ0QsUUFBUSxFQUFFLEtBQUssRUFBRSxNQUFXLEVBQUUsRUFBRTtvQkFDNUIsTUFBTSxFQUFFLEtBQUssRUFBRSxHQUFHLE1BQU0sQ0FBQTtvQkFDeEIsTUFBTSxNQUFNLEdBQUcsY0FBYyxFQUFTLENBQUE7b0JBQ3RDLElBQUksTUFBTSxHQUFHLE1BQU0sRUFBRSxNQUFNLEVBQUUsT0FBTyxDQUFBO29CQUNwQyxJQUFJLEdBQUcsR0FBRyxNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsQ0FBQTtvQkFDN0IsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLEdBQUcsRUFBRTt3QkFDNUIsTUFBTSxDQUFDLEtB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 -;// external "require('puppeteer')" -const external_require_puppeteer_namespaceObject = require('puppeteer'); -;// ../ai-tools/node_modules/turndown/lib/turndown.es.js -function extend (destination) { - for (var i = 1; i < arguments.length; i++) { - var source = arguments[i]; - for (var key in source) { - if (source.hasOwnProperty(key)) destination[key] = source[key]; - } - } - return destination -} - -function repeat (character, count) { - return Array(count + 1).join(character) -} - -function trimLeadingNewlines (string) { - return string.replace(/^\n*/, '') -} - -function trimTrailingNewlines (string) { - // avoid match-at-end regexp bottleneck, see #370 - var indexEnd = string.length; - while (indexEnd > 0 && string[indexEnd - 1] === '\n') indexEnd--; - return string.substring(0, indexEnd) -} - -var blockElements = [ - 'ADDRESS', 'ARTICLE', 'ASIDE', 'AUDIO', 'BLOCKQUOTE', 'BODY', 'CANVAS', - 'CENTER', 'DD', 'DIR', 'DIV', 'DL', 'DT', 'FIELDSET', 'FIGCAPTION', 'FIGURE', - 'FOOTER', 'FORM', 'FRAMESET', 'H1', 'H2', 'H3', 'H4', 'H5', 'H6', 'HEADER', - 'HGROUP', 'HR', 'HTML', 'ISINDEX', 'LI', 'MAIN', 'MENU', 'NAV', 'NOFRAMES', - 'NOSCRIPT', 'OL', 'OUTPUT', 'P', 'PRE', 'SECTION', 'TABLE', 'TBODY', 'TD', - 'TFOOT', 'TH', 'THEAD', 'TR', 'UL' -]; - -function isBlock (node) { - return is(node, blockElements) -} - -var voidElements = [ - 'AREA', 'BASE', 'BR', 'COL', 'COMMAND', 'EMBED', 'HR', 'IMG', 'INPUT', - 'KEYGEN', 'LINK', 'META', 'PARAM', 'SOURCE', 'TRACK', 'WBR' -]; - -function isVoid (node) { - return is(node, voidElements) -} - -function hasVoid (node) { - return has(node, voidElements) -} - -var meaningfulWhenBlankElements = [ - 'A', 'TABLE', 'THEAD', 'TBODY', 'TFOOT', 'TH', 'TD', 'IFRAME', 'SCRIPT', - 'AUDIO', 'VIDEO' -]; - -function isMeaningfulWhenBlank (node) { - return is(node, meaningfulWhenBlankElements) -} - -function hasMeaningfulWhenBlank (node) { - return has(node, meaningfulWhenBlankElements) -} - -function is (node, tagNames) { - return tagNames.indexOf(node.nodeName) >= 0 -} - -function has (node, tagNames) { - return ( - node.getElementsByTagName && - tagNames.some(function (tagName) { - return node.getElementsByTagName(tagName).length - }) - ) -} - -var rules = {}; - -rules.paragraph = { - filter: 'p', - - replacement: function (content) { - return '\n\n' + content + '\n\n' - } -}; - -rules.lineBreak = { - filter: 'br', - - replacement: function (content, node, options) { - return options.br + '\n' - } -}; - -rules.heading = { - filter: ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], - - replacement: function (content, node, options) { - var hLevel = Number(node.nodeName.charAt(1)); - - if (options.headingStyle === 'setext' && hLevel < 3) { - var underline = repeat((hLevel === 1 ? '=' : '-'), content.length); - return ( - '\n\n' + content + '\n' + underline + '\n\n' - ) - } else { - return '\n\n' + repeat('#', hLevel) + ' ' + content + '\n\n' - } - } -}; - -rules.blockquote = { - filter: 'blockquote', - - replacement: function (content) { - content = content.replace(/^\n+|\n+$/g, ''); - content = content.replace(/^/gm, '> '); - return '\n\n' + content + '\n\n' - } -}; - -rules.list = { - filter: ['ul', 'ol'], - - replacement: function (content, node) { - var parent = node.parentNode; - if (parent.nodeName === 'LI' && parent.lastElementChild === node) { - return '\n' + content - } else { - return '\n\n' + content + '\n\n' - } - } -}; - -rules.listItem = { - filter: 'li', - - replacement: function (content, node, options) { - content = content - .replace(/^\n+/, '') // remove leading newlines - .replace(/\n+$/, '\n') // replace trailing newlines with just a single one - .replace(/\n/gm, '\n '); // indent - var prefix = options.bulletListMarker + ' '; - var parent = node.parentNode; - if (parent.nodeName === 'OL') { - var start = parent.getAttribute('start'); - var index = Array.prototype.indexOf.call(parent.children, node); - prefix = (start ? Number(start) + index : index + 1) + '. '; - } - return ( - prefix + content + (node.nextSibling && !/\n$/.test(content) ? '\n' : '') - ) - } -}; - -rules.indentedCodeBlock = { - filter: function (node, options) { - return ( - options.codeBlockStyle === 'indented' && - node.nodeName === 'PRE' && - node.firstChild && - node.firstChild.nodeName === 'CODE' - ) - }, - - replacement: function (content, node, options) { - return ( - '\n\n ' + - node.firstChild.textContent.replace(/\n/g, '\n ') + - '\n\n' - ) - } -}; - -rules.fencedCodeBlock = { - filter: function (node, options) { - return ( - options.codeBlockStyle === 'fenced' && - node.nodeName === 'PRE' && - node.firstChild && - node.firstChild.nodeName === 'CODE' - ) - }, - - replacement: function (content, node, options) { - var className = node.firstChild.getAttribute('class') || ''; - var language = (className.match(/language-(\S+)/) || [null, ''])[1]; - var code = node.firstChild.textContent; - - var fenceChar = options.fence.charAt(0); - var fenceSize = 3; - var fenceInCodeRegex = new RegExp('^' + fenceChar + '{3,}', 'gm'); - - var match; - while ((match = fenceInCodeRegex.exec(code))) { - if (match[0].length >= fenceSize) { - fenceSize = match[0].length + 1; - } - } - - var fence = repeat(fenceChar, fenceSize); - - return ( - '\n\n' + fence + language + '\n' + - code.replace(/\n$/, '') + - '\n' + fence + '\n\n' - ) - } -}; - -rules.horizontalRule = { - filter: 'hr', - - replacement: function (content, node, options) { - return '\n\n' + options.hr + '\n\n' - } -}; - -rules.inlineLink = { - filter: function (node, options) { - return ( - options.linkStyle === 'inlined' && - node.nodeName === 'A' && - node.getAttribute('href') - ) - }, - - replacement: function (content, node) { - var href = node.getAttribute('href'); - if (href) href = href.replace(/([()])/g, '\\$1'); - var title = cleanAttribute(node.getAttribute('title')); - if (title) title = ' "' + title.replace(/"/g, '\\"') + '"'; - return '[' + content + '](' + href + title + ')' - } -}; - -rules.referenceLink = { - filter: function (node, options) { - return ( - options.linkStyle === 'referenced' && - node.nodeName === 'A' && - node.getAttribute('href') - ) - }, - - replacement: function (content, node, options) { - var href = node.getAttribute('href'); - var title = cleanAttribute(node.getAttribute('title')); - if (title) title = ' "' + title + '"'; - var replacement; - var reference; - - switch (options.linkReferenceStyle) { - case 'collapsed': - replacement = '[' + content + '][]'; - reference = '[' + content + ']: ' + href + title; - break - case 'shortcut': - replacement = '[' + content + ']'; - reference = '[' + content + ']: ' + href + title; - break - default: - var id = this.references.length + 1; - replacement = '[' + content + '][' + id + ']'; - reference = '[' + id + ']: ' + href + title; - } - - this.references.push(reference); - return replacement - }, - - references: [], - - append: function (options) { - var references = ''; - if (this.references.length) { - references = '\n\n' + this.references.join('\n') + '\n\n'; - this.references = []; // Reset references - } - return references - } -}; - -rules.emphasis = { - filter: ['em', 'i'], - - replacement: function (content, node, options) { - if (!content.trim()) return '' - return options.emDelimiter + content + options.emDelimiter - } -}; - -rules.strong = { - filter: ['strong', 'b'], - - replacement: function (content, node, options) { - if (!content.trim()) return '' - return options.strongDelimiter + content + options.strongDelimiter - } -}; - -rules.code = { - filter: function (node) { - var hasSiblings = node.previousSibling || node.nextSibling; - var isCodeBlock = node.parentNode.nodeName === 'PRE' && !hasSiblings; - - return node.nodeName === 'CODE' && !isCodeBlock - }, - - replacement: function (content) { - if (!content) return '' - content = content.replace(/\r?\n|\r/g, ' '); - - var extraSpace = /^`|^ .*?[^ ].* $|`$/.test(content) ? ' ' : ''; - var delimiter = '`'; - var matches = content.match(/`+/gm) || []; - while (matches.indexOf(delimiter) !== -1) delimiter = delimiter + '`'; - - return delimiter + extraSpace + content + extraSpace + delimiter - } -}; - -rules.image = { - filter: 'img', - - replacement: function (content, node) { - var alt = cleanAttribute(node.getAttribute('alt')); - var src = node.getAttribute('src') || ''; - var title = cleanAttribute(node.getAttribute('title')); - var titlePart = title ? ' "' + title + '"' : ''; - return src ? '![' + alt + ']' + '(' + src + titlePart + ')' : '' - } -}; - -function cleanAttribute (attribute) { - return attribute ? attribute.replace(/(\n+\s*)+/g, '\n') : '' -} - -/** - * Manages a collection of rules used to convert HTML to Markdown - */ - -function Rules (options) { - this.options = options; - this._keep = []; - this._remove = []; - - this.blankRule = { - replacement: options.blankReplacement - }; - - this.keepReplacement = options.keepReplacement; - - this.defaultRule = { - replacement: options.defaultReplacement - }; - - this.array = []; - for (var key in options.rules) this.array.push(options.rules[key]); -} - -Rules.prototype = { - add: function (key, rule) { - this.array.unshift(rule); - }, - - keep: function (filter) { - this._keep.unshift({ - filter: filter, - replacement: this.keepReplacement - }); - }, - - remove: function (filter) { - this._remove.unshift({ - filter: filter, - replacement: function () { - return '' - } - }); - }, - - forNode: function (node) { - if (node.isBlank) return this.blankRule - var rule; - - if ((rule = findRule(this.array, node, this.options))) return rule - if ((rule = findRule(this._keep, node, this.options))) return rule - if ((rule = findRule(this._remove, node, this.options))) return rule - - return this.defaultRule - }, - - forEach: function (fn) { - for (var i = 0; i < this.array.length; i++) fn(this.array[i], i); - } -}; - -function findRule (rules, node, options) { - for (var i = 0; i < rules.length; i++) { - var rule = rules[i]; - if (filterValue(rule, node, options)) return rule - } - return void 0 -} - -function filterValue (rule, node, options) { - var filter = rule.filter; - if (typeof filter === 'string') { - if (filter === node.nodeName.toLowerCase()) return true - } else if (Array.isArray(filter)) { - if (filter.indexOf(node.nodeName.toLowerCase()) > -1) return true - } else if (typeof filter === 'function') { - if (filter.call(rule, node, options)) return true - } else { - throw new TypeError('`filter` needs to be a string, array, or function') - } -} - -/** - * The collapseWhitespace function is adapted from collapse-whitespace - * by Luc Thevenard. - * - * The MIT License (MIT) - * - * Copyright (c) 2014 Luc Thevenard - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in - * all copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - * THE SOFTWARE. - */ - -/** - * collapseWhitespace(options) removes extraneous whitespace from an the given element. - * - * @param {Object} options - */ -function collapseWhitespace (options) { - var element = options.element; - var isBlock = options.isBlock; - var isVoid = options.isVoid; - var isPre = options.isPre || function (node) { - return node.nodeName === 'PRE' - }; - - if (!element.firstChild || isPre(element)) return - - var prevText = null; - var keepLeadingWs = false; - - var prev = null; - var node = turndown_es_next(prev, element, isPre); - - while (node !== element) { - if (node.nodeType === 3 || node.nodeType === 4) { // Node.TEXT_NODE or Node.CDATA_SECTION_NODE - var text = node.data.replace(/[ \r\n\t]+/g, ' '); - - if ((!prevText || / $/.test(prevText.data)) && - !keepLeadingWs && text[0] === ' ') { - text = text.substr(1); - } - - // `text` might be empty at this point. - if (!text) { - node = turndown_es_remove(node); - continue - } - - node.data = text; - - prevText = node; - } else if (node.nodeType === 1) { // Node.ELEMENT_NODE - if (isBlock(node) || node.nodeName === 'BR') { - if (prevText) { - prevText.data = prevText.data.replace(/ $/, ''); - } - - prevText = null; - keepLeadingWs = false; - } else if (isVoid(node) || isPre(node)) { - // Avoid trimming space around non-block, non-BR void elements and inline PRE. - prevText = null; - keepLeadingWs = true; - } else if (prevText) { - // Drop protection if set previously. - keepLeadingWs = false; - } - } else { - node = turndown_es_remove(node); - continue - } - - var nextNode = turndown_es_next(prev, node, isPre); - prev = node; - node = nextNode; - } - - if (prevText) { - prevText.data = prevText.data.replace(/ $/, ''); - if (!prevText.data) { - turndown_es_remove(prevText); - } - } -} - -/** - * remove(node) removes the given node from the DOM and returns the - * next node in the sequence. - * - * @param {Node} node - * @return {Node} node - */ -function turndown_es_remove (node) { - var next = node.nextSibling || node.parentNode; - - node.parentNode.removeChild(node); - - return next -} - -/** - * next(prev, current, isPre) returns the next node in the sequence, given the - * current and previous nodes. - * - * @param {Node} prev - * @param {Node} current - * @param {Function} isPre - * @return {Node} - */ -function turndown_es_next (prev, current, isPre) { - if ((prev && prev.parentNode === current) || isPre(current)) { - return current.nextSibling || current.parentNode - } - - return current.firstChild || current.nextSibling || current.parentNode -} - -/* - * Set up window for Node.js - */ - -var root = (typeof window !== 'undefined' ? window : {}); - -/* - * Parsing HTML strings - */ - -function canParseHTMLNatively () { - var Parser = root.DOMParser; - var canParse = false; - - // Adapted from https://gist.github.com/1129031 - // Firefox/Opera/IE throw errors on unsupported types - try { - // WebKit returns null on unsupported types - if (new Parser().parseFromString('', 'text/html')) { - canParse = true; - } - } catch (e) {} - - return canParse -} - -function createHTMLParser () { - var Parser = function () {}; - - { - var domino = __webpack_require__(31993); - Parser.prototype.parseFromString = function (string) { - return domino.createDocument(string) - }; - } - return Parser -} - -var HTMLParser = canParseHTMLNatively() ? root.DOMParser : createHTMLParser(); - -function RootNode (input, options) { - var root; - if (typeof input === 'string') { - var doc = htmlParser().parseFromString( - // DOM parsers arrange elements in the and . - // Wrapping in a custom element ensures elements are reliably arranged in - // a single element. - '' + input + '', - 'text/html' - ); - root = doc.getElementById('turndown-root'); - } else { - root = input.cloneNode(true); - } - collapseWhitespace({ - element: root, - isBlock: isBlock, - isVoid: isVoid, - isPre: options.preformattedCode ? isPreOrCode : null - }); - - return root -} - -var _htmlParser; -function htmlParser () { - _htmlParser = _htmlParser || new HTMLParser(); - return _htmlParser -} - -function isPreOrCode (node) { - return node.nodeName === 'PRE' || node.nodeName === 'CODE' -} - -function Node (node, options) { - node.isBlock = isBlock(node); - node.isCode = node.nodeName === 'CODE' || node.parentNode.isCode; - node.isBlank = isBlank(node); - node.flankingWhitespace = flankingWhitespace(node, options); - return node -} - -function isBlank (node) { - return ( - !isVoid(node) && - !isMeaningfulWhenBlank(node) && - /^\s*$/i.test(node.textContent) && - !hasVoid(node) && - !hasMeaningfulWhenBlank(node) - ) -} - -function flankingWhitespace (node, options) { - if (node.isBlock || (options.preformattedCode && node.isCode)) { - return { leading: '', trailing: '' } - } - - var edges = edgeWhitespace(node.textContent); - - // abandon leading ASCII WS if left-flanked by ASCII WS - if (edges.leadingAscii && isFlankedByWhitespace('left', node, options)) { - edges.leading = edges.leadingNonAscii; - } - - // abandon trailing ASCII WS if right-flanked by ASCII WS - if (edges.trailingAscii && isFlankedByWhitespace('right', node, options)) { - edges.trailing = edges.trailingNonAscii; - } - - return { leading: edges.leading, trailing: edges.trailing } -} - -function edgeWhitespace (string) { - var m = string.match(/^(([ \t\r\n]*)(\s*))(?:(?=\S)[\s\S]*\S)?((\s*?)([ \t\r\n]*))$/); - return { - leading: m[1], // whole string for whitespace-only strings - leadingAscii: m[2], - leadingNonAscii: m[3], - trailing: m[4], // empty for whitespace-only strings - trailingNonAscii: m[5], - trailingAscii: m[6] - } -} - -function isFlankedByWhitespace (side, node, options) { - var sibling; - var regExp; - var isFlanked; - - if (side === 'left') { - sibling = node.previousSibling; - regExp = / $/; - } else { - sibling = node.nextSibling; - regExp = /^ /; - } - - if (sibling) { - if (sibling.nodeType === 3) { - isFlanked = regExp.test(sibling.nodeValue); - } else if (options.preformattedCode && sibling.nodeName === 'CODE') { - isFlanked = false; - } else if (sibling.nodeType === 1 && !isBlock(sibling)) { - isFlanked = regExp.test(sibling.textContent); - } - } - return isFlanked -} - -var reduce = Array.prototype.reduce; -var escapes = [ - [/\\/g, '\\\\'], - [/\*/g, '\\*'], - [/^-/g, '\\-'], - [/^\+ /g, '\\+ '], - [/^(=+)/g, '\\$1'], - [/^(#{1,6}) /g, '\\$1 '], - [/`/g, '\\`'], - [/^~~~/g, '\\~~~'], - [/\[/g, '\\['], - [/\]/g, '\\]'], - [/^>/g, '\\>'], - [/_/g, '\\_'], - [/^(\d+)\. /g, '$1\\. '] -]; - -function TurndownService (options) { - if (!(this instanceof TurndownService)) return new TurndownService(options) - - var defaults = { - rules: rules, - headingStyle: 'setext', - hr: '* * *', - bulletListMarker: '*', - codeBlockStyle: 'indented', - fence: '```', - emDelimiter: '_', - strongDelimiter: '**', - linkStyle: 'inlined', - linkReferenceStyle: 'full', - br: ' ', - preformattedCode: false, - blankReplacement: function (content, node) { - return node.isBlock ? '\n\n' : '' - }, - keepReplacement: function (content, node) { - return node.isBlock ? '\n\n' + node.outerHTML + '\n\n' : node.outerHTML - }, - defaultReplacement: function (content, node) { - return node.isBlock ? '\n\n' + content + '\n\n' : content - } - }; - this.options = extend({}, defaults, options); - this.rules = new Rules(this.options); -} - -TurndownService.prototype = { - /** - * The entry point for converting a string or DOM node to Markdown - * @public - * @param {String|HTMLElement} input The string or DOM node to convert - * @returns A Markdown representation of the input - * @type String - */ - - turndown: function (input) { - if (!canConvert(input)) { - throw new TypeError( - input + ' is not a string, or an element/document/fragment node.' - ) - } - - if (input === '') return '' - - var output = turndown_es_process.call(this, new RootNode(input, this.options)); - return postProcess.call(this, output) - }, - - /** - * Add one or more plugins - * @public - * @param {Function|Array} plugin The plugin or array of plugins to add - * @returns The Turndown instance for chaining - * @type Object - */ - - use: function (plugin) { - if (Array.isArray(plugin)) { - for (var i = 0; i < plugin.length; i++) this.use(plugin[i]); - } else if (typeof plugin === 'function') { - plugin(this); - } else { - throw new TypeError('plugin must be a Function or an Array of Functions') - } - return this - }, - - /** - * Adds a rule - * @public - * @param {String} key The unique key of the rule - * @param {Object} rule The rule - * @returns The Turndown instance for chaining - * @type Object - */ - - addRule: function (key, rule) { - this.rules.add(key, rule); - return this - }, - - /** - * Keep a node (as HTML) that matches the filter - * @public - * @param {String|Array|Function} filter The unique key of the rule - * @returns The Turndown instance for chaining - * @type Object - */ - - keep: function (filter) { - this.rules.keep(filter); - return this - }, - - /** - * Remove a node that matches the filter - * @public - * @param {String|Array|Function} filter The unique key of the rule - * @returns The Turndown instance for chaining - * @type Object - */ - - remove: function (filter) { - this.rules.remove(filter); - return this - }, - - /** - * Escapes Markdown syntax - * @public - * @param {String} string The string to escape - * @returns A string with Markdown syntax escaped - * @type String - */ - - escape: function (string) { - return escapes.reduce(function (accumulator, escape) { - return accumulator.replace(escape[0], escape[1]) - }, string) - } -}; - -/** - * Reduces a DOM node down to its Markdown string equivalent - * @private - * @param {HTMLElement} parentNode The node to convert - * @returns A Markdown representation of the node - * @type String - */ - -function turndown_es_process (parentNode) { - var self = this; - return reduce.call(parentNode.childNodes, function (output, node) { - node = new Node(node, self.options); - - var replacement = ''; - if (node.nodeType === 3) { - replacement = node.isCode ? node.nodeValue : self.escape(node.nodeValue); - } else if (node.nodeType === 1) { - replacement = replacementForNode.call(self, node); - } - - return join(output, replacement) - }, '') -} - -/** - * Appends strings as each rule requires and trims the output - * @private - * @param {String} output The conversion output - * @returns A trimmed version of the ouput - * @type String - */ - -function postProcess (output) { - var self = this; - this.rules.forEach(function (rule) { - if (typeof rule.append === 'function') { - output = join(output, rule.append(self.options)); - } - }); - - return output.replace(/^[\t\r\n]+/, '').replace(/[\t\r\n\s]+$/, '') -} - -/** - * Converts an element node to its Markdown equivalent - * @private - * @param {HTMLElement} node The node to convert - * @returns A Markdown representation of the node - * @type String - */ - -function replacementForNode (node) { - var rule = this.rules.forNode(node); - var content = turndown_es_process.call(this, node); - var whitespace = node.flankingWhitespace; - if (whitespace.leading || whitespace.trailing) content = content.trim(); - return ( - whitespace.leading + - rule.replacement(content, node, this.options) + - whitespace.trailing - ) -} - -/** - * Joins replacement to the current output with appropriate number of new lines - * @private - * @param {String} output The current conversion output - * @param {String} replacement The string to append to the output - * @returns Joined output - * @type String - */ - -function join (output, replacement) { - var s1 = trimTrailingNewlines(output); - var s2 = trimLeadingNewlines(replacement); - var nls = Math.max(output.length - s1.length, replacement.length - s2.length); - var separator = '\n\n'.substring(0, nls); - - return s1 + separator + s2 -} - -/** - * Determines whether an input can be converted - * @private - * @param {String|HTMLElement} input Describe this parameter - * @returns Describe what it returns - * @type String|Object|Array|Boolean|Number - */ - -function canConvert (input) { - return ( - input != null && ( - typeof input === 'string' || - (input.nodeType && ( - input.nodeType === 1 || input.nodeType === 9 || input.nodeType === 11 - )) - ) - ) -} - -/* harmony default export */ const turndown_es = (TurndownService); - -;// ../ai-tools/dist/lib/tools/web.js - - - -const turndown = new turndown_es(); -const web_tools = (target, options) => { - const logger = (0,ai_tools_dist/* toolLogger */.bw)('web', options); - return [ - { - type: 'function', - function: { - name: 'browse_page', - description: 'Browse a webpage and return its content as markdown, all links, images and pages main image', - parameters: { - type: 'object', - properties: { - url: { - type: 'string', - description: 'URL of the webpage to browse' - } - }, - required: ['url'] - }, - function: async (params) => { - try { - logger.debug(`Tool::BrowsePage Browsing ${params.url}`); - const browser = await external_require_puppeteer_namespaceObject.launch({ - headless: true, - args: ['--no-sandbox', '--disable-setuid-sandbox'] - }); - try { - const page = await browser.newPage(); - logger.debug(`Tool::Web::BrowsePage Opening page ${params.url}`); - await page.goto(params.url, { - waitUntil: 'networkidle2' - }); - const pageData = await page.evaluate((selector) => { - const elementsToRemove = document.querySelectorAll('script, style, link, meta, noscript, iframe, [style*="display:none"],[style*="display: none"], .hidden'); - elementsToRemove.forEach(el => el.remove()); - const links = Array.from(document.querySelectorAll('a')) - .map(a => ({ - text: a.textContent?.trim() || '', - href: a.href - })) - .filter(link => link.href && link.href.startsWith('http')) - .slice(0, 20); - const images = Array.from(document.querySelectorAll('img')) - .map(img => ({ - src: img.src, - alt: img.alt || '', - width: img.width, - height: img.height - })) - .filter(img => img.src && img.src.startsWith('http')) - .slice(0, 20); - const mainImage = document.querySelector('meta[property="og:image"]')?.getAttribute('content') || - document.querySelector('meta[name="og:image"]')?.getAttribute('content'); - let content; - const body = document.body; - content = body ? body.innerHTML : ''; - return { - content, - links, - images, - ogImage: mainImage - }; - }, null); - const markdown = turndown.turndown(pageData.content); - await browser.close(); - const ret = { - success: true, - markdown: markdown, - links: pageData.links, - images: pageData.images, - mainImage: pageData.ogImage, - url: params.url - }; - return ret; - } - catch (error) { - logger.debug('Error browsing page:', error.message, error); - await browser.close(); - throw error; - } - } - catch (error) { - logger.debug('Error browsing page:', error.message); - return { - success: false, - error: error.message, - url: params.url - }; - } - }, - parse: JSON.parse - } - } - ]; -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2ViLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy93ZWIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsT0FBTyxTQUFTLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sZUFBZSxNQUFNLFVBQVUsQ0FBQTtBQUV0QyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFHM0MsTUFBTSxRQUFRLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQTtBQUV0QyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxNQUFjLEVBQUUsT0FBa0IsRUFBYyxFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFVBQVUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUE7SUFDekMsT0FBTztRQUNIO1lBQ0ksSUFBSSxFQUFFLFVBQVU7WUFDaEIsUUFBUSxFQUFFO2dCQUNOLElBQUksRUFBRSxhQUFhO2dCQUNuQixXQUFXLEVBQUUsNkZBQTZGO2dCQUMxRyxVQUFVLEVBQUU7b0JBQ1IsSUFBSSxFQUFFLFFBQVE7b0JBQ2QsVUFBVSxFQUFFO3dCQUNSLEdBQUcsRUFBRTs0QkFDRCxJQUFJLEVBQUUsUUFBUTs0QkFDZCxXQUFXLEVBQUUsOEJBQThCO3lCQUM5QztxQkFDSjtvQkFDRCxRQUFRLEVBQUUsQ0FBQyxLQUFLLENBQUM7aUJBQ3BCO2dCQUNELFFBQVEsRUFBRSxLQUFLLEVBQUUsTUFBVyxFQUFFLEVBQUU7b0JBQzVCLElBQUk7d0JBQ0EsTUFBTSxDQUFDLEtBQUssQ0FBQyw2QkFBNkIsTUFBTSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUM7d0JBQ3hELE1BQU0sT0FBTyxHQUFHLE1BQU0sU0FBUyxDQUFDLE1BQU0sQ0FBQzs0QkFDbkMsUUFBUSxFQUFFLElBQUk7NEJBQ2QsSUFBSSxFQUFFLENBQUMsY0FBYyxFQUFFLDBCQUEwQixDQUFDO3lCQUNyRCxDQUFDLENBQUE7d0JBRUYsSUFBSTs0QkFDQSxN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 // EXTERNAL MODULE: external "buffer" var external_buffer_ = __webpack_require__(20181); ;// ../ai-tools/node_modules/@keyv/serialize/dist/index.js @@ -189389,7 +174542,7 @@ var iterableAdapters = [ "valkey", "etcd" ]; -var dist_Keyv = class extends event_manager_default { +var Keyv = class extends event_manager_default { opts; iterator; hooks = new hooks_manager_default(); @@ -190058,151 +175211,22 @@ var dist_Keyv = class extends event_manager_default { return void 0; } }; -var index_default = dist_Keyv; - - -// EXTERNAL MODULE: external "events" -var external_events_ = __webpack_require__(24434); -// EXTERNAL MODULE: ../ai-tools/node_modules/sqlite3/lib/sqlite3.js -var sqlite3 = __webpack_require__(45430); -;// ../ai-tools/node_modules/@keyv/sqlite/dist/index.js -// src/index.ts - - - - -var dist_toString = (input) => String(input).search(/^[a-zA-Z]+$/) < 0 ? "_" + input : input; -var KeyvSqlite = class extends external_events_ { - ttlSupport; - opts; - namespace; - close; - query; - constructor(keyvOptions) { - super(); - this.ttlSupport = false; - let options = { - dialect: "sqlite", - uri: "sqlite://:memory:" - }; - if (typeof keyvOptions === "string") { - options.uri = keyvOptions; - } else { - options = { - ...options, - ...keyvOptions - }; - } - options.db = options.uri.replace(/^sqlite:\/\//, ""); - options.connect = async () => new Promise((resolve, reject) => { - const database = new sqlite3.Database(options.db, (error) => { - if (error) { - reject(error); - } else { - if (options.busyTimeout) { - database.configure("busyTimeout", options.busyTimeout); - } - resolve(database); - } - }); - }).then((database) => ({ query: (0,external_util_.promisify)(database.all).bind(database), close: (0,external_util_.promisify)(database.close).bind(database) })); - this.opts = { - table: "keyv", - keySize: 255, - ...options - }; - this.opts.table = dist_toString(this.opts.table); - const createTable = `CREATE TABLE IF NOT EXISTS ${this.opts.table}(key VARCHAR(${Number(this.opts.keySize)}) PRIMARY KEY, value TEXT )`; - const connected = this.opts.connect().then(async (database) => database.query(createTable).then(() => database)).catch((error) => this.emit("error", error)); - this.query = async (sqlString, ...parameter) => connected.then(async (database) => database.query(sqlString, ...parameter)); - this.close = async () => connected.then((database) => database.close()); - } - async get(key) { - const select = `SELECT * FROM ${this.opts.table} WHERE key = ?`; - const rows = await this.query(select, key); - const row = rows[0]; - if (row === void 0) { - return void 0; - } - return row.value; - } - async getMany(keys) { - const select = `SELECT * FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`; - const rows = await this.query(select, JSON.stringify(keys)); - return keys.map((key) => { - const row = rows.find((row2) => row2.key === key); - return row ? row.value : void 0; - }); - } - async set(key, value) { - const upsert = `INSERT INTO ${this.opts.table} (key, value) - VALUES(?, ?) - ON CONFLICT(key) - DO UPDATE SET value=excluded.value;`; - return this.query(upsert, key, value); - } - async delete(key) { - const select = `SELECT * FROM ${this.opts.table} WHERE key = ?`; - const del = `DELETE FROM ${this.opts.table} WHERE key = ?`; - const rows = await this.query(select, key); - const row = rows[0]; - if (row === void 0) { - return false; - } - await this.query(del, key); - return true; - } - async deleteMany(keys) { - const del = `DELETE FROM ${this.opts.table} WHERE key IN (SELECT value FROM json_each(?))`; - const results = await this.getMany(keys); - if (results.every((x) => x === void 0)) { - return false; - } - await this.query(del, JSON.stringify(keys)); - return true; - } - async clear() { - const del = `DELETE FROM ${this.opts.table} WHERE key LIKE ?`; - await this.query(del, this.namespace ? `${this.namespace}:%` : "%"); - } - async *iterator(namespace) { - const limit = Number.parseInt(this.opts.iterationLimit, 10) || 10; - async function* iterate(offset, options, query) { - const select = `SELECT * FROM ${options.table} WHERE key LIKE ? LIMIT ? OFFSET ?`; - const iterator = await query(select, [`${namespace ? namespace + ":" : ""}%`, limit, offset]); - const entries = [...iterator]; - if (entries.length === 0) { - return; - } - for (const entry of entries) { - offset += 1; - yield [entry.key, entry.value]; - } - yield* iterate(offset, options, query); - } - yield* iterate(0, this.opts, this.query); - } - async has(key) { - const exists = `SELECT EXISTS ( SELECT * FROM ${this.opts.table} WHERE key = ? )`; - const result = await this.query(exists, key); - return Object.values(result[0])[0] === 1; - } - async disconnect() { - await this.close(); - } -}; -var createKeyv = (keyvOptions) => new Keyv({ store: new KeyvSqlite(keyvOptions) }); -var dist_index_default = KeyvSqlite; +var index_default = Keyv; +// EXTERNAL MODULE: ../ai-tools/node_modules/keyv-file/lib/index.js +var keyv_file_lib = __webpack_require__(58538); ;// ../ai-tools/dist/lib/tools/keyv.js const store = (storePath, ns = 'ns-unknown', opts = {}) => { - const keyvSqlite = new dist_index_default(external_path_.resolve((0,dist/* resolve */.hd)(storePath))); - return new index_default({ store: keyvSqlite, ttl: 5000, namespace: ns, ...opts }); + const keyvFile = new keyv_file_lib/* KeyvFile */.Sk({ + filename: external_path_.resolve((0,dist/* resolve */.hd)(storePath)), + writeDelay: 100, // ms + }); + return new index_default({ store: keyvFile, namespace: ns, ...opts }); }; const get = async (key, storePath, ns = 'ns-unknown', opts = {}) => { const keyv = store(storePath, ns, opts); @@ -190212,11 +175236,7 @@ const set = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { const keyv = store(storePath, ns, opts); return await keyv.set(key, value); }; -const list = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { - const keyv = store(storePath, ns, opts); - return await keyv.set(key, value); -}; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5di5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMva2V5di50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxVQUFVLE1BQU0sY0FBYyxDQUFBO0FBRXJDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUUzQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDbEYsTUFBTSxVQUFVLEdBQUcsSUFBSSxVQUFVLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25FLE9BQU8sSUFBSSxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsVUFBVSxFQUFFLEdBQUcsRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUE7QUFDN0UsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ25HLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDL0csTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDaEgsTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQSJ9 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia2V5di5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9saWIvdG9vbHMva2V5di50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssSUFBSSxNQUFNLE1BQU0sQ0FBQTtBQUM1QixPQUFPLElBQUksTUFBTSxNQUFNLENBQUE7QUFDdkIsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUVwQyxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHLENBQUMsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ2xGLE1BQU0sUUFBUSxHQUFHLElBQUksUUFBUSxDQUFDO1FBQzFCLFFBQVEsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUMxQyxVQUFVLEVBQUUsR0FBRyxFQUFFLEtBQUs7S0FDekIsQ0FBQyxDQUFBO0lBQ0YsT0FBTyxJQUFJLElBQUksQ0FBQyxFQUFFLEtBQUssRUFBRSxRQUFRLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxHQUFHLElBQUksRUFBRSxDQUFDLENBQUE7QUFDaEUsQ0FBQyxDQUFBO0FBQ0QsTUFBTSxDQUFDLE1BQU0sR0FBRyxHQUFHLEtBQUssRUFBRSxHQUFXLEVBQUUsU0FBaUIsRUFBRSxLQUFhLFlBQVksRUFBRSxPQUFZLEVBQUUsRUFBRSxFQUFFO0lBQ25HLE1BQU0sSUFBSSxHQUFHLEtBQUssQ0FBQyxTQUFTLEVBQUUsRUFBRSxFQUFFLElBQUksQ0FBQyxDQUFBO0lBQ3ZDLE9BQU8sTUFBTSxJQUFJLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFBO0FBQzlCLENBQUMsQ0FBQTtBQUNELE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQUUsR0FBVyxFQUFFLEtBQVUsRUFBRSxTQUFpQixFQUFFLEtBQWEsWUFBWSxFQUFFLE9BQVksRUFBRSxFQUFFLEVBQUU7SUFDL0csTUFBTSxJQUFJLEdBQUcsS0FBSyxDQUFDLFNBQVMsRUFBRSxFQUFFLEVBQUUsSUFBSSxDQUFDLENBQUE7SUFDdkMsT0FBTyxNQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFBO0FBQ3JDLENBQUMsQ0FBQSJ9 ;// ../ai-tools/dist/lib/tools/memory.js @@ -190224,7 +175244,7 @@ const list = async (key, value, storePath, ns = 'ns-unknown', opts = {}) => { // Helper function to get storage path const getStoragePath = (options) => { // For now, use default path. Later this can be configured via options - return external_path_.join(process.cwd(), 'memory.sqlite'); + return external_path_.join(process.cwd(), 'memory.json'); }; // Default collection name when none provided const DEFAULT_COLLECTION = 'no-collection'; @@ -190571,7 +175591,7 @@ Returns: { } ]; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsZUFBZSxDQUFDLENBQUM7QUFDckQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUk7Z0JBQ0EsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNuRDtRQUNMLEtBQUssUUFBUTtZQUNULDRDQUE0QztZQUM1QyxJQUFJO2dCQUNBLGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1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 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb3J5LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b29scy9tZW1vcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUE7QUFJNUIsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBRzNDLE9BQU8sRUFBRSxLQUFLLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUUzQyxzQ0FBc0M7QUFDdEMsTUFBTSxjQUFjLEdBQUcsQ0FBQyxPQUFrQixFQUFVLEVBQUU7SUFDbEQsc0VBQXNFO0lBQ3RFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUM7QUFDbkQsQ0FBQyxDQUFDO0FBRUYsNkNBQTZDO0FBQzdDLE1BQU0sa0JBQWtCLEdBQUcsZUFBZSxDQUFDO0FBZTNDLG1EQUFtRDtBQUNuRCxNQUFNLHNCQUFzQixHQUFHLENBQUMsS0FBYSxFQUFFLE1BQWtCLEVBQVUsRUFBRTtJQUN6RSxRQUFRLE1BQU0sRUFBRTtRQUNaLEtBQUssTUFBTTtZQUNQLElBQUk7Z0JBQ0EsK0NBQStDO2dCQUMvQyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNsQixPQUFPLEtBQUssQ0FBQzthQUNoQjtZQUFDLE9BQU8sS0FBSyxFQUFFO2dCQUNaLE1BQU0sSUFBSSxLQUFLLENBQUMsOEJBQThCLENBQUMsQ0FBQzthQUNuRDtRQUNMLEtBQUssUUFBUTtZQUNULDRDQUE0QztZQUM1QyxJQUFJO2dCQUNBLGtCQUFrQjtnQkFDbEIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0JBQzdCLE9BQU8sS0FBSyxDQUFDO2FBQ2hCO1lBQUMsT0FBTyxLQUFLLEVBQUU7Z0JBQ1osTUFBTSxJQUFJLEtBQUssQ0FBQyx1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 ;// ../ai-tools/dist/lib/tools/tools.js @@ -190580,9 +175600,9 @@ Returns: { +//import { tools as webTools } from './web.js' - -//import { tools as emailTools } from './email' +// import { tools as emailTools } from './email' const tools_tools = { fs: tools, npm: npm_tools, @@ -190591,11 +175611,11 @@ const tools_tools = { interact: interact_tools, user: user_tools, search: search_tools, - web: web_tools, - memory: memory_tools, + // web: webTools, + memory: memory_tools // email: emailTools }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksV0FBVyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ2xELCtDQUErQztBQUUvQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUc7SUFDakIsRUFBRSxFQUFFLE9BQU87SUFDWCxHQUFHLEVBQUUsUUFBUTtJQUNiLEdBQUcsRUFBRSxRQUFRO0lBQ2IsUUFBUSxFQUFFLGFBQWE7SUFDdkIsUUFBUSxFQUFFLGFBQWE7SUFDdkIsSUFBSSxFQUFFLFNBQVM7SUFDZixNQUFNLEVBQUUsTUFBTTtJQUNkLEdBQUcsRUFBRSxRQUFRO0lBQ2IsTUFBTSxFQUFFLFdBQVc7SUFDbkIsb0JBQW9CO0NBQ3ZCLENBQUEifQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rvb2xzL3Rvb2xzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLElBQUksT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzFDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksUUFBUSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzVDLE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksYUFBYSxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLElBQUksU0FBUyxFQUFFLE1BQU0sV0FBVyxDQUFBO0FBQzlDLE9BQU8sRUFBRSxLQUFLLElBQUksTUFBTSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQzdDLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsS0FBSyxJQUFJLFdBQVcsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNsRCxnREFBZ0Q7QUFFaEQsTUFBTSxDQUFDLE1BQU0sS0FBSyxHQUFHO0lBQ2pCLEVBQUUsRUFBRSxPQUFPO0lBQ1gsR0FBRyxFQUFFLFFBQVE7SUFDYixHQUFHLEVBQUUsUUFBUTtJQUNiLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLFFBQVEsRUFBRSxhQUFhO0lBQ3ZCLElBQUksRUFBRSxTQUFTO0lBQ2YsTUFBTSxFQUFFLE1BQU07SUFDZCxpQkFBaUI7SUFDakIsTUFBTSxFQUFFLFdBQVc7SUFDbkIsb0JBQW9CO0NBQ3ZCLENBQUEifQ== // EXTERNAL MODULE: ./dist-in/index.js + 3 modules var dist_in = __webpack_require__(88022); ;// ../core/dist/aspects_simple.js @@ -190972,7 +175992,7 @@ const variables = (options) => { /* harmony import */ var json_schema_to_zod__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(47571); /* harmony import */ var _filters_js__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(98152); /* harmony import */ var _models_index_js__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(45000); -/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(49315); +/* harmony import */ var _tools_js__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(3043); /* harmony import */ var _models_openrouter_js__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(2761); /* harmony import */ var _models_openai_js__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(53382); @@ -230236,8 +215256,293 @@ const main_fetch = async () => { //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmV0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29tbWFuZHMvZmV0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQzVCLE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDbEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDakQsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDdkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0seUJBQXlCLENBQUE7QUFDL0QsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRWxELE1BQU0sQ0FBQyxNQUFNLEtBQUssR0FBRyxLQUFLLElBQUksRUFBRTtJQUU5QixNQUFNLE1BQU0sR0FBRyxjQUFjLEVBQVMsQ0FBQTtJQUN0QyxJQUFJLE1BQU0sQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN2QyxNQUFNLFlBQVksR0FBRyxNQUFNLGlCQUFpQixDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUE7UUFDL0QsSUFBSSxZQUFZLEVBQUUsQ0FBQztZQUNqQixNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsV0FBVyxFQUFFLEVBQUUsYUFBYSxDQUFDLENBQUE7WUFDbkUsS0FBSyxDQUFDLGdCQUFnQixFQUFFLFlBQVksQ0FBQyxDQUFBO1lBQ3JDLE1BQU0sQ0FBQyxJQUFJLENBQUMsV0FBVyxZQUFZLENBQUMsTUFBTSxzQkFBc0IsZ0JBQWdCLEVBQUUsQ0FBQyxDQUFBO1FBQ3JGLENBQUM7YUFBTSxDQUFDO1lBQ04sTUFBTSxDQUFDLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFBO1FBQy9DLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLE1BQU0scUJBQXFCLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFO1FBQ3JFLE9BQU87WUFDTCxFQUFFLEVBQUUsS0FBSyxDQUFDLEVBQUU7WUFDWixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsT0FBTyxFQUFFLEtBQUssQ0FBQyxPQUFPO1lBQ3RCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztZQUN0QixPQUFPLEVBQUUsS0FBSyxDQUFDLE9BQU87U0FDdkIsQ0FBQTtJQUNILENBQUMsQ0FBQyxDQUFBO0lBQ0YsTUFBTSxvQkFBb0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLFdBQVcsRUFBRSxFQUFFLGlCQUFpQixDQUFDLENBQUE7SUFDM0UsS0FBSyxDQUFDLG9CQUFvQixFQUFFLGdCQUFnQixDQUFDLENBQUE7SUFDN0MsTUFBTSxDQUFDLElBQUksQ0FBQyxXQUFXLGdCQUFnQixDQUFDLE1BQU0sMEJBQTBCLG9CQUFvQixFQUFFLENBQUMsQ0FBQTtBQUNqRyxDQUFDLENBQUEifQ== // EXTERNAL MODULE: ./dist-in/commands/run.js + 21 modules var main_run = __webpack_require__(98177); +// EXTERNAL MODULE: external "node:fs" +var main_external_node_fs_ = __webpack_require__(73024); // EXTERNAL MODULE: ../core/dist/primitives.js var main_primitives = __webpack_require__(78275); +;// ./node_modules/p-map/index.js +async function main_pMap( + iterable, + mapper, + { + concurrency = Number.POSITIVE_INFINITY, + stopOnError = true, + signal, + } = {}, +) { + return new Promise((resolve_, reject_) => { + if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) { + throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`); + } + + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } + + if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`); + } + + const result = []; + const errors = []; + const skippedIndexesMap = new Map(); + let isRejected = false; + let isResolved = false; + let isIterableDone = false; + let resolvingCount = 0; + let currentIndex = 0; + const iterator = iterable[Symbol.iterator] === undefined ? iterable[Symbol.asyncIterator]() : iterable[Symbol.iterator](); + + const signalListener = () => { + reject(signal.reason); + }; + + const cleanup = () => { + signal?.removeEventListener('abort', signalListener); + }; + + const resolve = value => { + resolve_(value); + cleanup(); + }; + + const reject = reason => { + isRejected = true; + isResolved = true; + reject_(reason); + cleanup(); + }; + + if (signal) { + if (signal.aborted) { + reject(signal.reason); + } + + signal.addEventListener('abort', signalListener, {once: true}); + } + + const next = async () => { + if (isResolved) { + return; + } + + const nextItem = await iterator.next(); + + const index = currentIndex; + currentIndex++; + + // Note: `iterator.next()` can be called many times in parallel. + // This can cause multiple calls to this `next()` function to + // receive a `nextItem` with `done === true`. + // The shutdown logic that rejects/resolves must be protected + // so it runs only one time as the `skippedIndex` logic is + // non-idempotent. + if (nextItem.done) { + isIterableDone = true; + + if (resolvingCount === 0 && !isResolved) { + if (!stopOnError && errors.length > 0) { + reject(new AggregateError(errors)); // eslint-disable-line unicorn/error-message + return; + } + + isResolved = true; + + if (skippedIndexesMap.size === 0) { + resolve(result); + return; + } + + const pureResult = []; + + // Support multiple `pMapSkip`'s. + for (const [index, value] of result.entries()) { + if (skippedIndexesMap.get(index) === main_pMapSkip) { + continue; + } + + pureResult.push(value); + } + + resolve(pureResult); + } + + return; + } + + resolvingCount++; + + // Intentionally detached + (async () => { + try { + const element = await nextItem.value; + + if (isResolved) { + return; + } + + const value = await mapper(element, index); + + // Use Map to stage the index of the element. + if (value === main_pMapSkip) { + skippedIndexesMap.set(index, value); + } + + result[index] = value; + + resolvingCount--; + await next(); + } catch (error) { + if (stopOnError) { + reject(error); + } else { + errors.push(error); + resolvingCount--; + + // In that case we can't really continue regardless of `stopOnError` state + // since an iterable is likely to continue throwing after it throws once. + // If we continue calling `next()` indefinitely we will likely end up + // in an infinite loop of failed iteration. + try { + await next(); + } catch (error) { + reject(error); + } + } + } + })(); + }; + + // Create the concurrent runners in a detached (non-awaited) + // promise. We need this so we can await the `next()` calls + // to stop creating runners before hitting the concurrency limit + // if the iterable has already been marked as done. + // NOTE: We *must* do this for async iterators otherwise we'll spin up + // infinite `next()` calls by default and never start the event loop. + (async () => { + for (let index = 0; index < concurrency; index++) { + try { + // eslint-disable-next-line no-await-in-loop + await next(); + } catch (error) { + reject(error); + break; + } + + if (isIterableDone || isRejected) { + break; + } + } + })(); + }); +} + +function main_pMapIterable( + iterable, + mapper, + { + concurrency = Number.POSITIVE_INFINITY, + backpressure = concurrency, + } = {}, +) { + if (iterable[Symbol.iterator] === undefined && iterable[Symbol.asyncIterator] === undefined) { + throw new TypeError(`Expected \`input\` to be either an \`Iterable\` or \`AsyncIterable\`, got (${typeof iterable})`); + } + + if (typeof mapper !== 'function') { + throw new TypeError('Mapper function is required'); + } + + if (!((Number.isSafeInteger(concurrency) && concurrency >= 1) || concurrency === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`concurrency\` to be an integer from 1 and up or \`Infinity\`, got \`${concurrency}\` (${typeof concurrency})`); + } + + if (!((Number.isSafeInteger(backpressure) && backpressure >= concurrency) || backpressure === Number.POSITIVE_INFINITY)) { + throw new TypeError(`Expected \`backpressure\` to be an integer from \`concurrency\` (${concurrency}) and up or \`Infinity\`, got \`${backpressure}\` (${typeof backpressure})`); + } + + return { + async * [Symbol.asyncIterator]() { + const iterator = iterable[Symbol.asyncIterator] === undefined ? iterable[Symbol.iterator]() : iterable[Symbol.asyncIterator](); + + const promises = []; + let runningMappersCount = 0; + let isDone = false; + let index = 0; + + function trySpawn() { + if (isDone || !(runningMappersCount < concurrency && promises.length < backpressure)) { + return; + } + + const promise = (async () => { + const {done, value} = await iterator.next(); + + if (done) { + return {done: true}; + } + + runningMappersCount++; + + // Spawn if still below concurrency and backpressure limit + trySpawn(); + + try { + const returnValue = await mapper(await value, index++); + + runningMappersCount--; + + if (returnValue === main_pMapSkip) { + const index = promises.indexOf(promise); + + if (index > 0) { + promises.splice(index, 1); + } + } + + // Spawn if still below backpressure limit and just dropped below concurrency limit + trySpawn(); + + return {done: false, value: returnValue}; + } catch (error) { + isDone = true; + return {error}; + } + })(); + + promises.push(promise); + } + + trySpawn(); + + while (promises.length > 0) { + const {error, done, value} = await promises[0]; // eslint-disable-line no-await-in-loop + + promises.shift(); + + if (error) { + throw error; + } + + if (done) { + return; + } + + // Spawn if just dropped below backpressure limit and below the concurrency limit + trySpawn(); + + if (value === main_pMapSkip) { + continue; + } + + yield value; + } + }, + }; +} + +const main_pMapSkip = Symbol('skip'); + // EXTERNAL MODULE: ./node_modules/glob/dist/esm/index.js + 15 modules var main_glob_dist_esm = __webpack_require__(59795); // EXTERNAL MODULE: ./node_modules/openai/index.mjs + 92 modules @@ -230249,7 +215554,6 @@ var main_dist_in_client = __webpack_require__(48215); - const main_createBuffer = (path) => { try { const buffer = main_external_fs_.readFileSync(path); @@ -230264,21 +215568,21 @@ const main_transcribe = async (options) => { const client = (0,main_dist_in_client/* createClient */.U)(options); if (!client) { options.logger.error('Failed to create client'); - return; + return ''; } if (!options.include || options.include.length === 0) { options.logger.error('No source file provided via --include'); - return; + return ''; } const sourceFile = options.include[0]; if (!(0,main_exists/* sync */.OH)(sourceFile)) { options.logger.error('Source file does not exist', sourceFile); - return; + return ''; } const file = await (0,main_node_modules_openai/* toFile */.eZ)(main_createBuffer(sourceFile), 'audio.mp3', { type: 'audio/mpeg' }); if (!file) { options.logger.error('Error converting source to file'); - return; + return ''; } const completion = await client.audio.transcriptions.create({ model: 'whisper-1', @@ -230287,19 +215591,12 @@ const main_transcribe = async (options) => { }); if (!completion) { options.logger.error('OpenAI response is empty'); - return; + return ''; } const text_content = completion.text || ''; - if (options.dst) { - (0,main_write/* sync */.OH)(options.dst, text_content); - } - else { - process.stdout.write(text_content); - } - // options.logger.debug('OpenAI Transcribe response:', completion) - return completion; + return text_content; }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNjcmliZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFDcEQsT0FBTyxFQUFFLElBQUksSUFBSSxLQUFLLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQTtBQUVsRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRTNDLE1BQU0sWUFBWSxHQUFHLENBQUMsSUFBWSxFQUFpQixFQUFFO0lBQ2pELElBQUksQ0FBQztRQUNELE1BQU0sTUFBTSxHQUFHLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDcEMsT0FBTyxNQUFNLENBQUM7SUFDbEIsQ0FBQztJQUFDLE9BQU8sS0FBSyxFQUFFLENBQUM7UUFDYixPQUFPLENBQUMsS0FBSyxDQUFDLHdCQUF3QixFQUFFLEtBQUssQ0FBQyxDQUFDO1FBQy9DLE9BQU8sSUFBSSxDQUFDO0lBQ2hCLENBQUM7QUFDTCxDQUFDLENBQUE7QUFFRCxNQUFNLENBQUMsTUFBTSxVQUFVLEdBQUcsS0FBSyxFQUFFLE9BQWtCLEVBQUUsRUFBRTtJQUNuRCxNQUFNLE1BQU0sR0FBRyxZQUFZLENBQUMsT0FBTyxDQUFDLENBQUE7SUFDcEMsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1FBQ1YsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMseUJBQXlCLENBQUMsQ0FBQTtRQUMvQyxPQUFNO0lBQ1YsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDN0QsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLFVBQVUsR0FBRyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBRXRDLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQztRQUN0QixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyw0QkFBNEIsRUFBRSxVQUFVLENBQUMsQ0FBQTtRQUM5RCxPQUFPO0lBQ1gsQ0FBQztJQUVELE1BQU0sSUFBSSxHQUFHLE1BQU0sTUFBTSxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsRUFBRSxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsWUFBWSxFQUFFLENBQUMsQ0FBQztJQUN6RixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDUixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxpQ0FBaUMsQ0FBQyxDQUFBO1FBQ3ZELE9BQU87SUFDWCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDN0QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUcsT0FBZSxDQUFDLGVBQWUsSUFBSSxjQUFjO0tBQ3RFLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDaEQsT0FBTztJQUNYLENBQUM7SUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUUzQyxJQUFJLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUNkLEtBQUssQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLFlBQVksQ0FBQyxDQUFBO0lBQ3BDLENBQUM7U0FBTSxDQUFDO1FBQ0osT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLENBQUE7SUFDdEMsQ0FBQztJQUVELGtFQUFrRTtJQUNsRSxPQUFPLFVBQVUsQ0FBQTtBQUNyQixDQUFDLENBQUEifQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvdHJhbnNjcmliZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxNQUFNLElBQUksQ0FBQTtBQUN4QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQy9CLE9BQU8sRUFBRSxJQUFJLElBQUksTUFBTSxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFHcEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUUzQyxNQUFNLFlBQVksR0FBRyxDQUFDLElBQVksRUFBaUIsRUFBRTtJQUNqRCxJQUFJLENBQUM7UUFDRCxNQUFNLE1BQU0sR0FBRyxFQUFFLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3BDLE9BQU8sTUFBTSxDQUFDO0lBQ2xCLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyx3QkFBd0IsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQyxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0FBQ0wsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLEtBQUssRUFBRSxPQUFrQixFQUFtQixFQUFFO0lBQ3BFLE1BQU0sTUFBTSxHQUFHLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtJQUNwQyxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7UUFDVixPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1FBQy9DLE9BQU8sRUFBRSxDQUFBO0lBQ2IsQ0FBQztJQUVELElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxJQUFJLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ25ELE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLHVDQUF1QyxDQUFDLENBQUE7UUFDN0QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUV0QyxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFFLENBQUM7UUFDdEIsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsNEJBQTRCLEVBQUUsVUFBVSxDQUFDLENBQUE7UUFDOUQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxNQUFNLENBQUMsWUFBWSxDQUFDLFVBQVUsQ0FBQyxFQUFFLFdBQVcsRUFBRSxFQUFFLElBQUksRUFBRSxZQUFZLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNSLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLGlDQUFpQyxDQUFDLENBQUE7UUFDdkQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxVQUFVLEdBQVEsTUFBTSxNQUFNLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxNQUFNLENBQUM7UUFDN0QsS0FBSyxFQUFFLFdBQVc7UUFDbEIsSUFBSSxFQUFFLElBQUk7UUFDVixlQUFlLEVBQUcsT0FBZSxDQUFDLGVBQWUsSUFBSSxjQUFjO0tBQ3RFLENBQUMsQ0FBQTtJQUVGLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNkLE9BQU8sQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLDBCQUEwQixDQUFDLENBQUE7UUFDaEQsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsVUFBVSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUE7SUFDMUMsT0FBTyxZQUFZLENBQUE7QUFDdkIsQ0FBQyxDQUFBIn0= // EXTERNAL MODULE: ./dist-in/glob.js var main_glob = __webpack_require__(89325); // EXTERNAL MODULE: ./dist-in/variables.js @@ -230316,6 +215613,24 @@ var main_variables = __webpack_require__(78618); + +const main_default_sort = (files) => { + const getSortableParts = (filename) => { + const baseName = main_external_node_path_.parse(filename).name; + const match = baseName.match(/^(\d+)_?(.*)$/); // Match leading numbers + const numPart = match ? parseInt(match[1], 10) : NaN; + const textPart = match ? match[2] : baseName; // Extract text part + return { numPart, textPart }; + }; + return files.sort((a, b) => { + const { numPart: aNum, textPart: aText } = getSortableParts(a); + const { numPart: bNum, textPart: bText } = getSortableParts(b); + if (!isNaN(aNum) && !isNaN(bNum)) { + return aNum - bNum || aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + } + return aText.localeCompare(bText, undefined, { numeric: true, sensitivity: 'base' }); + }); +}; const main_TranscribeOptionsSchema = () => { return (0,main_zod_schema/* OptionsSchema */.IO)().pick({ include: true, @@ -230389,7 +215704,7 @@ const main_transcribeCommand = async (opts) => { const info = (0,main_dist/* pathInfoEx */.j4)((0,main_dist/* forward_slash */.Yf)(main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(includePath))), false, { absolute: true, }); - files.push(...(0,main_run/* default_sort */.X4)(info.FILES)); + files.push(...info.FILES); } else if ((0,main_exists/* sync */.OH)(includePath)) { files.push(includePath); @@ -230399,8 +215714,9 @@ const main_transcribeCommand = async (opts) => { opts.logger.warn(`No files found for --include patterns: ${opts.include.join(', ')}`); return; } + files = main_default_sort(files); opts.logger.info(`Found ${files.length} files to transcribe.`); - for (const file of files) { + const mapper = async (file) => { const fileInfo = main_external_node_path_.parse(file); const CWD = process.cwd(); const current_variables = { @@ -230417,18 +215733,35 @@ const main_transcribeCommand = async (opts) => { include: [file], variables: current_variables }; - if (!itemOpts.dst) { - itemOpts.dst = '${SRC_DIR}/${SRC_NAME}.md'; - } - itemOpts.dst = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(itemOpts.dst, itemOpts.alt, itemOpts.variables)); opts.logger.info(`Transcribing ${file}...`); - if (itemOpts.dst) { - opts.logger.info(`Output will be saved to ${itemOpts.dst}`); + const transcribedText = await main_transcribe(itemOpts); + return { transcribedText, itemOpts }; + }; + const results = await main_pMap(files, mapper, { concurrency: 1 }); + let resolvedDstPath; + if (opts.dst) { + resolvedDstPath = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(opts.dst, opts.alt, opts.variables)); + if (main_external_node_fs_.existsSync(resolvedDstPath)) { + main_external_node_fs_.unlinkSync(resolvedDstPath); + } + const allText = results.map(r => r.transcribedText).filter(Boolean).join('\n\n'); + if (allText) { + main_external_node_fs_.writeFileSync(resolvedDstPath, allText + '\n'); + opts.logger.info(`Wrote all transcriptions to ${resolvedDstPath}`); + } + } + else { + for (const { transcribedText, itemOpts } of results) { + if (transcribedText) { + const defaultDstTemplate = '${SRC_DIR}/${SRC_NAME}.md'; + const defaultDstPath = main_external_node_path_.resolve((0,main_dist/* resolve */.hd)(defaultDstTemplate, itemOpts.alt, itemOpts.variables)); + main_external_node_fs_.writeFileSync(defaultDstPath, transcribedText); + opts.logger.info(`Output will be saved to ${defaultDstPath}`); + } } - await main_transcribe(itemOpts); } }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy90cmFuc2NyaWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLE1BQU0sQ0FBQTtBQUMvQixPQUFPLEVBQUUsSUFBSSxJQUFJLE1BQU0sRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBQ3BELE9BQU8sRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBR3RFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUNoRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDakQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUNyQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFDdkMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRTNDLE1BQU0sQ0FBQyxNQUFNLHVCQUF1QixHQUFHLEdBQUcsRUFBRTtJQUN4QyxPQUFPLGFBQWEsRUFBRSxDQUFDLElBQUksQ0FBQztRQUN4QixPQUFPLEVBQUUsSUFBSTtRQUNiLEdBQUcsRUFBRSxJQUFJO1FBQ1QsT0FBTyxFQUFFLElBQUk7UUFDYixLQUFLLEVBQUUsSUFBSTtRQUNYLE1BQU0sRUFBRSxJQUFJO1FBQ1osUUFBUSxFQUFFLElBQUk7UUFDZCxNQUFNLEVBQUUsSUFBSTtRQUNaLE9BQU8sRUFBRSxJQUFJO1FBQ2IsR0FBRyxFQUFFLElBQUk7UUFDVCxTQUFTLEVBQUUsSUFBSTtR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 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNjcmliZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb21tYW5kcy90cmFuc2NyaWJlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sS0FBSyxJQUFJLE1BQU0sV0FBVyxDQUFBO0FBQ2pDLE9BQU8sS0FBSyxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBQzdCLE9BQU8sRUFBRSxRQUFRLEVBQUUsT0FBTyxFQUFFLE1BQU0sMkJBQTJCLENBQUE7QUFDN0QsT0FBTyxJQUFJLE1BQU0sT0FBTyxDQUFBO0FBQ3hCLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxNQUFNLENBQUE7QUFDL0IsT0FBTyxFQUFFLElBQUksSUFBSSxNQUFNLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUNwRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUd0RSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDaEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFckMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFFM0MsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLENBQUMsS0FBZSxFQUFZLEVBQUU7SUFDdEQsTUFBTSxnQkFBZ0IsR0FBRyxDQUFDLFFBQWdCLEVBQUUsRUFBRTtRQUMxQyxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMzQyxNQUFNLEtBQUssR0FBRyxRQUFRLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsd0JBQXdCO1FBQ3ZFLE1BQU0sT0FBTyxHQUFHLEtBQUss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 ;// ./dist-in/main.js //#!/usr/bin/env node diff --git a/packages/kbot/dist/package-lock.json b/packages/kbot/dist/package-lock.json index ca9c125c..3b9e6770 100644 --- a/packages/kbot/dist/package-lock.json +++ b/packages/kbot/dist/package-lock.json @@ -1,12 +1,12 @@ { "name": "@plastichub/kbot", - "version": "1.1.51", + "version": "1.1.52", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@plastichub/kbot", - "version": "1.1.51", + "version": "1.1.52", "license": "ISC", "dependencies": { "node-emoji": "^2.2.0" diff --git a/packages/kbot/dist/package.json b/packages/kbot/dist/package.json index 1bf65549..ffde51b9 100644 --- a/packages/kbot/dist/package.json +++ b/packages/kbot/dist/package.json @@ -1,6 +1,6 @@ { "name": "@plastichub/kbot", - "version": "1.1.51", + "version": "1.1.52", "main": "main_node.js", "author": "", "license": "ISC", diff --git a/packages/kbot/dist/win-64/kbot.exe b/packages/kbot/dist/win-64/kbot.exe index ff199e67cb3f0aa8005b4fef36da4ddd798cd904..d1b27ec5da6cf9bf3010a5d775d9bdb9f352df64 100644 GIT binary patch delta 2378041 zcmWh!XE>J+7w#E9%5K;hNmf>w86hhpvPWf<2uVb?UwAT)D51=d5lKk4%E-)~QL-YW zNLI%Ce?OgbpAY9c*ZFi`_qk7b>z?pL{krfy0wGWWBXEL5P!N>Fe&PT@MNkto1T8^F z&=U;ALE;c`m^eZ(5=;a$!9uVSYy>-Tl;9vZ2`+-0I7aXg#|d8I1i?q}69R-FAw--c zgb5Ksln^7tiBrUBLV}PaqzGw3hL9!B5ORb(p+G1SX9*=jnNT6l5vqh5p-yNJn#6fR zi_j)?2wma=p-1Qw7YPHxkT4>Q2@}GUFeA(f3&N7PL|i7W5LSdWVMEvwSBYzc9dVto zCme_ygd^cZI1@Js7vdJ-O57&g2zTNR;X!y3cL^`ToA4og2|vQ02p|FpGI5UxB7%t! zf*|e_p+p!FPDBuqL=*u;H1U9lA!3P##3Le(cud3-2}C0Cgm_9M5y?afkxHZy>BKW4 zgUBSZi04E$kwfGXdBh7MpC}++5{1MoqKJ4+6cZ&xDe;CVBi<6_LtjgbP%72PNIwGCVGfoqL1h&28cmoh!`eDh|k0* zF-CkLz7pfaH)4XAB&LXIVutum%o20N4`QBJAQp+A#1ip~_)RPmE5sjSmH11n5$nVT zu}N$Z|A=j3hu9_d!Vy3aKoP(Yz!4xJK!E@y0{am-fB+Q&)CkZZK#Kq!0`v$lAaD?Y zLkJv3;0OYY2rwbQi~tJ)tO&3nz>dIC1UL}jM1TtcZUl}Yz=ObX1b7iRfdC%@{0Imj zAc%kv0w)m=MnD7sQ3S*g5J%t?0;ds>KtK`!DFmbukU>BefinomAs~-{0s@K%oJBwh z0c8YK5IBc`DgtT3KfF1(+2wX(K00Bb;j1VwJzytwP z1k4aHN5BFBO9U<H0XGEP5x9eZ2Lhf5+(p0(0dE9+5b#C74*`D!0uTs9fQ-OB1cDF0<#FrA@Bo%c?1>^SVZ6_0!s+|Lf|(7%LuF>@CSia1pXqh zhQK-k8whM7u!X=s1hx^_L0}hwJtQ0j1O*fY3!V01ARA2%&Hi1z{9KP!L5y3KhJrc@8YpO@a2^FM6tq#$K|vRV3n=KJppU{u6bw)> zM8OCJV-!qKFh#)(1#=WEP_RVd5(<}5xPpQe3f3stpkRx_RTQqFV28qW6zoxOK;Z@o zjwm>x;Ecje6kJfag@P*zw^49I!5xJ=D0raYiNakJyio8)!3PCj6#P)|M^=s}?ug+3JeQ5ZmB5QQNWhEW(n;WG-O zD2$=-1%qlqp*y^ z3JQNvSViG43Tr5=qp*R(CJI|9{6k?Ig&h=jQP@MnF+eatF~BguF(6?;fdM53`!P6x z0Tl++7|>uqivb-5^cXN;a1et-7#zmn2nLK8Fk!%q0SgAK7_ec$j=@n3I56PEfC~d| z431&IgTZkOcriGE0UrkZ7zkh>h=C9WCovGlKm-F(48$-H$KVtOr!kPgKoSEf45TrT z!9W&+GZ@HWAdi6p28tM*#Xt!IWeij>IER5M25K0nW1xY7CI;s*(853)104)>F}Q$% z9tQdtT*SZt149gqFfhiz1OrnH%rG#=zybqH3@%}C8G|brSYcp|fei+>7+l5R8U}V4 zT*ts30|yLlVBm;>69�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 Iph&6Q-yA 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

    $fPX%)o4U_2bE;$ryQD<(QVa(%-q@c5 z_hb!^)nAIk`v6aE$Mf*?4M!L{c+uk+9*#A=Hudm6eVXq?sSRKFSX%=OdY7y~7>&HQ z@X_@_f(?HDa0{jj@!dms4a0Widve~ei$F&SGIj7EMaFTA6Y?EsN~Vbq<~)2qH!vb= zK7V2ZaS~^WM$%qz(O&0k4c}M?V!76GTg*Y>df^p_NKmS~)t!Zd-wA zh!V;{bwo>KQo_YRRpgiL4m@ndKNcRN^j^Ti-4|GFAU?%g!z)im&`~6#n9h&#!*S{F z#0+QCvHgHuXp@PVB*lATnz{m1EeGkdJbyNPyt^NlHYeJS#}&O=FfLtpMTjj5gsHJ# zfZNw~ub5kd6Y+}C9vM})XrI>taeb5PXl5%LQoU0UH9=WS)lHo&BT{ z>>dWMu;KAW5J7L^IHkF_1PwHg4r=5DLcG=Ryyu{VHcSsh*}FRw1W5F}83^?T@a+~= z_eIcOfEgF)Ec&zGtPyP87oTGyLF&M!rhr+?x~rQy>JFKe=#2dgJnuf~lQ*yk>E{t~ zmUte~tBC2$^&2-`IJ~)L3uYU)i+_{De5P-gQl%L|bC5N0%4fjVj!)M*$_@iMlH)ws zBt-E6oe`*(^2C7H=tWaOHwg#r_sx&ioF&K>hw9869#q)zC31b!*IKR|BSASeGFmm( zhevK!N;3dL#L-#W$+<1eB>5>XV8ud~(7Z6HTu(*MFY_4$>J>oCO^`GOwSNs@^u6GZ zU@@ezpqURsa-mc`vy+i?L^Ug<3}x80nN5+B8bGCHH;t6F5Q(@ZSprvTIM+%3l!Oy< z0{3FE6I_a<%6hAa7|;saLK4Y*{dH3!8HkOJ%kW=eq8XQ+J~)HpWc18x>Lf6CAqg%o zFi<9tBpj$BjvsCKKk+;!oqvtmZ`7)q*D5H|yRKDq&GGRpo0WFxV#CE#5N|H*$ut?f z*L&XM<7OqK-#4%G0`YESCONCBX}QtwpQhE>?4&oyC;dq>O0z02&-ykSuH++>_=D&K z!3`SB)E1MpMA=hsEl+0E8LE=LN~*IoDb07YS!vpTaiBWAr6o@Auz%R8*KC@0!!+7! ztLqORbo#dqxdxZ!cHi_~bb5;c1((#6S4SmS=AfW95k*}lM0bhcMKNW!AUkdzo^Qs3 zP~p>%@RgvI?3Tz`c7CNU@uaL@95iUTy@b!jOnf1@}M5m3b8wY1d_HbJsrU*1|? zB_{}-!(D(cMH(I4HZPq=cs{L4E~Ntl!Fs1`~o|K^m=Tihyv7et|6l zX1s_ zA!1av5oZxBd7hDY9a9oLawLRiE+_!#*SU~dpg(A0$~Z+;ZNw-D|5oE07N0xlOc>>2 zKJUYNgg0G3U*(P%zT%pOuRpFEzP4dX35OrO`Q3-__J3)fp#q~V;UnTsE%(qZoFKWd zKlc!$z#ESu6!=fSPk@#=&aaCpU;qLMv&Ocvbs#QJ9~#jaKrM)ls23&(KOnFmnL|4k z#5kIQW=Alj6_1r~ujUp}sVQ0x9e%%Wm}d%y=DYyGq--{%o!QI4@u-lHD~z!<>Agrd81 zsP3Bfg7ECJrlBG6!)%oIkR6I!a#%NkB1d=fsQai1J9-*o#tk@MPc(-)?|4GRVeXL8 z9)H23OM{T2O-oubEEVFD zV?mcSRUeS-rg%)@8zQ{?@(u{fvdB2*ib<&LLi{ugC-TDA*dV^J{4*;0bu=GbGAn5ir#kIpaN*kO;zP1F$*~aWaRY@ba>apcC8ewj|Od8uYYz+ zyJ>aJQH#(Z{dG?Dq0MTl4VFi4&u%SQ0}eM(@6o3)cX zAKQfPYY;~W@8{$+K^!bXwGz1=ifYWB*b%&%kq%7o3>&=Y<7uAZW=Ka|yS&p$@a;=z zGH?nZ7UCA#Q8gC5%9aPU+k23cT7O^Y3L6yTWI28-wmnfmNrGIj8>BgYolpZX4g$A! zL*t(aVw)G3XW5`i^X#^9t&Jh=Ky2oWlH<$Nj)z|A zBwQvu5fHkzc;wgDU7JdGGOkc#3Zc6(MAvEh5&g@K4eoB`MkFBQqR<;70>K~2o9_1Q z+kIqr(hIb;hu=P&^TqqaZ_TE&$@Dk6EF(4D?TYBig4Y7u9ahiyLVcmp2V}?1^%jLm z(t+?MX=h926c$v*dX+T8aDUTceJ}>Sb^L0O4=FSE7u@7w2Z2ey+BrDb+5H}e>Ol~& z${^{wFKnS-9USg&Z@oHxzI|}GzxR*r=gnW%TLq^rU4S`vLE_MSc=*fmbY#-X*bgaP z>}yf)@`7&G!D&-e_XTnZ4u4MO@;~raP4=Pn<b zDz9m6*1(Rb#wJIejsd&Rl$w|k5PovL&I@Eki$_iO*KJLAZlbHc_=aUeIT-U{wf=7C zoFU09Nb~2`OSX%mgBDTt#W*k7Vb;|wb*=c+a=23TN9dZ{h>p&fTo_aFUc|5*u=tgG z?2cpNvy`5StmWzmWPg4_(cxika35h-Opotm)6!fZYb_F{CK*?xMt2Qne;K)~H+`-L zKE8-+PRY0yUDOH?X{BHsBGnhtUJx6oZ`F2dnocd%53DC=2M9KqL3qdjIoNRctc|mx zYpR^trLISjPkQva%4^@`QzRw9ZK7OJi@=RZ%Z-($`OvkYn}1`_%N%0LBc8f`VOGrA zTh48!yQVbnnzz?C! zpwr$YnFdLY7=HwURYj`BS6*~N0+`y^Ry6btEy0yoAWzK`t&1${tb6)8wynfcOG-*K z$%bp5Pn@|8uZiF2^j!8P>>I)cL_IW=1roo*(uM4^_r_xkYoZ(A?l{C^s?-oXeYjkEOh?8l_C#jB)v z|DwnzxbaK#tn8Y!d`@oaU2#|cD`nO4DQ~4=F9LzIUQiN{vx@=M-fuX#zR3~$!~Ydd zM4US!VlJn)`XL-97rArcI>Gq-puH%1c7dWU(I7uRPu<=4SZ1W#j3~UFmM_vQt!(@3 zV$y*T0)Jj+z0o+&3w{J&BYOAg6aF=ikx)Uk9IS4ZOrV%4md#U-X0u^h(SThRfS9MK zy~ZtU8$i3%FYg!dK&R}~hKLp#o$%a_lG(Uo-O?{H7fACK1oPCa-8UQf-)*zDy8aE; zX>QM8mi0B;n0wOfWO#3FZT+{p?VB4|lPBN$`hV(O1X0cVJAS*q`ta`j_P&XGBi5G_ z9xo6hrB~3BI_BH#ytlu-^?d8Qm)plIaIo+)OiLJ|TA(rp%7ipGJ$~6!YY^5~a%d%G znVx3t_=~PWL&Nx0&kdgcc(fF#={^%={LzA`-n;+s?mgnb@?jk~9B~~02U!C>-&=k7prK5fAop5#-Tv)c z20>ISoYA3YUhN#3m+8P}rR|v)w#duUY=52Pv-fAoF#XA%naAqHJEE7pyg2RWQ=9Q+ z)f02Oztq2NY&lM|YDFmAWckqcvwUS}r-dCPl^w1m(-dv7p}6k_Gv_o_)Q$rr&8B=H zS*n)cCY&I_W|p8f8GOQLB_tr(BglJ6?y~uKXikd!qO?WnJp>SNOxfT}o6rDfI1VnBZq&%Ij0#+N{Ca(VvxYe@pd=}@rM8;p`{P zPY=fV#R7)F7z_6EhB5;C93)^n-CoNP{a5HZ6!>;Z_ywqLlkbRJh zEdN-#3LGo^W5du}4X{x_^eF$axAPo-v@$e1LvDc%RVA=XT{3Sc+(u8m~jN z@GPHRN|rw}vDH~V6kNzG{Pg)j*Z9slQO~r3fydit#!XZM0uY5YDNdQuXH^UQHpfIx_Z1?!6eX#wSPz*iU>P5 zn8k^mpMh+6vnl(ajSfI~=o4d^yWS&7Cm4|qm2t~82pw(>m;(~-jtN*WF#;2uc95T< zwp?h0ZWzL(6|T)H8sN1o!pUq@qttLqhh#%jtW(Etjo6qp7_0F{3Wf*XGDi!)``UZN zjcn1w7=$0V(asBN>)(EJcYm?4)*N=Sw1kvMmHCK#NI|Y=bLClxV;b6+2`L?+o~LFz zwQXi8f2qn9OBL@{NCjSUjeD+X_!*9*Yrb(`v*97lPSepP@vdt=(vT;zRb2B4D#~(f zKXitnF!Uwm>&<;PjQ2Ben&&;QGr0a}ez9Dzf;*!X5___IMas0S6o2;AevlO`t75wx zBvX3;|Kn_6%YA#g{Q;T5`bYnqt*)-FuHc`w5&plvj{n~q{Bt&ZKre=)(dccTdS)=@ z*{UlC<5L%*dgBaN!avXQ%9dQW3znsFoRnvj<;tGh;?m&4f%7V)6&LX%4sDBcAh&lC zVwYxv@vMY2QY6`_HGiugo>&H#z> zyP(3;24#>&kQX^Q%ZbefX9zck+=JLDbN;|Q=&cH0_1T8ZV{>nHbrli^ER2oF?IEa; z2E!b|alCiSUwtgA;%fO_%nASdU~jkQ7Mi|{WQ7tjI_;z=l7GuC*FYw3Ooonh8d(XM zCC?1COiM%9wxdxxNNvWYvC0YZDs!<{@Qbo*PG-29rn=3EInitEi<}aEAteA`SAR&W z%bqzro0VMThx}Os$X7x6}fVrg@nX-Zo824>eVf zK8I^JEjEAZ+LLYgi3#EBS{oC$^4L_Tr41An+T;#W?KuGNB+sUhX*h1tof z2W&ZJ`M?FCmr%I(h5P7|W+u9+ks(#dS{9qhH$nHLUd#T5GE#%8AW zlp+X=43B zNkRK}kF2H?cmXr4$7d{~@X9({ZEFz1Xmxa#3V(kHUvj`7VE3Yrh@1oYIeNK3h!#l= z3_ohltUnBHie8&q-C@TVqgDZ@z_6lsG#(0_Cq^63Z*$W)jY$#Vx=<6WF}fK;FC9qx zjT+0dJUhqXlbsqJ2(DLV14O0cz{cT5YBNCS%=KU9ca4A#&#YNikVFB?E{v9yyc28k zk$=ICM~@gmUQoIib_618dtOj{H;(!tjUu49*7A{3*xTh+o%o*H3bE5!T2|?xk@&Ei zs4F?_t|vs4kah4pA@W!^-K9X(tWJ8|7#yi3E@@=^6n!~(tCvuLUbh&@QJ2>sS-s%$ zA~?aFADFB$@EhP*rnkB20B=B$zn1~|JCVOgs(OFd@%|nA+SM@5l{rWU{35iY=7ExW z4b^IPitd5~94dzO^X3ikj_CBOkMHf})#q{dE>M#Fq4niRdQAe#x!uVsduogS|B+QQ zZu}}-F{}Vpyh68j$qdv>OPRGC|G#Q|lFX!x!@2%=RUVtQrVjR@mJpw9e})2{Y?`$I z_Gf?h#twygSC@069@sp2;P15k-xd3 zx8=L~W_**SKhNyGosN@%Ee>pj>u3H!LLK+bhpE0mD^8nmV5>F=o@5Db#7NCYMq3A9 z8a5&&CSc~?!hsfXI(o_D5BQt{KCo3U84iEjk|LNo?lf+{;EVeF@$sOlZ7+}T>p4Eg zJ*YgZ4>8~wKDW97r*9%dcbvCd#D^Hz=lM{;tQqT!9x+WinLq_>N|4CsHw%#yTb9Ww zZd=~5f?!Zk7FJi>hKw(fuZEW`MIP^-*|!6mo}*YXj_a>Jh6_pZCPNRzET$AX>wYnFe^bs|77<3neJ8}8^-*QQ<5;xD5fyMN2qiMZiGWB@bTbfz=Q(ni@>m)VUL8%>w8AffS;d;u z7l9J}vDHD2Cfx~cb6vj3lslU?MZHZEm^`RN(%?PfbD3Rt4e5wQ*QD9dW+;E+l)H)q zPNae>7=6#ek)y0|yRyo|z7HgR`khK5w~uJi%?TBNztZss{F=Ys6s5b$(HJxFtlE3_ z>ttBT)0xt=2@K)LnDQc}xZ!Zry5*1zsI&%-W@&cX+Hl-L4oYX#6W%B9`6HS1hU1d~ z^P~w<7(npWancsv;PmDHc+Y?8zAY;xM8Udz*c&O&1?O9F$2fl`V~jRr0Mq^H_57Ca z6Aw{j!)%&X*FWZMmlt3^$#};T2SsB$QUUexe_&d4YCE4m#=XZd+MyM%zm^5z(kaT& z7?w&WM{oUrlr#I@!c9fqdq9_fy%Wl3G0^2B8YXl*eu4jc%p)=%fVh924@`u5GN2vC z&pU>1?*fWtV8J$`Z1b?dAls_{Pi-Rq%)a^B0?H9>-BB(t%RbzxWVn+%PvI&~glHNiE5N&x|*Qjsj}NObuP znN=`4>?<-jp%d&BcVvG;yPQm6@rrjG#wOnY;{mLB-2R>;|MGFq?W7g6W}eh6gz@In z6PVL$3{m^lD2J7Ovr+>9cjo{p4q5NM`UreoE%$mo^VP>wTR8=!9f0p#vGgaV(bNv< zl0zvX#PMf$R=95(_)@fgLcp?};e#E_L|Dwbqpv;|w!C`le%L z6`cjs^?Q5y(q^Y55#Sqdl;w7qU(jZr?J3jyc;y+Bp9enwB8I2nmXBBz5BZ%3iy3-r zFU|npIo>(5ZT#vpixsf7MkaV8<`xf&4AqQDKl+I0N$KI#F5-I*`-_<#<`v6-xY1j1 z(I7{1yvKxG=(2wbe@8cSj{f`<79Tc|sa;Bx3I#MywSnh4$~2oq$9l=dc>Ekc_5#$G zb7CNJjtR$@3VDemvn#p^<@-|-_pa*K5!GZGZFLjT=t3s$F^-`*QuqwVWE2GqjS(pu zz0NG%@-|Nmys~!hvHXi!r^A@pBw4}r9ZxipRd9*rzEgim=}BEu0-xP9@9J^~^GQ6t zp85Lzn;5UM-H!~;t)za%0<~Cg=A>}vMa~@9JcUbcnw_d}jG_=JeChFze;A$l+=E(i z=ei)sB(#$?`l)H*U%D%!=vrlu493Y9^BRMDB`YKSk~$x>1~sy_8}AN5R5ZVaHSYJJ z@{eKDn4N!~Ndxg|nVVZ9a^i7f9q0g5mCQ?OBsJHxO2XC+xr69G#2Hu-_qcBTVR|E> z=zqN?$b79~BiFP$6>%U6Fkh(22Xc}_b9B^+75-Bb3=JxcLXbZs>a5nwqQL)+geB#l z_<$F8p?bE-u{ZzYG{K0!%qfFM>DwFf8Ape}#g~8URqmUGqJ(0&rVsuOA`kWrNB)PgZN({=m&RSs2^Ov(eb*`oXvkE6yzDZHxlOmO$B(_CStO1*Epf%{+a#a z&h$Cc;qP#N^XrHEr+6+HAi{63COGpRSWJ^S&@sLL?e{R(%l|j#9iA7}>@?2o8{gxg z{dIQ=CNLH_oB8$ECtq?|BIM&PgMH)#E3sWNek|_K=9} z>Q1<8E*IjnIJz{7<%xgy8=*PrC)Vjc!_t34O%DEn|K^uJ=J&tw(MY34{}gPvKks(9 z+Aw0E{=D1akmrLG1%Vp0P-SI*Dx6fY^Lm9dI5vpwg|}Sfv3x^)lUHM2-wcm4fBXba zb^qg3ONWt2FmX>=t~pCe=Q$Ie-m!lNm-`5)^`CtGHJ4%hkM=tJH&qCQju$J0AwmBt z-7oZ94Gks>u4=w$VE=YnUiY_i%KKAiJNd~Ds>Qx@f1F+wvAo|_$!c|5|6_Ela3}jS z4m|%qSjCz<@Iw_VWRkz3HuX7WDqM(=rN)cmi~@hWBi%1mrThe%xZ9r&YKVU~`?qvZ z6VHda;3m~!uz6giJ@t=>+#eyOvOOa-lhLMQS)N|<&DC6lsR=$ctzKcLHmTY!>ViJ) znzdDlHg%;un!!sTl8&7WsC4sy;0gTEV{_LkffV6bNgE(FD5{>17m$K3U9-5@ci68p z(mFexk1lJsT3z$ev|19jk4%64M{nnrpy-;G1ecdNKMVc^w7!2yHPaJ4TIlhsq) zbS3R)myIF3Q1YXT{5QldSH|gktND9tvG>=_OxO-X)ti}xt3-dy>S~E{_TJ)^CQ=NS zo*v9)%52V>8ZG$3^q$SBMI`+}`Y&5w?jTFhXP27uX!?VTjs_%feQZ{deu4(|WYesh z+oru{9zQmBSA*lrFK>_@ghs~XvJBi4j60^aY|_%C*?BTfIo%|O_?u-kSdJ1jEX?`J z7`sJjUq5}KRJ4D3hG9zvXIPwtwMit=W#&ybCzUt=wS2cEklZXStUE`M`4tD9(hl>X z_iR3Tm3&|$A(N3W57*oZ5$i=huw~ghNi)>L^SPRPb&%-Q6_sZAWbM7M$Y0T_TuK0I z>YpN&g3Zp;BF`o^t5BTB7Pj6uVWZ#2($2DSHl5~0Wru%VQ|1UUY?T}&iEvvK^r>Tj ztba*XNpdruuzQGOh2X#1`up+A?cMJWf7sv?v-jR1ji54FG~-KWT?5_&(1XK$)bwK5 z5I=EtG$Ij8H<#p|nm5TQ_rG0T`*yxy!13`cL$cN53wtt62Jeq=l5u?*87M)WgK8Po z2_VV8%ujz$Np5J$760wG4<3Ho;f#gi81~&bKjB+5&!o*$LytF1V>L8RquxUk$y_L~ zMi!|C$mkyd|wBz5eiCX9ktE;Q?&B(>_ApMtpnNHGb!>r%aY9{k-PXI4yi<&1=`eeQ_lIYvALf`qU z+Aw#KcX+Av!DYNH>xi|m1uvKyS+>U>f%MHrGJKrMDD22_2u_nq`q?pCOSe$%p zdz6Q|y?j*KpWmVeJr%hK8-~g&o?kJEX%j5rV07xTRzp0%lE$q_snPXB+tF#yt*?IK zpTr-N%c@w~xW(8jDp@NGaH$jW3 zTA_aK@;K@F#1csm)}hv`fVlO1`qUe|ELLq-+68lx)mJ_ z`!>QKl`?tZf1X*Y&3p8=se>w=(D{FjlpRg)U6IOK-COh_l7q8!I&FXyWP0e| zzD-934ez#jF`kuYhH2f>qIqREH#=}do|+cpoIgIj62@8INdMwdbEfk#5;7x0oy~Y& z!ycC#R5XbV&i@R%bk#ilYo&j|!Pq7R4!J_hW@?*oRb<^fnJ-?I?Toigk}-us2RX1m zBcI|Vse-77+vYDwJ3TQUZ(ng!M)pRB;URlQCbx?39XIz_#*R0BaObh#h@FjoKi@)b)gk~w^ zofnhZNC^YnFbUaA9aD@CoU5fJVP}pG{G5YD4_eoxK~L_?AfaW z1cUbr=}=D4`QsjZhe&gShU`DJQV&T7EH^B4Bu6I{8T}W0f{z;x zwZ`)jZN1dOVwGHqfeQr}5`IV?{vxpnEoxJDs0n5st9GtMBmv({w>oCcsdm6Fm{{$m z#ZOFjjC6n5gH|*?w{6m4YqCf%3w#ebmK4p+M$CWuWNrc!P-IPUrZ%lQ_2MxlWA8x` zTqqUl04I5YvwB!0D6X;C;)eD>oiuEcnx$X*2lcE*q-wJAbCHzV2TEdk-8@dV8iK&z z{k}nBS2Ls9r58yt47JgEYwvf0KoP&M>g{4G4BvmsVl$RYn+?h0+U_te2|Ykqd)TQh zy#i?l{TZ+x_Y9nWH+69pdKYq^;WG2MW7g5V&W_3-h}o&#WIjbFO}cs#V@bb=n@y@@6qM;hhc)`ZNAnlVAt-UEi+^p`y?M;!h3<_Y*f=qGP4X{D3Tsx@aB$LHpF!{s0{|wFmd0b z?n;_%uv-aigC6q58{sn_{6a(rOjCasv)?ycA*sNOKU_aXX-}+-DL`1pdsV_eXrQH70Sl)eL`WyJx6Il8G079!ohje+J3gT zySu-AuzlF-n%4I2-rx&04&2ZwKV z_qVs6{XpNp-g&)Ee{Ag>Z+(BiwX;hrsK-p)K1qoll=|qi!B= z;_9YXR!KE0VG#>{JvR4OgJU{C{4t3oAu{VkhT}P@Dm$50K+I~hvQjVFi`VJioLhbE(Y-Ph(~g*BS3|-SY2-FEV$;LQny{|^6SLz+?jtTakSwv;?yd3 zASK?w?yjKy;Cc!CgBA?|?ZFvzC`R|bzt*iUiFTp?GMd}19}W*+n{j^1iX%>JC+7 z?}64W3HrueRm792YbJl%+&dDHTa#Qfs6R!wCQs{E`1ifF(`1~U+YKs%IB&et#uHne z<--lL{Ce-;@EVcj%qBxylwnaC1rh$cOm?cQT7i@F@`hPXrr?lN2dEF$dQBIAv;6m! z1N-yJ7I_*iZ-_)7o*z%+pNkxk8pp%lp357|h!^AIYVj*bEgOF*KFi9=)mO~hdq~37 zZgpFotFJz?6W7(d#Zb!hG)u-C0Z-`hqvlTv5I6#`2V+a<5FG@0=Jw_2#C*y7=EakF)|TZ1y};d zIdnc+f}<>--f5{N6&RmHEEWMJg=5(gOnN2@Ll)$$xnx-uMQWS&Y&)Qvf_ z5H;w!1?OSvvfnXCte0NBl~S{S>;{b=jB`m*#)W@^diX`iW-93S&5!AL45mGpS-#DO z%Nsj&4dCx=#fT0JP%5?{;wie^@zZD6yw`XTva%3{KZ@Q(uts^Yoq+A2`d@sXz#noH z%_eAyV%YrF#&}{xhHJswo5*RXp>PDt1K=h|%j%zbW~(FCk88V97gzUUeQB0^ph3(^ zkRgBn3X&8$bDa4w&xdPwzg_jN`Ey|t?2X?w5Q>w?S9{TMQJI*g&Na;tI zpz`sM9KN*zDD=O+=NL1ozV#Po(`d0`(&)&lJDW@{r6epb?-G*y7UulH4@ove zXoD0Q?M(}0FtZ1)H{a3Rt001`J@j34&G~-=|Gh4`pf!92&_rrHkwG#=d3yh83{+4A z-_`($tP1d4{Fk@^^8;cOT|W_r3E!-SakJ?bg%H~~A)FC9x@l6Bu%o+0rh^*{92?`7 zEeal34MS|LC#HsJm3BN53p$2|N8>c3O8^I<2eV4mZv8WBbtEu-jS(Y*q%VlU5#N7v zBf@j-o`;1ey$J~#{r~&V^7hfn+mGLLufFOB5q0iZ#@KqtgTf}2eT~@;pC#k*L0Z|i zKc@^L;OuUK5C=dH<#zn$0^;+^i4Ky#gg703i9ny`H>{yGzZ>M^*(6)kV=GJGuiUDS z#fv9S($QsjMW)3~nwX+3sZ9InM!SD^r}NM9&Oh6or~K<_XQTbk;hj$V=?4GNdHSh+ z^nW{V?{qr<>^$uY`w{8@W(c@n9z{FI0RKgUkrO@EJ1|N{M@=EYix9sJuNA=!uRMku zUZ&+PVG%-+o5az*w-P4I81@Q0wt{cA_BNbuZG>Sn#Q|>!9?(IR6u4{(KkI*uld?i$ z0Mu}8MJ~nYIc$0qKv`MCcnv-X#DcKFiXQ<01+UDLx<`duo3K0aW`QX*_}CEv7MP#c zXT)AGQI9CM>c_)4;ZCBPv5jp(n1=soZW6xCF}Bu%LHY0NLozCJ zy3xoyR=e_MI~zum@CUvBYXN^zx}D&cBBZ0>D;}W76{A>Y#6R?915l>n$4QoFmy>)} zJ_(}8b-4sqtp0}!U)wXT8|=xz=`IXHiy0`fg`@SiI0<96h#jKLjZUAPtO|D5-M5sj zWd6HwcpK6F@hn%7xIq#4n5BQ`u?YV;7|7!HG23kz**A+u=2^1x743f&CoS_qIpeN5 zj67O}!bFMfjnZ*t3&#f9h$zAF<*7%2-@2u*m^^SKU<8Ue;|{){FS0jM#))8UFA*>XAGjHw-YJl82%HjQ^6O7pvPMy@EqE z30gGMo+>0dCDT^4@v7-c_}m#Dfx+HuXx2Kl73^aQ?`ZXHugc%RWA9l~+IA;+r|f&J zgT?Y=QOXgz!Fu@aW&JvjmJmhck@IWky z@MpW-y+?I|N{~#TYTj+z%iSekjUr zR$7$WonCg$Bp;?D{A+1`)7i;5Ezi0DGfd&XdortR*OY&FKCl@+OtN7=Csk(*AgQGg zy>N^i=2zvw(q0zW~Aq zc{WU|G|$QnS;)gPxZ=QuhM6%jWO5)jce3}QGz=BVcQ(+y*T`FYk%A99GKVpdw<(`zWv-RZylJOgXOOI zap&-dy*G#E$F2SSt=+?an7tQfYxf`KuRFWXyJq|EulKhP4ls_reY5lG^~;^@=Uub2 z`|RbL=R3RKoA2Hnn%%ua^K$3a&f)fRbGT>Fr$B$(**-9PFYxuN?fqvzZ0#OyeYf*+ z=kOn0^J3?4cl+SLyx7|}TjurF{^8EEH!rvL&FeS&ulEkN&DQR7v%9yuv-<)`EVf^5 z?;iHd&MtuM?wResZSNkMgCDkDzN8Mf-W>k0w|{_9KHGc!kNutRe>gNh?7e)xy?lqe!bW~_yU%&7IOPvC zsiqtn_f{W1SnWu9tIngP{_V&8CMapSoegqw^xBj}MZMq|Qq;&>{TrI9V4_c z8K?iUie(^?=L~h^7X1<+tr?~a^g)8d#dvCm_$khnbU7r~)B%DOgIef~py>D=E`dL% ztBe+5% z(KDj0I!v1l6kKg(+0-Jdp!YB2^W_Wu+S$O2d!K*oy}ewS zk|ipovrTdwnPkW(S~7NUO0Tk9L%5*MjHkSSzAWTRnUt?n#FbpAe8ZV5)SnsPPFksGI_1q5fp(W)S zF@L2=GLvSNEk?<}B5d2((I|f%AS`HnX~>jXkpzbH8!U?e7$-GEb})!+{+;>n1F2P4 zIys3P_Xx%mHmS*MT%{{;!~-Bme#xM+kQmigykj=w(LVC)6wRW>p&^6x6fMwhnwSys zenJ(k>j{vi+$92_e8#a9=9#hys40S~%%+)vIUL##F0+cj0pZiT?Tml;8u&nVVm8e; zx*2#8u z0wcxJQba#qEAHu#{po*yG8_4W3%TXui$pzB`~il6gQimaLF@qZs54M3=E@$DQFRz;e*VCOzRE~uur8XOOt2gOP_zB#PbDG7i38n!u31x z0aG*}Z>d9PnE50z;6l(evOHUPbNFKAfoDPzGQeKKltnc8T+h0Ufl6;^Nl9{U9%cA0WAm}$%;6d05BgaOpldK#xSTG0so}byp1~r4O#TD1MXapjH>1uDd;Z9QfJuYHTrfO))WRzH0E!tJ2dM|NCV+GEtslPBgL?dsJJtM`9htM&O--)O6C*Xr(ktGm)_ z&9|ZhMOIzAysyC4%~P|oW;V>qy2=8A>!dQ1ysXS!c5KwNLfE7T5D?PG2Fwcx4L%Ad z$*{rF%q0}^r@E|}+rT{o(?Lc2n$w#CI7V5T_IlUcrKGUmbO123b_fUFAX5vF*vVh-0kEIEJ4)@sC{NGCvA10MYfvN-%VWVKB| zgh^>8usXt*J>nS@mur$hVx6PJqzuRw%m)_9^CTT3YK?f#g*BzMCZXeIt_#W0dST(l zVFzT(%QG-LYnH`+u}nOX*cO>M=YW*v!nV$-pA30iM@d1#H-?s&GR;oMx`zUjNO0=4 zTmOHYjYgwki|wN1@nFs$v`U%p5K4nsKTqsga-QY|Z|k|Su(AeDsun+JFjgY))Y=MR z7o)qN47D%@BG)ytm@QfZ$4-p>kd~DKqToKsunvGbETiLyj`_2LnWaqt&{*=mOaqCPxu9%yw6mcSLEQe6-1L1hB*7f;L@j7+*sf4uNSXiZ@DVSUm59CAW{@cIjQ6w3 z{_a}{(AKlUR;i*;VX?VJwy;Ap%c_5LObrowlNOe)G3vrh%==^c5lRV&Cz3i?CJHDc zkW&K6;NUEZOeadXTx~6 zVh^6oMm1(7VL_z+bNdZZwdZ!4!#A|!kQ>RY3ze=RuCCpGxee!#6s{7NB-oawy2ypR zkOI_=92}r>v9}l2oF(VDRij6k;~b@_gh6rwgk}<%p+JE_K$?IE4@`-A)IUp4&j6~N z6-9oUkV1r;&!i$lcm&8L5XFDiK)`Y^@IV&;IFbw`?Iw&=ZcgGiFushJh3#a~PSC^3 z3*TwS{Fhm0^+it-<)U+>MOHZ_cjk{lN+Em(TXoUH$e!gxyH&Ld-<5Y2!!QOUvVVB~ zfFq9vtl2&P?!^lo1`Zy#r%0LIG{I5jUg>somcHOKXyXtKh#Zfi-M4=p1jag8)E+)~ zAm6zCTF_pp&=+G`@w4-Xr4x zIPHr%;r<>Bg*6=zDYJiKhu?+LgkL^2(W$j4J^}>K0dK}qD~%ARa;8pi363@$C1oH#;G;yJp2uFoS!c#8!jvBK};%&(dFH`n<_!y7l6= z*KNB1p)ptT)2>lDa!*_Zesa#r&L@vrBYxYHDwaP6E>7*Pv+c~DM( z4L3Q?jv}9(p3$8V>zH(@${eE7}%`|IANN`qMDqFdzN>ROko{_R^!=C(PUOqa}U z{N-J$+JlZ+UtND&TUlRS`_}w*Yk%wD|LmBZvN}&P^Y}Ea&SocnDW}P#S0v@X(%#wZ ziNJWZb7)?&-_UT$z)_-4u-T*83@sR?%?2q2McwX8tl$VK4w{@OzJ2)M;r-4dX(qvX zO%2!XKU{y{8V-ufX_YU6dH>;qb=Nd64=2;-DJZ-N?)`s<->%`%;$W&{oZNGzbLbsP z(7q_pOhj$NnG2C-27B8W;wk`42Tmw`Ct`dN;|&GG>2k_xawd<7Yo? z?W5vHYjuBZ{q8sS?tlB>;nsK0o^QYS{)e6a{_D$EyL+$y-~EHbH-G!_@BjEe$;n`7 zN2h1$Pw&T*ET8^dl-2C~;=|>?TGadD_N&(~w+^?DUvC{AZtw4!P1FB7{nw}W&$nM} zy?J?fe7FzirA>2}o<7^(#y2lsZhcR+M~(-*y<>lR2s7jHpf@V@LC1VDZF;}`_h&D| z*ZA$`FKbQ9{a?X zB(Q%&s6NrqQIeXxQILFJj0B0flJmIv78cKQe7N|3( zpsPa;CE(?wv|Z(_fc}wGPUv*tDnPA~W1vRj%l>X=!J}oENX*V{i%Q{LVMA2KTSh!y}X4xuZG;O`P)yh3w*} z$c9JhTk~HL6A{6T?;R+7LQYSH!s#WzDfxh-lZP+b^g0ck>s@~G(>rL@$;4K+;ES;l zCC$tW$loA1UQABn&!m5aXqA{Gq#}RB6?yzX2nTrHRDkNNTGvoUTE5AKmU^eqUs@%Z zm3Y`7v>Dd|K?%cfh7^9sSBXx@)yjo*AfWd{n1(;}PcOt>uybYjt1`rszD3Ht@%SVeypPdELD^TpJodL6<2Bf!rd!1+c{zWVZRxY? z;4>AG@j^oTd7u=+rPFnxI)c_C9Ua*B$E&VRh15%;DgZo=R))d4NJxc*uN9jAT;I+O z_ieat-!s3%oeTw$BOenV&|oGDX>eLG&bgD)=($a_2S0i_n2Dz*gF#-?{oT9T39%b7j~3>AWwQE${M8~mNXilP{!dj zhOmX0Xf%eeM>UzQP{4|DQra{fGPjQUbLpvRw9*HGXe}A@R+8Y5Jm-IO)a$WGXpc#! z0@ZkmL7139vpU(hom=s$BFF+8({EsyBcjLn!{Zaqml*9hseBYz@y)QkUp*l1`os#+Kp| zM<9DOkPtKC+;wgA(scx4IE_ts?~RCf9T=n^V(3_)l@*Su6(oPu=i&kZ-A0O6_S;og_`VSS%E5rYq!_}sji|+xSP0IaUon4~qm9zH7wW!*(u1#Vc1#iK z=_pVs0r5UHxwGua%TC8UHLYGXnYQ#0lQ#sX-#4eWK`h`6t$c^%xPTWQ>*-EwH3VxG z-X??!R!rR4pF^A_j94Ge2Kv%1G6@C1rJev-c{u?>D~!m76NFNJ`sD2w;n--|!hwy3 z{*<_WV0?du5N?NQIY^4(bIWBw^5~?IS&hmbSGXGu!vV;rN{R8or3Y2*?80M8@qGa~ z@gzA($7yvbQH*EEygi2hQ(9If)uD#1SJ?3hBMlJnAAAl^v%Ijwo`FLrCHq2EY?Q~g z1;Rz;vK6+QSvF3y_dq{kUSI$SdgT5|L;e5Qd-s3swvB9W@P9u=C0`O!4n@lHU1@bX z?YO)BjdPheIaz0Xyex<)Qiwr-4SNZ%nQu3%%jYc%=+zH6+n=dY$x4kzNFV` ziva4jYuB!Q-$_F`L?Qo`E^BH>rB@-ZB9B-80>EcHjHFi96{?X%W*ty_H*&r+f`lJqOqG_12g)1-hw zRf!axg>}0BL3x`#s@@{mqAn zS7Gm*Av|GLk3pjC%#Peu$Tam4PY=tNe6T)!C_s zBS>3?s4P6vF>cX!Rf{yMe$Z|RYG}c?o?=QxN_aenBHlp{Y^HS~-%!IG!q5Zm0m&%! zxu5w8PF|6o9z+VK6}`^tF{-hqSw(+iry25rGWg5N4S_VI&qd{*VovETsi`PtzaTX) zziMfD$uUsoz@x#~WvZhzt42JB=h+LJtaHeG&a=w#Cu32T`yC3^q-SseCS5o#M&1Aj zIw%2fzQB!$Gzntx%6!d>VeSB3jslY3+9e|cTZH0RB&BA{mMeQ%;`JV;UOZ1b)tQD2Zh~#TAp&`9*wX_hntlf6d+0?XjsUv}0>ky9` z;kKN~mebQM+s?#$>$SS&D&4xR-AnR&&K}BksGt-sk?UYlo+cLb&{lt1cQ;z^Nm@N{ zofM4{F99ML%k^rmouzbnpawcsdMvB>D?NaR$ z=9i8-hehpFYH8Og4QDCxBkKu`MJ}9Gst>}SJl|_)PZVjE?@Q_gU$7!b?;;irD6zO3 znpKCSPS`Cg$~NF&F`s{&Wkp(^AzTo4nv}CQFSyKb4Ugvbp2|HxnYcxA&hEY7!H>PL z;VI%%I06V}e!dQ{7Y?-r6R8K!b;m)htNC%1G@HtmH@xlbtm5Ocg7x#z%KoHoow>=kUDKw%8Uy|xd?cvaLV*{m71F`N*L zxDuf_?bk7H@eb6&DDXCtakXdeGTw$&y#GB-7VHd zTy{S0+wP>A(_^FZ*7)rk+#$^EnT=pwv>Tr083ZXhJA(GM%$LZ?U#yl!(5W6;q*$fY zl0H&u@(yRnT8sOFC%_k2ZAo0a-5OyBx!|^OFfQ2sPEUVQi;KP;MHys+nJdY2T3kqF z1MwU@o`Q1-Xz-O1Ng}*L{6E>rm?Xp}AI^*Oq&iOKQ03=2c_N1W?)OaK?;q*sL*4}} zx5vp0biM1BrgV&V$P^B!>jssqCc!%PKuT~gK9%LxP>~`LH#wfQ;RvaEGI0o-l&Gop zd+1bAWD9=|Sd!+c{eg(hI=lG7Xn%-&l$cfkYJXu%#K6k^$-9+)Nw*&^7!Dk~NuEvr z@Hv8V;H1^~nseUF6GVkNc3G65bYIj-LlI-e+#_;0rRtQF0P+6#HEBvK_cQYc*u}`{ z&92(2Qk}aTkgR@8@xMN0%Q@YsBezRKqcR&DDBFLwq-_&s&&dxnW4URsK4oga)#M(3 z`(y83az?9PtlKbcgWQ>^~a^_4k#O=9b z-<)~R=^Z5rl!xg%^=f@KudZE3`}gNVcYnNhfbK}OURGlo>4IbHh#}S&G_sR7Z#dEL zCGmeo#cJUz#C=Jf44Tt1BB>B}1xIZR5Qe-r-gAGt_P{#gre5z*ulL4#2hjagWxAUB z+C4jmpAq5MbyoSd!S=?tu!cLmz*}!@&}ASNlVt6j^qmIm#Rw*kqGb9Yhlg;5ck1wv zaRaHZfU)+JTE$fN87zY!b?UFnwOUt8rM!P%A&8twhKO)%cZ-ys%77s+7G)|+3a2i< z&cB{|((kx(3MFWV7Sz7^d)rf3Xn2=Un@a6cYyGJ2L~xFmC-oTEtpyOqgPm4^11Kx= zmB=*$I!ixIuP7t-7dK$jxPhxgx}{*X!$U^}J?-JG7w%8)A$0Eg8RdyTbPpj%=(B%) ze05jUi0aFqr0LVFZs6@V94NrdCwdU8X4c;R2@L1k9RT~10L4T6C_jHY_Or6`Zl0Zbw_4IEAnk(qJY{9k?NgNy>V-&c zJ{GUVkJ)Px@+vDS%zd#vG3|stf)gSB*fbLK^_V+6lk}XOlU29g*hYL4I*r!ZL1u^G&8sHZw|MV&V%;C<&MsC!iwEJR83wasiRd=%CCCKa!m0m44@ zzt4=Edax^**oIy_v5w4k>1Kb-RLOJmku|BIjYqZ{kp<&lxbF8`jaoj5G?{xk8`DMS zT2_Hz8SyqCbcT-s!EuawYA@Y$2#qfcsubgoJQ&FgF&cVwIIBM-;ZaxtO6!wHy+-Da_zWOaYN^7Z8I{Wt9w z|Ksj`@W|AmEx5fZndC&uR^fnQNkk4g`4`t>sBdt%jaM_XmiyPe!%)t9a z&l~7{+5C&Y)*ItY!mOI*eyuqkN_+ity#t{%!920nO=PwRU-i#soj2sF%pHdD3rd#V z30l4P@Xr425VX1$tg3%etOC~!DgXHjnC98|m-;~X63G@(7D%2%$XG5Gl(lh%;FU*D zpP(%B99x?EQ=gl3HGD(?u6qvAUU}x-59RT3R#4;xg|I$(^!VFHj~O*6_!b!SwVx%c z97XEU7YpVmo`zwEN8ytge>q@NI3wyw5l7l{2^pgD2W}5~inD*DDh}K&{E6tF1GkSq z)1*lb5F_baR?Nx+cZZ((fu# z^8@#g@?pxIs%x5-d0D;3nxuVeO@qp(6pg{_8k~D1^QR}gyutK5Dd;z^aWJp^IsN8^ z;jLn5fV!8M| zs3(T`;M9}J2T@N7LuTq}1Y(VV3R$?4(7Gk7qTAvZELb8x~{mBHFRyE;)d(> z!QSm#*C@_=jqBBJl&@TUl2jfEH{fJ=TtY=(P)#4rF;>8T+X0LsNIGTXME-40%5rKq zakXD$yC+$i`hxFcm!-aFvRUTIeFdckz|)Yl0H;i9M-&508LLe=XTxIE(90P+zTh1x z)g-`{HZS{?9;v{>x6Ct|J*1e)jkn!0PaprsFHJ8|dvKEZ~O+)xy^` zY=>KbHOq>BBzO8@3@f;yAmkmpQfH}0`3FCRZ+YR8g6eAH5{~ZS>plOXinX9{hcW*y@_`cU+s4$HzHm2Vg&ZK;} z*g5(a6+TycGprsU1W13bIToJVUm**cm^ud9!(hkFiZODMa}Iy;WfZl zCWX`l-&f@#tNn0T`MS(c{m4}wK^~pz@-~IF$sjKvtRZMvcUrMickIE+os;!Me8Auf zA!B2I4xz*^dtl+U4KC~d{Bvu&ebET|3C8x38$jVd7`Y3!j2-}HWDL06L71>g?7x19 zon*fe4T0yaSOXsNuD_reMjJmprfkje-pYn;UoCC%#!tr0i7!yy}<`e;+%_il0D>*%nLS04x+x{%_-giYTtFWyT{+;-uJ zHFB35z9x>;(!5=99+3t1 z_7Rv>E~r^0OGn{N0YPdhypfL@3mhB=+}(A0&F{mNm}hRiLUD@)%Sq*(?S+>+#JO1I zUUl#>S?+D2!6)v}U0m{&YU46mv&$9&d?}0)g+9q44&)a;ws;UN1!+cFS&YJeyK!F5 z*XT4~uxp|FA=81J?~z-qYVyBEW-yMbL|IoPOfKhAwtEcMB{+#`j@$rZ%AnGoD?a5E zn$TB6!%x+p=m*Cow!a?}vRErlJZnA>h&-bX)}HtF)%}Vb98g~`17CUW%2kDIkVLIf zikD?e#4pnzFZG>IhwSr=Y@Z~5QRV0Ecy$c9Znb0^Y0Z9rWB^l|1*GCIYs7i?(lbS4 zPIgUZgAxT8iV_Z9Fle2WXIzM*$riqjGV}$wqwp^T%@k8t-Yc9+^PN+6j#lRvSu-4v zz&#-MAt{<<-G*%@G^9rMa{Th894G3%)$^v0uz3m^YQ;Xw=$OV5u-i9(?s?R6IiLbJT_oQ>!q`ZOL=k9ow<;^bJT_!i^2G6*4J?!1HQI{4)I%F#9#&;u> z5_*V`Q)^X))l*rGHR`p?>~9{rKJ2-yI;+J13yCn3b$7TC`JIp%UZO8!3{6 zkh!ZgW`3`B7nZM%eE!-TIJ`_xjZi%xTPJ@QFDc@*=zE z1s)B<+&3J6&5_ppWeC0wX*KP1y-cR?%#= zYUp%#;T5x+!*jeScfr4wlv+prLPp`T8a^i|9er}qAqh}7T#^jnL?~0HKadUhJ3tp& zxz%!BQF+0C19!yRHQ04O(L*Ggoz@4g$6H2v{G~>iAS}s9%X>UoBz5Df$xq+^{fDo< ze!P2oyf~L z-teueXSRLEy?y5>3Nb#UoF<6RkR39c4QCP36V};(4Qa|ujob#EPp-s%u?JM}DOP50 zdtZE#wtj=^e5*VUTvw0W4Z-x^L+-}qL}rf-3YR;3`}a-kzN(O}s-dj{cZc%~qBane zScqj+HYJ2PP!n>qfZta~Fcc)#UH52JHzoNH1i=UwB)i`QP9BRVcSZB^W+%_}e)*v9I=B*Y z^6`&X1vt5nS=v}8m8T?FnqNN*VmhqN3WN@S#`LHT6q{q6!G#DK-;}9maE%;F8~vO# zzWRpPS=A!69#ck26?dulAF`=zxaVP`%nW!V|QO! z8xaD+H28sqBK1aoSLRT(J&(nkZ{Sj?$eIyiXS}wd) zwI{_%RuCT{QISfm#*fMZx#oOz#NkGN7JPq%0+#epNJtGeVbWFQyY@;ADFWKn_cthbPG#jdi zoKDJ$Lzmk69IAwj*j6bo0Q@rkLC*Mbdza*A$+@V45!K}@im=sUaN;FIWRztggSf@0CwY!rg7RuLB`d6u z!GtgQsHw3t?7Ac$#5yNZ$VKOW6-v11C(~cnpW~Q*#6xs6TJ-Qr$}IE&6;;snF`p91 zgsAvv4yx;llq7r;NGby8Nqkj3gXG9B@Prs{bn8H_`k$=mRwqL54JcakwN1fyOn*(@|?O_Uysel*s`Y*(2AVU%2)DlW1O80P?j3F{oktaRp&MPtf`L{0^I`iRDWOQ>;`;1MU!l-vgHYvc7Pw*U#?0`4NIsgDZp!7>nlc#Z z!5*KgKH&`cBwl$aH=7fmaj7Xv991u&_2b;sP}gS#$Pj-eB#kqNbWYDH5$SsE;Aq9C zYbmI?!gHU7TFIY~X@Eb{4#Nnr`JT`n@3t8AD42upxrA@S%97<1#Q(TO=oS%z?A-cw z(%F(%l0l~?>{&f~zXpnFW@o?kxU1aQ#*vSfO zsNKH9))t^3R)>zaUs&H)KF#3W7W8Svjws0{GprOi1BsetK6OW+h)1HChpLUPy&wEP zNA8F$qDLd8M90YFSR-;WEze+9VIK;Y`YJnRH~9|XAJp!D$>ckCnkDWC${r#-5#2dz zsU&seOHw0x7u;#5H83b&%1G{3^ zAnVi=j|C}zjH^*gxk(~aD(l)p2n!vvwj@IQ^lvMKOeXHhV&PMmg7R}WrTXyTx|361 zQMR!Jk*nBIo=9wHCKwTY0!sI}AiQ})uT9LMUwj@(G4=fIqRtKH6!w#edt68{N1#sd zDamTM3ukF4f_W4v&E4hE0gXJFxLad)Atk(nCzWb{)ek7pyoKPkgJP08*Dm(ah51_? zaP3Zac>oiDr*fOe=Nz%F4nCrhGnDEofgv?^K#0uJARoGRW0~+!Id$f+DW9#$2d=+RHq%zCq;wPEP^ z^+;!)A;b)M++e^3gaFTLhW|1N%F8*Jh7G>3_xEqz+KY^G2n5^cID7BTgFBIiO}vXG z*V5SiRC{+M4%SEF#YmWOB;MCYsw8L9%^^>JlFFnNG%sClnDfIs4l=Yb-o!T)VWWbFo<186vYU<(uol866O&g5Y0G?`QUJ{Y9BdXATq!#L(_DChz9 zoL=AmyLTDu+k5xkBX1w`!QH)wVLPwC+P+=1d*&ZWk>(rM`|$Ry2X{a8*k(`MKKB0J z-Ft{fcxPCfwX40&_ISe{-`?MQ7#*K~4+C%G3O5W&@giZdKWm0s*g+uNzTnT5fM1AlEuPTl*oIL6kwwktGvmUxex6b50A`Z##Tp^pq3ii zC@8|0FnLy;_yjJ^H{DtsQ;OQfKjOep2}F4E528vjDXOe@*&6y2c{dOsY0$dxwO zfow4MRXv{jW;m!zWYo!uIk~gbHP-HV{{!_ru>dX^AI>xWOfvn{!Dvc8=7NnIHfSKX z1p{&r??ZPJQgJ=M>1HLOgK=%cmmkmuvy1AR*j%PcE`g}U5f#Y2rhI@<4vqVv9H8yZ z;LBXT?}hsp*giYO)!Pp3&EeszPq zoKxl)=LY{=`HIuXI5%K@zP?IQ&Pe0jfIYPI1(IM@`eRv@Kydw8H%Zlh{Fp7gebD8o z^~+VU=}p(EqT9kKXRU8Ed4Wx1dXnYrorm~5SOy*^(-Zav<&`4i@P!p9{L@H@5kFf>f%O&MM@(mJ>YKxvv-63QzYS2zl(*^|A ze`F$AeI%)VE5FPW!TfZwP7H9Cn4l^d8E-P<=4L%)-Z%cd-OmuJI_j7#y0uYhI;Bc7Z<3J^| zAP@08xj{G(;@}OZjfg-XQ@jEu5|3b~HCz*3FeDe#26}Tb`FK|pk>0l8hkB%}&FDbq z&Pxs|C7rT5#2Ze3>5Fd5wGXsq07|z>c*C30!q$oVM{?@jtjc_m<{5H_S3Y?K-i{;X z7@F8rUp2r|F-%uRZ-IpZn;Vk}6u=7aKRI}M-+){nVx3dHIKUeC<|!%6z!%VGv$9fm zOuLpxZm_ET-^jE+7`f+zX`T&Gp+s9qim=RYZn8{L841IGHdVG{3AEKu-^jsPA4A`8 zZjhwu51zEGd`;uQ-zZLnZq&gvFAKg)2mW>Ai*#_~t&?q!GCSkj5Eq#zK;UwLd=gF)j}G5 zts>qt_A3;B*Ixx|2>RfXjfp!;D5J87Ma_v{khUlh$3#%wfb;zn1DU6@)1=|t!OEGE z5{t7F>gYZlqAz6!gn<~gGFGtN2QmXka)6~lo9ir~?ut+Pcm%Hv-~6gtgNsTJ(l0&;U9W){En{zGTw@h^4}#asCt z?9vN{pImBWPa{5WR#p+|dAEUCwqjZv2{=Hb^|8(B+F@I1Xe>$ZX)I~(n*$-@VL$5d zP#}wcTb97d>)Mb>ixh&tC5ic$C8~TEO|>Kf+DMf&%Y#xSD1fe=1yj**nxo39s#aMp z9m)*G(>#l~r2cWXq_@;DkZf?{7{zk&)-lMVZENC69ZE9JZ5)l?M+36*Ip~aIO*0(0 zD{^UJ3OP%r4QiybO}RxWLDH#^fK?G_sl!8m|J|AOCTAfHUpNnHlv%raW!2ZnEGOEb z;7yN2hffMMOO!Km2dp^H96Q|8)g`2q4at>hdPr%FwZD@A=NkHK#r5}`s_v1gCs~eJ zi>8_8Q1{qZ959LeD9%weiOm^OLK}%xuDm!v<(?o(x=rZP67Ef66-;%+Onj{3M3`59 z3eJ}`3@%IAG#Y}fJ`!QnJr@tl!;8xoZr4&h!yf|frYnt0p_%YV($_>wd2{L)4Q+`s zj)=ozTL<|~vQ)20vQTTtg+;W`HHu6hgn0np4<5xbPCepgH?Eo{NXLHZr$|%?7m)O5 zj9{;XVn?Dd?-Z2;kZ{kx&gy35%EH5cfXnDbDJ`PFw2wqja{~!>XW1%W@!|JZIM3*?iu;_A?XJtek7@aV6OVQR;d(!#3oOX zui%V*Yv@WRWp}1p--hC1!74W8`4Tl)$<+lu=J+q*h3Eq!M`3-Z4&CxwI0x0s)869T z7;1%_H8p$zV*HC2wM4mbDQsAb>9P_6+YM23AhQYu#SBJ{g$;uL%hcz- z@q~BG`L)T$80s2eFL$HdAx}hPmlhI3CzPeaJ$A{6&)%Jk@ac}N7XNF1kr4*$8X1ZA zpi61iY55~^eG(@$V=5eyo>0ao;1lJ40x4G_7D(#bNwHE=(BxTG7%?}BdaMD$yG~qj zI0xdIlUx*M$Ma(ZU_1{cvS;#j`v0aIQg=UL*8_yP#G z`=){6C6>vBrnmi*8In4GVOr##v|286+>6M6NS;&NH~U`E(KKjjX`buBoBCM0!p!xE z+(vH_-+<-eltx!k_+^@0CJ>TRfGnwcvc)BQPer;f}p$F6$N^45a%(T;!4qPP>Hs zFzk*(a${9G3Qs?Fp*D5l&qVXf2|H+yeKI|@y( z9)PZ#h5Rmw`;P}CH7z8aKAXle2qbwpW z9JVgjwsD7`F87*9XKkfHxV!4r(pMc30z1Rm;1JJ$uYhBhrq*^4>fyix;TY@W+zB?c zk%3^3H|;IKY^k{jp5&4Pq*f;!vsx>Nko)Y^M-CRptNCysz7t`$#94(L#6PV+My3sF z#y2&@ar*6$T9EvD0$ASS-3=nixwo*X@@ovG{cu1O&wZSi^N&g8A&$TYbg=Ra6$Xsq zmKoB2$Lz$MIIiK0EQmZiDZ;OUu1cCao8*dRxQEQCDx@qBFY19Hv9 zj$4a*zC)peZ1wd>7VVppGG+c%mqmCznYdjgbMX5bqVf8h`bjY>g<22wy?&;me^aWf zw)RL4Nu)h+H*bFP)3YCM-lWrN;Yr#BrEVL4piUq~&*LM+<+5%Lh^I7_{_qK@l@d2Y zQcmrITx&E1WB}y!B+1|mPrixtPwOOv7#)rMh@u9}>q*!h+N$qEP`}Npo|a3`(c|j7 z(3I}usw|t21sF86YFwxmJ;&)ozrvdst5cx;T4cXcET=muo84v7oQOY3#v#ddR?KsM zFUlYx925ZqPcBXSj}vk$oDLoT`J$e~@e7|aM(S~BIF9AeE$TUdkE=4H&>unWh%7>+bEoH|<7 z$PLItl3}2s<@iR|8&BxF=EPTLS?wvmZED2|Tn=x2b{d*eDzRlrkuQ{h0{kLZF%(n+ zsmst669Zc7*qz>XUw!|CLZpV}@h^N>>D~U=o!*+9?uYj>_eDJ)x$$`Ho~s&v9KHg} zGEW-+V&tA*EPRuo0N*8kX~6so?OL{?3la4g6pAOy-3 z$L3;Lg`~NjzwZiZkJ)!Z z+G$AfQb{06U<<+!ai1!wh+Gn9zhyzF+mtj;nhL6{hTKrk8ks@bk2LOoIrzT}gu$n5 zT>o5Uu<16XL^uYQzgo$q(8WlR!1nC9mjosBMotB!B@AVzF=}n#VF1_gp`9kH`AK8Y zJd#sljO=t(Arm031*9y7D;(k*U^^_%8H_fjgggru5l1L?G$sHax9Tzubd{*mEve?Q z2MfU3woW9~JTfgQ=ZI^6!We3q9Qq*u;T{$I8p=C$D>4nB=m6tSF_O?kmIgS^nAK)e zB#ZWyZof2_r<$$i8QWbgV~tEmwl|0jSnF}q zZu7p%mWw=SmWf4~X0vk=8zoikjD8%o5by|oX2fj01rOAX+uYB8vCY(#uG4r*olrL; z?Ap5eA+@$I5(_R|0;3juFL-zb-Iyw{*25jW#-oSW9Ut{E@ zqOaA-Ycip_0`2@Vs4$V1FqNwL7(8oMb6yw6O!a}&S`o78GTQ@kd}XF|{g@oMPcDYK zt~YPoU|5uxeOW0;b_P3_l0+JvV4FVsj21{YF8J<&bKjPKNbWp+1=H@-_c{LQ3h6Ui zbE_YHZ7hJKNtMNWZyGgr|q_{$~t`T9f`D| z2bz0$P0U27ImRxFq%Ki)+TW=zK%TqG=l(Q_?vfaFH4sMb8)VX46%?keryh%pY034` zy0uop>khJiEwl7M@4E3aOBLd)`1#y7t1NY2+K2prEaJ#^qK)RAM)Pi?d6upQzt;z5~^iXseSK8k1 zp0$Y5@3FIrr2U(kmr0tO&JSFPJi7FEfa(eg1W)gO_|La3H9o_}CIyo%(FMKuM2#+} z%G5g${WacFo4p6=4(Cx|!4d+UT25!@zT_3qm&i_9dnWV;@pG8wh2xPULS2j($#Pg{ zjgJ|#&KZL4BwsCx1BVYmWFFD)Z&!g)gEVzX zaO9!VxJBUYl{?dI7i_UG=u7=ToW#r{2zNjAP36w)Hqg(tKSLwrrP3r2m?Hb>zoLi@BNd zie@T27cxy7$EEy4cZZ(Be1qKdb{EBWP*Rnvf}9!Lk*_KW!-LmT!+J!yn)n{-+)A=_ z{cIY~|2^)n9t-mt&l@vqeCDwEM&OP1SYm!r=E)8U-( zBkLdWLNN(Y`Eu2Wc8w5SSFSqX&pwl>20VWcD~VXn4+w*FiBeAK7+F|Xp3Nj+CSM}~ z5rTMZPAd14M)GP^Qowp*Ps`kkrN-ueAfBlxXlPtZ7{NBkvSXPntlQz{;8|y@99wC! z8X_IZGQ~X%MhZYZ%<@`K%S-GZ(iKqX3W>VUap#< zV4G1Yz>~#`x9+E`cNd_tHVOnh9Nw~Sxl>UMwQw3Dhv8CA!F6=LBHg@P+uAis@BEle zUk&4(mXTxxPPk9EPo9T+t%g|{wgCXIDM>r;3*wE=U{YvK{5fUgnwH3a(Qt`B=VCRf zUIX>W>7OHqDYb&gm|~@Hu0C{sl%k$KQEcPa;hH>D5Crej2rjW1>1&`d-!E81Cp~di zfWL#qA!!D+o0s^eEGX3#$L~*3L&>nj4oz8nT^4>wn&%i>1oZ6)Ip7DM7ye#XMbFWV zZM$(Hc1)2hS=@!kFMUA@y7pBZ-g9byB*Cgr2Jlp;IS%-NPpM83<7&5m4d<^2O(dU% zB8ht8hQk}9(hzzOLg<+OYpO$ihrD*P7RiJak4meMlOa`uV25$Bz|Uzj&_-w|irvvT zsO$hQ>(vrid31YkZ*Nf}Nq`(IkfH&x+^`&@e)Q3eduy~6mQL{DwtUy3su{T zds`@XI?-wkL1QR zM5&L&rpIiS1pI?HV=w&4gzL*-?_O3uNiFTP#y@bD5il0Xv{{is4{9znK!Butru%Ez z;+57>E+8_5FP3>WMJixD80?jxE!Q$jurB3@-pl!n5jAw9>65{K*2ZGcI`zR9ZPJ4$ zdaiX4o!=TW%^!03;^l_0MKZqpJ{C9L88Wy985Sa(Ly995dF3=&aOZkw3)_WNo7fn8 zcz=KIVQg;-lTml5PHjYX&FaVPYE_UNigAv!(@P7gv1P_pa)$9aW&Gw^`buNjCL6g zk=u2$c=Cov@k(?Oh%XJ+wU621QDVzZS?d*_w1$nESM+RXJBWwK9~{}y)*(sOG`J3T zmSN5@=4=%Bn!c3f5N>?amxG34GLQWc8JoT^@RIl~d;q9N+w4bKgZX+Q*-)YbyX8v_Ozb36Anp%r^$b-A z$jk3$l(Xju@&r<6oKr*qvJ-H*4h+%3E760|;9HHX{q3$&9T*p$hRext>W8sjM|Ir* z5@l7rhJLw!M?Md}IKAb78NUfcc60)c>&<|&6}Gp1S)t{IV75xvseGdLB6(*w-5_`2 z7X4e^Ai^Uc$~Tbe_}+-DUhjE#Flmz7*5m|qxxvvvFA=`9V@YH~gSNwlc(9M$v+tjN z_2b5?O2g!Nl&lugxxrQA;hlYmcKorOcOe)XrlrY$C%KX3iQ3*svqo~G-g2%RhTFe) zYY%rXxBQ;7yKPDYy1#!9IU@Pn3rC4VHtmOGzvXYQk9P&>n874U z1`aOS{3(^C&I)91%LIwdT;hM0=x26wfx9(2w&Tid%==b(-&F)X{-1EoxkN0mqO#Q>VGym}Zy}jF$JUgDy zsK3&3wz5Xz|I+4&=<>usGBAasi_?lSKK9LjH8>yXVnb*;YJy}nX%g~s&YX*wUOBUk zy4Zp1fF1xw*s_Ysm}{t--U2UcuYu9AyryMl?HS2Op-~9@3@V=iPK{>Hv5*) z&b9|19*(bDrdaX_7<^wFm2D6T?W`k zn13*SNcUuG>?&~B+ z{JEV728cO-AD@#0?oD@V?0)dbfJp*QOO-fw-{p`cjqQ>CkI}KDhZ4y?KNmKCaewTP z6$^Hq5^la0>CY+OF$g*EqK*$`AlVw1=t$ zV*7T(ZjVEpL2byMFI>KYPZraA{#(ci=mi}OdKZ$YU4B|`9(iQLYUZpP}htK8bT0K zQpofE*f(3EA`kt`WCQeydbT~ZbYlXS@M0WX`M5FD4eP@8yW2&0v7w9348*y$%OTT5 zg?v$q(66-Uvd3#JBwcaE(T2PV89Y8i(TS3colM+UF!r}-8I+iWpvOK6tl;e;sHk=$ z28cad%f%56!H)YfJ`x9i?s<4;nKi;AbB47?<_?SW3idQOD%xqHKggj2wIQV{jB}d4 zF+2$*B0MuP5gr+-2#+FiL8HY-wXN!r$+*Z_&$+>c5p|u_NX{q`tcX~}R6iOO*$0th z%kG!;^n*6?_I!UsHT*!zs2fV}$0QJE%(=lc?+;v$>>zg9U+Rf}{55GR?HEL`@YUCkcaaQnL3yjWyEtW_%uvu@NE(pL&ZiRJ7`|B@6oR$rpL<$#kFy=D4Sm{s z>(icCi_j-cwl@kz_*!OINo1qYL#{w|2=~|Uo5>Uty7e%~wZ@0+#2SDh?Do0^oJY6Y znX{~3VG2YyXg;!kDcFtvZmvEV^ubQ&c4`Ba50BKN0e-jZ7T?}U{P~cD;s8PbfAX!q>u3dJM~lk5L1zmAph5l?^Vb(|CeeT*!0{cl zwGh;=){X%d;^SMb1e$Ffp@W5q)@n61@QeL8o~@Q#pooMuq+^2wfLK3n<18mh91J}8 zhtKoUot0I8o(@LtLNdB)g)!b+8baizxN&5T_|J0WvgW@AHT2-KtnzA4ml^XMAwOqO zS_!?!6}?EBalOowhJ6h;jWzhRcAuu7eu~t|Ur9c`!N}d+!=yoUp44C_I}^91gHsVF zH_ZC0@1L+2QsN{|_J2P6?pv2C@&6MkamIN+>cZd_mmCLhNUSxBM ztF3*Nm8&{G$1lKyPsL znjCfP>l#7r*aQxmKP#)|M00XrKW1eW1d85m*jGH@t5d?&B{&DaC^(1Jv4ilfL%@1i zJ;K{*0V-T7lw^rrC?GvT=M#oP`^6d*B9A7To4ar_i33Iy;q4--gYPV`zIRLFG3kSU z^{K2)M7D$Z9#nTp5LitIi`NCbS197Di@``40PqmkKNY|=6)kFEzJ@P-4=AN@cieD4E5OP6H%rB#oM^K)kLX4j_K7~KQDsMFPC9i_V zbM2G`h+UL~1>*&N4EZWzRkS_Nf)BMiUF zhG?8!|2EjY*4ly=_}4&xX`X(asR|1$clP(I`oz}`#t?J3%o-<|ik8{*l~3WjCq-Gy znJZV7gD;um!dG2O&%fNg0Ew4TR-LSkK3S-%HIkNz5WlSXghX|h0W8mnFwYFzIexw6uJj>f=sPGQ1{mNV)R?(33{ zXXH-GGk@xCVRxw$N%y8sjJTy$7PP`SVoiMb9V&YbnbV5kA1S>_>KfT z;|kfWvx4)3XsRE8UMFS+ws%b|4X={pnh5%?F!P;nNM^^n1mb~wMh_(kOw3<|tx_NN z%9B4Nph1~~;g5_vA}xspVip0|K-on}>sWcnLOykgv3aMyI;SAn6*ztzuVsZ$1geJn zmwi;+06?l5@k;+(A=nFl5;K2I4&C&pu3su&5J?aZXj(C0B|m*0E%XI0n~m>qUq%Xx zb=DRB-n+!V7UeE3pY6HU<*(0~^K)nznoEn0#Qv*1yNf2=KVoq9uOC4){O@;%%^hR!Bh23G%fX&ekK% znnOv4Id7ZeI8V3Y=+94ok-B*p0`QUX*5LCGC{5423@8=ukC=NnB09ZGIi+;WvOoc2 zcKJPW$uSb6!gi>Lv|QDkWRJT5(h3hR`CY{HfowptnXkb6vRt4R#P(&n`+(tZxe4eid8a-Lx;;oyOjJVe zb^7=vu)=(;$H-3uQ&y7KQj>gpSc={vyL_PwM(ERENHZ;emt65*`#d>kk3)$s7;u6S zwH7Jy=@DVBMEVw^@(n~A~w%0LB5rgaHtRWdiJ68)GUU+ht^%T}{hC;Sbyk&`TBDau!#hYV)3`b9>($M^y!CL8H(sNe3Z@>G| zCCZyA1>2VnQMZLESFtu2X%D5PWKQRpu{ot11)WU_x9`}UjvcNvd~PzqP4UaBZb%s| zG|JA71l-8kNh(Bh90~>bNL?bs8Q5uKcwR#9P|TYX_h+{+&7Av^JivQB7l#)C%N(6X0h z@feBHhMFlwge@7FZxj0l9V6Qg0WtoB!m;gtv4PvRU@h1shGwr>vb}WdUAHqc@5lCZ ztjVm8W{+%lwpC2kbV|7EZA6V?>ZfUx|A(}5Rk`?=(>1nh2WTmz8U6K4*cE~u=Ie{h zc5-0D()k@VzUJxGft}z>uOSi6SbA4FM;a-Z66ufN3{ToN+YKQLJJ0vDE-Rl8LJ~%Q z%{GT637QN)LBQBs6|Q%PhO}1(xZZS0U6)fXts`lDBj+PGg!a-Slsl=;cRs+1QO7|s zg;s1H4E36O5WSC1ch>`n-U|>JZ@I^RMb>EPn5zKt8B!RLO@T4yNNpA&?F&)W2rdc; z;X_%1xpY7BabmF;Ob-Hx`rCpfvGTD75fI$C)NH%LY?uH3-&ekp4YoAV_D80JP6 zayExm9f@?oclb@#uaLiIGM`s|jw}$AblHyL0A)N$^~@FO$VHpVFp>2p$&k~3N$^S? zde0r|tXdZvKo?SjV^!zoda`)>0tv)%I#<&J4fYYW?O$}5?qYR9s;m}BRo(s0( zpBPkKyhqlTVk(guPI#shC4+#D9$8kDGYVCt7&YSxRTpB=5N(8YX{$zVVfltRD}_4J zGZ)*o5fQcz=_}(e!sVkP zj!LJ1o2*Wz0QC?9(z+JwIPd!=up0QJAGo?|NIc8R)P5KNM9#jP8e9UQ34Nwh8#!bf zf!lE1%16M`nXjVUkLX3HGUO`CQlk4C4a6-sEc6FCL7SI~F*p#gy+mn$Ijnpgww70K zi*3z<=157)XmL7IF+;P{3h4%VFd>;vR|`%B1LCL{NaZV!+6aJZLs3*d%(L>jhzEu^ zRD7BU$Y!Kz_Z@#{+qBBtnImWo?RIWGbu{a3h}7FDU99p3I%CQpqXsqVj#c7@gLX2@Z8fxJJMV9-w2S z(}%5+zmIznYQjyoX&`m+ZG8{g5x#6jB{I61J8>io;kwLo zpX27^bRs9-B}-TvDzG3Z!Q?Vd+X8ud9g%u z964`?0%>T+2NqWrI0-^+wa5>ivqMl(GLg!Ac&@P(bd(4w*k>p=P?EQ9#tY>sgnS-e zAV-8m80v+w@p3ellpCOFh+h!;wdQk0ED4!%!SIzikcrJf`G2Y@`>g%Q|&)uOE`O~Wd;t2`|O9N38D88SaATz-*+ue;%jC}h% zd!gOx^gtDX;7Dwaf05}*ORZ=!k2ZJQqkpEB#9|sUDaFvN5%!{sbUZcHSM>XA>(Vu| zTHPS_(z+aTAG$fwF(q-WZhG%2g;?ueP@s}78Vw`Ublp^cl%Y5;k;n=9qr*S9=oyqY zHYrY19sPduhW4JR5dOdQ`Ixoec6EcAMGJ8bC;@HokP4d6_|bb~UeK{ll=IY#V65p* z6-j90skVQwO||v<8dHsC(3vcQ!KN)ok200XhL}UBQ4m!cxoKH(;s{FkgRFpBuyu;- z3U+5lRUIgQWfDB7s8|TllnehLv)!RXg5z;fo+(c-VivG&mn4A4McVpK&WieP=+8HQ zZ(L>{3dtaxV%I|qA%GL6d>!Gi>TDtQ*{BN)-=;Hv-4G&xtY?w-j1$Q~6w|#Vo6+8Q zPft3JQoD;a@1)c(D?f$7oQ^m+!ERofZY_sx0!GJq16yrbD`oo!U)zueZp~aU+~Hd* zjtjPB{pAjq8tVye+F`^M*b~s#AY==F`FDY|sx>X*v9>7+ar~gL?iud7(AF-7+u?1W zDXm|J_>W{;OE}5H!Y9xl&Q`foghbNRqHMCMT$6txV_fYnBo}Wi*T}10xn`PYrexh< z&wFl^Q;N5YxzSkyrKbd^2P9-VsWRjC$iZ5=>IobCph1IcA%k=fI@Dx!e4I;vK9wU% zMR~;DF6DH(LYW$|AVz9p@;Z@Q9!}W)=3|af*_@ggWZZYAlpV;8o$ZpY9XCj zU9WsSxpn*A9YG{806b69^s$hC0ROmdh~Jnq8TdNrELw$ch>o@W7xa>1saE`nNp6zG zl0wtg)xL~KT(o!32QOdB<&W~U)IQ>^wtpAPrv$v7vNzTP#LDho^pDQV!{P{e`@#=| zG#YCdxuNU+x^^xS6m^s$JMqWySeH@l-*)^d+jKPalm=%GhElR<*hDRV)f3StL7Crv z_8Dhxp@0E%fK*XKG-_C_Jfc={HQ*m`S=I=_Ar4;4HmSeevj)nu*mpW;FC-yPbWCq* zNiIq~`bJJ2Rq5rw$Lx&zy<~nHau*?|-N+4WPvK?>y@f_y!VB$yUC%%peX&~jiXT#* z*BcIjy+(@}h8HyVn({+`5VE(uD|v?mHXpT%M2X|&m+m?J^+FXfe=SScM|a!-_l-U- zZ;&9qDAQH$$8eFU8t{L-zTPt3NOJXCW=~TYWJ>^BK%~Fk&Gvov4!Ji;!*DZF0B+3| zrBW|v(6nr_Hzzl^nZBo8H|53FY?#(Wk&r#IkEO!cQ5V0E2S>C7N4**je>wzf$_>5- z;1jy0;m{jG5@7Oxm-r5%P|QT|_0@(s)G2>4NJw5?!d$6J%>5|YVVveMHY8f3tb9V0 ziGs2GBlCfq^gsokH*Z`U<8?4NF-gWKv+|ZRLFVZG=(0O~rRktZW>iG_cD*f}&ucGq zR<0PC;h}(zPo})1UF(tFe~pYAwme3?Y+U0?$apW={Y)u77d?Laz*{)bRZbk%Ynf6#MA%WjEW&WX83 z?iIoM3I5*Qd$)f}if{7h|GG6!&7}vFhOrGk%NuCrd(}8Kr$Mot_2=ficmK`<)OXdS zlgtJY4@GJaD3?{3O|462m7(u5j>_IiB9yK9rn?`vZ`5F~`)^w0)OPu|E^^A6s<1Dc z>R#f8`=iP!6vJkZezk267kD!jZJ#|j6 zy5Y3q ziuFgmQ}Q?_fC-zTwtdn9{l4{1yI6&Sr;#C}uiokJS?<*Ce+f<{qZ-ve%AJx&(Rvbl zs5ZN$T}2M*;MyPMPX8!(${t7LGu*ZVaN*uR%ANjE?(~mxr&8I7FG>^3*aLfIA=E6X z8qY*dkoK{7Lvk1Jr;FGrdH6@UQvjt$mD(d#kYl~vYHfWK)Iis)cWRrY=}FbE=)LNl z>JCdZ1Lh@ae<&ZP@`H&36 zUU>lD04gU44UGzVs=s!jG;Nd$L6n@jCI4M3pBiK}KvC`Fh&|s}`BX#!7h03qo@f;* zvHvK28t1I|Af->`FzY3t^39eysOtZ{u@b6&U{+Xnf5lp;bm%^8HPleWU2Bb!iC>Lj zd<}|V5_$LX^DQ+|aeCWTQKP!3k?Ua`)zx1cHU6TL8)Hj#)b&>C<*kkQx29E(QfTlp zH`Pfcd{Bq`_!ju1Sn68FAHXWM-2EQKQhT@sVMP9aUM$rXUb80VUtcUW%t#EB#8+=B zbw^g5f8Ww{XSe1q$IonW+7N30o(1nTpUB1vbXw<54Oc-0yVb|T;40x^?b2X6>eY-_ zVp!9fVcNKD%-ZT6(wPk+8<)s?id3m^O!%#erP_9W*kY;HEyaedRUxxGTW`p%b;#(l zU@MI>c-jtTfOcYveVe{1jFZ%L?| zB+GYEgLDgpZo7EBgIk?=F3fN`UcNl@$IE2;>Se{L|6jfw-hcSu;XQM3xInyYR?NTl ze~2TmHd6Fkw{KDTYgT$tE2Ns;R9Lfn0X)kPgy)KKw_IA8K=x4J&FMsc+??DnNw_Ex z+v6@S%?~16C-zYXY-_&T8k)RofzA}9oMZ@Z4%I8Pze|UVXl~bWe)S%-VH{B6-*zL}aT!IR3e?Ej&Qywnyr{-5QtS$bkzF#*dH`W}7H1ZZD zAbe%1B6zDLYvrN)E2Xa-qj>jpc<+w8>2B@qqf)9$Z7HEZh@uWyF&wO#*#p*JaIeg0 zgl~Pa;KPRSXbg#Ja1`2v2g?%3xQC(e6So8X6mMkN8}_22@UvaZ;xB=5txt@ee+#># z?#4v(SuZMY`h&RJFFi%(32C6{T_hFeSYKbHs(G?~XNwGHaY<3U#{@1j~}yHi4{wE;yHn>P2d?Gfn+4_Y}u;KzXf z+DljZs1DvOB5Gx&9N=r7(LCvPe?LAA6x+EO!b*@&X_k&04zJC#Jx(Mn3xS>?XY+e123#F0v*{Rr5^z$~kgJ3enVWk)GHap%3TjesIs9^hLBeK|f`gEAgsuK?-p zw*v2|d%?v3bG+k)Gu&wmP6I$aqv(<>FW>@$9}tN_j_|60cdBFJ)*3tDafk~C~BM-iOg zRpr^|pSK&J4`QmeJ@k@{ktxIe&;sK3OxI{8#b$L{&MMDHH7+g&&h9 z(bSf^j!Hx^2(TFBwb+YNF5rqBe&I6rCzpTWvd=$nBf+&W4r_iNeA@ssOuhv-!8NS& zdG;a#9lqRvY!Rw$Xcys03uoGR7VVCp8+Dgkbwo#3;pc~p5&=PlfBrF{)yI+}z+Dbm zmnYtFYk-i(3-3Jfv-v5m_Uo9k*W;InA2|>81 zJT@T?7x)P)$}jan6j=xKD_6~OB}sXZtbnq@)3-NJh3TdnKH72nd$;!7qm!h{Gw*&V zkB_sW#=CEx{OF!Oe|hxy+eeQnjOfM89Pd523y)hqFc*%p`j6ZhF&? zvbzuVZr|FoW)>T`)w%b-9+lWsNlM$eps)yp18(We+%RmN6GacfBer*IHwgv zelE1-@Z$1?>oECozCmseUnSaN36zn>t-M04|ByFIOsS3zr7#96B1;VAP{s%bI*n9a zR%KHng8&f^QcqBWL%Ue%Cjt%x|0NdyeOfoEuPQ2^M|uv}agnbmE9Rta{;_=Kn~0)@ zuZ8AOFVgYPe@RtbwX3xzaeuzVB_e4Nl$_H;*pqpB1NWt^5U&ngS&tuo_mt@xO>0(G zQ?D2k;L&>g=8a~GC-_Y!?tk-s=@M6Y%_<_<|MPM_a!64*qKF*g#%O!X99cz>WZKG5 zWCfK<2PHX&yPB(fnpIrANVA~?6i#N40JFJ5=D<;n6wb*~dDLboN>?RkMuU#t%4;|XIcwW^-Wb@<})lM4n)nO`0W z*7Y!1lZl}>pUnih`V%-Rfm2!mQG z)poK$W$qYhm|_XjXj>*w3pDlLXx}CiB01_sJOY$t?G`#wfw#4>8pML0# zf2S#2W#0kTe~)cvB$O9-%Yn>b

    cXwcnHlf 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%0DstQv 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

    fPGJvc+pWRd# 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 `@SmxN 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%0AVeiK)_ZAAF8GkA|3KX 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

    %`Sa@wbJ_S?>1u0>bx6EgS!k)1 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%0DpDA;|*62DnpKp|vR%>)^d|l+Z9>54r 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

    YN07uO-2-Qu_yT_0e%%uSnu4mmZ= zRjHKl2Rl?7-xb>!f!>VW1zeQUHiQi*WQ(N{3wgQ(b1SRqM_vY>vC^J6{Gb2h|Df?F zOE_S0F_@*fH>bUie<8N1*V1MPIxRCEmfImW)I}-Rh4N!t94L!mR@A!2N+8%U4X_ep z`3PKpd3QU@7#~YvW7w{uaq1+N8A66@8ResflWwf-?Y`7It4-S$O{anDa__SHtBz;P zk#qpApDVzU7+ilUrNcJ+>o>T5PG&0OmU2q{Z8-|m#aJr;e{#v~zC@DW_h59xz0@rz zoI_EQ_CH2rVwL4cy!r2N6J@o+N_Ww1b!5^ssc#~iujxRm1OqHT#9jSqR~g6fsNOf% z^C`|uG*`Y~+uL!RR&oCBz2jW0Z@zC^BIhz?OZZ#{F7xRU;cely{HV$jpJ4%;D);yH zcG;!0EL`UIe-%041i7g;q$>@riRCz^?=E#EoBhjL>d?|z1WiOMCY+@&2}44=_A95x z7K2fO%ZI>LYt^$1ebqfV7!Nzg-En6)e${>5J6S8)0%%ST*P0vaI9V~LDF}GjUOKY* zinKnKX?^;4(>gEHy7>EPHEQeF_*-?9X)V|B-$`q^e~v3@ebn>a!-i_52JXxJp zkO&jVPBeunY$@M0g{tRg1Hzc_IB-2^)@E}S@|jB_2`rzR6F!Gt8mVp>ujM9PTE3P1 zzqa@Me}U@js({<)H^0*{rUGQxbXuiD!HbRa_*6oYIR2*CTUsEr+t!Ht1xc^jsjcsw zABl^vOmfZfH`kn&<8Q3*0d>&dTwgP&DR?r8S`;Xo7sF?}&4w}e1Wq{Il>cQ5^RM~V4LckRd4bVMtT#$&B@U`pO@mwg^e;Autz1i6KU zHo8i+ter|-?L2Ma{}y}bIO*o|CVn4k^bnI(nFP$=$*{mah*>HA-_dL;`=R5s>;;LQ ze_GW>P--mKoen3pXTwi^`0l$Wcb^SgP~`*ercro&v~)B`p%BBT>^92Tbpqp!l%(QY zZ0e>N=^&CAC%cvQlt5aNdn{=o0|4^`xK}eqa7#;;KL23-eRmNs?nTn;dmVszLgiQl zE#>D!M8;J3weSTy<|1LoQId$1J&)4#f8|X0q9vji)}f%5jk*C&1N9ShBhx6X7zCMj zQ8M6f-5}@bS`;gwcmw(##d@<%K=JycwJ4T|@^TbVXUI`(_=K@m8V4dkA!;=d z2q*1i5JM%^a2)6-Achtb;B7@9AwlXJ0MD1jFmKhHLcaP``Y|7rM`4Zs-osR&f3#TS ztOYHW22zs}q(K*INoUsiS>yd4v|s8zvcDo!0D@$oI~XuHjiu~X^D4ih51`-;wXJF? z@!6W=tl%na6MWJ^s$vD9^v?3B2Wfcp_J=3uyU9cB@ub4-|?NK0#I@bDX$f7`hBp+f^F zozuKT;E{)KQKHUA70M7(id>8o-`zm`#qC3@Mu1Y{oB?AU3!;PtX~2RsVZjYt8IkB( zqJTrNhkroY<3wCRV-^upF@xr8?veIDi0wXE z`2iydCe&9VAvZ9zev?Bfe-?SF!Iw`|8}i_Z?4e-uoYDZn_)S>+AOZhyW`+Onp5ph} z_tLTnbslHM4=kjWqX==I@TrD%$wQH8hiywo$c@q<5Nu}SBM-V`srf0pE7VZ2n3O9? z@;<$JeiVckdxbuWXl$P=RnzfB%{zdjZa=AcMTnHri}l7Dr3vTPf3#8^Uu>-J$wgpu z^MbG|;RkzfeQ&*CF|blm1+tJ4A>X;$UtQ_1uFuN_gIaSKYUsgOubNh3HXLWIsfH#+ zKpL@(?rvorV8&J5KS@=zwi0@=rMPFc8f8&+VzNo~fPd5*j>h}_lTr6%G^Bh=jCx%S zn`-4wMrB#AWm;xSe-a!bkXm`^a#;GWR#Pnjr>n`Rv%lXR4ox`?iau@G?=Y9I$)~PD zvd5dssDeLqoQWDF?fFnQu$;123|Evw?n9?#AiyjMhgm7;VqgmY3~dpmq-9-E5W{YE zlZ%$w$fYKpY(#pR@@gom%VwAB|7H@|rPl=he>vGIgG$*xf5hvu3UY(9wpBPzSYXL< zXAfPiY7OVw`#HO5qzebby@pvD+E5PcVV6ahL$Xb+G0rka={B(s7M9pY4}f$9!`YL@ z;n~SPyvQmei3;uPy6Bbmos`mQHp^}SzF?@v>QJsBTYIeytN}4YVGTrWMoT*^Aa`F_ zw3KvP3BI%Qe^)zV9ogh^5Cpax6i+rGNJy{!fXK-AiOhAE)iDhd=-QbfLB=pUVEw^; z2~b1-?F8By_i#Cd%Cp`Kqda=lDwW4gam!+=9*0JyeL-vQ{M|2(Q(SB~4%vOwH)AFA z|Cv^-8|!23prGFH1E9xoIG8 zyMwd+QGamvnuVfbeQbPYl_RJNT1z8_he|`z{Je>Y5I+ z%BHI%e_U>BJ>GqWc&kZ+|Lx&#l|K-po=5H_Yn74joOk5%rs;YfH=f(>qSGB@wK}gV z(aKX4$OyyV3Lq{5t?2;BuTUUP}w4ikXjvG$!`@AZJXqT8=K_2*tHxa*LIr4 z&Tip2u!$`kXLDB%q-9<7>VyVIh0MFw0OUqv3-Yy%c4NzG<}&ejYmc@Zr|mfHazksZ zf8k2LsC06zCu?zs8O0iFj^jAz@0`ZPW*=#fFQ==~#peIb=# z#LC$e5#mTq!Ovy=^@*Q5jvmO7xb8BA<6KyUv8$`AX)n@i_V&wE`5Q&E3ZTpNA1>5g zGfRD8mqZ|-S2$%fzz86gnZGO3ssTuEedyILzPV!v)TKoayK~EU*BG?iJIcgX zM;^p2>y0OS%vh2`;B~dnmr3JI$pvo)nwb`=dHshcf3MXU zf{Lwn*0tw^>bR@+xbW%sKYssZ(7^*9`aC&yLpJEWGG}qWM$(c;gsgkzN0(y3!^?<0 z|G=+#lHJ<&eEU%-QE{Rq-C@Id&co)LoD23kcSH8vPuxr1n&ob2f3yPnn@}+pZrF;& zjhhexaKfdt=Co}JIexm`PQ>Jue?&Zyjx6`xjL)Lvc86&L#wtc&A|{qOVEvS9(LjxM zhPf5{G&+el7gv11y(sZnC*kgqn9Z|clqVi%ooo@MF#*zcw9yPRcO*9~AG@K?Ub(4A z?K1`$=T#6*Cb#TWl!rds4@3-yo#y5=a6``aBOGhc?@-#`!SKd&vr*!Pf9W(z7I?Oe zFdF*?QcWT>GYS~qrq(A(6#phs-S+e3il=P&B2}`TaD&q*xSd5Ie|ycN1qWhECytZoMl2+tp9;RUlYb*ny*IZpPbN_i3169t zX1A;t1o=XO(DfEB5EcnX5Kwh?yX#XA#u~@&CEw2{{LuAyH@p%_6cPate&l9HQ8-%; z9?o5$=pn|4-(-2h0V9}In(jD)&AY6!yhoi+@>4p=lFIJ#t-Qxue|guVKJ0PUk6lk> zw@i9FwF%HqU|1^&bm}IqqJm7Devf%NXQw=&Hh_`Oskq_6p$MS8O81%vEmBbUTQ?DI z=y7%$34jX9OSQ3dsA@Yr%0@g*B9Hrd;s(GDgk>;}4XrHxmBUH;UohHnebqPF06wI} z6<0hufWkt`?MeYPnWf1nyoP|TJFDB`ZA)7QZi zeRdKQliK<3#~*%r^7PBpWui&sMd8#;eQ!nRVchz!Jn{Z=FWK{}zvSJ^K!olrO5Cr& z(;cYP8!0;&9(_}p_IBFsM7?f>JhK#BP#!T`n#EL9YbuixI9k*74trgwBQ%ueUvqqM z{?2j2j~7_sf7yqm8mp!DaM8fNsYy^Tipo?smG-b&6{Q>61w}n5%d*LW+&}zcb`dn!1Mfjke4nor&U!R`fhz+E?$=k3tT?0x0B`PwArAmF0ozWG zH{m>^e|#duR`bZBsYMkt`nH{+rKP{xY9LmvYbL^L{ddV%qA!1*eqTYa`fB{A+I+vp zY_6Vd?%PwTo>@Dm{P5imKm7PbbIP&sk|-0GY!KxcPx?azqi*Jy-jy4&0|M^lSM0gC za>KDNu3j!&5ww#0MOAlGBB_%N9MoguB)Xz?e}~JiT{6vc^DJ5reqXfUETK%<0;*U% zq!n1^rk5!^mn^s&rr>ja!##=olBYar5|AkORXI~O!Tv+q!KO%4`jm@2FHgt^ZFMGt z%i3#kDOwA0NfoE<8$#O0ZkW5lj;VsgZ)wZjODg@w7%F8v!IC@J`KH}wjLon*1FPe& zf5{$gcYp3|Z_9TXTtDbPyxae|^K(bOi}M6Vxbm;b9{v3D_A~u1z@DuM5QC7?{JHb< z&)eJISX!h+y(nFoXNRNCsCx{h8O*cOC?QuL#z_pc*MKLVL<=Z@r5TT<;#(9pIf0Wa zr!52>6Ur&M-Dat?$s{&Z9HWxh1Q$Voj!^`92 z{z-)luJ5yiFQO{|Cs7K%Na>2Y!m~`AK>bdE@N-`%3M6^R2#jAzm#xe>O*%r6<%{1MAtwApobX`0bUO+N|Equ zvefnF9O{h;b6uCY9!*h5-}QZ9XEX_NK|L@x5VH_4L@t}Sp?@v>Y~D>HUEMBXKl9omJ2T09jqP#3P7uxkRLffw)PX%;OwTn}*TKlkFM zN`~%LM!rZrcr&_XewZ@e#E{51I6Nd~qkZR8Bntw!n#HM-`h+v(6$tps^lr}GAe*y! zl%+A?ng|3cyJcdwhygcs1Ee1>T7VvUvX*clv?UWU6LHEtCgQ7SOe7yz@HC4xJp#{X zfghtQkV5>z_4F&;UW;%Nf8DT!M5JHPAjlSi#(~9xvqc;LzanFy&q6L{^GO7+6WMi? zT*8!yvoMQUl*Uu~XB9I91Q3}^!M3xUZ&pCsWupGVsq!f-NBF29>f0Hu|{epHW?V{Dx zfpuh_i0l>=M%pP;4U3EL05ne5rgUP#Gr*6*9@|Y2cQIk%cEKSZ+Jto;%l$|LElfT`gEjv$t7Uzqg%losVm+jlK1i6Hc>P zk)xumU0GY=iczQD7Co$N4E59MnvaAB%T}Ly#rn20(6?m;f9@d`rg&Wd=i3UDrrMy| zhU!*f>Jf+yd}T#H#!MHM=;F)iqH!8zc^cR;-n}!tYvHJPV|Ayf7hHd1XQ&BWLYB36 z_RgK_=7rwlmr!F&&sw^5)Yfi?S*xN=)?ho>50qirK87{cmAMMrX~2j<#avp4)JLbi zo?>jP3Dp*me=u~_#)+l3VdmbL&EaZa0>jW3&87z0FtIDl)OI$k9T;9IhT3r2<*tAE zM2Rd90oJ2HJnl-nU7Pl|_b2>jbbQ1BUQwIsbEiJh7nMZKr^c|4v2xeh(s9i&B2PON z`bgv5Bd7&@+b}2n_E4c&!|EkE$m-VZcIic7mw=#Ee~~mhlJ({bpn7BxbIIcp={<1; z*|Yls=x(&+#mv80xJgM6Jr+nd-d#I?=cFG$ojVt6>n|=UpcQq3r+W`OS2>S($q*Dz z_DHoXO2d2nnIgX1z1YARsWi_%6s@4LbHicGoE%bMaM(`#>Mp=6FSsfn=Ihp|eTMmIbi6wd>c(pX` zHam#OavO(cZl*D_0A%G$7m{gnSE?}LT=$P>ICg}STTavk?My} z{Z<>~_f9(p2ZQnTtKR6iGyHY4v9{INTnSv?Xnca5{F9%bww^ruskPnOZa@8g>q+Zr z>pQw#svvTy=CIjl>U2MCsY0~dtW5Apv%LTA3z93#x!KUgvy-5IB#nt)M^r($0-`X{|)c90&4IN6}1yoM= zch!9iRqm~rsnCW6VPMA5nmm@r66ow$e|!GBhm^H*$4SrE9Ot6AsOo*)sSr~?rk3>u zDecwMSZ|7ST|9(n7qx`QcU~*3uuR<%&}p6w|6kggH0eM^DHW?s5s#yO_}E zN)j&#i7UZyjVg~>!~yKq%W;gZf652kTjuc~2qOqy%L91E8XkNuVheyD=;aV3uFoOQ zh8u$zjv{#?uE=XPQ1yHv&x+VV&JM0B(o`VbR#Jy>Y8oZia3eM)H4Kt9ORwQ-9WzaM z8u9@0EfRYfpjAk}l{iNNtpdoilDx)Vg>AH~o2)TZEr2Ad6pW%cj#5BKf5^j77SE$_ z#$x$J99>H>DV?X4tsQ5;{qsq(gmZ|*4gClptI{oG!U=qZNnJ1!pi1D?lxIZElxH{k z=9X?MMNfJ5mwYYNY5;;M5m*;dl+B4uP-DphHz7ZGxS1sWlmW&edT7TX`QI<%GHUi-icM?k?Dq7qxoAs3783>K0%tZtgmSTvK+;vN^i!uHO=U3 zhh0TM4sc^q+Om?6st2%6Pz+g9gyn2RsRX8Pq0lsQA&7@J$%RKgxosjnxbSG3 z#ZV{AqLBR>UAe(+e{{v3yLf(ish*+uwCqaclz=ghcoZW3Ec!F%vzNDS=<^$#jc>8H zZYqLXs0v0`Atid{rrFEuxyU%Y4^X08>?lfj$cB982JCr|;`%a;c-ZpX7hCMqP2mCM zO`e2;J&)(&Wr7OeR2LeAdb7O~8u?Ol~0@CD^W%2UCetSI(Xd0s)qoz&;>< zXCh>INM|bDlLH(ud2mx2q+B_{Ab;c}myu4+X*M7zH)~REXeZUuH#*72)k2Ynq*u&? zR7?TZqM>83oP+-hDE-nsp_%0y;)4M22kW#;4UVk)NY@Ja1p%e_#g7gm{KI2!a$>N%ovx|Yg;DpaW#R`jPwgiV0(F#6fnm&_t34(-#+?LoM%p{z9fOi zE9Jk>HJ|1YlYevN^X6AIV6pPOQ>-LFaFf!Dgi-h@U8$s7%z1@L3ZR5kKq%gj+bt-% ze{kqAc+o5rq?Hm)*$^`z?tf1ksV{EMrPvm}tVlll72oF0MZ?9~_R0CQ_Z2A|HyvlcSvU@Eyuxujf85e@fj4+sKX-1PZa1BqANiMb9@NWm*1Tf> z?|r%F3|Cl$PIl)U3ly&um}_=@{`|c8-xqt0y*1~0bKMEya_pTGUTiqw`ocR0yXBZBTV34B7>WlPy=x$?6&E2&DFLR!Tm1#^WS6gdQ(sVge{=7Y zK{+zU%Be$#=qVk~28z;xZlN+O!K?HzN4pVuFpqwPwO!&zUJlzR?rW!eg7mm>n#)qo z7j*hN;ZRx26E}m837j00>MCq{pj!5{^<(QPTO(tMWT9Q9tcheoM_=y;B93{|O8HH^ z)@rrZ-vcoKZbh>!hQ=zGq(zHG#<6T>pxvkc9=@_LZdFi9To$#P}k}oEl z4xi<6USkWx3gb!h=Zm#5A=O>1Zxq`WexxsE@PdI@=#6D8D~>{pt5X-MoYvU_aXHPb z&h6wk&=U}_E4dJ)hyx6mXi)4LI>^aUvkD3)#etr`N*oHEdYFi>Vx8cSkXxos^ zs&aa^g)_ghe!4>7j5c-zpQ{TjtGCbn1H#R=8Yz)weW++~_rNU^Ahg5g6P3V|i}j7K zOh9|>mTdCl*C$Yg{#M+ke}KU2N~0>)ZnN#C)DncZ%7tnLBD?0J3U~ZH3Y%(eF4JXc zAdy{6f@{?7nJTb6YRI>+NN9*`ln4&X4j?4k+`CLSdSJAKKjaGPTQ;5{R{( z9S4&o(0KQX2kU!Uc3O3Qt*ePiL8tQ^mNjNShc|WQL%995odO*$QU%B$NBMu>*;(I% zl3C@2?)3N^e^|=FR}uF5w^D0c+MwbH>G>93`cc@(q_eL$5?NTT7fcd}jO8R*_rQy* z>KigbWvi)on(|e7e=J+hjO8)qg~qk1Y`-O(jT%ohNo>AZ0?VUH`h3bHmhBjYTq`^8 z(i?1O@kf(EV3t-)Z}N>ZF@(+nLvr>`KB36KHesOY!ac!*!!0 zR+*zv026>CGOlbuF8Oto__`6we)!PmQ-jg7+7Ie@>Z^Iae_9vQ$hLcTIq;}gU(tZ@ zJO@qu=vw+LjA86+eC4IepB|I$5q0eq^(!0>oynaY+5PTe5}Aiilz@X_m}rP@SYJJ|yzcvCYy?p49>Y8l-Sy5HYb zWVw#2j>YiRf1$i?LggUt+!V zE!}=Az0EFg$jX3F;lU;=gQqg(C=jbn=4SAsrmA4|@Q1W^n*`kOyP^WXk-l}D-`0yY z+!Zfh?qO|py}7==wzqr!?&Y_87wZ@k->>aG&{D#6f84+PcCT@pn*~_3*pIc8IXL1GDsYZOvULtZWHacL6dryUYmDq|&zjG8TU2 zP)n|~FE+|qAFoss=(u;J*?ycDVW^I(cdE`OoO4_(sgHeGx{b%lD#DyDuj8!Cl>bhN z8;_F*m1ZmHKn`{O9v!H>=Xa#*IDk_BYb9khe>k83<%V0YD$Mj#3jViPbuDrCxCl^a zz5clSdjeIb%|GI1t_ZPVrQW!_?#0SN&W>LYRc^pvypY#DT;;-Ed2u-%^p8&=Zhv_G zV(;Pwc{YIDFPW^toOOL?d;7`GcKMkujP;%4Tt5Qn0S%Cjv%cdv{wDp%Ayb7Z;mI#*`Z*RE03-C%QwZ&eeWLD8r_IE<++{ z-Yt(+>;a>e=88QeL+BB4bwX)W)G~Bme@E-;D#77Z0%(*=^xR|(37T9|3m!2r=`c$t z@;_c9gIr$W>Q)}6b1}`nE-ke{eR) zVH~Ix5skjUKjFlO{nPcL32vVMiRYHv`csA2C}IaZ^%6l+o*g!tbEc9$%S0eD!PBKo zNd5??%2@=B253Rh25;rFP7HYm3Bgk4dLMF;a9`RIAN3EqSWK|}D2XE}^=L85T`5Tb z`oRlwpR-pY2yhBv02Q{_(dlrwf5lD{;Z&&_JfJiDwGwd9`C}#Q zumdb@6}(b~eM;y}=j7n1f0}mxZFex}9dzrG)bH+3v@G;WnMVCH*-)zV2i>EtA>l#q zbkrS!7$9i(_tXBMmNKuqqwZkPA6R73LC4+Uu=841s5k8X>#TF668vYsccN~O`ke#o zwzEGv>m2Q$)#iq{2c1!OXnpXeXNrl}086#r;&J&4gmq84gV%r5f3>wvWGUT2_oy@K z9_+vAoSbxZH4t~GIg1`fo!7k+&3Onp>mT2h%US<;xoBtojublUA`1|RNs zjyeO=m+*-1Rv3ENe;qCN$zgYNFdUtB2BY47@3cex3}qR1M^a><8g1Aez3m*G>Eh@| z$;Y*Mz3Cl}Xp{hbK!U#+^^VPF$Nm23jZRYXF6DOG`?YH^Hde!3%`c<=SzQLB{#lh^ zqyCv)#IsXs#ZhOZ*;2n9jt;tSsRPNr)&0FLeQ-(lcggn_=XQUWoqqtumQj|Og_0{@ zuW;yUvvl5e>7(PfNU`{V$(zppK4?%r=$y(B#g#Ik`dYoJ7cmH zqi*MImtiy>upw?`n^u|sq)%7e(<`>Xi{UHlYax&AE20|(#8gz5%7x- zx~y~dd+(^%8T>Im=pG|lg)(QogN_^#*kC9pXE_y&72V(T&jv%x~XWy5Y~*gqK$_uq8M%iu}pxLeIarLWqkGZ=LKI6FP<4qo-oRGSV*{XzHObkN^t zue+npL4Uu0a(|-e_PRS#Pk49G8FhyJv%&sS9!B9O{t26A5UiD5+JEJ$?rh`|<{gWPi1^)Igc;7oA z8um_J6WtitoPN-5he!R+h@LP$Aw-UM)%5WR-jDj~Eq?{{^~Zm(gU%lZy~9IXiP#6P z^d}6Nvg6*#*{I88bI~tFuQWRa%OcV(B{V>TP>JDt8{Oof^T$zVIQj#9ZP?xKpBzx{ zIq3W$uP6q+#1BF%nILdD8bEe&Iy^gO=;5*vaChAKokEU#C;EEwUvwuM+!*{ENG<;-QQ2m3%Q0H%UH6)y%V_3c(U}gYkDIr>;hX+Z4-GvyJ3&{e zRs@3~#4b>(Mdy%Z9Q8&=U4~SkNA*tTXD!pQr3q zZ-0alYroq&s^)~q`~6{eAEW1ffB1&&_eWrslMy@Uy@gc_u7mC|sKO3AuZHaKsNWy3 z!{hz|I~;URkMaBa=?OdPzsCQQZ8RwUPpWx=L63VUC;tUMI)`8rMm-hGYlYQ1ZLEky*9*)>i_k1@b;KRz0Fj|ec0?)#^9(71od4*JIj{e8);>H!Q+%pu?5@%Q7Urhk>M zz)Duk*WD43QNHXP9Gv!$Bxdf{-H{vy&Ex2g)2{VaHc%OR|4r}cV1HC4OZl2s(iF!^ zW7vCj1l?T~O;(B`X&R_E_ImfO9PID*vC7f)D6?Kl^>ufoO0fFEEU)jbl8Isy%>=$u z(}*dC45*w%-XYWax6Rk?HBh_Xwtwv_%-2?tDC!STNWTzghAG2YAbZrj2j`{n2>umJ zuaRdU_OY4iK1)X`T4W->&|=$1$~1(vqyd0@TWS@QCk0Y0taR{dJqJMYrlmZ!!o2T( ze)iKnR%jLLqck(JyH4mQ{Fc29+%&pMFU92?_C5$}U6oC#J$HTM3!`|=Gf+rUjYd;lFo)zCcEuMW}JbC(4k&3_g zdNEz2ko9%Pc1EpFH`y-nLx01aq_8W^pzP?Tx1q<}Ygc4!!l5m}fGRghxC_+15ZcL6 zn8Dzgc~Fxi&&#)^>1so{Ud|WFA(;UUVG9JfTj6Q<$kLog&wn?KEJ4i(1<^Q6 z26|gGWqC;6=kpM>^8wdpyHQTKvh*R_A4_ra)miUoMA}$H&30Qlkrt8C?`il+RN7Ow z+XNOT&z&3MCnlaeV*+lKpMB57lczs1f$YsV-N=7p`IBcX|L!TvpMB4AM9HgBrr$kf z(`Vn8-vGiAI^>LiE`LqkUqv?>kAJ{ZAR-R41Tx{bmg{L05HwOH+>hd0HiW*;kf<^Q zdmNxfhao!*kMoQjhJ9G5j-viGEUotgID$CflYCZ|=+sT1=-K_i)LlRES@#3OrIQZ$ zlyy?1)r0fyLjal{DA2}UrVu7gHQ>7;^eL)&c@X83fOi2PYk$JJH?EhV)F#9vF${#q zr2~uZO~yu%B7~06ZcBDlM3An>A1D{(WB%a*n}}>0xU=*DBZt`!m^Yn0U|tm92L|~1 zIwn1h^g&4rg6tgYH0>u!nTJ;oSnP(vdjMm5{s28@fdu7s>?X)o7qy`z|Ko`WALwI% zahfF$NWJO-BY$|+F%Y50m;CmD@;*L}-E3~9A{AH1GIPLGzKT9DI*wHEaE(fW6JZf2oE>l&UCmuC9PA zEh>HfJlV6&vP`YQ+$bTHS?K1en)g?%&#>^gV|iq)XpC-2J6U_QvHozaRgjs*L+8ob z-h)TR_J0JaRTMwU65v%?hlbgq@>Yl{ulYXH(D#7Nw%V>|CK}o^4a!e?R@(Q{MU{~}D4_`GPCx!9Qo30y?TG#Z>8&}Af9^Q`_qQyWQ1>P*4ubn(1YePpcOH3o`rcYEsHmXaok zMXDZwKU3a{x`$!o#-j&&j$>;e$#Pab3tA;H#H*@gR)+-S)m#}DP$%7G?Li0OQiagi zgMT7OYcyGV7d^1ocU9`PW*A>>4lEw6*RrCe)_jHFRy9`#*4lQkU16#kr8e}Um7;AL zrK@D=>opu_s8!TH)2N@VGOeLG;L_6!K9;c(h*sFL>esHmwg1e_A&fQAWIB?N#3&<{Fr8UE{tHgUAF#1dR7>~)4?y%^J5R|yM2;1O!y=`#uYaDP1q z%D5iF8|KEHL`lY^Cjg1H1t%3ApzA$1@l*NxJ@ed5xmZ!VU6TTq(!g#?nYsHOo(niO z!#ofR`77Y9OM(U6GJnA;+rS2lf!tI9_Y)vGekjLj6lH|Ru8_56Q5IpREJBKB$^k$q zf)EuUJSJSifdZKc0u%g-mjGN7N`E#G;Uy#ReUm~Er5P&C7Cf18wh(EGhFe6wnBFQ| zwv z+?1tR6thfZ0bta9h!-G<0Hv;BWXrClx4;{cmAL6;nS`kn+$n&ST!QU)(SM++2V8b< z&fz&A;Uu-t?FDtNiNz?uMH8Wy$@YTJ4M2L4kBwOpc@Z=!@n3GhMUL@eB-^cL7i_>`0H6N1F&ATs7Z z53ZB2B_m2^93+yB(gL=$__I z(gI!^3Rfhzg`0R$TDVCn!otm5{A7tozhMDS4p8Eh95NvmxGE+AsZth`Fv^NaloXRh z1>E4_HsgioPYa;jl^=WjMxP6|i@bHi)(IhRrtHO6Z&!4DEYGsKRX+SU1Tc56(i-@QNDE&~txUxXnAC+Y z7KM*Nq42|eQTS2JLx23zI3{lp3QKI0<6#rf!3D0lhV(P{*5B*{) z>th;r>P0~@l>=Wf<(W5^zaa2bem$x>_wW z6*0N8DhPP6m`YBVQt_u$+o`TC-QPK)ET(ak7SlM-ihn85VVZCZDaAAicvwtR z9v9R6ufMGCNOV!m+y%-e2|eSP6qgh;o?W?#r>PqHW# zX%V=yB9KK3_M7ekn3~5%SqY-b9Ivnib%xIL|!%gvE!<`cih?#0@7RED|^L+#DD5 zuEY(I8!jBbm-q=I>*K@?<47Pln*?-8=qV3Hk?@$iS)p7U6^ZmdS{7NccLMvcf{-nX zl;*D@^?%&3Koh3ii$cEua%K4)#`RQ$^CG?E*CB?{l-zUO6lu(TkrwHPBrDR)$3IW3 z(xw@@X_3lNM_z)0kc*Nc%@;*_yTGWB-ln)1K1grVMLI(;beeHZJp5*SQDB0}+;Cpd z*ovR(u$!T8W^y>lB8gEP_IzxTumw|ruW0S3pij4LBwRKzf*-de! z$bUl@Jj!uLU2lpjBA00pdb}yFBz5q6Q(SX?i3YvpZc^OdeklGDF)`R*YML-#tAGG8 zXqs4E=*S}`En}(fERH+-gZ|iB@JwW<4HI?a(R!lzpsrYWq?z4Mu^Y&4<3g?Z3qLBb zCn+#@@+&teq`$KQ>-n;2#nj9N7(g!ht$&ZP7jPd%Ww5q83(540a?JITs8}E$Q`#_* z#W&;$lQc_cjM6puK*@j5seGUj!NmWdy6lJaHU-5npov8xQ~jX2h#W-hkm*T@?nbo)XY#B(cKW$A5|{2xxX;{aW(=#V420=owLI;|y6JSwje&CXrH3YWh_KJ!J-#sY#I%4K zo;z#z2@Y-gtq7`#{9%@sHh*{^Itdx?QaLgaRu0`vldT*$QG&|;Zmr=s8-SVorSzX9 z-;Y-@yeY|hB#xJP3Ybh zJ66?qx{0`C{dCU7f<5=gi@ZaOC? z{ZWT>=j(8?EKbrA-4z5?X@;D`B2a|tL|qOUJoQ|-Rcr%QDv42i5ru7bEi!ea^$5(h993TcxLbNtqu$d}xgV^27yU zs#BDMpy?&Lwl&{bDSw%B>W1Ukry17tSdX7j9-QlgmsLWO(f#JXT>w+1FMx8WLg}rH z6lEFj9k(>?R0Zy!y{>rWyi0=lvHBCyC8*pBSh!0!g-ZVT$MLKFQ7!OR<@j8e&uKW$ zwL0Cw>F(YGM@~t0qNImg$As8zC{{2DIumq_3%h@4c&Vk6U4J_Z()_K>0%GlI9_{mY z+s&Vy(8<`t#@hN;>;1=1&bf23^UDQrB5Q&-i#tEry->aKp2F=Pb%wwVlWlLeJKfu* zvyPnU9g8M^LguVA=t_FYQ`YmH-H*<>6aJ!0QGWz&^(Dp1YC<~doxnPXv{vdIL#$3% zn&nD9rk1nH4Sx?Up)bAoS^eCiPsxOLq_)G_PAyiij&IJ|Yf(GviGX?CD#Uh~mPH;$ zy!wT`b_q_WJQA-*DlRir1^i!Bc=QcwcD2qh6PkpiuVqZVO1OhJeLhuhY(8B38b)N) zWy>PfZV|B{P#N95+pFk;VUK3GPJOe(8W?Gq1dtEhzkhB^tybWtkxzsxI3prdQa8YQ zSgYqk?Umr2==@!EM>v3w64E=vfvY_B%;rgS4L9k8v)c_KG)5)40fy-S>DX`kApL<_hnLaZuvgQ*0R5n*Y{x%tlR=D$4# z$mNA*>wh6l9r_9VNZ(67(@!)S>IYQ@X{%Wofy!l{&AWAK?zE(=J(mCO*|R4%B~)X$FVs@-ZdP7vJ;~F@xrW7es&N32*(Gep6Yu-&@w}xtldb+LUFsHW`6P<0TaY zs^-e#9_FIQ-LX;l09x)l0`*y!t}PtrqvL#fxaBn7|MIAC=r6t4v{b=W5(?->aguVg z0e|S~O^NrjcHU}VNRXe^k6}7^)ct*Ie|=ZFo2+rZ={U^`sO#MmNm$vG8Wd^~P^!f) zQ9yQ#1_=VR$3QJhYCurdl+Gwfd7|xkYM78tJeqRNz;8s>oV%eP@PthT4+z*58W>vg z2Yj1w&J%%CbdfbxBc-X#_Etr{=YPP@6@Pq3}Sa+kBy5qU{3F3pa@8?u2K;+aq(0rYD~7mbd1v40~bS?yaQfN7o^7 zCZ!%k*E}IkRS79!v3eq$T6Hg_`77z=05i8!Aa_S807d18y0p*bqbi&({;L~N;R)EBlWK43n@^s z6N1`T^TieSKoELJIN*2FteLqYpu0U5M6S=Ik4AW{0G!mqz2r^EqAKO0P-uO*;fy>R zQh>^q?p0Rg*^vXYo-O#|1Aea9qB>#|-dAJ*QukQMugNu{){&~z7=MfEJth_1>uM_B zPz+@^6#4!hIU`eSMm`5Jz`fRdkpFYO==ym=pG|Sl;Vo-VNUV5pC^0| z7`v&UqbOGXlDAKbM>J;no&mgvwHG=g{m4ub?go;5aJL8DIu{Bf2~!9BcH1g{m9(g7 zCL9HvLTxOs|4J)yqpmg;MzM9T`bSV*FUTpLiJ;`J<2VF{e7lAe=fzrT1A5$w7x);j8qx`R%= zJg#cYtmS8GkFw&?w0MMtvb8`p3v56=(#sZ|9NC#Ez??ccRmH~T3#7$&EQ|H7uPTU9 zBB{G2$SSp!MSuF=Os?^0a=zVsay|>#6m=V=bwsUWH(N5M8-%X4-qapB zP9Z(16_2zhHB)@zH6vA0j9I(QS<2LAMymCJ+!&g)Y=6<|9pdO3o?jAizv>_SVN!&o z@;8yqZSxMvR-Z2$p-k!C@&%ouZOqs1VYBy!t0Zg4!dMbY)i_J?*Bxg0z<{Jv9?+D2 zFc7wy3PKw&;x-~Pgs4%c>|TsjMLmclM+-X+wYwc)x1lPwWdS7Xx70Xy%JHpJXuD-( zcK7j^7JsDdFue(1%JQgl{OX`%I6|e>misRy+`o@avOEb_B)O}kM$I&F%Em*&tGoyL zt}+xt%P;Yy%UY2);jG-D>DCN~U z$WB@>?uDqfR^I#b)1QCb{z7@L2;7O0tqyO4D_D7OcEtT8XU|g|&oxY zQh)BM#it853)~5$rxmQ?A$_Jq$PmDhNy{-suF6?8T#3vGvRO-wlZ= zkgla<*14OqMU=pyi5s$~+uPfvol=YaGglH10@Pka1WmJ8XxtU7CrEGzTQCwHV#`aC zL5Sy==QD5a3!H9oH&OM6p%BTOynF#Ybcj%=WW}dU^(>+__zm|Met@?^7A~oj4&8D% zfXeud77|TkKx#}G8J)0c8UNBSN-FRmm14h+|}&!6FzpMhSz7g%^ca zFma2c;8sF{Od<5}S$yrY1fp!nD6CyNYbc3?25;)i7S*KR^SSFvNIBgjPDRE`?W%+gqUSUf7)@LCRxtTy?w zQOswJ6KW>b!%$WIQ1=|ev#ZwNHBscqRPSm*&dONID0QBCBXCtJ#41aMCwrJ&Q2{^% zGnP4PR;lr(T$Nj?TMH@`YJXNUa4Thd$z-z}mZRVLW)0x4r(oLCODDSN_hptb(#^*UaX*4cu1T=evzFeh}mO9xx7HBG6 zt^5P>+3A+kNXbb{6W?;ym3?ue-Np`9Is#u>hFFv5JuVXDR9(9e`G4-|_OrXzAyU!m z814nwE>n~D?h9hF%IwxV1`KfLWVB-#&}KbL@v&sN2U5wv4YNv*eAE4Xzkk#p)TdOD z?v!agT058iBgvWYvrmQn_}wR^d8~NVpa?3w;68AI54!ak%9$-nn&3y%MHD~Ssy}KU zqqUoCWQDSCm+fEnY=3I%yET02HLXg=auH62Rs14%F6fo;jq%Gj-^dmlbzW-`OG7H9 zG~CHV7QX=_U7pH`wE@^IPfgVgHx<5|wHt2ki-@Y*kgJu(B#69Al3T0b$d}$s8k0QB z6uLvhbHgiFrR}-o217>oM5dDVBAtov%XdDPdN2(iroe&v+<#XiV6!ey^@SsOvLz<*u(&nUm4C z3eOg*ghB?0X`(gK8)7k2fjHdKx2mp}6GaNL>ya-5KI5SdRtZAPFW)ZQFbHP^%$RccI>;oKBErj5KytR%w<*p(=cu!ymG0_%v4^l8L$e zESng<$W-C6&T$j27%@W|sJL@|<*tq^lm>r8^|nT?%75jmcEb^U)c6K#Y&AZ04|<*P zVYf3n8_+<7zSVHU+vXgIfHDs}lGUdPfJdFIN#`vxihmac%BxO;ZkscAp<7A@kWsFT z?DH$(@g`6otEs3La}JZrO5AJVXR5}^1gyC*eSyvf{U+t3m|~U)MHM?St4@MeUcCC% zA_^mKo79L2-t*^vBsw}0c4_Wp3#K23SHr+R!mHqlMU;MsjHHzB%!3GZG+!hQ@{Q<=WDN_3hA&b8M5tr{LLxt-4Tri7 ztr%00=r*R?rZ*RX`dS7=)27juZcOtaNWFw})qc}FvqobtSG+!rygY4QiBwGVY$Stl zAb+LDyg6nTZ2#tNDhm(Wc@>21U6e3{lciS?WNlZnOl~=rdX^EQFu2tf0!Pxb z`GP`}*K|p%D9@VF)NY!%9CiZNs^*ze!>A~Bj0#=dDBez%naVLj|ViO%BU*D%p34wwr~@v_$H%Z zwW9Nc+KUV&2q4*5GC(f2O;%|TWrkR3%*k_^O4geH&3eA9VIXFq?CGJ(%cUTZ@r4?3 zWPmwPYPg|TShJ*gY?2b3ET0ufpnpcDq}GdEYH%!nfHQh)x-UNf3>4+t^rGC9Ru`se z4wK3PHsip(ZAue%Y%Q%fnOKN$)~rYw8ZaW3#X)mJX;Kcfa7d?@@UC}>g{)q0BBFf8 zzQ^_E&?YL=P_Mi|sL8^LZ>^%NP$)bphO$B<(&$}DS8C7b)q)jYqFJoO2Y=eJ3M8N; z`@T7evMf>y{RzERL2@Zm6Ss+BxtX}W(6dwZI|9qN=Y5*p>N%|Xp|#vlF9@Y5PAjFa zDVI$>Sp^D#f|A+xs1)Uk3Zd*TQUDuQ>MTDercG3aJ=b6xXy3La9zQHNZPrhC5!? zW@@iPRo0a%*!+Cc^tq>8J~m1CuL*Y3Oy{m2U0cuMud>p>Yj2VzwTeIi_6$I&0m;A! z1=O~>X@x*EE)ysR1Kc$s8dfhV+p2tlf!PdnUKAh%qoaw9fSIdC7Jn51n!%L_2(Vkj zir2KLY6n|HRKevQR|Tv@QIiGaHf98*;?o@OB?LjJ3zkDEy_s;+C%rsL^_Eh?;F%di z?EvMcwAOBVJkYX_sQ@^gd^rvHO?lUx07JlfUP>3So7mo2QD#ZyF`Xx7J3-N}6HV=D z5V>lcpGJDb$6d2hUVjRaW+W;bM456IYx`!(vrL3DT}ZsT^M!zzm_7Tj7vD1V~}^(qvA&zBD%l$hRD z*FPAdw<+|Ir#2MFD(CiLWGhIq1sK6ot4hbOCW zc+>*1Fw#O4iGNilQGr z&0wU%tX9=Q*086gLn>1(D=LQw9igcPCG)J7lCkUihLP1nrJZ$HNk|=H5mN`5rUtU8 zoZ#$P%L=upE-Toczha({xXy@HtbnGy7FCk3Ce-{h#eZPcRwDVSdXw;Sz_O~4CZ61c zzf{8|0jV@HchW55ljO7+xVMp(G(uY1q|J$Jg7TU6)>dFS^VbI2{6LA6@gZJN)9LaX zi#zBQxL;2M6rkJN$}{1W(Tk$liw_DQAzvwTr?4E~(b!X^u4(nTbDL!N;5239QC6F{S2+JOpVVX19hIdO(uWQR4tJ2Vn8 zGCv<%z-v3?#YvvMmuep8yY0ehTM(7=ZMwnJI;iVw104H z-TE^U;aa0;tP`LX7(l1ZNK)#i7zPr)#pH~?#U^>iuIIN}8KkOv@s&i2>5Rt8Qd4b* zN?1Lu`S!_DX|*<>QHuEtIquG_l3h7ed@euT@ifWEJD|*^sacRoMIc2O!-VaMX13C1 zST~A>RlRB1ONK*jg^q#lK9D1uL4VCuQ$uCV35Lt+_~Gs*)s2N@N?X(d5b?z|Hs<0l zUZ_JRz^lr68B3A!38%}m#Es{|E6BhV7PIoMN#6g|JsIZ~W(6Y=W$6$zE3zmqus6kz zcUe#dauI|VSl~&iWRXppNl?f|;GDDynxs#lf~2~F3QA242y~->)tLv3U4MA9E7A|S zoA4ry0^t|w0>;ap3!Gg*;R2LA<(dGgmqfta)Xzy46iH-KPlOMoVTlN=;e&x9+`LtA z!p)l^;ea2z;sv2i0RLC5nG38Bv7{>?oD{yi@~ns^0TAemFv98t;LS}pfDN)=;yH)B z2u(S{2-b=~FAk$74k?O|Uw@~u8}pD(2G1oV#q@E--b z%{`HL!T-hFn|HU7BY%6M|NB$mx_d@;l}oCnr~6)aZL$_yw7#;!lW9)AjbBHW{Vkj+|d{0DR+ ztRp!gHjUyn8&)oOc@cZTVYlN%h?~{ZVjpCo%dG#_+jY~9EyQr2M-zNLNAbCM0w87A zZoQShC1SRfA10n3OR>}~u@XJS#C-9EJg^@qo64ho_yw-ZI zVa@`cL}V-0@GN3lHe?HfM!=0rLLTpskN5a7e|!Yq!-tfy^tsijd$myhspui<@eM?h zYJDp9enc$=#{MgaMQV9#8omAHuMyA1%QE`BrT&GaD1T3zMIZsqhF=Z>AyHrhsStH1 zQ4zT}BGZ&l#YImK+CH zK)iyo-G3=D{FlG{+wV2#I#*32M#_VLe{iix%ECW|iK#ghkPf?cZrxLHGkWzOuSSPA zm*Q`_^_@{L1a+tOais2B(=+cXTQ#$8^HeaY{@}2yb^BC&{pHtR{!WS=FI6Za?IbJ9 z7Y_@o)Ybv{Y#Ws{cDChu^PDPX;$BY>n&_D~N`F-F=g9Re9gE(3k zQ}QaZ18jzz>z z^3-ECe7u>6QwqK&b5qeSW^910S;h$1$a9$1ihv~PmrJ19_LS_Uo)g5CKqM2ii z)zeZ(cAhU-Z6W{fJv-RSOej%rHEL~@kWvvTAOQ*4V#1(reM5-7KYtXB6c#x8 zh|-RF^ER5)uk-#~9)sa~7R`iP_<|ApNyKdL_SS!Pd%LepeS7NzGnx$g=k5IWAb5NK z`BuC`MWKp!rTP|H-`T_8RrBqwe;R6KR|7>)|Bq`XMkMbMab0|ZEr_OmMPqOGw~2bT z#Vh}lAE$W1{>d?T&D&f5Pk(-~+gty8D}VIpiw_5ni`nt{qM^X{{f#jsWzWrO0si|dpxKkPvIL=ui)Zj+f;78QheRWS}(K{&%23qcXlPdy|+f+ z-E3%T%u#+o3A9ROG3*YCTLh~O>E>-FJv-_)%9;^*?ht#{vc^x_Z~ ze*Ce@nb12k;upNV{eR>BFJFDc=lhtk4z`KByOzyj64c1@{Qm*xS^_44@SdUSMo zosHwhsy}u1(NKgLTGCa%O(a#^+n%!3pI~X)=!UNK#FTEE+qw3zC!AC~aBV66ObcfF zT-Z zC^%*5?l~K;!6YcAXOD`FFZ<~BmfrU955w0=qY+Jx6gWx#g0Y@I-1b!anZx{hjBU{b z`qX+r56YQ?_@`$aQhC;;cmMrtsJKP$JV5^Rr$7Hrnt%J^Ts#`J($ug@aB-fEm7mmW zZN#x`tozxDZxy0H)*NNS<2~AYba5`C@G2WnCMl!+ZQ6UiUhn%wWBx%Va-#ViTggQO z=GRf;WJO^T*?=aGG2s`#$)*~1YR8tkXm)I=ahhZn?;cR4@w?mG^=JR`Lz?Sh6E4^} zp9xu2%cngjZ*&_~~5fw~L zCpYctJ>@T~l88NZUn$ZB6H^0IFKq4wYJX%x9Oh}r5qj0YI4$g>zyA&VV7hDR#-=`;3ODquvqQqaOgP`uz%j&dmFe!C7EFu5AEP?n;sCWB9HU* z{xBB|B}V!o$eM0E`X+KB*4-Ov0>S||iowElG4Lb?F5rn59>IG94Tqir7Olx>v{3hO z4bQfJ!{!+LiIZWLY!S6EWg5)Mz-YO^1zMUA+opV4*QszCzr1{TB1V@NC*u5MG!iF2 zy?;797tgOx4sTAbh0zToi~+YSw#9?ngAd<-AGXY5UksBcPSze%f3I&-6jLnhcn7y{ zAKiYq{qXpQ+jk#sAKjKrz~4SFw}@e~@L!UK@R`=%Kl2Orw{)lYw|k%LJ)N*YIDjaI{jKx4z$JRq zr*9)|cPG=d+-_(4cDQILEoB(r4vY3s=Y@ck(8;4O-`@XskUi7G zFHYG3-P`lVy!#>f$ECwX?0xyxUVnlt{mb~>=by?kdG_w@mtTD{0}-|Ofpajb)+o zCoXgxif?HLui77fo-N$UkO1xzajfcvGU5Vr#o?L*(I5G-U#ss2WIY+k#-W=~EjTa2 z7If$qQq16(!z-uNzy}N{a9j+s!?KAPp40W%)2$+L-Dd6Cw~dwc;UN~nBFb^dT=`#e;&A1?{3$$y|UD6uicCr@>V_7 ztypYsP&}jyRIw-a_QW2F@>Lic zUxJu4ujO(x>#$*b9_l3Hq%U zx!vp4@Y}CK+k3cO<$sR?i939e$nGJtqrifH=e)gg>IyCvyti(AWETr*>g>4v>iXpB z`ts;xG`if)AS*89Tlz^9Vp?v>cb3sZxB>Izq0ECLKq>~G-2~G+R>)M(etq1YHsh+V@0a=4@ zj!#}5S!38r8FqR=PN1XrB6tuBuyeVAPE%bUhECS?Gk;m#;qDpG7(SA2W(R#4q&{!# zL^fri3^|gE(Hx%AWnCXZd(67niv&253+3dYQ*x`FP~@c6B>#O$-cx;18B(;FQQ_Rg zmDQ%DY)H3`%b{3rBzlYrS=XoJdq~#xb32>C_$z|WcFVKM8bmOJv(B8gYC%yY>lq9P z%esy*Jb!nOSxU*H1JD(i5TSw_8;3nZUKtH-z6^M+JPAUb>y;X{vK`K}y1tMz`Li}O z=rMe_SXh29nKSGLCg>4<8WPQl6(8r&vJ3q zOGXWy*VPbsxi+f42;IJFFug~Wb^IBxoQ6%lH-AblEq}jZXRb)L;k9%c!q&seuO+4# z-u_y#9T4gyH2^3DMsSRWh=S+1UvF+in--dS1qPC=>l-B(7wqQ=F?&r8i~Nyoa2021 zmfcwQzN0pZY4KXkVV@Fp(A*gI?2X)z;sG-70OU}b0h~b5{QVg?jMKN`FJ;rv4rp54YRrYEIpiV~CMwM~!!^`2VdvpY zT}!(qMUJ7;DVqk*3uP#%J zBZQBfTA!J-#llWBI!iF#M$hd`S7$S0ox<)%jo9_E#9_464kb_uRdK2tb-4^Sl|sqW zM$y#}Wq7XIGwPaMkI1++n&ve{*+&{ekMXtpbD?QQ8gz(k8lC_Y#4OK&SBI~W9)DMx z7jm(%^mA#hHVt-LVu8cl6vWEu`AiPaJBA-yEDjFG!c<^H275x1wuaB;WLD~G4ioSx z%DEZX?@=@~h23`OIngbw+r;w*r}`P#g0K?GUKI~VnCZ{Y1qW`<;am~6!23;j@W~H- zSdL}v%+%^0g*XFa?>M;wPnBbuvRhLbxI#3CzCRO*^QFX5! zMaSQ8deaN4Ixa@Vlk*s!A6Fg>i(e=TG?6Nfi( zmm&LHs*ZR-FX|zLFQL4BV?!|H>yH{`idpVX*xsXnj zT@FWXq}uq3Bh`l2qtJ>fAE`FI35Dq`IF#N1ABI~WsW!B{qoME$m0aY|E3aO@ehz{E z!y4Zk53HF2H!gt@4=Q2XSWpG&{f1Ai8|m*bDIkV{JK0K_Q|-_Z{OGv$AdS&C|;7ajCIx#m{}bK%S!*~LU+N|~_5@isx$!l=z9 zm~bzrUZ#PzlP;lGN_R? ze+G@fRM}zE&>nT_>>`mP&RR530Lm9*Fx59`4o0Lwg}@z(_3Btl zID!pfLJ>KV-oQ4ET>5}V-8hBIL&ElfvcAy1wQhj&gmk@9K#d_yBzdz1-&&gb(6w}X zu;D4qz#}N@g$#H(hL(RhPD!6-Fd0I&(M2rrT(vkXLV0awMA3yPuN^KEMwKI@)-HF} zJnELLuCr3*yTq-4OTU3#6>1XX1KQGU9zVKi1r#@~r`q(Ls6dGVcxtQaQ|`smdUXSr zG8JvvM-7lMA7Z?LQ^E_aoOIQE6O!mWISq#|MOEpMk0TS#c>X8jJIy*uFMRb8@9aM+*qK`;C?#Wcv@&jt!qSOmm4hFqed?$79u==+}M6R zQiJF<{yQ_kMG16b)B>IFOnVA*Y&EWH5hFs2LN}Ww=4)r#SLV*xwGkB^y3B%FL~BI_ z^aMoMa6(g=Ln40;xqLuWI1<+oe8=51?~fg^itxGj+GC8BRg=CKTnB!o|R%;0^@x@0jVw2)sH9ctwQw z=NVN}5@4ZRKHU-k7!YR%g2=NjKyV7i;1*uZg~GWOauI)i=3) z?O|QNAma^#@j}A2MUEqE*LZerq#9AR$Fh~8YEQKZMX&AJ2f(#mhw7@91BsH)fbFT> zUMuK5aS7DL@ldgAfWw0GDyr5shXZyY!RStmLS1V|WF_KQ;W+7kBot2>uGJbg_WPwq zO9i~JbxnUd)e**y#Jde*wB2zg3IYY*YAE8mt!s`Ib~`G-m_QNa#!h9;=`U_B&Vk~D zmpD5nDD* zWAuMOeVF#eH~pM{>Q(cne&T=YCH}X5;-5d=#-IB+$&_iYDuN99$FP3481^f@;SBvw zFs%RX4Eyu;OC*l-Cwp^M7P{*7EEi6n%_%lt-kTz{tadiAz2HX71891){Yu}f=E|u` zGyTt#q_?<6s{O<=MM@MMtr>^o^22cNoo|1vZCcHnz(}tzPyNNLc}A|`)W zHI3onWnRcq-sJVW!>twRjCnFRpCh53z>5vBYc7>G#YprT&JvY85MtXVjfyUY`oBV9Fv`$VVXD==2)*V-469%{C_BC z!xZu9ik7W`?<9gc-`WL}vJ?zNX4m3eBD%C|FDL&HRo7no3J+R{HQ$KTSOxgGu`j#D zL^)B*O^ciU-ejv)L;-QTUaQCu<*L-An}L$75jeLqQ7ild=jvTDG3c-jX}f<|ubd@Z z?txjvfZlyIgBT4d!f)ovoRF(i2A;wC>=t3gX^CXvXdqe22xI9CVg6kRr+ZG0<5DNQ zBJ%bwRZ#xJF8zfz0f^UnX*ojX)n2MKF)6ouLK0)t1~^bLFnHaC zax+!%t|^-%a++7_xnAJXZo7J~+H=^xd#To3d8?~C5}TnqS`wc?N@#!GZ30bxa<6@h zzSaMJb`>7XF&i{8o$9J<+Ks4n3`W-G76hEI47_CBmt^u^aA+h^7a3AJJR5e2z*vj4 z>yh+P$a_Sddp(o=0d|~r1s1;u;0w7tGc}a|tlJtiYT@PU=O^zwy@aEf_%fg-TE)B{ z3=Cx)DW_qdt=H_$SuTG(7%eLF>hN`t{E>mn8)|#yl{pkdYwl0bKcOI}_Q;2jGNdYM?a7Dp_O)KE+1w7^m+bC*jStMh(R)W>GOVYq!2yrm z(_#Y-S5UR>vq5W1{KeYtVsqA(c61wR8t zA3A5(0-+PK4mjKdoLrMI5pp2#%`s&@2Tuqv1TyT7VUg{G3|F?<%+O&c*Vn3QC6SB$ z@8snA#%WHe`Fa?(A)}smzM(iy13kREh$%-v-1@Z-v!-=9Oc;?1>X=Lxj#RA)kqX=R zVH*r2dV!Q(*RFqnTQ{6LNi7yE2MG)5g8YL-TEYw7PY=&hAYO&^Iumkf+^GesB!F<+ zdlw5sK0cNY=^)HuU+L8n+fN4GIK2R5M>9zlj&mPL_@Jobt435ZB=$C=2wUpL4!E_P zG~AK`RLj{pc}NW}xP3(xGVcC#yE<`V>cBGPq9_eYeUh`DnW?>!MuGjcv<91HNVqH$3>ccq)Ic?~ znFWrUGIdzQLeUhsG$G*6{H5VVfvMrIm$V=_muCq!P7WejgMOr$lXec@k~mL&V(O7{ zE9D5)z!fgUgKEUi)wC6AB^%yD4&AKd$p@R4@sfXX@M(|)5?g9q*}(u5{V)p7SRw&% zJ|Oiq9!vZaqFUY|vqivvKfAh6-jg(Nzf&9B^9Pw+wV|7N_?Qz@76BGhSt}B1q!3SB zz((NP6AU~&2trF8g~s~5fx#;Nh8}l7bUjI)UGZ}SgTv(LHC`zI+M_iH0HPvpp~LD; zO*DT;OukmK-cXfiQ+m8q(kb8a#Ss*q{X9&NGYB}63bYba+_d8-$^7*Oirgfo&jok( z0zY6r6E4I@GC+(qB1AV*2!KX|Uhy0#7# z7Gz7v?eJk;M^OWILwq5Z5K*tx2^l?gl{$Yd-l5+sWMkap8bSqBES0|ojlMPvWmYX^ zcq5xT2J&|$9EMYrgmpul7(-dVDGSU8InrK?@7Q`ELcOLIt~vuQL$nK7bmajb%mVC- z5N*h_nG0xZ&iQsH#rYLHdJw){WTGbsu_HJ}^!0Gi7O_sJ)VZ~Hqz1sVR!lq9kh6ac zA}Jw-eRh0ALe9h{17OtHb{n$IFPkaCNf>!#8NUdM_z5iJ(!C}L5v5oXwD%FT>xwg! z<)pLYnDx2SbqtfBMCAR2{3LQpg>cs#f!I-F#@={^3`5K+7R-FIkTEg9W~x0Tmzad> zA=We}W<^_1;6OGwbcd}SHq8s&GP{2*h@EobB#2FKeb_WxRUu!JM@IygOC=Jv)t1o< zS{mscNr3`Iqrd|yL}wEK*hAMU;Ev>Kt(SOmbGY51AcPnsBT2xP3iaW15jumE6ifcG z#0UV5QaB-5a2vS7up7@ha`DFO)|qOVxeCFuyr2l|W|rkX5hKC9%jt#mG@yS+4dhIC zo(>x*(gK$Y71+g6ws0Cv(y@_^$d&OFRy9NlC~r6qFXa6;Zvh$T7LQNaus;$M%(+9o zh~MWJ?rmoZRTh>(D5_m}yw<)O3Tz<%`O%^Gs`amMl2YCt!{Tg13agsh+8p zx#c4V$xTqP(M6PWrf8>{ zG--&tM5{7rI5&FLaycOD|#>>Er5{i`21)`GhBaSYa7IOZ9pSX zwYWx(I0*ru8bXrlgckx7R>H6w159zI0{wXeU+qxyPLSjCqa3-AEpcb)dxUl1?EL^= zPGtj9Qsj<9#btT%2Yv@i-EU^fu?29pH!k%K_`BXH=cG0f z*$7d_hr_2J+zTk6ZDn(Oenk5&kyta;;#f+2`>H3I+ zOl0+&3u=F`qbz@L0lws4E`>Pu-j}L9t2qJtHseurcSc3}s2phz4rF#H8`Cco$WcDy;PJ>lnQ&=5e-V4%d2Zoqw-FKRKjz7409 zn750DkfRr`j=?Pkr{P?!RO7|GTj&~hapVD3=mnJ1J~4QlNH;}fkc)28wZVh+gSDw7 zc{&A`gAso|ZKe%wr^2&FfSG0eek5?>p+#=Wc8brHAoyG^)T^^0$2C~gA?CucDcv3} zCO}Hh^%SobdDI%04uL1H4P7o?P7{6(tNO|XWG#F(vZ+MMQ`&>x8ni^Piw+VUq~9sD zKb$n`#y*3T<6I$5lBC*)5%iFtdI9#wr9o=fT4R3~FzUpS7K$FdDXo3P=^4F-!bQs`SVbUp5V}XN>C*%6h66+8-;r78(j0Xb)6(C3Qo)hxW`%r8-aEce1&$ zLVFHDKBNdA!e&xVIy9SJl!&82uTni>v1*U&%qxgjL&qnmGiiU?NI$3RMS79bMz(y} ztUZ6@yu_EF2-Edp%@3NR^~~akb-u9H{sp;I655{yB&Set1(40dS$C>uom2U>&Y1Um zX@+0xZ)!tV_86bPX;WWLh4#cJruWaEi7vYJ&-6tur0HZs92M;egN5>UaT`DAO@Gc6 zv5{@?kzQ(ikCz>NmVhH^&yza!n4>tJG&p~x-~ z9*AbblEck}iOul5hC~4pS-7p45T~x01exY$a^@4(&`hp$MaYIC~< zPAcjy0LAE}8mK?Cz*DHm7Nsq>+hK~onGn~YnT)K%r^e&iCZ>gI@rZSXBxWr)^dQZa zV?~z={dRKlbCPxRq9{T6i#QxDDG!lI&wE%ew-3p$mQdegD-WM)Y)9U|DYbkC%%W(J z@wZ0Fl?r=Kv`l*BaLGNu--CbE(qrwb21XK`7mc2h!4Deq-W>W5RzX6Owtoo3PV_ z+L{E6Ri= z#m}^+%p?{G`GIs`N*_*!^Uca+^M`Vfup6?19w11PGXyjqX_OKb@@TQJa3F&5!mK}f zR7*~PWq zPG^2}2~Utff-kH!IAqDxkwA>)8y40<{SBImgK@Ge5;TvC!miYr0r8KlXC`b298Q99 zoEA1fjs)W^90{wqKUQ`XwbCu*8;}#U8lFUoQowTDg2zN!)**f>HQ471T*bV`F{y;X zA%Y*4Xz7172Gk?%vWO_(J`1)-M2IIj_CeeaGXUc_?k1Bh;w=;m*ikQ*Dhb^2h>;-E zjxdY9AQ3eD;2Z@QEcgbO_J~Ae2A)8!SqjY%2ieet6Y&g;TE`>QsQWe=NaL%#!C2jc zU0#TPn3&s>1#-3-eK}=bk_WeeK{xgoDiG}aCs}{D;%H`T_Zs8GAPQ_J{{RY0=Fp!7 zGcnAxwI;@2k^$NrziOlrIa)}#_1l4Y42W^!YLBH_YGKVWc{)65baf}JfgMPewYP@a z1yds?CIE)<1QwY33#TZ89OuBog*7jZs321}+M3)pbWq9uZEPW2cg5@SVfCC0Y(3?$ zCRl%hiKmoE5ZZDS`Un=yOSKNO(wa{W(NdZ4(K5f@E|obxKf1y-Il>Sr!jlfe!zD-l z!**>qQLo|n9OmGytCeH>USNxotW*DM1Za|kvSiX?3EPx{emx#O-UU*anMsV46M!~* zgn~68)kJa; z1*g2}eq`Af{Y+1Ys@O137`j&-(qM0%a@Dl_zEe zN<D5< z(xmS9WXblD4r_QB7RwL~7+XII23UfS(Sa0=CYWM!Kwx$@6)~Eamw3)+1}1@)Nk)6g zCYHi67-C@!h1iaBCZycJ<~9_?$~ZK}mQF3%OfsPs{U`+UdER)jER9JHzDk({I(Lve zkxlRt>uAz*li9WfyCrTTCbD#PsvCc`jn5PbytoPgqr>F7O?ls!+>OwLOGf}0PEkg$ z|807vF$H@8jTgEsax?%27WA_7bC4S%23{Er`<2Ts-1%->(Rtq~x1oWfG>XPS%aCH1 zaIzK-R(yge0yvCiJXlBQb*M~dE@-a^=yM4(hBGsSpUa7A7#J`c+^!4!OzeMJIBDvk zbdH0;FZ`V0#mI~(M1iGYpVcmDsIo?8jFWI=FeS#1xHKGH0tDfK{`BJ{+z*HxL|=+% z*Q%OtpOGaXlu442GBU8I#M2+YRFJI*b46kI43S`Wv#>nuL*0iB+1Y?;sFe3G$k_3c z+0ocx)1b#Bt6h`}XJW7^oT`5dVBR2bp*q0Qh8ZCi7R(42m6rohfD0?Y1@zb6oYMLi z0qG6G=KhJc`nGRB)r&2AxW#)F(wM2uEo-<%eqLHTTS}Y*t|&&s1v>+GeUPoMu{~*5 zDrCZ!z(F1H?q03MX9`p2I4V?eK15+4Xy@yfLmY|&@!hhs%T+}i&>??Df*ddd&GBLm z?CJ~*%#dYh&W-OM3L=PBV-e9pl@dzB}vRGUd!oq-h)4*qX8do{U%Uyrq%e(T&1564yVlzsx{j z-$8Vq0sYTGpMev&wOxN5;uL1iLokGi^0L%6r1z1yg56&P(jWD2k zlVjjmH{)J;f`C<_NV<-weBNyB?EV5E-_FDXEc%P6K1FfON7FfGatGP#YQBVTaz ztV!JbKZFCTc{r~?GzU#pvbpMPqe>xR7+B-+%T^mo*o_rA8V`TPeiu>=A#XqeQ0%B{ zsdz+60pp7k0-u=7WJJ=rGP8D0NyAOWF4ZeTmYtCCm08o(wzJUxCA5{OZ;l5gD8Bu6 zoxycfP%(lttp8z+dLd$HK)WO`nD#O9-*c!0|A+9BPwz8>qZbAQ0U;(n0*T?>8!)8& zyWKz^@eXaQ$TWWw%vvFQl~GW}Gyx3E00du4hkS(?iKmjAuaAY7n{Ni%kREc^gwJ}| zXBYHKWRxdsPJV7%!NJIVWA8)68|Gjr-UYF!erNjT*M;xL=`bDw<2ENe*#!v?+~Hj{ zbgwmN0mefJWsk<@xSZ-KRryd&DRdq{$r?46EAKsav=o0tY&h?QybqPYGyub1+8`~$ z(O%@5aZ*m<$Qv?BGrTq79ARfGBVjM{%G8Iif`*$wjCa+*ydel-tw=&3$OQ~KWa?MP zQBMy3saDG68j4t!jOt}#;TMvaVmMEQtQR~)j)q9CcT`P8y4E>Vjutls+Y8$W3xl}V55np!GRvO!Dv$1NV=-`VE3~#6AHGS zY@&n{n-3j!1ZK2*#`RIIu&<9Ov~0qY&#@4RcH0r{DeG)CvQ&|p~@d@sw;BfFD#iuPkZAC-TT#7Dy=eQ{zQt7+iP7r+1+wsRyG zue`cBZkuXGda25+@w&B|^@u=>pM`Y1NE!4xen z6=~4j&(Q*Trunkf$`0E{T)MP$lp$fM<4uqu>K${7r8>}dLrCR42>fXeBUYp>#GxE) z;lO{c&C2b>R3yk$c1=)v;4Imm^RPL-1-+2VXN@xTm2@Yw4s`_OQho+paUZ!1=npdeKiPL!;J zRc^Ih*+5=1RZ<81Jp!1!f*48ad+24=>Y19u3Mj>B(@Dx&3?fa+un>lwd10OY*&2WB zL`@^_&m83S zjPkUc2*h{lvCy&H5OnMF6ZEu^PF=|Ra;fA5x^a&cG2`NtHprhwgtJg|kR{A}&Ty<9 zC+}_o;tA{BlX$TB7{e~@Eh3l~+?cm+XldlW9Fk@YW0ziW7MLgp$v64Up zY_+jVcMuh2cv2GVg9HB|0(qrV>?-)!*lr7!+>xbFB;+Vv&4r|ma^)o(GVrVqx`PZj z9G!nn1xTTANHDXa;mvu-k4r}8 ztRjhKz)lHs3DKpJcZ!gQzKqmjto5M#MtL<&tziVn3G0MrW=v`aMim2NBZDBQ43 zpx_=2lPp3Clrw;y%YlF2g`As3fGJMCOGw-*o$tZ$JL#k4Jk$|zH0j%gJaj^AjS@RV zL1&;YkgK4%foM23UKuzDsWkMlJnNbs2HSNZ8dXn26kEZtHGC;7Y$a*YA$pA~w@?KB z0dxb5X{swIsl^1=T%}wPR!u%yw(9rF@zoY}76l4b*BoV4S6_dqx*|-j`@$KYB5as^ z*bpbbqAetFUn7E2M30%Mix7~^=uwC#nmokMwsF>wat`s@Trl1IW)LaK6j`oSrQmpk zt{-_NY=4bV`?UhA`f{Dcd5d}}tzS(}y*Y~{TBz!^bae1<4_9L=+@Mog4wG#Fa+*~_ zZ=5tfS)HL2GP!>dwC=YmhM$~9olW79C5mPe;{HaOR@Ir#dLvhgW^N>YGgrc^L=m&^ zAKI9PO~rCSf)4f!WvzKN#I(V-9Kpn4-q~IvueO#-Ec;@JeZ_=xt6Sx^-+|$A*~Z*E zKTAw3Csc$*j&~lLv=OB&@UfS6nFx(r$*0C|_-4^U4!(av(9psf*JehNI{*h-49~DU z5u{Pw9ye|3QA_I#8t9aXM2^DA{f2bS{T$94S=SC>QX8j$HfkZCk>r&i0E@dt4?6u` zp(HG}fUrV1FnS8m^Q#dh!Dkt=1RH+{LIey?lhkZc7tG)cI)yyx1tEWz8jNygCG4eI z_nFuz9$$aM#P=Wpw5`sVD_Qe9v7$S@9;wvOMK344I(&T!e;AbbMmi_4QKJ>Mt%+c) zhpX9YXHey+o3xPh;ZZE>FRRbB$EilG#)ualK3)55X%bRwDT&RUAyd?ZByi|yLak6w zbPE=5tO#<{*shMJ`JkCa*HH3hRW+R_Ru3vUGX#GPRR*MLv@wB@Q_js57dA%-isPY^c~?H2U}NHPS}>kFkMfp>~!;tJ97 zybkf?YY=g$I#Y{1+5suMj4lHn?$HorY62meFQk&qKBEz&0~rA?@Efd&=3v}<0HJ^K z{hqOZF$@lqD#Y+6YYamGEXQoYT87@Y0-D({j~||lko2cSI}>DmA3p`fLt8ek=qV5_ z`%?rWn-qYoCItu|Z!Jq5xAs)ut6H@7+^&bm9gOwTKG51%%cXLnWfCROJt)=#V6%-7 z_@$5G;3zg=rh^`Z8YmA>^M1KlDpY^Abukcg7lc;Gx=m%pgg|2Tqv1v-*2go2Bz%}V z*HV}nQ5*)*B-#}gZo6W=r2f=cMLZbkL0bt%C=i2Nl6Do;w%ZkP8QN9QUTRlCFDVAN zR8%S&v;xUX($Q{LNl8*rIMkYzq8S|ODGHU4q!+#2OqnfRnNmw3g;kKZAlrW}QAPs) zc5^vzzfGRW=yOz|riPhG(XL2cnjcZMvt8|&6suf16a}H(Zi2W40+&<4wiMtzP;?qw z1`Bm`dPImoXV~*{Ks@`CJSLKyRg91s(HM!dyn|KlHJx{z(V)IWcqTc{2w;hf-Zu(a zqgaMVR=A3T&?p7TQ#_+8gLr??&H^+E*&%WUBN9}2i;I9{*6QKVkYfNSx9gv&2CnDG zRzYVPZCIPRGteeItmay=J)q&R^~8F+B|MR&>qd?yp*oK84nj^rJFgDUMy*oV!hn{u zQSAPJd36Xg*y-a! zjERwL7zVsrhDKj4dzA!T32G$dC_yRj9C|IoP7#n8H1Ql>DTcv6YX~#t5F@)dE-7uu zVd>3>Uamf`B_!d)Q}ch3!Lm|;p%MesP3ESol+)7y%xH;(W{85U3_(z{{a$g2#9IjYVjKua02S0=fH0}ICYH@wZkARXNSKi4_i$YI z+8XAG8(SY9O7?-nteH)-vxR~|6zjp5Gz$0om=K*8F`>jRBW!=b3fkF5W(vhpeI`(Z z_BcR&AmI@aw9Wg8De+^ZSI#dV_&+gcH28ykIl@2?<_M8@JNr{0NwH{T5)I-J8%kiD zi7^rxMg2C2Wpr3o%6sde$hjUun9s`KGMwc}IPJ_R*J>FmAk1_qcE=fG8=hB908*r^ zpYi{Y8szfUbQ*tw74_y6A{m4jkX-8ClLvzS8nE?b^E5<-*qb!n6iz4gN;g`X=;s*r z1A=E^(o7A$TPUnx79FmD#Z)$4iJ4on#Vb=QI7SC=9fm?+jBU$C0vmT=ZCBku4VA)n ziMLp42qUK(407f~$zZIMw&f6KYh(zqh34L;130=P29%;4_!)NEIqSIF|k8aK`U&e|@H`iw`pO0en>iXpB`ts;xG`hT|S9`}PaP&Qs z%~NskhYx@MdHY9k@IZ)na~fAK^?eH3)hK?zQ^oikqia;;`3_sfp} zes-``kW2Xs z100C0oeHPKci(*{9&&XLQ&y+``rv_x1)bXGs%fYWKKrcf<}DVRl^?z_)K6B!k)-REMU{`fuMe|;JX)6%sa3{=Gu!7`5{}1NtoZ@ zLg{mF4a3`azkeWNVaNb-R3EImbc~!Tm+JRHJXdX zWPIN|!g?>iX}Kqe?*wlLyiYvZ`{IkeCt~l9d-OGV4)C%T-_djyqKdAbpNc)6v0=Mj zNjPt6i=7DbpZ_Lmrp;4vuy+u52Z1el0NLKlQ2Litc<(@bOjW)MA%-CK5o68o{L_D{ z%bSzq@!9do%bT;)vy=JLddMAoNM}um92|(3&<%i~p>Fr!zTQEXQnXf7&~kkF>ik@U!|sWIIh3lAohQ3g zcS@X%#M_sbH}66|xRmg%BQF{)aPWV%-0ah692|&;*kIyIbnM~&;R7Mw(O$x%bMfl@ z=4|}t^7?pu^B-3yMGtDSU656lV?_=4lfei>gspWuCuZ2s)}(F&h|6>E#|S=Xy5HX3 zM9;Ko!vxx!Xd~Sw#Tq+FVQU*DO^jA^>B_LIT9pAsInb*yW38$pIBl#<4cC9F(hJ$d z^i=NU&y8@n#Y*NG=zOC z7t07(Nmn+%l5V5TZ10IUIDkbMJ%wP#BV?h$5+TE5nm2nZ>B8U-zSqmkm*eY`(aH7e zlVh4O#bl9n9p{4dRSZ^Ovw?pCh=5w<#Hlti%}(-~6LU4vw=oQAE6>@3gR~|7L*A+N zT*-ESrrUWp+1K{Kzi+;PMF4TIN=&{$g!i zotE+^dpPm&on&QmIIl3-kO8nX|7FuEm&%wtKxUJmF6V~D+YEPdGnRj|Ss$>F_v1>s z8Y8FMoIAgbCrdnfm8D^&kBvqtzu9Sa$L#L#tsfJsxSSXY(x>BCmw&*%DA(v6pP*#~&J$PlvKkRs4<*!=0s8h z8AQjGY~clV2*!D`1yiKeF~*5Z;yU9QWcY{KmNL)U;G23371CioXV*iJhX|k?LU9D_ zg3+-sO!&R64>~cPS~munGOQ0Q+5+Znj%}*ksdBvPyw%lexNp`f?N8w_j?on(e9~;h~h&h zWd63$g-+{M-B)UvR!Of4HshUYB;Uw6mL|TsZt z2}>9g^`43XcPk=!@=bd|rDy4^q2p;>EUu|jX%bDHU8MR7{5cZ!ISu4$jLlSf3HHsA z5+DYYBgJMwJ43PgQ9ON)IVmH@f^*xXBW!NFw7_&wl!^KBS+AoX=bWTloe?f=OkTCx z*e<;!d>VhioL_-Nu$zNiQ<0aj;35So^!dXkX9&emMO3*cWK%fxA8dmN{fD<^41uaN zBQvDHkqD@IQ;W-WZ5pLT zo;nL{x_nG8iabmQ<#veQnCi18pU?|<>+pGjM+z=xru(G)y@>QnX(0VlM5W{0q$zI- zirIgV)81k*j7{IywDbNnF|E#rYf0%NtkY3un7)kfV5?TO1GLjtjD%Fm_h*ewwODd1 zmnzA-kzMHYig`OM`eaR$mMtv%r8?3kMna_toHrs1na>1Y^}~%^rf&z5ugRMOF?(@f z$Ff@|;Zn9Zk5YP(Rk=##4SUJa9-0{)u!xFEP!eDu1_fB>S%>@1Vk?Xm?o#Gp zyR82emJkL?S)8g=o!3XQC|6`y7C2Eb^p;a?rRpx@Ov^TXW8xykj3sL1l&sTWgF%rp zsj73nI4BAf%BiVxBz#115AAoB%LSk|Ss(#T1xBIab+>MtY?ZI?Tp1a=rmZ;1zM} z$0hDxY>|+4PG$8%H<>;z_z_;4{3d^QI$?{E*_CRrnY!^yRq1I)!ehK7O#J)Y-S-V+ zuf?kK?;8&h{Z#$?W-ZC9X@+D1mc(mQ0=x~Twe8!wR;!X04Um!;_1$E6fcS1wj#W1a zw>^PfjAXiI>Td(St16}PLiAn2Q@8j!ENzre#U$VY!n!60g7 z{&4L)@9AX=TUY}CU;~d!1U3Qt2X&i{M=%?jVy+WW3JfWBE&=+Z6~V=Khqs@!T?cW) zT#HVl**d-Gqnjl&zjYmM$Wr@VpK$6-(PBroB4Zno10Oy!JmF>D14~Q^AyRG#d8SA~ zVt24d8xwjcCq>dGL9uZ@!UunB6GY2-n%KU%YT_anQE-t{l&y>xkaaN;5C#bubFb$r zA31AXxAXC&tL`#Rg}eT|W#Hx@71ixL<8$FoAtr8A*jV^Vp&yt6$~44EZ1T>0B6c4YV7QPSeI_sy`Enak^wkK?@P^|4y=T z*u5Sp_-TqREz;&!sIz~B2$j@Q##Dcs+{h%x{|8udKz!qeiimN4PwyeZeFXLYUNmwG zkt^124*_~#;vByZvG|>MLq6H^9Z&BF2ehSvHWwF&pw)_8o%>92)aPs>%2fvHyz7rY$ zT{vGHg%WW~JfFB2%S^osg_M(_>AIMXVe6HkT@{iI6Kj1doPw8nQ^6?>xhCYp8mwkM zJRgpJg6zYcdI+C=IJY6xGO-?Kcsm!Le9?6Um6Y`?vS)G`}WXp_;) zKpvyH*xjjhU>1LuAY)q+){0r^W>@s;mNnjWcsUk%yinLqhp9CJ9E)j_5uSV(Ul0bk zAA@8F_&KSto*5XN?7=7^dROQSDlgJ&(#Y#&nt-rx=b>c!e2k}*=*c$DQb>^e?c_fo zK0;%^zrUaI67Y%G-{0RB9C)|SjQvNC!gme=dyw%7a$|r0k}67Xvae0mbhYxS6r_AU zJ}zD+$|WWlpDK$eJtV25Nup??NY9UN#kxXIra!EJ8sd!DWqSAZD8{V-tnG@UlMFMUw zi0>#5zPu2*r1-9keE1;VzT+%mI-w~RT7+ZMV!E+dCV>0IrG9j9`{B0!{Er8Z#fJ|? zoq6(61@Y~Q84EbKDa1#iAYTlL&-CVxK2`AVfBXeWA3uEg_d)qAH5azf&VyJ`CA}IKmpe}d$XcEi2M40I@b+U{5f+*F)W@C*k~fQ>JnKJ!D)8WP_Cgep zz#=Uk5d{PD+T)WbEVrVc#gYTG7@Fb06osCOI0*Y;sc%*PEB!`AV2p*nhj$ku$cq<& zJkiP>u3)O6s<7wet`3C9iEGA$AgjJZ7(JwXT8e+Y z6myN$#jTwNCCGE`mOF2D%AJ4n<)6O#6}j_)Os}}Wsr_i7?;-kpu^Ihz{zP0lSv89I z1CJjF@`j-&9c*tu6)*Ljh4Jch?X@y@R(uPu_dgnC-M;I-eV{`F6P`Fg)r-#-yIPOh{Um+*h)@oh_yeYtOIyZCXokhxqIFh$ zy9%KnH*#)mNPecwKjcCiaoE+$iEk$%zAq6kYWm-mTJB3LAAI)U!3`w5H3YsP6|UTh zB+sJAxNT}N!KJ^dAuKI|NS|2Gbv2Kh7hKk;w%v$DSIr+l()UX{g6wzLt9*5+|tBEH5SSC0Vl-Q_WMG_7Y63qYzW^4`w5;&h+%~G zryZ2e_8&a>B7Amw`M_ub7fM#Gb(FugEEx>565qHQo~qhS?C1W2FL?SyCRJG$(zd{E zf3^Gr=r^Pz*}reb3+q%N8oqy$PLwO=*9F7F!8AN{#3R)DIGjDQ(b6l3gFjqsh&?YJ zTAKY2gCC$J86GdO6>$$av4;sjc+0J-kBJx=Bm2$9ej;=EC@jWflIRvql>FG z`YKS>Vum;2q+z1rm|`*hzXBmPH94mI8rKo97dLbvU^CBk*dD~!E zWmVyy0%}RYWlIn5!$Z{}0CQakk|_cR7z@cdM0l)V?gJENfB1jUa9x9T7qZ44O~2a1 zK#Q!2(ykHE;D{?fu2tnWcmw6f%7pNga?dcFGMN^UjTTt5^wYPH#{F#?k){j+>#!6g z8E_PFK1f3*!QF<~>e94YNQ1}*`)7P&ZcDRah6qByJA_;=o4%?uH|?sqUV+6=&pHO+ z>lkwypTbx8*IIu_*b{<|(PGkUC_wk`2-!;0s77NgFyJR!0e1S1VQ$UWLbk1=AI-m$ z@aWF+hl7tvZaBdIrL>qjzv8kQyC+SKZvLJ{IsOV%)u z>Q$@JuB!S9v)s$Lo5yV(w^*W@>jp(Ec!bs5iE4k|nLE}d6BU$ux+OiGs2Z|&2`MUp zAMRV#0Bs`?`0a@VOJl8aW4u)eE}fmkwGd&{7fz?q3>RUdvdUFDES$5@{XOks zNlt%?ksrQ`QJyYN)VP6oBF8&ukl6((SW*DH6VsC6F<#@9OkndOIMoh4Fgtcab`DF4 z++zdvfbnEA*1m$ccT8eXqvW)NIBW4Dt5Wz0Eql*UG&<-V_Tg`(6oPkCwa$6~x zwGyZ&zI7e2X~5at9)&__)I!-{+G%H-09!z$zr2TkTgSPaZD>QQtXZKRXg9>?xc!+F z_~>VR#}5=Mlp844Eg|cH<>&SkQG3 zk#GwjDp!5;wFo#VJ$8?+(>RP8Q9(aKRNX|0Dqhu!s&kOn#}l40;&WUANuVU9;A7G~ zK!QMjHfTpjJLmCfI>(=%ERWT)?G}RP4`Bw8yh_Tfoi8}CGsD22Cn z3bGYdRHw$in@|7+0jOav1_4NcgYKd>7^MdoAWFx(f1NXJea>2LL@hVt){fbC6JkUe z)N*5|3&@uOWT$JT?l=Tt286t*C!`KC4x4*_JwbDjoe_22l-T-qy8*+mRb^`+_Pi%h z$dO(FV1xzMs_vEz;Ul6}Q~XQ%>G&57kv>Iy?!W_U2>F3(t<_Z1kKtc5ICBc$NWqsd zazNFehz;7Tm>L=b`>z%4SCk1pv_+N>*q%Rpk5Q}lo$Am^Mr#p{Xf48bYBS~uqkP4G zR8gRfB8e2AR1cYKusddKPx(XCTF#7x9*7s1E-d6IYQ2EeyfvaGe=K7n>NpG!W`Vwq zPwMyf*VCSnY2;2QD#S^pW3(;noS>#Vx?e(w)J{^s*)@d&E{b#x)}q#{9b;-mZL#=G zD{8v{UQyfDD8xDtCbeCgnUk1NAad(}Zn5N%%`*r#UeSH1vIrF%yM!k>CfVw3Nc18| zdFSy1oKr2v$F=BEsa8$Rzh2Pv#m^Yu z1d`lzt^*QeBT0#(v9lRIH7P4^_i+l9uyBFO*Qf#2o01{NX(RnSkQEdL8$*zgQecuy zEr@4ofkIwPt;0X|MVgoRrTgfu?@K5+oo2|hkgXt1Xa0qHlNV5I!p&EI3NQ$?4TbRT z&MxSOQ0qVciNkaZZMWDi#T52+68mtb40KflKS9~fREvKIF5s0AB&uwtTAZK&bZy1K z#!gU{9`qfyN0<|vjhI<6v#kw`FJgarF(b~KZv}6J^owsBH7)=BW$l%i07ofvm>>E{AJcWUDySBUE8O5(q!AI-mDyphTdo=fJ!&DH&O zKj&IGurxL#ZAd@RGGYhobL(3#AU8`to|NE)u34CI9Fa5}3HA?c$04~l! zMKRCbtYo8UVQ3S748GwSMEfz8F|Q)+$9lQ?6M%S*f!@g-%!M|s=Z`6PjY&-;V zDFQ!Z;K>wVRybBBMS0&2nsB0#_o5-b$kvyINTk3ICJ{7$Hd_3`a%7{X2pjy*<`je* zT#{XA)Jipie!Xb)#7Vay!6W+lntuO8zm;HGdb?q`%Y?D8J3%`ve!$#lblWycG)52x zh#$s6!NO?l#N*~bHvCH@P+yFS651gHUWh$p15r!6DSlKfz%e5sPyBw3ADaK+iKh7Y z!lBBI(sN9I8aF>ls5|^7FHip06tqAQl6Eww{H&#}vYY$Cg2MHrKeGfTb#= zuxcWu5#wa!)ZKZ}D-9m6BcqD#J*pB#KXQ4r=lP6%Y(6w0T zS-`o$`(J1iyRtp7+UNyZ(8S4wu7yVgtRQ|+lo#CsuF%a4mSXU)=%)#WW7q~BM>cqL z4Kf&i-C8n?#t8BD3xMABVnMeXxEB@p;V&GtE5)K~)x97LIih5~rMMSH8WGhlDX>y_ zbU;0fTnW;-+}@eU@Q#3*g{lQ9BnYF{_=k}{fdQi*c*HbT7&~4&-6~M+fgNpZxM#ph zGnQHT#zrpsR!5CxPN=cz8zQ*e2xFPOVc-LQS0Y~0b;b^83u80xVJvO2#>Vx%quIDR zj9tik{*cDvd(#yh1rs!XE-0T0{4l*nXPALMBN&+w#|&kuT#;zk(ePpgBbCN-)1P1`8_UiBNKVOED2Cvxw7NnsS~|;r zjHS)T*mRm2yB5aM{*a{FNq|yMS&mYeZh`*^{p{F!O|YmWV&Lmw|4P_OgD;FHZEoR7 z`y0ZMDz=rTqaQQPR=Tmcq@eBGR+{yqx2LbIv{O^$cWMevOY10N*Sbc4#lI0E#K~5z zDAju*#eiMhPNy{8S%+6x6xKC!^&w4vvGsW&pbERtiZx*DQoiq$fbuSWc+c@6h*!cz zFZvZPd=Wq$^dM3Xx#+q-JeZHT-LR8H2t)AKx*Ds^B2eqfE+}9tJQS*{HF?=ZfXyKR zw$imik(o5XVv(?}!JVUZ4eVU)=xx^uQZ>de9iO&qx%XWQ%#X;=D6va1hvA!liKVRW zd78?!2wv}7KOw-w4@4JwhEr~mXXur{D!?mZrOVh zj|KpN@yy98VDLLy44Hs6FqWUnIn{YJ#^E>s(G*TFHl93AbRVfd30RWB56`9Tb}O)@ z9MovVvTED8Qy!Kq5CJNRCpH9sOqQTS5}%}T9V1cIx{PD<-2RqJ<%sSCV!l*P+d4dm zHO!DPF?pBDEu^8*pKm-NM@uc1da39K-@g`1y|S%XHr;GSTO&dPCyI3cv$Tz_HX>@R zAkeZ6pm2%5v}-}yD^Yx7=@dyIl6gJobB6$ZT&F6{gW^=JSqxx%a8ufUm~Ir7IbN$) z>V~Qe#mD6hSdkMPohS@K!d94#L2+)!=z<;7EB1wv7bR=3)Xnmj5@@s=9soF zXr1TKIEn~Rn)if5@93l@jtt8E1C$aDn4x-OFTRd1TyO82#;WKmG_-= z5ON^%9^!qct2_L{V3v4)-`Q4f_Y`2}`a20Gp%+eq0qDS;W^0SkKN3!^1#oHl@%+mo zFZj9uSJ=z=u>%`K0+?Ijxj}$6>Jg&rG^c7C1gB9EOvFZ>a|%&H(6&$Mm`YAfvF5fr zNX9{yV`5be zsU$kU5?6TgHAoC$UODx?)41ATX{U_Fz|8Z{Bm_m)eUVOT8c|?rN2@rfE8w7PMIbx^ zV-T7d^U#uU0&?-86RK*-eCPFc8=1S+U zsv*5);aCbCrnO*Ra-yH}i0E{5AarynbaY?nILw7PdHSb79RplIOLL48Zw_Xi6v0Fm z72gTrs*939kah^|ia5jzEn}SQX=5|jC^n$~&GYP0)q113!C3_M zq8dw|(9;mV1AGqgfj)bD!PE>RAi5SkC8cB#RIjHMa2R^p)Oh6)S_R=uR^dd(q{e15 zLluw@-GD)Tizo))POG?9xRBEkCQLaItpZ)EH02|In^pnd-hs`Bno2IXN`wa66)3j0 zZ;+6RGdTLUeVHX$65OGASn4Tc?-tOZThI=nopQEq zNLiL_Em*mX=3|=XmoE*?Y(jrZ@xzOKVCFVCnV!gl@cT3T;xLT^Lew*gezUHh(tt|s zr)UI!Dq|lnCCGvGrj+o7T4~UJJ zg9jehI+Juw0fMdz>wj0_1|85iO%nrm-VOkNn*wRYLoMdIYIBAf(;BqE;KwxvRWx)D>Euhj)*UUHvVo-q_QJBCenh6AGL#-R|AY3q& zN&Aep(a8uA5J?DZbftl%UHIU#(zlr|2N1G>+Qm6sRFcgSM$r}u2m~f?gEMq)937!& zt`I<(g<3wm4;%FrnM)0~-Dc|oK8S5P3$JXFc`mTlY}OJ;RC9+Sgeu#^6mgh;XWiMT zAb1b7O5>~<00GDte5*42T4?u9og?79cu*3 z2q^Q)6waB3T%Wn{MU(SIc1!+$=HfvIlP1?Vt~ELKVM?S{AkD8U5L6=3hIll{0yn7u zGX|VYA<~eFQG6@Wl=Nt}nQ@hhhR>2VO^sy|91Fll&~ljs1`)$rz~E6~XoYO6ByZ2` zi!X*yQ^(gJm*C?@y=WSh&?n%tki!;QOW<%Hx~@o^GuRD)<-mp0dZ3Z^`5QT8OW7xja1*Rw^8+WNmjyySL>_6y750jd=(F z#8wFmb5@pwecLgAz!H1;n$jc$X!&8`@_1sqdQRYpKf@W@8})j`b@W7#wbRNTLz-1% z(ikhT*;+)u_unJ9GLm1 zzcOeqB)8As+fhpNWH89$KCY9bj_5|Kg-FNX*no(}HAd4q%snR4!2nZ}sb+8!2NO*W zk`=HYq`3KikfaIX zuwbaXaUq%0c0KpE!;|ylmx1N9_X<%~p28T$yV`tz9DNqZE$MM!b+F%h))JHjGAI&x z9XzP6?mxKJGfKvuUzkp0RE2>q(wVH*D)5ivcWau5dYxjo>Tp=EsVyZv1IolY8RImQ z!5UmEFvl!xFsQ)|x(NZ<*@a|bT`3nOo&sxnwG5a=I{JBiwif4 zOejw;5g068c!)D|j=ELR1fI%6-@}E9WR({XR~^KOn;k7MjjsW34O~pXDOhIP5+c6} zN|0z5=y`c;jnE0IwM+xnJ#eLRH{>Eo9(=if4Z1#c*rLNab?`mbs@L`MtJv}Bl-Kv^ zl(`POO?*wn+>C*3pI3!4?)(+Nx z*4cu*&M+W9^{8?>%fJ`v>Niz^#*?S)RVtpQpw#y|yM=mv4OSvZ@N>y* zcG`MpF$)nohIGE;fxufTw)l1i=vM!Bplp<*FoxHuuxLQaxk)XbAqz?3d()A64 zN!@%GUb&GdtFcqvCl^iwpInq~!^4QoiX>p7H^1&{KAn1R__cLj_wwqy=H=IQQDz6W z*RJUcAG}@|*LVJ&(TUJ4h70eNVeFkx#>^jY4ppihr{hGq4j@h$Tj+5+c*j}j&OGC+ zJ%Nm~cAk$b8Bb;Hx3>j#>ed2(+ZJ{(uTB=`)rTgOp8*3p$y-pHxPf>{GsF!Zc7C$; zW@jhcMr#%3L6T-c5$VpXC4QSWsV0kLXTD7s(k-Kfd4)6}zmyE}3If&^TgvIOgz%Yy z^$T{6VQXG~0?V>+i@nO@Ad>AhP33iw(LEN*l$k@G74L z-hmpCoLx4c?lpM25V(v;6`yQxLXnf^}4i8 zcP)SL3wRwf3-qV9!WQJDT4E>4vXYMCZ9Rh95BNX1Tr%d%Z}E8m?@`0(@a3pRn8_3DylJ%24l#eu=1N&INDJ&tDj(d* z*QC%HB`#er=Zs{-$iS)Vu|3UaM87}0rpgipg606MO#bxf!0So{X{#yN`jOt5ZIRex zJ(j0Y+1pT!w%{Z%ciqiP@Op?Xw_%zR!KBFUu5^VRKmp=s4Vkn7+95 z?pL{-v`B|Te=e>0bcXhZUpv0ny^2X^U*F>GRb}1RyDzVKT^GsQ>pC&6FTQ^^?MAsS z_io;NJ5xE>x@&jEvcu487+yEJ1+lQrVBV@^((L4_Kx}NN!kYjmdHK6X2X7HM{ zA@I8B)oH`i%b=LcTnBD92hTxW_@l!>I<;}Iwl)^z)y9Cl%nSq%n?Yv?c0IP`W#agK zxE5(MXA{RSfJ2X#h0?mnJ2f?+ZuSo7)z!k*hP+Law!9Xb=)hi=SeRcnqKceB3Uhaa zmF@D~LE8I&c#BU}@LzU(e5!(X&fb8*w5Z%+0@x1%1i%e!1oJPrpkcQGs&JV~HJSSD z~)Yj(A4TN>2M9#{uk z5Kst1a3A{wP8^xgv1t2kVS9j18(tTrZP05%c&)pCJ%rcP+MTBj`LeC9hqTABtx3a* z@d_iNHULV{{H2(`n!kQ-u8T`>{B zh!5BZXyKg*-u(u59e0rKUUb-%kk)V?4d&ld+jD^5K<&Z7f758g`pcdN^_#{e;WtbZ zfg0O?)w_Y@D2J@{@QmOHvZ1`E8K{A2!PP{%eWKpLoYtM2PF?WC4G!EWbD%>X)Sb~Buv*PXK3sEb1FaQ1yyF0YHc;*df-QB$md#^4wpa)tH zi-#8%%;9(}#NoOfU;}Y%eYz-C4{9-<7Gw~H*4ddnldy}zbAbrQW?fyxnT6sy-tIep zKD3jChkLPMEK+0L?Jj1{!`!_+Hy>OrfNwk#hl{Z8jg;79TV#8xHkZ3@%ElA7v#y6* z8arUVNLi47^4|sv+~V$s3=aKESGUCL$7`D^pHI84fX}23$S27)r=OKQB-tQaw{_>) z?vD;+_XP_u3zBuZWyS)`lHi=Q9JDTfLgSekf5WNc>B@I+caT=HyXfI*2xK_ACyZ2g zD?Y!~Hq)xTAo{8E)8XsO;N8$tZ`GUGGH=K`0pJyn=3|ZLA^Vh=;A(<@~`@eYw;-4KyT{gI7B+!ErZSbAv@QDh4t$rM7 zH2xqk{x(~T;k``OVc+=no`{|ix`d9hf6&;&f7a&eeoawFgVAlTfP>L(r_2QjeM^A{ zgH}H#qzD?06$m#WCPr3)K$K~YU)7bfLy_n~yIG?sJ_%-0#I?KGm>Rc4n1dg8m{Mv* zgkHOYPP(>b5Y5s73SptHz1o_8qkdt0^#p>hnDdv&zN%2=wZ02UIIDv@?q;Eg-8ocf89(mi|bd-tTTn?tU_shX*TEtyw@pG#H4dT;^v` z&2?9BL~{HD`YbeVf8uUl;QJN?rWUv_slXDo0E^7)5n|h!ZLFSKaYj z&6_(1`=*FnTFesV{-4oE-`?qoJ4{q+mmG0N^mgGj8ts_X4}+rZlFl*b`fU8lup|#J zH9iT}(0t+Aa(!^ywjD*I(J4_zNjDs^uHRC=QJLRr_m>C_o-jI+IdbZITx?uQxI4r;%QRJ zc@`&yAE85>dr^aJg>>2&iHZHPsersCPDFa>0H1I%uIFIcwUR}DSc)?#kvVw$=mCV# zQ&J~IRqoyBP~_?-gMrNV=ITn7kkChTxo{0A#`P4sgWES+6*eJ6NnVk*2FC0gfltL) zbn4tQ5;S+FbzLIsiK?ef1f@X(+Zt$_0T?aAzSE$r^2zR=IA>MNVX6x&JTMU<%TX)F ztdS0~?TZZJfHlj1sI)mn%|!2AC6X!#Me{+_O!nf5dajaZ2lpO4y#H`-gY>u#J=)`~ zDr-iMO8`frj%j(?e*z?TBiy%nSi3dVLNC`?)G(?!ww-(`y+mQ^kB3ZOGgCh~ez=Q3J zXi_9ZS0AZRgP#VKiB!2Cq+^)qj!2cIaaPVO0p{{YV2DC67z$=FCx)B}_;NCtkr0Xq z;`H$$Mr5+o6;xsX1Y7V(M8zU50CNkTM&GIi&038$7Zm1p|Z!82chB{aBz3c=<4Kc=nh%WDIEGs6`x$ z7z|H;un~d7k%(g@;zYzU*C4-PcCHx5U8p}8TPCSQfmKSzS4m1@8KGK3##iW1=x8Z& zBNKz5)0E^2m@we5j!9(`vQkRKsZ);;YTbY_6N)lOK?am$X!_L9iGkmQJ{VVUpds)a z&fh@K*+QX-W}1Vk+6JsSLTZDW1ak=%$2cW_VLc&~(pwE1)(o6zL#Jk=E|3_jVkoyAV-#Vnzm@=C-xR6o(gp)X1X7nLa27)xN3jfw(F7t%B=^?hq0RUJhI)I*R* zfLh0#6kuS3bv(IXHzA%A#a~hyVf9~B5}Qy?dLW>Wh4lLxBeW((Bo=-S%!(-BOWYfO zWT{x6N4XS`1xPROWHSOLV$xMn#iS~NK8M8T3RZ)Fv?h`5Dl5n{&>06sJ*rAVM+poR ziA)rgEgXWRbi@U8lQbwKtD0DdxLBZJiv=}nu^=Traj}?&P;0TE-ZtAuyL-eaX9e9b z*hl$W86&saB(#X3gbWjlO<+7ktd)R&Vv{<+fUQXdORekR0UV(A5^-HaJx1JQy5w(g z1hYv++|aDRmtdF!$!Z_!7(%Tk*36wHY;B~p0ihr?(gQb8xIocKnxuqF*2P#Pkw}1> z6s$yn6e-XL$_a=?JCRToK?)AOMY{mWQxM6R6CF=dEfR>*mX%19NK`O^;sE@AutY+& z0R15NANGBl$pnpv(sxgBjk(gyaslqwX zUPi>f7KsjMp-FU|K;n@n-8X3}u!)LfP78XnOcp|}_66j^CyK=X3ptUwkZOjxDl;4n z;LcCEF@eH?oYWJrjsl~pz!=a^00jo5mmnvR zeiNBPXUyP8Oj4Bv>HdMW99qjgYq@VN53J>(wYcby zEab7V9PC?*P5Hp4JZ7J)VKbkb5c%AM$mb^Sl0(c)fSK{18Sj}X*~}DdX38}~u`>Ju zK(YYoWYpLx)QBZe*g#4fSaXBX-v9%56E*@=32wyZyW}K)k1C0Eoh%b$1P`pG6q6#O zI}uDt8NyN_39{6morSu*$VxYiT053_geNbKYBvH4HXDI+mSR#)lcI)!WdsJ8XT_wf z2f}m3urKsyKNp@Cn9aGE1SL3?eJBrK*eypmI8~ zxB54K#sZ{e^hx;(gwt3ppu~a{S+v?Lpt)iyC8@N4pDsz6MJZ!;uwDuYWgfMJ=8YQV zVVf!t?x8yi-NToa;*{3z zT7o0eoFT4shM%f{X}hY!MqEK0kJ2Jt?Ta)NX&B)bN&eDSnuhFzDvL0ZDcy$67G-sR zTR_o;F2$YIC z#5yO3QdrdiQySTmg>xYkxP>TiZiy7P5p)$>5R;ze5tHBNt?5GB?STA^g9?lAW_@)*2p%$r@ zx%mPPSFjK%ja(yyhziQ9+AGbp_QGVRZ$ZHB5sO!@)TV>mUXa85YJW!&WwR zP@x2M08vn|pkQElCyW?b-JZ)XD6Jz~7S>&_EUanov%c8d*v^`O*q*A$K#MlC*+(hF ze5&Fp1)-S;TMWt8u#lv%EUf8&o(O6<04v4cg)susGQ_xOl&P-NmB`{4KP9qcKM+}R zK%YcL%>=eX`Z%W+S)y&rCzxPaqJiI16WBWgBdm%! zgMu{d71n}dP*`OmyE6Fp>^=GG#WZfYpDj47nthfD4U(Re~B$o+tYZZkMR4G=()alqd;^a15LOU6d|^jWL$EX#HN#sD^4eIVYp7xx+m6> zjwzpX+*Sql>2zx0ZDrE2t4%uQc1XvZaBkDfD^t!YX}DCdw28CJChuHaTXMGfk<+#x zIr7SN&jQ+L(sp0Z(qJM#^T|lD{T0UV(wj8O815=<#;n0 zlO<2FmY`@E3axRzr4UUXi!qg&9MV1a2#dwG%j#y z%~NpU8-sk|4h_e|1Iql`FeTZM(@PYGdFG|<;VI$KzA3x88%NSK;FQ~ok!DxC?V%XfX*DmQZ6J8cPX9B~Wi-%^Z40B#G6B8WPfE zQjjz}`Y8UA?vO~;wm9_Kj?&`r4DqmJgQ#li*s6$0`YnoKt!-4}$I(#@l)0GDhpiP< zqA(%=qTAsBt_IJ}C7;vTP@k zaDAdKV*_ris`vyk8zmchEQ~WaC$$XN}0s7@^86 z$;L!I3nW;F^kFMhpU`Uz4#*X?Fgm(_6jdXtCdZFfw`w+~L19c}Gb;^*%-~4qP(b!G z`qo^)U}yzZ9j(regcTZSf}ln^hSm=JQu?qptl+4ja!1EmK#Pu!3n=j*%nO+%ISC&C zH*_iB6`T)A^ra#?TR^u69fN{^zQ((f5;o(VP>nSiP{q-z{s1j-4L2z;gQco}fU`6v z+5kc*YN*n{&pyCup~qF2#|nBigq}j3hD_;0-#L+n=&2+Nl7aB-brKH%>4Fanmr>zO zTjNWSNH!GoVX!55BsAkbR zDF9wES+hVb%Qg3Yizr1m)1on zWOf=XwsGL{V!~m55qCX%@pNOmxo5G%USW_nFV-djbBHxAa|W`1E_>KOEVHp0FWp2` zPTgQ1fd7KO*2Upy)XkQO)aazylE&C4O?bA_!CTKD8rw9ksX66A_kP@Q`NI2 z8VqijTy=Yl1dvI8BaMv;Mu#c}lpLPVCVI9s6?T1VPZD~zq!ot@j)V1{+7r96o-KJd zhQ$oUx~Q?m&4r#L;G8Mb^qdx)InVpKO0R^T(+DzVE%e-M<$7L}RRjQ6ac(O!=f!r; zuMv9A6LOgu)m6(3I;EBwuNQ2h(966ISuctNfmI|)M+#Pdo2AA@MSrdei7mJeq0|Jw z1AGqg2@1fYgg%PDr2B;CVjV^VOC@{=ZD-8j2oPEt>o98IXj1-CE|70%oV676KVx-C zP>(|RPgt-N)X;K**2O1J$sqh6+<1VmC764sMWtdA_8zF3OlU}fQjrKhMW33#L1|1q z7yM*TUxc}TlDYb9O)2VvITi%>>!vOdv=0=F;BZ+(rwBFG2DSN0JXl#amB9*xyo&($;>v@46ULe>Af^mtb zB6Bu!z$PbsX#v(B3v~LxI#5*>B*={qS2ip|^?JJQRm@M9-m2CLfJ+Y;!u@b%48b^b zhO^mx+ER9NG~Ed6b}&EDE1kJCm!e*l_(}Q{W6`Yk1vNE3Q6*>OinCTV3h5?+x)Mgq zpwqB_1!h;cM1(o6fxIQo!YT^2BAp&gLp2M50LY;|0Zc^I*chbAlp#UPxK8WBKxO42 zcwpscd*kOGJ*->VWCJ2PFkq&_GmcK;xWkrHTL$y=VFF_G8LP|Gs7I;NjO$F-)LB^R zg6gPUK(+;>)x_FKZNog3Vg}78GR7|$%UMEymh7sWDzcUQMPwO!ugWtSbG~e{KbJtp zFd0H8a-c;`VPplx@1!?{m8TdLDy=3JR-hv1hHiJJ#$q;4wIE_AP~OdDm z2}B2+IiBDbHJ837g6{=hC&i*B;yUtmWOj>sBBh{jAPKi(?6e)T9q+LUiwrxF`b5eA zPiI%Kr$~E}0?pY<*5^R;jtzC81Y;7j>yYxP{ncq1Y8&rxtY;3w)@kRXm--WvjxK#VI&K zm0+RffCbu;2x3|Ru*!s@QB+A&8Z7aPT90vlF=nk`YcjE@all;Ad1D_Yp>vE$^?G##_0BugnitI`0= zfL-JRgi`Q8d{~T4L{NwHCH%C1yCjfPIxx&#_$ZLk4iF@H3Um-yfC%nqS#VS+zDl3vzCDTNW zS0wOm1x)h_#ez7qm2R>XiU)aLD`>$4Mg5Adq${u_B{E;VFk+WhQ0Y-+#t73@JXMGE zfe^7(LUGF^Y;7I;!ofXTvRIw1&XCI)B|>Sy$%(BL3W0`yu?%q5UhX;nVUU8ubEM7`ig>pN^UC7jzf;Mh5p)FfbHQgyj3M9 za*?r7v7uLgM*sV&qPRRISGulJnUew0BxJGvoV>29Voa%OpeHnfn7njd*+gNr@vKR5 zJyyDja8Ih(GB2tGHUKCb2O=;&#BI2O+UrzStFWmHya=wMWi5%OZxv6AauuhlT*XD6 ztmI0Tn$s01)Yv7sCcA!Dn+Dmg3lD644+TaGLbf<*HWss%8b6t2yPDE?0AeSyIO7ad(RmGftGKcWZV!YCGDa(~!W=Na_{;g&*#t)_0 z-Fg0OG}_ty*1e!32&wna4`Nh*ygeG--n;!>?=Gv)bV7i>P5x6r!m2s~qG;dwx)75( z+$zQ7-or=xkH1Zd$>s2^cniMt!-E@L=_JQVn2G-^v@ECM1RT;&(L;N`5@atfimU5? z1(h&f*~#mW6`0w?g_jvI*=ezJe(^>e?BCnJ*FQYi{bpe#=NE4R8*5!khb#{dJTV=_ zZcSMq9t2Km&oj~caNPgj;3K{`3+;Wp-TU6D1w=^?4}!lB|L5m7?@pl&k9Yr8?wAQ- z6J)tVMo`BS(fix*_;mPA3}2sK3{S*=>G9<;hSryj94;=8-(9-o{euOlU(KPy%E39m zc+(l->W^^;sr+H0fG_D{BMcIvH;!81<$VL1kdn{1)~vuLa!%jIg-gU^K$2^OxRT z(Ho6!4|?m1&K9+(R0NezWuG-cmBU7$@RO@A33n!@(%jA zP_R6z(I~mI=HXhdHyZu?JNwG-uk={dwl4J#4-XITU$@lr+J`>H5@r^~XFpK?8qy?g zqVrd8-@Lm#etp@BSiEK}au>heUsMJnG^iY-@|#xw+wi|n-n@MCZhK09Yog8U%64n# zL)af5_s{nGk3atQ@XN|~-uq(qWs}44CCiN+1{cGZ!;{N5?`YU=&rr*hRB!d6#@ls~ z$#*dN;Kb-rM-E0G9iZ*N?_9ji>$lM{yfKH&Tru7o)53VO>_Es3{PO*cFW=v|!98|) z{FBwd+T%^2hZ_JDqZcNBprB$I+r6-=Rc!9%y-=%!ujsw7Nfb+)>O~xlbl`q!irR#T ziiAbk_M)b)3)a8ci^F^tnzSL&MmY~s zWk>fC77yK%EN#9wRx(Yr5gOeat4Sy4v6?iM$q~GG(zJt0dGEG5PK=w=_ zy264@f>~(PjP*bZ!QnEQvj)Ll9-4+KqF<%aU)VEPoE}Tb?Xg0yp4X9}vE!7qr1w88ds=`1t==%OilH$J-2{%Ux7ejJ<)k1yZ9qlF4W4trs~>`y^K%gMn>kH8L~OBvUF zBGlj@B%;T&_9tQ1n4*$jpRUdvB9Su{%YL|#it(62i-C!MY(R6B)TYLUWV;XT(45}5 zsA8G)DIYT^CY3TR=qKjYN#!$H)oZb`A}``;RoHecDrmwE+nIpVG#9YXY}p*Q^~vih0B1m$ztpDA7Fx-qLB+D7Ey21Uq2nRNIFHT9s-!N` zrj4OvHyBBtkFw*Df5pXdLE82m48-M|(>G5@eufA|1af*%BXXM0F+MVt_uCk~EL?P) zD)0NP4sYY8kq3FKM&@7w=GLN=)m~P7R%yyI4`tqee=$gkSPy=d(ct9bV(?bWCMo)~ zF-mQg>bDoe_or`ylb6RA7vA8FaR}vVVdUcJj9pP`wPo~Je~yLctGP<#Elv2V_5q$rIp1J_ZY;u0}emM&Vs^EL(PSs78q{? z0!4pO2|!xEe?B%`x$weRhz;Ww2+VB=5mb3-cPf?l3CF{^E9mC5Gg6t7C{qw9wdaDs z#)+q)uKm^_cc*cnQHv9AJ2)-kF!ee-$7+ch=7p(PUQcbZ1h-Dkm3*=2JHH}ref%=n z04;1ioSzJb+DOaQM+^qY+OK4r+T4EWu(Yt3F71&8UOWi9XWh)+Xn?az~O1+$oiv10)#D1ay0qjte`aSspM4V0+&m zrHz(VzcX08af1Ayk%&VIQGi6vp7>e zY`d&DQpAXi*35xBkjAh_7@ zsa2-(N#8y?n}|(qkMd!BH4bCR3oYb@n2KQ>;2>+yo2?u7o-m#Q*}#eJ}hK=vG`lGTj& zVC#cG*B+YTUQ3t4;Ck0a?oX^TE>1yDD|els;PcA1HoZNXn1x;O$3;fWe|r=d$K)oQ$Ud%~mBTxcU%Q?=XP>2ow?*qSnRz!+ z@F3N(8Fw7FU5m+WP_gb1 ziw|qB>Qt5AyV-Z~0C_m;C+^+=mxuI$vn?N7Ug6-h2(i4dhhZkt;4(5=u0J+P&3ne( zZMp(`lRcMt$C;ukr=cBIe?>!7tR`7@_^YAu?-%2-J0Mt?*Q*xfEqfLdWRkYHqIQX} z0s3Z9a&B{!EW-qHsyM!Jbo$xC+J>|cuQ4sib#;ju!CR8IYk5$A>+-<<{sl<|K>9h< ziU;WXXHkRs>dP74_)Jwghf>0y8lQ^9@^UDz3c8B<68ptG-ATNx5yAcq;_P3Yk+UiBY z{KE$U2+7yt+zHlT)uXkiI|p2^uSWtm6w>JQmJ8%BSOip9yG=n6mE8V?t_{^sIu|$3 zgNc&tjPyLVUbdQCf8l|nAF0IP?17_IahUp@N{BA+{xzSfTGEni#>HGERxxbPo1GwK z;#t78B6nvcCrCS6Kbz(2h5(wuP*st{G!5=p30ZGo?!oJpiW>04{X)Z)ceh{YeVYij zAe6UB(Sfw!PZiEG%xm#8^&}&d2r0M8g!~JOya+Owem9`+g77QGU@ozQh~l`PupK9k3iXAw|2WfD;rzYu#)K zL;i96?)>=0%k2~!bfB>q*7hlOH2Q8sF%`cl`UUW)Sy+u!5A=j~e-WY=n^#3(l_4FD z#;6cIxv1?+mJmI+8d~qMIU)lYqQ!speDxQhn&huv<_C_N;8s#6J z+}-)O+oKqRfiUm7+QmPA`EvNv@k{Z{XxHkEM$c{LJEKwbj%2xyM$s|r>Og>3bC_UzfUaaOj{e~Jo%+U2 z)kfnm)sja=OKRhE8-Y~J4TbgpV3CEt*V0!Yy{) zb3B*j+PC~RF-tdOApZtEPn+gcLWf3LRJM$?lb%<`kUrXR(DJe#y zJwuHD(Id+5f4q$aVq>P*dUrJ=I+_W3>aw&eEhRiA5xBmuFU74tuM8^LT7Wv7*yh^S ze+Utc7SK_w50!tR8K5T8G`;X^OsMOsj z#cwHpTe$UM@rO&$DS~}@_+w=-rQuQRko#R?9XF`k&hv_T)2s>}iI=6=`H?maN2DVl z)TIK$NSlx$${Kw5?fWk+IS*QM9B242J`!r#Z+$%7#71olL9 z2^zTZZi<_DuC;%TL=6CM-D2gECl?oiN4mE~#b{?7{^%-Za%gMkH7fRBoG!PFywQ(4 zJN=zvl@*^?nO@ChbfxOu{_b-ckH?pe5O!@K?2bm!)|p|?DRxTOLyhZpdcn>>f2~>Y zo@LhFwVM0k?E%cDIT#4hr_&R(NMt;XfTg015;E%UfM>XtIA8Ow>Mxjn%h;s1G|fM^ ztYo7;h`o3AZjVO0UX*sL`Y;;hA3Y!5J736&%AY`jgW3Dm`raEJZ3j}AG}QVvZ@Hw} z*h?Dzb^#fUqH9WPI|-pXL+|>Ge@N}EJ*pud{_HFq?W|1@Lp`^<2KGj_S39J%zQ=L; z_S=pZ3t^M?+v{oVyg(ZRX-h)aQRQ*aR8;pmqBb)VVXUNuh47nv?Fxu-( z4UcT!YR7Fy8S9b$D(468uv_VYA3u0}^zb@*;O@1(iQea`cK7xRSxw|pyr_yiS69VM zJkSM^|xMT4OmH|W#h zl2%8F)LWKaBDnXy{WQO4zlxHcONJag<}>^H?G-&tGl7SYMNV^4t9{ z{n04-?a&%KqmjO|%b+J6W3&e<@c&)Q@$I`eKfN1XT>Rts<@-O7fA!92bZ6B^K6lm< z^ltH+&D7oEy+L-c&*Rs;mUx<^+a16*>pyoO?PoLuu_kw;Pb#e70muB2J~&h|10Ue5WkRRoUq2x21qf z!IN*v3S_EnK$^W~f4V_&HK}gn0@{l%&lR&mZeD2HJ$-Y>GsD`h9~gqx-WePgXgk<1 z)t4JLvLb0xxhEGOx(A}kOs?&#!2O5!9$dc)+`b`hiyvu+7r*h)|H6wqd2kD8@!LB& z87|5%0Nx$|>(`0MzG4N@fjD-35tZ!5H%Z^<;?Ihviseove|Kq~tFhSm3mm51!Ds?( z7~nv|ku+HG?AbGMlassYf>x4nIwoQz_m~Re`x{^Wtg=FLMhNO=S6q`>T;y?B?*Prz zyDKVrSM+v!yW4W!+uPe&YpGrFMT8aZueZgIuCcc^mdR&tZx0c;#TcUq42Vp`GfHVM z3(K9I#jbeve}mvg*jeoEnw!VXU9_huI7jmfdYmtDVy>qUSgkdbFEaWSXLD%fSVFl( zJiQ^P_fJSZlop|wHWMl8snTNA8evT?R=h!x+(6rCh7TXVy&$}mvF9|t-`Hq7Sf-g8$?#(nZ045flZ$Pe~~_lXjeC(F@p!A`FDdoteras zx+|VjK=DKjMlS|82!B2hf9Knn7WEX8cbS3_>dPhRiGhmEJwpeW6txS@NXp*ZssIbL zArr--BNufOf<>!$3F2Km7kJ>0)Fj za>36k6rbfAgY6Jcsd&PIDh7HUh$I$D)>@T_e;U$^L(=3f>S>{6Tll)*1jAXO5_IG^ zRdKBa2vtRasUSd7gZoA=)Vhcj6l%6_^`TzoF?UA@NquA;gnIORK!nAhcMt0VNBBXg z|FQw>SyF8;V9%pZ!WPKM$5jZAuM7>7-2Mo$7h1&)@; ze|AtMD!Blu+?LpeI5Ju0VW!NRtvB@XfRWnL%DgeOg!HI^C64nNhiO_*tD>23Wd;z$ zURDbFhDJMD)+4^#_B^Hv{O9`G^H@DW69LKrIw;G zYrwW*>FT>Zk{9_`yaz=ob62d*mWB7WtZnhQ@OH7<8q!fMZKlrJ1Qy$(m6eQTf^qDz zje#9TZ3{lwHhv6@i&(m49NknlQL18BZ_I55abTY)w5538EPo|2kmruN0moTRe}Ufm zHX~?aHrfJ5|Cy1i>#DIVX^_)FY&<5_rnECw&y`yZ{6dhOLJ#U{xor`utL2tesIJTq zvpq``7|T-9V-qLX8JrihKw>#doxeTwi1z=79%r)~w z$ySx7ShUs(gtyDVK)il)Iea1@e{+Gi?soA9PrA`TkuZW&LHN3i)mTAgJH^m@NaQ?` zVVW-QVxxk*Ufx+F(mobXWg;5L$uPT5T?pP!=>4sI>ffXCyj_yf%$oM6mtzf4$Yge)n#<#EG=A8}mvoy@)N#$SwQ2W%A@Z$jc)3_!e*B zAwOvHPfeJrv64v;5@NwbfiE@-+d)62MHG_GXX4Y)MxukbsKY#g%DI;+s=~^(JPG1D z&+XB!7e;0Q3@vGLXwQwT8jka2yDIWC#%VB=$RFN9{fluomdAD+f7W3-Y@2-|>wknV zm1Ub$`tMkd-jhPEboma48EhAZ!7d98)m>)UCh{hem5NVV4k$=EhAMzpHY`!I5yVEq z{3)PW+#O$hNT(*G!-gvXuBn%f%ZGQ9Vd_ypYx$|+Ga42$+(#{UtDc93o?Fk=7<%WU zVsTa#*#(^c09yEGe^pQE=0Qszky*8z;_bndSKt?_Zfne-(_)@O=?j+?=iDKYoyg>+ z8q1ci7(VZ58GqFf_1#-EnB9O{-wm+eO$b&r^>K_lQ@R{#hybxfkDpcPM&UoeGAM{= zN`P7>jB8nGA~v#Hl3Ud*;BO$TdM3<`6&w49!Lw2S&R=f-fA#4P|FQb#|9Q@@l7kPU zW`F=J_YXS2 z!+ioCc7XR7c+boDaQ{9^eYpSNUYqmb{(}b$^g|vzrs((1&b*Kh_6c}&^uPliJ-(0V zFFGNI9CCQ%e?`ByzmMGS?eBZJ-`n4RM8L!SHqCqc_x3-!8#njmxAx+R?d?ui`h84C zYxLngD&+pXhh8BMPESzBgVRoR_D{Jnec&0_@oc#7ML!!-Uz`mO&ptv%qvMFaoJuh+ z(zKYk|uQ^DlV)}Lc~Ha{_hIwa_x9m^lk%1hGWZDrj-J{D)xuU zO{^BQWoofF%b@M_{r%%d81Ki&^gX37&4U+*G}T@_0O-XLJC6OBFHRUZLn?7hc>09svhu z{;)XQ-+w{V3DFMs50A-lIE3RK(m33|zfW`UKE4lmVEIGvaGy$XxPNjsY7V)4hX;?~ zxX;1wqp*iZN3<3kJ@%&4;R#Q?QwlMBM5%Yme|K+xAM^Fz{{9iZhdd<@&)~Snj(g;| zkGQ8te%;O#-y6-^u3G{K$(86Qp?E~liz{YrJlYM9*M=sEj1wC@0 zN86Hp?7Sb_7{@l*V+(oV0==-H69+okmh7qXKD9B1Hrb(#&|P=d*6VgH*s?shwWhOX zw^3+i!lE}y7%|day|G-oRU4Dat=1SyfBu5pS;pG*?b_Hv+SRdz@%q@hU8y%$NSvEQ z8`7o^@VQ$j+dKx4X7_P$*Nd_>@fVFs>pl>aj%@rckeTt6=*3&PeTfLQyO+{M=*Mro z2pL@IvCF_-BT05=T7Y<+j(P^0K8TAP+#0ILL0n=_Pdz$sLcUp)7BTMLy|}k~e^(4f zy8{wK2Kg6pSS7fcy_32{BQiGdBuwenW{&X;d?j(gdr4Z+*+X^?fa9w83F7snp!`1y-diL0XTza`3>rgn(2^A{I#(nvoQlH1ZI(aH(Ri@b<_HAtA( z7sq9pD!x^{a(w$#le_y-`^KfGB9JYOt3bkxIocv~NGl7j;$XuW-1BH1E z;YKhBC>`j!sAK{?Y^AK~CFw;r5%CJr*6IEE*1|XW6>dzNYD2P2aIrXNK{oa_xD8EW z(G1>@1kS&`s@v&ehAi=GtY6F3n+wibz405D?j9|6I16JNj;vlyHbb7^e~P%YH<>Jq zE#UfCb0E=e4#shP=z3;@!ghT)o;%!x9fl2D+HRbZ$|rizc_Qc@N8A@;B6GZ%^vecf zeMyrkNrb?8)6$Z*W=)3aU2&YsMF^fI@lwT8JWV~#!aP?mf1G5C zycBDl7q#|A9;^~CU{riVMGLy*`@)+s|(8u`fCPkJNfB9V~+Nx#tjhrXw zw+*tHpZ|7#IlOp#eA1Ga(0eVO8?_~5^+-WLZ$u<9z6_)y)_bm)1G4p_qPQA3492T4 zZ^Cr&QZB#@bwTLhrjmQpI!kYzpWZ(>a10e4QMTflp}I0cD~YUuBv;bB6Gn0+7TcCQ z6FAOLIP5cPp8c*>z3J8iF3X1Aqigv=j~Pi@Nu| zd{^x4?b(MD@0E9V*9iS2+NwVmmD}E&wml+PI}W)k4cSZZf7AQpci`Y*`kTQ37;@cY zQtX+^VRb3NjF#8Jom8+mnJq}+FrFtOll8PnboT^*+*Vm;cYXAOZ@ib z@%d{<8r{+eFcIh;%K+H9nuBHlC$?fN;CS|oaclXc#}wgvrX(N4&0w{EQ+(Y09#zW4zFE=5~e{?diC!#x;OfI$`HeVG?bn`~@ z#1T4dpHo%>EVKQ2iwIB6&eZFGwylvKFJ)MkspQ>aP*+k8aBdywI!RSzUNZ-A0je<%!KJepLSSG$Q>2)B~ix=hP$>k&vP{C9WnN3M_FydAzfhEUy&mH4e$ zb^AY9jteZioi#Yb+UszColY6_f1pb@NYPR`!-?>TaEB2dA2#o;?QSuOrrrHixQ)KH z+?ZanY1nmwBen+*LWm|s-M0as@B^%M8gi}9e|uq4)O2k&h*u0;D2Yo7h!?jU0hF+Z z%K#-Ctzu8_ioM%+g{=5K~CadKf zec+}>B4d?>>8YA1BEjwLe1O2};P&nvPkF#pF4jV@Z0q%K%;B|lsPlsV2L?L$skm^0 zWB@^m9K9Rb<`6re+GsMVZ9wZ|+0t5yf9!TxL_6R8)~WOtP-gFKLU*74BJPM^c0S1A z#}9YN!?#?7-&}Yv@HbUpf3fr3Z>~pN@jZwudinMb7rlsU681?{ zhGv>GOP(T38k!9YYR4=V_Y{oSOZoe%p5>nZtD^IyGxY`@ysf9b{K z$zB0@{tqusj^7SXgOk4=GQ=*#F!n`Yb6 z-oe+l!t3GBxO)D}ZSW1n`!K4-f5+Q9&!2oCTNEGPENF@a|ACCua}CVCJpuLpPE;!`MU>lQyh->u$X zPx|JqTel2{xH)0{xyv{(bcgOBLu`_#0ckHHp){^j)>fcjI*&&yA8w=d66 z&M$+v$M23`4S5IHTg|?zzs~y}aFbP0GSL&+q06>0gtsf8_<=$_Z{!A5X-# zw-|dC#Gbt^SHSo7_Ut9%!VfP5AEUc4UPH~oj_8ygE5so&2;qIbWT;T%EjHoxEP1 zT&`aIef8??>ec1nSFbK#u3lfPE>2#rF8;oHf4=(p@2mele*v|6+i`A*x+{8j406~% z#iBB3HZO`B*8V`*US2?3qJeh4xE5e+3~JaOoRQ@l!}LW+Y?q;Fg~5mCf9Z%z`Q7CH z0bRn0iUskXLTAH9nxj4ZGbGEY2*T^K zrj*wZAwLaYe-GcCp9IJ6etK`k_48h34z7czrb4_zT4Y$eG+N{{cg^Nt-rL)=?_IX{ z_V)JdlqDRm2XCjn1={t~N6ZL;N!P6pAizA+3)~*KuXi>o2Lc$vIQ{WwuAvd`SLE70 z9zJ-0qsd?(42Dq)qX|KP|5|UwHp(^H6uX39zJL32e;63aMZxQ1kKw;Naoc$ZItYFH zi9Iv7Jwop>+z&_1BP!o$7PqHf9*?@n6GWtzfdep={{!X+32b-`sD3QKKIvk9m; zzDHBB-4X=d)avh zF%P;qe~{OQ?7un^Pi35fe*=8Zb|~I^XojNg*{Gun zPtY?A)HpNcq_Wnc(IQb};s&U}s|lS(b16wnrNfuE$vx$i@Q#UW7~gETw245&Uq2xh z4jAVhLiIk~ZAaDF``0JI+n4Vzg3I$uPo^Y|e=kc4^F*{9irWrgyozBh>})cq@aC>) zp2;@O&wDia{N1i45q9@AYQ1+xnG5jfS$HK`&M8^}Y=3Chr+ zm$YJpLKE|ZAW2FsE?nk`ehVE|^}2{Af3lgB-3HkbUv$?{p44{PbXOxB!M#VS9dCKX119W=CJQlz;oey_pO3 ztG86HkC3k%5A0#Ut=GS^Hg8{rZQitte{jn%X!~qx#UXtFp0@iAYOCj_h`-v{b=GvV z>78~Q4n`4zj3T>K1tP*d0sGU!PwF7w=zOoV+`KyIoQB_O2O>B6@KmKH(J@&~Z_Cf4)1? zw;`JM>CQ(hE3TaYc4`{P6LHgV8VjUApXc=bixUmmQfLfD^E;FYH?&!!HwVK1iyj}0 zKCGyN?ZNPmpNqHl>?1so^JZdaY;Za}d3pTKV)ni5#M{vAJFb~8wAhmHvscHLCw~iG zzq$My)IGm5qKGyd$@axJZTdDhe>-ys>;DIKQ-4kUGe`1+2W|7ceK$NAo(^B141ap} z=KWi@%B&xS)_9Zu|1@Ct`q?()*Nz@-582zoZ{CfWx7RNo#80cuVf#Xj!(KZt?Q#a_ z-rn9?3)xZErb(eJ`?%RRh42L9dBctFpAJ3Ok$lG^;W$aWM|s^uEJ+2je^XfOlzp6{ zb3D#-kRQFnbH=u$Fe+BSrLBqF<4t@VYBC3b)+mLx?P+2Ky?jc}rHf6yYPIeVkgZ(fpy zW_Oq;>vy8-YK@dOYYr&wK1S&g(Xj8)m6TMs-!+#aDu^d$7Wm$<|M|P%Be6;|L+0U& zNBjN9&gVAo_8j$#yQ09oe*E3+Yum!x_Ezh+wsBZ++bQb}?}_f=Qt?RjMWcF6gi_jb zyT3;I%e5)EyLGNtf6SI?Z*T8Up2J?s-+Tk$WBpcMT!frXy7k;`xb zg(nwuuyi~lZ>K6%Whs6x(lOXJ%IV&mtk)|XS>|=P5PwsXX$n=}KrCSA0HUFj2atKh zY7{NSt46E%MHQ<2vv{k(ceX{@NXZ@J!5vXLv%bij zU=;5S?z_AwO1C_&Esg$Yv%}V&8C;w#3#uP)eG#?kV1&E0MtkjK{9-va?4b4r^noG! zbZ1+;4sNZoS!>L?s=@FI$&OKkmTL&;M!d!*B3M%s;(GT_VCtXti52{ za{To}o9&Zsf4;rH8riKb1125`E{6a09w*VQ`RHX9L9ic9dYj9LoA!$@@RGa0Y)PFV zYa)C7XI2n1vh1w3&2HVc{?@%#TuQ{;U$;$fe^76op8OB*s|SDPsfwKIJVomlh|3d+nG60s)8ga(I!ELASF9dp3i>QZ*PDvlANY9=UMlj zbx&3df)I#zY;5dT%llt!tg@*YMbKWPsVa@OcJB|4Drt}CL1pRQZR_vo->{p^3X-mq z3?pD=f7RcosZvD;G_1oz)_2^`zOs6p7z-o&aGBOU!dF)YAJ0D=U;nU1ZHh74nJ%FZ z2~?UD`YNG;=aouHW$*~fR9S5+*aq}s&n=kf0OhRE~E*KVJ9fAN4$dBY+7^Z3PcVm)M+t!<*;r@Onm z-E*D+@j$8@jrKO()Szv)4!nb@BN|{)b$;x?N`OlIYdSU@^3ud8JI#`n)^x|ZCrXTh zTvG=m{U<+qYb$`4>RR-vqE=t@gBAAR7b^T+)0^M<_VhZ9mv*$f-S~xlX!XBx?d!}U zf2Vv9bQNnM*5?O*KKKA$(zAyw_tF0~q|DcH7>({YP4g;+kJ?dgtSEo;KhKPE7ds8p zr9&!AQ?{xN=5pPo+tKB(bEzyDdJsB_U}5dNu`g-lNsmp z`Cb*Kd)3`g1$kW!y{5KE*!0hpFzuWxe?lm^Ie9M9fb763$`UFub(N3xy$p3{?et7^VDS&lXk9LfA$|u z!Gw+DJGp*h)49a9aw&{pO3Y9Qix%C&!xZ}V!hhpibYf~vQKTtK!iuyBbGT+DXp&0l zdZtoBM@Zi%6;qTb<`YUs-I8Ni5Kbm=7#W9o@jx&E$bsn5;uVM_#c6G)d=HBAQbU*D z9rhD2u_tLBaG=s|>C*&8ARc%zf5L8iVnTRui*wje)@4C3I!>uf#NuF|U?(`47>@D~ zyO`BwB~e>-D@apqCe@UG!tA7_G84_OV#dx#Qx*DT;0O}8T9u)EY_*hcbE#<1Ol+pA zDKIZccTMwxGM%AInVp2H5-}9G5n>)R6)L<_6WB}VvFhr${0uEKPtN=p?+2-g3o z%BU(a1zy-L!xqEc9#3v<4Y*y-pvqm9 zwg!KFMWa#mdgl`upV=HV6sCTzUmnTTA}x$}d1Cny4KVE;luuB_e^;Z?yRPS`@{VIFe5cm)@6AEtGr8$x4)zx@Td_Tf0JJjHV3M2tp91Sb#$~eJ|D`xz0<{qiM+NRifb@-ytIRXH;?3x zMw_G2yY3wRjwv0D-Y>Ou_1@^aB^W_(*!+BPQ=4CWYSZ|(;hkAz>!Z#fr&Q6YT2P7O zlfPX*$Awj>6dm?b2kU66T}OasA*Hb}hCCg*;o-v%$@_M+e^;8_=`enK52qt5K3b|U zU4O0k^XH#`;9Ai|D5oWi^&HpLG%t_nGSw40i<1ognKVE1Sr;?xS@pT$k15mE;<$=* z3^qD$@p7uKdUC4xi#=7SaH^L~)_6{W_(^Wb6#U5wM(GLBV~8n19A*&Yc}l@Ur71c1 zf|Ab;Df!}ae~R)NaM>~QL=BRaY1iU@T$fvvEvDy}kV`pgW_`f&qkM1+;tEDnnj(7oi5}?&(#B;pe((aDICOa>ZH_Bv-z9-;f(^cb@vCrg8^@` zp=}~;Xp8f0+39X$bk@7e%gcUs&31p4MJa2!n||_`e?^?eVouLAPOktzxc%dV_iEF7 z2XH#4+Xn}@^PMAAcUjlX795UDhkv~~AOH+JC?CmIg08U&?~X{bUjkwcZ=o>CRe>cs zlhRfq9N5eeDq2>L5vatc-)|glz8K_ujrdz@-1a(#}0&6!5weUwGi*iFF*hD=O0J}AJqe0 zSLH*HSbBP^9`>xfJPPo>JHGhogl=8}r(QK$wsrIJ<@R3R8C}(-vAVnP%k$O%QTI&h zk<$DmygJzZ%WF0RumjHkJ7n_4htFGG<`#4ie=L?InqEf%?dIk4<7a1ZKrVCKt+Pi> z^K~A*`eihF{d(Co+|A3=-cK%a`E!`pU*FkPZuw*7FUbwtHssz z)#CZH=Zl}O7C#+7f3bLRc71*P{n_HDo6F1Ri=V!Op5Fp~%&r#xYCPcA@#W8FSKmFq zfBgI6$IJ7JoAHa|e~hnRo}Ha8uFkH1dT|C#zV8>O=f{vdI@unLUb*&oI;lr}SND3K z|8(>6{M18KH+nqAZf$z;hntt@m%nc~&KJj*i_`PP>E+_P#nt)Z>Jqv-KV2@qKVN)* zxwt-GTwne-wfhlpjwJ*>WRY7)D)VWre<}*{s>(CJmWbB$`VnD;o0o2o+r95W$?AD| z{Ot1ThK^58==k)}Qn0@(-8OV;xIf1aQR zNBHggmn8OQ&M!{-1)hILKfZWLP#r(MYL^&2zdZRHy|_H37nc|3HNVH)U!MMD@P*A4s$F|TqqUSF! zujxkwXBW^RrPK3keqP@kU)|94&E-qFI=eo*`3;0b;7z*^&o6!4FR(t&f8dr|=Q#3k zXt>3Y0sUFLxLCZryk4ALoG!VSmJ_!vdblHQ=Mu5U&uk}3lRHgMc$Ib}L%I<4@m6f% zv&Gdb>p}@zE?`RZke;uEkEKV+N7Ffy)S)+@W*Dp^Oyy6$U$rqgkyzMWZYi?>7 z`rMH-rA^K-QpEl79^^pWp&+l}umd)WxKD7^@>magCoJaMFA%WmwyX{p83)-Ak1!i% ziCH8joN^@66Hd>vMPe3Vw*5`ttMSqajPjelF*I&yKEol1J+J<{fBE_`de0w!E5q)t zo*bPe^Ub`Cb3Ko--182jKc z>>j;qZ^7$%Yloj5{N)2qO1qcfc{1s6;P3kk_~-SVrXTVYc3YpO^_|Y9k0OXS^JF6Y zm`Z0L#CBOQeD1#df8phtYwV1aa`uv*ey`ze-3q<)^?S9)ZPvIZI|Wf z0G&OecOuZz&*ZjgcLU3JtB9fub9YJpfeC>0-TCvbaSAug!_mSm>hbGOkHlYINA}r4 zW_S~#0J@$8PcfBBlegg1z2-0){)tW~AQSso?v0|+m0aM&600b3kr77S?O z;$X(HS`u^je=x4{F)Zs68wS_o&|2Z5+}hkoP3$ewf|t@OSXd>*Zmr_s3Rw_VQf+OAsZhWN zvs|C4DwB+AcA#39;4L%`fqK_WH^zR(uh-1o&GGlLf5?T2S68_kKjw8&q#=_I5116? z1ncf_Vp~DB9ZW7B;g+#g=2_Fd0oYX;T%t7lB2!_RlT{`P@_Q!#K(}(H%Rp60#!kWp zyx3i%`0*(XP$uDJk6A2R0~&0z*Hup`+p4zTIil7;n+Vyf_s&T#GCwZcHBTlE9(P!t zVX5LOf6T0Bd;?4>lYlooI1$Vc05VG49 z*W8|3#@Z8po=nz~eZDyS^6=3!UdS!1^*z3VFyx>k@ZFQ~9{kn$1NKS|PIF*G*$wvh zh#RwWjs6FM!7}FlY~-;#6ZeesQWDs6uS8?`Z%rTMWu{yPqv!7D+VCY@-lANdvX9+2 ze|Zu~41W3~#{7PXGSgq82_MO!_RWGDGWmraWcvKR5O-|29HncbaBE#&=VsSsVI$KL zk94Xl*O*jSlK7D5)HRjI-W39NJV%E^`tjO%H)IP2R(q$2?0!2_-JTe^=r_CnP3Q>EjH@H{i!WR?PGBo3pFq=Qt6d znzR85x+_67GXVaLB-Vx*AKLZ&LS0DuxnXw51DEWI_RI<{_uN#jh*MRmpA)|%F4#e& z6!Jp(DLhqvysudTN`4pD?-IWZZguFU;=A6mdY0#@R&LR#zWDqY(hO4cxv37m=)Zq< z*nj`B^ZHY=lphJb54eh6%F^e{#eI2_s;tmaCmTnf)v%%oLZ%>b}-k>$W3L>toEu8~ z_s=h%b(Xc&6)TXoex@VF+_ zMlihYtThAW<?s(l`uup1R`aiHULt;iEj{k0o20vwMrY zR1=q1*c|dJB%oBf0V^LD&;q=*YbKJL_1YV6{{wZ*p34m56khENQh7-t(pjP64{PUt zWli4`Y%%Z9w{rSgdgnxLfBUkgtyO?hi<+myx}9vtVC$Q&8gbMA(bA?rs+n?%P(8kX zn@(FlUT+J*gSDLI8oEwToM2w5D>#bGOS-Ks9D?n#q!nyvCGc;&mWu|YMJ}wnjE^=( zYwTW!EYkR`U_GtGOje015#+O=I=+|XZ<91tkT)1=v-{Ka5GL)1e}C7(uu z01kwsji*EZZK`m~Oqj$ep8>(vhMjC;%`%OL-U&Xy#)bGedoQKQCqC0VW=9_hHT3;^ zv6Ke?Izl&R@meBn+Nn2 z`4?o8Mtyg6{5|ZYHGDcx|9a~A)=7mQrmWM4OEG73qb5hqsU|z64 ztFM;IeCtER)g160-#I)76|EsTPG22Tf zCNDJ)(Ux1C@_SX6#&^wMw1-1_YI8UVO3dWzwv9K_f5ZY{ntbk@5K1oqC8h0;x9jU( zyI_3EgAR<P`g_BQ|0&Oeg<*;y*@ zx4Yx@+au=3NS+8g(hB|x&ih%wOKXG0?{A?qII8ZlYP@GrlE27FZZD&7)Zj)S1&YdJ z$46Hce}49tJ#B|N%+%o*hr>^-4!v1=ySwBC0(xiyXL@c7nAQM2(XH_}EW5G2({bPs zmnx*Mh}~kW_&@j+3u!o{Q*pNd^n0Sq=VG@X2P>%SnAT%s^gTVJi`-noO~Bd@`qoa? zc1=a%=v}3|mTwoo*+ zfBz4bFLDkE+*G=^?HvOq=f;};%g4bpe0<;*`oZhp{2;%?2mk3l_|M)4?U+2*6BR!2 zy6*1)+KO@w=-HkPpudzBexN*aJ1?ylbo;H1{ZXrb&7h$RpZ3Sb5oVXju>xOY{j;pa z+U4JMRN)a6k*#*LXvctUB&J)2Rtql$f6R3Vude|}9C3;mgY1J^oVMeevllO)AK$df z;=X?Hhkor}+a((@H-$HABd!_aNpX^#_tuWk|y5^_M$(FBQQA{Ls-SSh~@3VjFtQa@ce;=Hc zc21VW;eNb6y*%;y-D~}F4oAb$&S+=rn?H_*-agx4G};-uc6zof4k zL~xwb0@tCP_o9O5f$lefJa5y{nO6#>!g6@pBDsQZ>~W$D+ zdxt{^LklO@(iXtB(epGh+HRB0yBFVHF;GH(D6|Du?EB?){@0I$>m;1uz4~QjUT=?V zha2@X-opw-fqxkjhBxxQOf0TC_R(#KL z+n2T?@6j$5m6Ro@B#DCZNt|n7N1HEM z13(P?J0RcKLZhz)>bI@u=6Q0b-vPM5XflvDgu_;qlvEe=?!CVn=5+}h2#~dJ{JFYW z#>J@;qu<&vE?wn0X;r2VfAD?BbPizH{?dt=$3MTs!1Q!UyrYL5#^>Yb^7`{{1IEKP zTxktWcWL?rndy2rk_^Werykt)X~J%CK9P}Z0B1m$zlOH6d_|09d~$hlb9{b*uUCuo zLoW9D+*U4iSeG`Lv39C9Y|O;gLC4yh>{CBa&7f^951Ky!x@`1iWTrQ0GJjS}gVY@Z zH%?erD_vc;Q3vY;qlT?D9~LJV`F5^)7?xGAUWfAWh0q=~OOw#tMjg#dhEU{{1|U=l z;n4x>j;O}1g&^Rqy~iVyxA3-++<3ex0JES+FexB_iV}FC;sO$!B}e?l;&+^#BYNi~ z&Dyo&V1BDt^U2mXe|)t$K7ZbQ+gM?3J1wipfuidl&Ym4#eD7Shp&suO%uaQn%!Jt@ zy!)K0`w?xJJQCK4q<79D*r~<8)=ryWhHb&M)htuyIHmGI_Z(fa9@8oQVBhci78v|8 zvOBK^8?V_wI`{=)wNN(OMw+)))f|cp0oQ|HHz1DyU}DNxgU|YAtbYPwqP1X{$b$qo zLS49w8{u$BIkS%mf_@$y>iEuZ``Ga~hOgc|8JX83>kVPaF!q5m7$u~pP&i+*wXP}v zZxvQGL?fIyuW?O7QNtm(BMIsXa&T|;KK3Y zEYlGT|ECWSgK{)_D4ac^K!F`J@}Sn%v!&%_%zA8jUcSy}}2te%ac7z4NdA zv{Kk;v@PXr@BH51poJ*2`qRbf+12&Q<<*&3GjeNRq%c7d}0rKN{RN(;8}-u<;Vl#EigAjF|* zk$-dB95o)RWX%G&b$nNaD(zx$&0-urfs0w4>X|a3ZXL>@CH>laGu>HBU8N>`)y(NK zwaCro5`z24V(Qlop#9_ZKYC4gd`fw&x?VMC{p!|n{c*AjuBcv1 z@SU70p(=G;0|95L6xN>eK9C^GAwnu_aeu3#3L*vT3Q8dGg6u$SLEuwjZ2}k*8wOqZ zXpoyDZs*{Ld_z}c7FIVr&xp^jd&nZsf3Kc~S%9CGtzotb3i4}@%Frw3UmxP-)~@!a z1xu^HwOjU;NY8io85;e8UD$M>GX`t+OtYBUMbzCVYw!`CvsTZFy?Q}^yo0jHu77#; z?ys*qAo6i|_F)*-8HA=!>&)%*5%su@4!_4cIBQEEz*u%vy71Z=ww9#fyz6wpOgn7D zp}+RXbxH0xx?<%&JLk)Uj&N%W9vW%3rboje*~Embzxx0)f?Acd;fJ3Ujy-+Qfva{3 zHdxO9JJi`&6AOS)LvZE){#pKaF@H{SC}y{VU2O9=@XJRK%5G^Nfm=E-_!#oi!!!qi zdjcqmo}3`6O^rnV8YbF&_wo4V;883Uzu@ODU?A2AQ7HM->; zT^fBw_im=z4Y~fXZ4O!(Oa@Bd1qj_y=w{qp&e$xA4w(2Lbj4(yU4J2ndh>M`)N;H7 zM3>?0^6w3h{p#bOYzxI+9c{cCz3zUser323XaUW@sXGq(ILPw;YF%zL9bH)z?KHVf zIvfRC-+aYfH5kpx%P#)h^nbP6=*JI~_1*b*4~V{Tm~}^n>u$61S2{V^n&@g_b%kC0 zDI~=E3-D6{80s=&rRN=9Qu}1>CW=hxDG+;lR@c#?FS!bXHUk zB17CIeJ-D>zd1z1(dMhIz1Kr*m}W{=-RbsuCpYytGGjey8bgH9d`VR>aA-4{Dm{(Czv zpcKtU?>jQ;>kTu5Q-98K@UY6fWK~Z_>Iq2(kRV~KdAPGf-?E^rHxmDyf$(>Ob};vy z%j}pL5YBf8Y_1cyhD+q@m&YCN6U*?dF`DP?4-7?(bk#^_M=X?i+24JrST+U>zY8BO zRv>+gc@CQIyiWI$9QaSyXUr`>X=TW}(7VGfYF6zLc~+5!aerMlkxa2?5Ow<4RTv}M zP)4-nh&Hg%++N=hQAz&>tA}2-k7z?QR{W2`((!KwiuV2m?wNojvP`y2?9DZ-X`P&Z zcYZSVG=;{6)&^FD|G1e!pMW1DEn2XwAM0FT_}_~+G|2R+n2!gKzss2i9{}$k5JJ@q#_c5qp$-A}m$VP1y7T#$-5fP$R7Ixk*MG9iS6;NwnZL& zwNDxsZhxClhxr3hCzIo^?=6w&_KMn0x0*G=L*Dty&lP>uEz76+WhX56rVxRE4V;$O z2EO7I;uF&Mn`>gz?8^BTD9JJAg`HQy(EN{(qxZ|M)A1*?(QxsFe(u@*+uRRP2M6Qa z9eT{+E9$byE%PzuK(O?yve~aNsvS<*WjEx134e}fz}{G2ahJG7)eZk%a7OQ=H(WNl>aX(SMfaWl~kzU`?E?aRN67(m64C##WSvFUuUd z|8~eD-E+q=Q>p6UaE`?(7ZkUC@R3_N9u6Kgv}Kpl8Xg`F>1T*jh=is?tBD37^uKBe zO~TK_R8%8Kb2FiuLpy~voLU}|B36VGh_xn~zx9Jul&rAvbu4(ZD4)-QKruGJmYCZ8KvVdik@(-*M0l<2a( z>kQZo1;OQnN+H`(B_VkfMO0zg9auioWeK&lSyDpsg=h56-OKQm=kaY!W1CQnfVxfgo+< zur=%;LDQs5=<8A;m(bB`n=0!cdzGa~+?5sbAQs{~5jK~tB2a&-NS7?>+mJyTZLPMv z(`U7%@1G|Dotyx{`Ce;x=+gJq9lgwLa^HOKk+b%5)3`=>%+^I% zdxLKv{t*q9NioY;8~(jB;oyB>DVMaBKfH z(K**q5qbLv+v6Ra8{_NS|9{ITE6wjZTj~}^iKRvRP!+$a%B%0Uy5cLt@apx)4}?wtqPIRY5F%BDar)qJEH<|3Q`*?xz*TJB zsC39`KPMK)-7{sAkoGRlZu%s!m7i(r=V!>~EK9Hq-Yx_MqGXaiaW}5ryi6clx!#P# z6QFHEM8H8VreRSgeScS~Ohca2dqlHG^fE8Cp_6H%%!Hnn+U$iK@1UYj=tpJfWs<(t zY#Lu z`3Y#?s}SO*9WB`%I^#))S&GC=Ai>yV+uBeYC)=!gZb%H`z<dxIA@DQjsU z>x**?W+9VrxVPrGY<)X)jzvm|L5;_-BAo9~{2k z-a3K@(|7w%4&T$x*71wQ%NN_rUmbqVU%9gJ1vhP*!+%cZ)2@nXcdV)S_hfAV5@I>gVP(AH1alD<5XUV0rv`^1@F*lLIB3AMw# z{e*_J^U2Wj92>N$-<}_ivh3B7wXZ*+t;5f!1lw5tlLmF@SIdKa`1ubXSHbj^ui-Tv ze?nUahkqYm$-&{rRl){ki?oJe)vOg6b<2NMW_rlu*9LjiT}Eovp3W9>+f2 zI(zl$?(1*lW&4}$ML%Kt)zx>W-~REF*WWZ?#eZYDy~XA2ENsEAG#%{wemCoC*sc7h zZ(d!WKYzWwc=f0Mc)k7mivD7?=>PcP)hIgN{cimF)2*$4qwFu&6nzN`0RL{mhieLc z_GsIiPAt~3D=255-&bWl5-a%37TTaN%25 zdE-_W3c;n0DR_V@H!COz~b@&+eJiFTsYYRs^j-lC@ zZf{6|QIb)V*eWq0D4V{{a5w7J$$!3cH5>!mrKyhytXx8vuCsN=)WsItuGP%Q(|5-N6JTDqdKrSa-Y=U2BNSabrA82<)&OnDsR z&I#j#3Y`;Qo{d*O%1bztKuK^hYdKaX5tr#(Z+(07-hi;Yyz>jJN~k(Q_!K?{b(d0G z=n_IX4awHga$SRqUXi6rtbZ0q&7P4CbNxw1rOxu1_8X|ww$5O}ANJ0C>&jkHR>K&u zxCNf7D4$!hQ|5L++S${_ZKV;<5jYCBX8}T$+&-AbcQy7~u4G1ubAD9a=EJ)Ot0;`0i$fV||xq$(e{ zWE7jnbT6CKjRf;4z<+n76LwDlDi?X9)BhbK;o*=SqW)cRf`M9gn_rry3_|ApgzWq? zWX@B_cbYH?QVJs-QV1?on3@TNd2maimAt}*3N6wt^q!ep71o?lcvKD17wu?|Usxnl zm00Zi@91x&Dz%F$I#cgtd&H?JcS~G(X9U{fPrOmcV7Kr#B>_L0M#PgXlbgd>TRbZlL z$|NfM7UajdDz&^?2m>w&9Bw=-lW3wh$b%o}x7SQ4F4aWX*m+DpFExuHWn$>*pJ;E7 z{`B=K5mcK!u%!zqqO+}CybXOh9b#u+7SZqLrk6idS%2CgZ>~i>mm23b>8fQgnbOsz z)Lyh5T0eODr)H;npW}b(s&w|t_A?@z!t3LFaHUAE(Ydt?=JPNA@`3g8zZ{>$O#YYS z!x9bK{{uKaZhtN@di<{4+IZo4CDh~o2qXk@b|zLyH-rad=s2ukbg0eH0bgS0JA!&u zTP}+Nv44aW?pDkL>Q?2sKSy+t+$EKw=Q?^|NSbQHDc?RQ6Y2ZCvR)SLegWy0l)hI% zS>Gjko`i4dX*R)Yhhy~L1|WY^Sla`m4$u_hK;s0Uaef6u-h&iZamsR2O`#eNtOI)c zRaxp8)vT-q6rNobFh=RHigFSFzr=;uVG|+%GJlwBeHW<*V4YN&i1{8W!UfG#Q%;4s z;|M&^#K5FWV&w`Wh?{u+5@%syU6$H}54d0a0a8T`dTELAG?1vpriRsFZX$Ys!W>hR zAao;09x_>7;&v1#_m)y^NZHUAnpja<$W%48+*+4eRfcKcB_-B%+Bx`gUF6Kpu1Q!U z8-Jr@uCY9boCPvpxLaqcLI$+Q%ezuyL3E=MCaTF!49QqnXIq%kd_s)5PW8QSaX2k0 zm6^%x1fIicp2SHrO<``yVZDsomh2vl@6S^hL(9X8g`Idh_&3*RTa}PW!+o4WW=p%C z<8E3cEPzCnGOjx!e$MxAUqF#26$y%M6Mw_~FH~7k%GKC6e7nbF@-RfYOlIJZgQUWv zC*xG;G88%m+EUaNddc2Al?~^efq*l)iM}rcW!Ggn*mgeAHb}ViORN9#*^g%@H*6w} z5xNb&E;pj^-oUpPR);{JwqCd#g2T9SnjA6$;sykUh#=A&z;1sE=;CGmoQ~Rt9DnxO zOcK*bt#{LKlZ@c^F3H6$4`laQ-$K605|fu7`d!_&zl#`uL(gt@J-ey(QsoZMaon6% z5TME3z=-W9v?02NTN{oI(^JXW_tt+zUI7Z=A?vz=m?q*fUUQ5}4GT{^>Mg^?@moB` z-xB+p`*mZYd)%~&%K*#g0|ZHTzJEAGuBAf`W=f)B791Tg|Lu52zJDRHm zA5h6ap>yOO@vaG9lD!HV;tn}_4TBPB8wpXS4xEf3u5G-unU-ATOlky;kADqwf+FCR z{(I#!xor%GKZ)~XiQyVoy37&-Zn>9AY$#U=+($Ypt595-M&u|?AT&0}`I=Ir(s#8_|>N>(f2UbED~+orUIxo(6c| zv+li%clCVL{47;s$ts$vGQ#bcBBwA1s#SwXvff8xh-sK*ZjuoB5`P@fb(Lqr7^-sj zaiA$mCh*nDn;=W>b+qecfFEq7GrLFZ?O~csrtBR@!z5_|Z=jZZyRd<-IlE5*MYEnv z>HO^Mj1Ios-`_plKR8^H0Y4fJ=kxjAOnS#YgZon7^1}*7c>Qx%wM&*x>t12_YBV2h zHvUYOfZsrcp)RU%Zht&4h0WcOSiKvEc^3G19Q##y zl(UJc&bWMp8IY;m#0lty0P>yYazd#XU4jpu`wDp+cL&sa3V#s_V}zqcF1S^0p#kp( zz{9{!$&rqkyziHt=k0+X#GYrPiFVu`12#{@a2ro}71AXq@yXOF6hEhVc!z!=F1^ww zY7QT5qKP(ORcPdphO=c{&#KWTa=ey)!G#L%6xw8>qD(S2_aZO(q*R%U3NHdCr3)Rx zUooP1CV#3tFU5g0c(1LLy>pDL86$-V#ag7kFTi6Eg(JGk{j& zU1iLx*HKK}ix*C`ET;&CkJe3al)%%|vKQ@vJ5MPwtbdgP4B1;-^Nv3mhxhbg=Cp;m zF&M2L+YOqOY?pMRugq~=ubK@8qo)yP;2ZN2-Dcj^FncPnEc?hEsjEb|7 z@w@^|0Dt!`K46|kU17ZZg2fY(qYA>H5ST2M3Wf?ATG1}+qD=BK5vCe1?xF;@W{Jy| zru$UXX?nmR`^Cm#uas`*+Du7p@aZuK$YA6T+b^{ORQgi`5{!-&EAAcgke7%y#xa0vTt5WqqH78(XUF3l5 zSinEoF}GUws2ziQ$_=n%;l{b=7&j%dp-P!8*lBmuBW7D*5pjgO)1P4+AUYzbP9OH&^MLu1QvZp5d)F2`p{(#~kk%a(N!W?K%FCknkIJ zO@-Bou+$U2=5r9~7(CJ3AbeAUF^b22cQMw+4X0z8f^{mBR2xu+BIv_XJx@vvViCCBk{eZQ21pRI<1^x)xgzsHDrA@xkZ1UY}GgiRXHbp36bFNBe18*iK&S?|t zjHhK&!lFzJuVAdz?geVF86=g(7@#nTw<~os0mFaOjp-(HP&pHt0xA#}FBFgNG=E6_ zIf|prrnt%_lvSS4W;0crf=lIwTCx^6| z8WcV`*r!d9+BWT*vZBo*_k=iUZk*;=?V(Omta*dxTG|A)aFdPI%6iU?p5~P-h&w1( zlHZGd6LuThZKDuLH-TuOg0~v$6ZI&rNO4UF4{3AyP@ocl9~P(jv~Hl?NLbXlTj4u3W%6XjX2IN;>taGH$mn;JLDO-|4yZj=7yUYrzz3N1ey z5QP0pktZt~l?$m{?%E`P6SVoJOH0{&GZwKNr0aW?p;Heg+*Bso6iRY;Fy%L3R_;fa zJ1_h1rcL-jY5Y^SFiu$dv{TfZG1vf`Z^p1QNt=absJaYBeCvx;8GoK&BycUgl)T*R zy`vsU=yteiz02D+xtq{@x+%YR-*Iy&P*CvJeC$M-&VnX3rA_`R)7g|Znboif*?eeZ^;=bE#Y~l!HlrHuu;rQJ8YWR8 zH1Mw+^;!5u@^uG}Ykv(~?YVlYzad+Obpu*B&I zG(;uF9?>h&%YR;WbLR!4k$F|>9;t0jc=PmPb}=~`MW2oaTft(w$QRM#+2V)A<>GXE z8}3H$-~Qvj#DU}Z^{3ljLMFe{4tx+k2mmM!$cM_eP`n zzds7=d)U!=z?k`U*7`H~g3LNnX<5RBDpS-aXLMWRjQP z-uZVC9_({rPL)Y?N+)}N+oQitb9x$a!rt99|9`ep^)xS-ck_h4uah)YkQcvJGgX0O zGx14#R+7HeR_A+hxg??Z^AD%b|KH))e6+|82C>g?nMP@c*}^7fCUvSxZw3HF7%+di zbB&~jxOKLB&f1pq+Djcuhp-=Do$LFvEBKrE3YJ2nt?^I#WmlzD#E8{C+9DYpO2lFZ27EH5u8MNOS#SGaILb$GsJMOWcah4CX>J#)xa;q8nb37F&G23qPA9k^?!%c=bpW+tR5!@=FFIX()AVM0cI;9;Zj;T z^Z{g^K$NuBIel_^PO0!ERT)CVT%>s9de}1JuswzQHlEa~RHo9p<9MqJItPv$2UZdV zdGr9jTdYe8YU`Ara@<0|tPvhlT?)sPCtgXiL`TRlg93&*EP*)OGASDF z1Wac2Mybech0$i~7om>O@S@Cl8Go#0Ob9Ds0x7gGFC$h1wBURQ*}7kP%OZdd5Uyff zHi7U9IxEI=4)T;hG-;H89E-2laAw$J3cX&CvznDEvY_UdifjohT0)<%1JJXast=TW zl(F0%PVSXl8x_ZFM-*i4$~Ia+Ot(&$$v8{&oMvo*a)x1|8I#{*nhSb^C*_6 z&+D{*291VBQgzH~^qS?_aZLP;bgCZ4sWy{pN(RQ~pugoDW%TF3F)D(j8Vkvtm-!f1 z$MGGmXjt{~3X@}XmpA|~2~{)}mRu9_7bi}Rb;0tnDoa_z8%dQ$)v^>ev1gf zCx-Z;!%c}2nia}xQuTyXZ76_z(gg*I0u@of?(_nk zQV>&+Qjk$#D99-&C@5K|NhF(;JR*6d6qGs8t%$=IctU`}=M*mXDZHTYBBoGLh-QZ> ziUNcjLpqexD}M?D3PTD*C`3}IDTG8+Oktdq6i##%aHuJquyoW!TMDNUB&0-23hI-P zlY*2Kg&BpJDnbh3w!=^eDUHy?6q+1=rB?F5&+uEA;t!Dwe<5qf15adJk;1&_a#$hu zUr<=Y6uzObq!6P26@@j0wNVIA>>Tzpp-CU$ubxcs4u6roG=|AlHoH3EFz2w4u;z#5 zklFH4f?O1_J5z0d%{7Np4l@oRJ}6?c zq#*zWN=uw`$g)ld=A;dzgCQUcRF?F8O%P?nkuK;gE9kQ{6M_U1P0(bZ7*;>iDC97b zFqb!H4}Y|#3AFNQQtCp{q^8M?ri!LIEn*HQ99A??@1F{O)r zN>zlvDBv)rR6!(@QdLnJP#RJiPALsjN<%1euzyN`5}71@Piagk1}Ehuj8IcLp>%>I z9)fgAX-X-IO%qBpbw_E2XAx3rH2&t4nwU~UV5i8)XvCodDscYkim=~nky(On0!hyM@@Q}k*Uel z27j5RJf(cGPkBZ;7X<%1Z1*Im+jRZ2x=sHh6!QYuUMXimk$ zXH+~?)7;?sS%e^_;(>|>#AA9>LxJlJNOmDC7qImL1i0NqrJ7q@cW{M)kP{0!QK{!t zCZdEBP+9ZeLxk8v4BO6#QaK}gK~@>EiY%=Asu|gUY;Zv~P-KIcY><)-GO~do8-EmJ zgHpV0IG-DuY-kDAd36;dn6Ppc*_bR=uARcRI?M-?O;WP>ugGSQZz?zl$!40YA!`z{ zuze1}7zCJeyQG*uusI~5(lo+DqKQ19C#BQ0mdBiILAEH#mN3B%>kRlS(Lg*(ey~nJ zLbkdkTUoNT!C%IKCRtzD7Uc*vf|!G(#3MzJA;2c= z0UM;@2mY`?jK8pm5fty$#8MSf6{Zn_m?}*bR41sqr7EQ=BWQEwR25V~HtK;YOI1zv zVjl$B{FcL%0I+H^rP?5#=7jF?qOT1*+n#Bl6aj*YW=V!W+2yl@W=T!htbenNX1tST znWmY+AI;np%`DAo+%+>?EKHQse6dgS3z{pM!v+OXLj(oQ4b2OhzoGdXMRQB@n&vaQ zU+mMpqI<64KBN0g)4gE{DXf9}n(n#uhs8dO`mNgPN}3f(#tu^X3IfeekprFPa}g2=#Cuzi z!W>4BiJ9(*0=DB4Ut~#MTi{mA>I_QQ{N|7=z-t5?4H1@k4S&jf4vX4Y94hLK z>>!vYg$C6|1ez%1_J$WslL}=t88PFbWaLcfW{3h|6*LVja%V@V3a1o0;#w#SZs^59 zu3Yj<(b8MS++2Y;`?$b~t|ZSCqQop5UZ`s7@Hm{}A@>W{H=uRkp#z;0oK70ba}e^_ z0l7o%MhfMbM`lEP2Y;L85az`La6K5f0m@g}aEcX*3oZl!f&EDhc~&H_%Yt&MjAs4*Q3A)Rae9o7-VgHimnQVQn0Dw%Ot4tHqfY45(&D)ZyEu{Z>b`UU44$d-K>rx_x zDQh)O?y;|czkdo6%L@;$QO;8?QC^RdLsI?l_sve}LQvc&qDh_51aKMpJ-h&c?F!0^ z*5D2BS`c5H8;wd1P+$!lxXQ~1h|>eaCvM>YC+4-9@I)m%QNWA)Ab>Gt$;aa>c(H;O zYr8`nvTSOI;+HukZaT3fl8O;#e9!md`Zf z`RuEP(SGiPsH5--LBOPJj65y?*hfJB^?e!Q7N9K?FmNA$7!Ixj8UMn)WBPUW)Eb7>~9(7@(#W7x>o1#X8NuX1BpUVqB&9)X(zUw#3P{5YF@nz}{XS=an4 z&TA*z=+wh;$xwydHB3!;%InU;B%0wHhg>_jK{<~J8{U$uhbsIX1fLe*<$yE7CGu?q z$#VmAQ{6*F!&JC@#DFe%Vv6K4!obMgOLUP^A!7s+H5K1Z;uImLBMN#o~>#ee)k}XhF3@nO@7j;qb6ckmn$coA>ucC5{5>`x^^R*_*`EtV@ z;2RI_I7s6@@d3z}oiwF4K#5q$3>+PB)Jh$}sTMY_TzmZON7w@}{0NQ@EbC5INKs}RxmjmG(%}U3MWKJNIhGB=`vx?W=4B+WE~)5 zRcC=pd}iTNmgWKOcg~&yu4X3U3mR@lQ|v;UWGb!L&kJs9;B?wl!;~FQwapYXpnq^{ zlT*X;y0*LktbtmXHMz^=H?pBGp7UJ}vgEP5+<~-#Ht~H9 zv%#^saLxEgvF$jy73WOuDR;jEI8GI+-|}q{_kY(16S9)0Y${wE*}5MNUtp%VH)6Zu>WDevXK6Ws z2Od{Qz+ApX!Y-f+7?@P5T`IUf$_mH+t-_S=jX7T&v7#%jO5kyB6FaMd+)LTW6;Gz@ z<|;4vC~P-1cuNDnvHhr2ZWws8@P#u^potUZeA4-&p6^<20BZwXJKQtEJAWwK$aps8 zxK-zH(3xAap4^Q)Dh3SKRQ4z4uBpv+HG{%HVj$J)Nyw$mKGN ztPRYc3G#xAEz(^(MXYtsvk33!jjoSju!E~^28|z6S z_lUlUd2KX_4}fP{8&J@DJCi{SqZHbT9RsHdi&DZY!q{eS*~ZF5m4AVn=rB*caZXUf z`lUgEgH=3meHl;F^HZ_GVs!|T8C!kTRb1#Y!%L9}{~1%gq`eE?^E8PoW}p&OSXkvE zv0|(eXf_WkS=M@&YM_J&Pk8ghFdw$pI9BqIh0B-^8;9Xx!VXsx>}yk!SP^3TL=&D6 z0AeUc_q#e(fY4RWNPj;t231ay=pI)V!Hw-y9scvkqTHg<+~S~)WsKNi+My}gAd+;6hl*!C24A}blFQ4cSAU@6>_Y+uWC{aWn-q%W zR!0EwtVV75E{MCtR9T2?&DcS%ERi%dP z49@`Hd*-kU%zq}FV0u*r^Mn<|d!?0HR0_ko1eMk;R}5ZaBEDdOBF4*u^_j$)ldLDX z?e~gfZ6#S=JmfsIQaeVlJX`K-7iKe zY(1H1(9~+o8ib{Kt-|>YbLk4&eSqdBH$ke*9f_Hx!+$V^qaJ4YF>TO3I$lCvV1UA# zoXMg&V`Y9<;WEh`>%b@|@%5X;gIA~o#%vt~E%Q0?DwFEbaa{WWf+MX9CL7qQWW!ax z!rY`6P~-pwOJFLR0ZN*!18$m!({O?~PYe_bS8t-66E$Xcn0*25s;U^g#JQ<>M%^BR zqBg34U4L5inh(!j%VbX{hUwB!%>xe%V8g(cPNff}zj+N7WQtA78sEGn-KOc4SE&g$ zkOjoXYLaEdYame39AaZtSsQS%3LJkhRF)>T5X1TXDVXL~dSe|ZO7nn;kZw3(c>x4p z!zUmcx8-AjN2Av&ZZ4B^A4u?bXn4Y^0c2_ccYmXM47tEt*On~lYQVA`Id}46_)U2z zH8$%6kcF3AlqhtI^{$vv7fx5fYXa*oG))~GhvhspLg>VpS$$t%sl)(f=rt?!g4U22 zeaLo6dRFqQOTzYTztiF&cY)W z%ztlS+2cSLmD$kW1sfQN>CY$H@FqdRtH)Wy&@C#wAdvx-(EFFq4}D*(wnYoc(qZ+q{69a+4jepNrF8%07j*30t~5f9i7|PojjHHr z6MfXU8%lsS13PYM*csyYfq&~5SjvosW^Bl~+r{zq3l>vQ_p1Vq>+P5S8si! zI7@*SGH!_AEds;FYRy}^S8r-qX1Vto0f7NS0AcS?R!Wgl5h+MZ!hZ~C6f$uGU|f|& zN@Tn}1-7IB^g#+L3aXHTs-&QTVhN13LC`UJgFkStLxRLdm?jja z$O37?47}^Y1{_8lzTt3=@IIWvrW-#$|MCkT{gSie$Ad2d3X3|45XuD`5g}xSZ*l@& z63!z{k%Cu8m~jg!N`Gb)Wnez&EVEEe0W0=RP4VGb4 zOL3U$dy2y>p9Sur<>?;AC7Zw}_-8Ho@W?X`5(!Z>Z25A?4@+^RL#{MRY(gNq3BnY`Qiy1Q#<HOr_u-V{`wD(u zDSk)~?KR}Fw{m&5P0HU5V zWSkXY!q2pr;598KiV{!;5kwrm;c!m3;r&~>)f|=_W`70UW{{v%Q;2t#ltz%`gb*jL z?znNLFt*55N3^(mb+o2^HCh!#5lvYhG}m zIfRgBo)_jVKi*PmQ%Ws_I7`Z;VsBg_%V(73Gng))y+L3D4mrU}%A8Z~CFCF8-V;`2 z#(G3XPk#t24~ky!rc*Hfk`Vdr6wRyc zG?q}(&|9RT8CaMW1_mobuoedOzcR|Gv{6W< z#ojF~ULiS(-7hk2zTt3AR`#U@FtF1Ue-WWIc3MVc0UEe? zd&jWeW(iq7i#Y_f%K~WFDkNKh=nE0n99300s;YAPhC}3mt-pZmEDFia&}chDgXgN4 zSnw$r4Y3baj(9}Cin0$DBT#`hT1Wd-M+a0#hXDfoDXIZZ;EfK!oMO>43>c`+OMmoc zUSe$Tv90a_yBSrvPgNBVLS`cYLx6x@K6}fdkryLxO44A8e0_6pWYNb7R}K z&1aJ*wvCOo@y5=^wr$(VCSTsVx4u8_hpMhVGgDJ@ru&?kb7s2d*Fxh~WB;HQpu8c) z_R$Qmtd-4QW2!f%5Dt)TkGkbv6~yY=Z?eb9JYB4Mo9{9cp*ckFaNUJK=nf@`L`Lp( zcB4F;csFg^1LRty=Bs_=TB00-HaF-xq1^%aGmN@^(Huo5o?Apiz-Q z&h7kp!1+N6?^5KDK$uV~>H9M}0pk_ZlFGysdeJSzEk%69>O2Zx=Z7n3XB!9^?3N(RB>A3710=xoX}hV6`Z?S>!awNy_cMA3FD##iL+HqKX~%%+ylY2~;a2iZi_ z8ix%*syZ#+t$^H3hK8hT#Db2-%3m_k0jlu3&v?d%E}qVFOzL-Sotk%z*KaIzHatx2kS=cr+r0SZQN*2{XEM zE=0SCO7PF29{SoxvF*@k^fnZAyb%M?OKAI!-fW#r`VgF(Zj`rO;*^K4--o!i;WbC& znT5*ylm)EZ;}^rBor{jRJ4H!>=y!!;fwXnB)A_2Us*|D`mo2kEF5e%S4PHcmVb(=_ zDRc;(3^mZ;`y7(XAZRL4BAy~vL~l8Sp2Nn8Ez&l{GEO8`%w3NDx=CCw5o-t^nuAP& zJ!+BV5pHr{HMNYWL(ov& zWLK#R(a0C2I%tEjFY(Qe=CVX`lfU`gJz~kZ2njeWFDT)W`=nfX-os^0xvLX+$m=r= zrylbPx`;!#cOOs3?Nt;_cx#Gm9q;vptv`ZD$ca1 zD;cU~etg>zz`lPPDKAXu7x4Au{1qlVw=%{1w>(}+BfXK51`iFZB`f7n45hRtnZ7=( zWwWOXYR0P2q&>o843vMVf7a{+GPfm1K-dTDD-c({58a;%gAX<}o)=!z*fkc}k{(c3 zsq}Uu|2DRKKg)fu!mkW~J0eGBqJ%Cf@ew#sDT_xFXNnObkrPqb`6V1=8D4>hCk-=9 z(g_N5L610%Xbr9CJ`y4neWNKYn#q;`k`j1}vk+#Q?_>Pl!(c8`rz<7r+Zql}*;A4p zr9hiUMFpNlP@>JxB6y|V1l2@U5Qz6ZyGQBan#F6&#q-D_|HS!@|Kp5KX&Mu^c{_ZJ zOvT1mE)28SN#pH!BpbO+_2kae1~rejA@K&x#N62V;hsiC{CH_2=;C8co-lJWPa-QR z9Fpd31i%CY5n_nK_u{mIsm9!Of{w5l@vx`l!2Bd--P-XKn^wW#y9+c$?zoBqNJ|*o~2= z&W3k_Y%p?P9PA$>OhtjCGE&{ylZa|h0$jM!br#dhjtG-S4}D10l^ z{UpW3%}5?=6M3o}A-E2RI?x*Ah9w%K2aN}@YkYT#6H7wS_YMLr>dsRCNg%&(A6#E8 z!a^S5ajqq35$E%cQVA1g`VyjS@gAVx%o8=(-0||;5@!SZpQ4~( zbD~Q&m_1(wGBK1(QiyuTeGtfc$IBT2%-+kNWR!0KN!F@SCEjsFW5Q7ee1DRxiDO7~ zz>3O$*FOghwvHD?K|hXTCyj_BftYoSC0Q#I&Pj9$^L*{akU~K!b`XR_3qBF~fq-I- zGI0A}3Ic;L-=Q2Tt`EIOGXpBz#*pYkMWZW2kw-9P{zpTo|LLnIKnG&?;eay|=RX1t zw0gi5k}Opdert%)pYK~@piSiL?sra#JmTqFgUF;XemJ5llmD%r@7(`XkM!l?ZNPv377B!i&6UJyJ zX2qbW+7{=WG_3#6QwE}}w-t&VqsWRaDwf97OWaal@?j&&QeXQ2@Xm@Idr#mu^5_=F zgK%I@L`9;wLenpZb>V%fO+K91-B`u|8Zdn57mz@Et{rk%EFlc(q~8@=FL&5BE>|I6 z@fSngNnpah1iyO#8!6thmmwqwVpJ3ZpP4-u)U!BXb?1l7(l<+ZqzqKRXmh5Emk~q} zm}LS~;BXQSQ&78!XWvMPHNHHPVvqrUXF{ujwC_CEVSqpYiu}9J8x3oT1Mg>Q#vNCh zkk`fiE$#*#L848%lFABH7RwrnA}KU1R};y=DYpq3kK93=Kfu36!YwZ3M`bHbhP>i z74sJ%3mRp;E~PG(k)*dQ1vxm>scLDP`{1s2#m^VNP)0;WqO?VVIds_y z31#I0O$>=WH;u}PJ!{CpW$_TDQXj$=sH6c2F$ZxEDyDEdK}oaA*lI$=bx77ByUAb> zne5=6voWPCg%=F9Id`o656SYT`alxs9tFJb;C8`6VHAT@(=(4D#Nm!H`z9jot7ZBb zQ?&u@Ao$Xh*2I`Dv29!0Kyx44&2GUXJxZxi)%eM3td#&#yRb`2QBa6renAC=v9C?^BBJeK7H870< z5ZsSE?(uNWIxPoQ?MyO!61iPbXMOEsY#0YKZmHsJDjrt^EQ{MX1gCQ3TV{OiiRSsD zSZ`vara<(Nk6pqtOdFbcf%2?SVfsJAem$VcS|1-=oD)=sWzI!gDmIQpIAohTOE+6 z;qe{U|GM>seHZxCmG{6nGJaE!7l97?a1@W2WmyX5 z41;2s_2b2(#kV+QgELFP3;tY6PPJS=>WxWWZRScNb~D5{ zT3I;DO_8y+E}6`-E?Q2dVTQoZ+ZAqv>mgvb@(1kokQy__E}^zg?2D&Hy&TFu{Pz6L zXu&FImWY2bPuEb+vD+YE!U3kbq)5N?h?oYRR4A5>(iHnHkzQOTcWObtu550kWWK=o zKmjVhoWs8R+8sgX%ZFahvttE+8Ygm zIABp3_)BVTiq1+rYC?rOb;Elcf+G?|NkqtmKR{}%L|c^gz)K8JX>5YpQ zKZk3gkJjjp)%=vkcZyc=DhGpHBO%;FPJzAmVCYH;4}8UNmfyp0_+h$MPs!?VxG+P` zPRF+I?T!}L}93p*mt)MUiuR$!y7+p&H=(z7kSNIu+6+&k%~NI)EwgX zui7o)vlXi4LP~nTg^5pO&DMw%49A-gtOEcVKe5kh`o>)3G59&BCvc% z9W)1AAShf308Q=zU;C*nMfsK=2FgS+F|d+u#-}|rD6I-`WB)5D`9aB^IM?R&2HQ42 z^kZ`m1l{VE=jXt4k&p((OR@y0ZFhrcx1rtClEK%J?-Vh^05n0o+*_o&|BU&D=7h9c zw9Ic8x*lE?h9b2wKGGU?T9VpEM`~UQPpb0}r~ID@$;oy(=5wO1Nh?T6m^%c*$&&e; zai>K1#LvTk9pdMu7oID=427Y-2omefUk-dZC)qCGWk00J&X$<)!%_&Kbbt5~XkS?5 z=#(q+-JSRXQK?<;|JWz$l~G6I7Y#=^u~&1-NE`tkxR#sjO#f2B00|J>MxrAUK*NJx zUe1jDalBCam_lYrL4r?Cl=;bQ%;i;ns7D^WvK++#%&9n0>BdUoqnvYtlOzfvW5g={ zK1c^1go1`6FHy$Qj};a%2*EjkB`XIWc!WmHN`}vc6lDCS&77y&A&GrlAib1giWtv= zp$ISVb+=FnKUJ@gNu9HVK2_UOSdpwaiR8wVVhRz>D(P83`cXSVEO8NEMv*aaGVhC~ zBm)Nn_#Qg_TH*A`C|de7QklhL#Trz%1Eot~$|D92Z;_KMy9C}N!i2*V#d6LXcva}t zY%&uRct#uoyTy?**(jh&dm*szy>e=qD3)~JJ-IBk#N!U7?wp_`vQV->3%y0GTvnt2 zt1k73B%q>b5JjygXLnqQ!AnCJiuH)0;wJ&@i^7!B@}r==!i9CxX1eh2rf7!)K@uor z(&5^a%m~e8!&Oa@Bz5U;kCGci6reSZY0^}&G01gyU4kge&)7@u2J~kT-N~* zivrPs#;Xytgp-IX-f%!rbks{JzV?eyQp#cJ!ds5;1ABRP8r+y{J>R-4JqY!XlRjHV zot<-akVeH}MRu5oliphN17I3FFA|0H^CKUhAv<{eP|lQ752mnC)Bk zGzzIY_Cm~Bwq|Wh6X&M=FIi^*&UC-)xv&%I&l9XKV8SQ$1F?#?z#w%9SJa3Wtu|^c z=z$S6_Cw_aAZf0)9j#;KS5;n|H!&OU*bu|p0lVR0*%V8c4 zy32CsYYjD8ON-8Qqqa8YiyRHUcsi1?ze}YwHOQ-~5;c}aZ0#(YI2+dhSvn4rznd*J z_1LSbGZ&X8{=0msVeS7%jcZH)Z{liL`~Okn8rOf(@`ao)pz3l`D7$ufP_%f?yx-S+ zi1oq{R{>5eCAdDJPn$y2aNVhksk!nW2y*@(J_S8f*s;lQ^A(F9L#kos>JVrD#CM?! zPT~vdSTRO5jVNm0$ZUS^)duxYeJimd{PAUzIuMvSC;AVRjl*4frkS!$p6?|8A^8qg*kOb%c>3|Iin5UQB8PqZiQ0QWM`nw`m5DlCO zkx=&L>Infgmo(8R|3j+2hCye5PG^8kw~0cxi9r|8wo+MCguG|p_G{K!BSs356_0b! z`VW;MS)M*zh z+1mv8r@V0JcXlV}@tW7}kNgtpCxY^Y|Ij1z#e52g{xl+OsF%Hx0tzU+85MnbycwOa zx!S7^$h~bB0_ZB*;JlLIZ2$WP08Vb2v^y?Zr{r&Tjd#d+;p$N|yTN?+O#Oe7ar_I! zN8cCLzn)<9e?w)WU;n#(?j*1a3@^Pfv{vt^o(NjT%7Yx`#^#sU!E` z+w%<;tG{ItaRHT;RTO0%)#*kQ9bPp}_iM zX@Eor8)z=~GFo|)9CnjjdXvn#ORYzyuq2W7JDOt^#ioIF&b*?exNHDkjplvsNTjhH zErI{ro3?=}$s^JJ`zxzP!7M3OC1XUPEmxOfOu2dzZQjV7l>Q1?k}{L!OpW#%MjNG$ z$bKWz{9ciQ`C38@Vgnm?gu9$O;yH{tNx_JM`JSUQ7kfkrQ0V3qGe zaKf0atKdL`=l-uh%5Cb(F4b2z(1_k=b=&yU=j}2MDp2H!)|RBtVasyni=M^1%jAfSf3V|1Ex%|v zOV=f&sqNk&)b~A(;8U;?0NulscBJ3XZ?L~+%|nneiGN|1Gq`IzI`*i?rij%J%^n=?-Fd~xqg(W z^}74qd-x~m^mTAi9@}c@R2wi$Iy~5i%1?9f@=pb8EHCtJ%jm)~bGIIH1xGC+_7G(D zJhypzmc$fbUZ59C*lNXvD}t{B0_t5Oh9(IAb`4JnO$+_9MU6W6k{<&Z!vep-f!b}( zKk+-vNG}>|Uq%=KO5Kr*_TAiFYjmhIgQjh1;OnTJ5mX~_NNO_NCjc{i1~Z<~1`W1) z5|13R1c%< zbqiDYM)tW*R`p`y`K~XommB>=A>L%QNo{&Kp!WM`rqsw+>GU)3f-reMhY)(UiRUQ} zvLCV^2SM+{#{SL=@y*#3dHUyRM-v}g9Hc>cvj#ytR-~cR*G+N2?7H1oa;4?=>gfBv z;P5tJ+=fkm36M4qnqJTs?>SFtT)%XZ=lVE-(B$W_@Td1p_TFca;Z0_%(__2J(5P+5rKjX8un-W(21w{)YjttxYysRHV0a;r;q3dTWAwz(5-Zs_xE8y zaz+v-%7Vzu`lr*g7KHLQf~fKM+9&C<=g4+<`z6PYW0lc_R$C^_g+ZSj(NN{YAzRb-P81KuNI1ojI@ovX%>odE+Z_gv`q}k0kDfJb(Mw&| zUvKkY6_@&g%q>ToHNK*U8m@wqZ_>(wV1Kp#9j)aH(wF~9ts3#%r>nYSO;|by1mlta z5H6i4c0umN`>1B`l?pmyCqrV+$@s!f4O|xdTBD2Z022P3w=BxNf3ES}sy6Vv_Fb&P z)}*8hdP05Q{~gevEN5l5e^|A+l>ByoJbhlMPc-;Rk%C$OPwM0LK<3|TvN&^lrZ;y3 zr4WITjnbS+&YyuRmY~Q#wY0|hY)fhUxz1U~z$?f2)qj(&U4x3xjcX5$a3Q)-zb z-bzTO>Yi|-_l`J9{w@sj9XxFg$WY#{o>D`Qo@N>0@TBM$6GI^W0(XIl&wBz<*EKG; z?>tY3+f#$D+GBmn7f4+c0F4sj`osew0MEt0xz|f#YAe5EQ@v!9<)n74e+xCA_h(5x z+VP$>d3J{j@Ni;spcfVW5uBc}EPAq~ASTbSo*%|P7>S}mu0zyZu#3f4f}T>o9V~F} zMW#NxZn_rsn|%_;r_xDWdPx6j7}ES;rR9(JKA@W_g&fFZ-_1{^(ViA=M12B_-8 zam>0=A*g107p#h>-=HbZp!1|G9rjG z0jxTH<^_f^(fp3m>|NG;AV^(yY!yd#M;cKxiFli1*ZTL|mv#*J90sG64RgvYqWx0; z5kxFOtEWq5`1yr0=3{;I37%UpUX_FA9+Oau@g78R#f!tKw08NfvkNmF(c1l;%XZlM?RWskEMz(CD5tvSqLrTfuyjaF}z>gPVzR;t6lzWMxV4 z?3vcf1S1`|hPuQ>l*E_kw|s9SU1tp*8AGr23syq*!mY110w9`zAVzDB17(I|L4;nD zWCM1lgeTq=eNnQCfK~Y5viAyuCyy2f9C8E+aIUJxF_t$^p)(x$>xYIHsUo1VU;=H= zckvyCiP{DZ+)F14GV4(yVtVRhi{Iz#sczn^`>ODMw}0x6fO@Yol3Q+HO%OQ)nXQ|0 z@FpMdXW-yt2k>$%tdprBRQsrfKXqMyhNKh+xC+qAH|&}6IGe=3AyGu$YM$oz6V$9V zf~nZ>oD+%iiRfWN{+ixegl{ydYOcD`^!#jB>%JJVM~J8zs`<`EEz;zVV;yjH?c~9r4a!|AAGU#zmi}zSr8fK2!-#RR?1_!*G^_<0g<(j*3q7D>$Z1v z5SVZi0+8iJ=SQ4l18$%m*!7GHV2G$GKaKNF0PJA-%YDC(*lgo$94FNLu_7mqmnDTo z9f7xN2d2DT2o7bYetvoahkJQz#gPh|I^_*w~x4FJ2aBz7;U8Yp8W;uGYMEXK?T8+Hzc;eqHnjLETPSu+9 z0OlBFN&m20&PPmO@w-;lVnUE~RNE$CSd=25UV(B^YO7U0Z`Ls^$S6;Pj;h5>>k=0D}`4~Ici0Ca!xD0d!cc#f3l_d>mOecn*ib8>e&qKp1w z-tL~T^q{L%`~JJSs_|^mj84ve3orWHZiW*C`KnY$E~{7Awx(Y)sr&EM?G|0D(5pfl^F+sCFwBjuJP_t{zd?A-^qlx*mlqarL6cnk8$)yLtrLs_xQnnZ8tZIX>yD~5n&vpEI> zhnk(9P2XFdB0beH%(bH`CIsx{$Z{%5-;rw0GPLg)DTAo$HwXntG0`4dC{5ZClNJzV z{;3SF28LaDXrvIQ4E|P9 zKG`J86aOmbpCfl84*D3WXMEAJ>s6cO&ZTP8z_49jCx^VW6cL4lP1-XRUE{d=-JG{M zYCFffmnVi+7VUPVieiwNcFy?T)q=;7$~=Br!ujNYnPp&(%M9bR6ktViANpXZwx?*Y zAJh1rLd&R!nZ0rG%1QUhrbCfvO2pr?HVnBTXZR4!8)PC@6;U?HEYd? z5rP?r9(g;S9-ScFJFe4kmfmNt$^cv+5ZJ&du5+$C&jPnn3sHDLsgv(#Mvjru;SrJ3 z$j-EOwQ$2Ab+pGa1Bfw>?l~}DhmSW$y`5iIYFI6tY0xW(tX{DkqAX(>+cLBY8P^>? zdTowxc0Eb*hjT$$v}++xAsIwofCTD&^dQXffX6|N5yX}_umW%>@CUe6Ze-q?Y5(~hEiM!TFy0&VcaQeF&@bRg8_E3m z6XJ_RQmN+f0l46iVCzWpjQmUs9d}cnT9e!AX+y(=x$+n(h@mLHgr+2`dyIQ1@$kuM z6uM)Lc2m5k;Hq_L3!romvBbBN35}4y&DPdT&t)vp#DI)oUqlKtPVrOawk?xTrFGuf0E%42$9y zJh;T6xk1zBTWt&q=BE*EA;3>f$wd#bV3vGP%IV!Osh(k5AndWdHJRgD+cT&Fd(evm z@+;s|6!>K)wT3j4{d(>w*hpoAXHXmM%|MRu(vn{Je2j%3Ql9+}&WkrWhLIYxfAu2! z$hp}UV9=@9mHmcaX5Nk&G}AAlQf2V~9%>yaPZ(f``mwCxk;du9m^xv$Of_D<;D*tY z!9B7Q54O1qWxGG)CvhI+T{k_ocghklViTblN5`AM3UA*$vo51n8!d`M|GJI8<+w@O z4Mshw`|w%9@5zX@RC zy5PgdjJ`H<BqPtwVp)`MO}nFFoMSCsPa(uH z47nJ10j;_yu?}4Z)+oJW;XGIXS5T^p%FZVjH;k4Qw-EKy;*BIEb~u7b#4hMSS_Dob z{5JNjP(Ri8N>)q3#_)xj;mQ+d_bHq^gufW*=g! zh$FEABKZEqjzCDDJFv(AnS=Pjcp|k8U6Ijyk_HjCM-`ZAzVVbMGMWzF?qBS*ee(Va z#rWed!X!+R&Tepdo00Ojg)SWwfO>HJR)e%S@DKdChLXPRT$l^Mhx<6n!poFx3~?1a z5^o|s{g;zuj^+ofmNrR{I?{ug|+J&D-{8I!%Vi9G{>)8OqSKjN{8M%Fudc zf!Y{p)e+jGxVt$K18B6gH!y9h5FW`H26I5xMs!d(&bnv7ICbnGMZXyY!1p0K9kz}m zS?oe4T%;TwpFsQd7u8=6a9-ubrEIXfqNlDXWOo9BD88$e@ zt`r~MEPb@HoKXQ297a(HfG_!C794AD4}QId)p1Dcq{udq-b}3p4%7-rssXXUQe8v$ z?NY^GEvBWq$uLESZX{qIGX3-ZrMlkkk|qL)yTvUC7(-rpR+S$2*$+uYJhI_1)Wp0r z*3%u+0ta)XM^UTtO?4CwH9d%A%moADyyF6f?q8o5AiQ5l>zB?1fPDQwr$mrh=OuUj z9BLiYYEB$dVp##~i>AEnVr0stD0(Yy?YTgfKmkrQMmOxFGoE&y*Ah2*MYYQso8CU6 ze&nYqzIW#Yj6Lqw2@k$XTE19~1SmCF{QXw*aAlu;Mu<=s_oDl~qOf9qxuz2zd~Em5 z96K~f5{EhAg;i=)z&kRTcDWtybsOyzL}!;0Y{dTI&}O#FhMRNm^A)HO`hlUFfI#a> zP7^X>(s(?WWuPe403rjH$!N<+nYs6-ZDbz{%sWqf8?w>;Y%bq`s7Ze2#kC743| zWrINnO(gvL>Xfuz^H9Tn%_H|H0%}(h(FurSLPk_ zBaFv)r**tFwrqUNI;XOY=BrmN@8u zE*5i~bbJ-?o3a>esi*c@vXOL!UCv zh(&$KS%JsG@uNjWi#QNo{O>)gZy2j7ff%P4H-d>_z%5}(m?MGt>l)PnWNr&}=}OiJ zE|0y9q^vLhEzOVGqC>*~wSq@JN8J6-OO{sLuwIODVRpij_rbKXzR*n->vTrl8h7#Z z@Q=Ia<;QEilCs4rCL$c40M2J9;HWiPupmUB?{bCwQH*D5+wqrQp=t;)<+~3glBv18 zSf#Q6&e$qv|0r_aZ-lka()zwd3_kHIJt;Iav`96$CVG>zwdIkleYQj5-b z`W#6Siz_F(PA3WE(7ZR=3`>t%0|+Fz-8M+55ixAT;r{X5_WR(S`v%cwDGcEXzP?Nz z63~HmNlf`%#~??Nus&OZR$fd*^2gO41HI7zCHH+4eH#1}zn*QzQ8Lik^|x$-pj%U) zQ*(U;WQLPdbQR~p9g5Z62DCiu?j+!WErf9`Trc0`@i4K{^r?ypkA5c1S2%;4`teW84M6X`gv^nH4H#at6MZb-|UcXlzP<>3XC2NR?zdPYLz11-jg_OzNsHh3qJYHj|dW;Fq ze?(?7i3=)%EXbBKLl4ar&2bPA8S>`<#W>tj_cL-97IAL5yian9#J?kq0YZ`1-jS0@ zDp5XhliC*HS!36atc|RxY_j3l$dwJi89M7qLng~26tf^&ZfK)V%nSvxC?3$DcU`Oy zs$;+i3q$SQ=4aWjpDnc4e}o|S&pc3MjbH3BrbKgKf7}aQe$r_iy-4_!4f;LUT0o0x zXY?dhNGx%{90%sZUL#EO0{oBShwfKt9^O-hSB*?<|C}tbJ-G*M8J@YtL!Jc1Tb{Bv z=h_s3JR__Q&yNqSVQ&55uF3Pnq(QBAUlA3k?()`Mokb90e?IaosQ$P7q+_xf)}>Sa zdG}s5er3?Iwnr~=6`khfpQFO;^KxxCpN=<%*U1a_(hw*! zUh9giI<8J=LdjOy0hl0oy4bkO(h5@gR&%og1xAPyv%|g?y66LU#`k(^lcs^w`NebF zgX>yCgT0fnz6LRSeKU4_ngWz3r)rUV4K@nIexyYAOI|fyvrko8%*#fr74?3u?r)!k zjaDWy0nT|`xV(j!MZZkj2OL^m-A)=vL>I_=Z>~N~XlCvV0V$`_ORU1Z=sjCMO8??; zOK3mTdpR$y8h8hV@?#v1UlAIO)ueQsNj`tPdbV)@bSnhQlm_!gUB$;X+b4~gLl3Sr zQk)%vr_+eVA=sCitun~k8}kW$#>7_LLCk9CRtUXe8|VV^or65T_mhnNAji3YXJ{0D ztO@Ne;hLbl12Tr{vnyCS9`#L>xS&^+#^V&EBYK6xp3q5aHo{p15PM(u0x${9ZGKod z{eH;nlCZMk!%AltKD%;x9bcxjK^{z8RXAb`nNRgu1%A>yC1`%{Zth5QS5AySc($=I ze=W)%9_k5<$CvbY8OgO&KDB)VZB6U;=LEQzK}4SF0l-YX(M=6$;2GPBh0gmXoQGmI z$jknOAR>1*u4(J}z2v6e7w)$_&6<3sJaT77d1CDQMDpAv>8XNRFd?m?Z{DjL`X#?>HG;Jb!Dy9G*FWsvR4gFskHalE7zY772u>PcWC@_G@ALr1B=$# zC`a}09kA8|uPAoir4m8DUs6U%pK-9YyCgXO(r zF<1=}t!#!7QG@=M@4Z7g-%@%ij56j1G|WC)!IL6&G8jWpXEJnQBg@3>@< z%GUP1PR28#AyqFZ(y^7CNmB-8F^REaS$1(frVP{w&BNPs))h|B@kUdt-PeVm8hUWa zsmX~Nt$F+g6MO(?PTdtWx-B}>lsJ2I8DviKT2TTadgL=W*8`)LSSlJdrm5o`bP(Kt z1i&vuoya?9k0MAdrr zyj$Mg)Kkexsn-29eTjV86fxJ|`9T6DJ$RiNwQZH&{do~v*EGxpgUSv)T^cyb)AbbH zQAB0aAX>0I1NS&ZBAcShQ#834A7enzn?$IwuHdvClj*e~B_WCnRp(X+ss z=xKWEl^)>9b{>l)-E7>C%wbdE^J&-D^F4O9e1*4XGHd%=MCGo?UEcd9f#$zXr}!-K z9!2Kw%3{!Ix~~gE!i+K3c|GNJP;2@N%V6^{;${33PU{^#ImFG=+mC$59hWf+%mC!s zejYJGR#-FHi+^2l8CKhb(|Hv?Z;(2|hgABgMrwR)h1>fk5n1)uN6#X1Zs*&)G)+%gy z2K)vvX^lz(QiV0OvhwA;MWx+9=m1!}9LtFg#qrmKdRss5k)4my-k8{ z#1h~}8sof4H=ue@N^O`WV0{?Yp?`gkc>j2>qk%V%hDqMr^b$-3l0In69ss1C!0m2i z@~w216YsIJm#izhx3%KdXLZD3Gr=`jOSX$pI{f9b+Vq`Ai6i%1fOq-T)2a@?9w|qo z!I>v>V|NQkEB)mcvqnuK8uL4Q+mqI+axqf-+$mt2oll?Kfdn=FZI_VEy1 zB8tM~XYT~DLO%z|BE#Eg2Y||5ITh-WXKZ66$dpKFLX>37yo%RgZrQGR(uQ!4A5A2fX}~+yH(FeTWRv}t&CKre2rSqysr9!*Dl-@P5ct8nIzYk!+CY7*bNwF zWR@p+q1y~d5Fo{hrhWU3!S`6-<4;Hu;Ff*mBsuf&o1U&)@~G>4l&Y4A!-FXLUfUmy zS3fRJdW^}zaHq;_1LT0SEu5#1u5LFsACqb=D(as+uu`p|;5Bbmex3Sns%`!mHet*7HLOCbsy4Z_E7X{4pqw0Nc?8+^vUtL0+l|T@@iG zRtz#eD-Nj(IxvG;{+tg8Tw0N%0S9#qfB>fc&Z2!P_xkcw>(PF*tb zh?H!To&~vP03wFe;;Cy}LTO`r4zC-^U$@^UH?2?2sqaHIW0LE!JcFthZ4bJ^gonnt zUhVe1^-IIA+j=AM(irs$GgYWlW7#@%t&?2fyp=OTE=#C_#tREBaMh_S(MsM`tTkTE ztAsf}O(Nk(%nLd#_AT5z{-OFrv)m=8y_69k0}moc0Gsy5A~fYYEv&yA%|n@b)WvyI z3p5fV`0d;ek+7F24crN3S$iclat@8Jh3>%Gmv$e4EI(wjVMn{1SBg%WS57D0s5uT1LfB~`lvAJdoXU=rFPux0-_tIiDqOCyItn89j$uobh&9>LTwIcK16dM zps&@3%A~S$6c>#FCyn|`Kt3WOrWn~KeycF?QlW9{B{f6$7`Uka^lMECG!j4iM&X{kSV zo!hxZ`Enj2abm*_c_PRaiqHPBTrErI$y%riBfLeXZ!Giwex;2l;>#^A7+CY>u|(ky zBYi?fYN`kavM=R0VO;f*4P24pTb(>IO|3!OQ|^_!-Cl(>U5NjidA0GwrsNUq17y&v zG|9IUBda?k7S=4`O}59JrDS9e=47?4PH7!BSllb6c7%E>AD$EJx4EulX=3r2OHcakFB;4`;g<#Mz zbt7{B&F@Id<=ozK7C{Mw0(^{9=MY?zgwCrE+}{3KR}ZnJ+A~Q_*Z+;8%h#n$bI;Ny zQYU$ou7HXD7CKAiEy%WjkI>Vr8&ikh%t|Nq0{BT_NG^m>wvEJ6y9w6Sh#l&S?$VQr; zY3jI$^w3=rmR9c6Qz0JVOAwuyzM(io57zQ8G<{RMe+{}>1bnKQD?SrR$`-2Y2P<9e zc4+p<R162CseTJ8^oo40zn*nGgLQ%fYZ8VPpBwGM ze@{x8Ob!%356k=N0f=PN>hV=To~`gR?T^t@*6fJh7=0ElTelnC?kD&72i_epKeme` z+Jhxi5_$*mFWyCCmCV4s6=1reK|U;W1j-H-o?XWy|MDr@x>aA(48s0Lelu^vm|L=u zM-6z5b_n%uWYn~Z9XhLg*@adKyu;?c;v9Ckh<+sye?h{62Z-HrJ7FB7i^-jz{ccYUndg@^E{W0Ar}`OGMvW!IjP00*nqG$ zs#u$Pm0y5HrT%tW|GvQKaH=TYYce9~GAmC8;LuAsN;b69%R?_6Mc4?X0Fo2Nw zM&$BOim-Y|$A+0oV>XT@h=3TB;9XvC<=(#+2(#MoLEM7Lp(OxRX(G2@c_xPlxs#^; z?b4a;y)f7;O$1RbZv>oOU|W6D<1e_JTCp(~|7YvT{g;~7qs7NBXTBNyD(Ul5jKQYb zYCyMcyGlEmZ*%G~wlsL%!a^B-7{feaEx^oz$BmkLQ1(e4*Pll&E?F|AVEAbPRP zDQBy+eV&5?L!ASu!iGRN8yusW`LL2w?zWnIIyG`PJtQpBH1%>vq*V_LMP z@4z)^D9{Egc!={TJ0Kj4;+sC;=Hl*5iUbUb!Qf!z^Tdi9QN=kOmQmFomDoTFV#N8n z(=@B9*Q70^(95nmN1D_Vqh|^nRDVM}Iqa8%mq`b`!zB4%0BAs$zx!rr5w;Q_8D4C! zSVjYXsEtDSPx?550f_>b{+PTHumV^XgL-Yv30l_ovz93^HvP|%+G$Xuy0TIJS+e#_bFyNfLyDfn(ZNxNPI&=+MnErr z@kW`Y6_iHdMlf&G4)Ad*?5)(FWH;0}NC)RK*(e1~GdSm2AxUhsmADCtvKPKql} zWOj!{3pjI!WLhMO;UEMO}lJ2P= zeh`aur3MwXWz#AWxj;(K$nYJ8 zdSUb*##P840e8Z7=;NXHGu$ovHQ&ius(|R^sIk%kg9N#$o}d26cDZ`x4A~(m@1Xm) zmc;AP!Yg-ZP#)H8!yXzpr22+&)2m+@*|^m}$nW5FW-ocacKX)q0v6{(WKP0ToN-u zgt7W2LnywPkQL8uU`|lig*!lIz6$^i6cUX98&yV21FEs%z7e9^YyJHDZXXazouUJFS8_^jB$ljweq=&F5cG6w-%IZ_bVj;Np@9+||NPg5R>uS;Y7mm!FxS@jin|$7gZLI%*Yii=XIj zof3a^k|a((3%+XSMfx6IK+oaGCIpNz(>q+&2g|z&^vct68!ApOoqyz;LQ&p0(02kE z{!20oOT)^4Q!g~O-!x^_Z5G?wBpj{Xe~^_mnrGPMFrx4aK3uoNk_en9?$d04FcGF+ zsELMnBUa6{*G(t=J!k=4jsDE{=ki7A>)$9UQ2Rj?q>?f$l%(5Sqsv-5;(C-qPbZ}m zEqF;UXI9k{p}~*ael#9@C#p2{!Y>WM)C&V&4@3=r9Rvre=i%SZPmXImUcvP})%QdQ zn5A6AQ3o?sn*58FM-3LJP7bs>D1))aRwxhlXJX%hQw9k%B4(q{7eE&_vJ7y$X~C9b zTR+RBy@44@Y$~*s?l+jUd1xaQ$OEv!>{IK%mr3nX*MCvj>DG4e70=6VS9azjB?k&0 zqwI=*v|g#5xiYH9cHlsgIcZTzE4p7(2DK+xpK15hJKsffp*mE|i$nRjh-n}-7>nV*?sgh^3kX)-}&T#^yqq#&% zrAln9JqyVPBx=E*_iCSE07N97i+j{6SPyi6iJ+6qgOGecQ6YD3Ay877%i??Yd4Ew6 zzFP#1T`mto@&OBd9WF!{)iHGI(7Nh!g>u+pP`)=f4sl0eR8-T*tx3k-Ah*%p3& zZgXPRvo}(rj`$a%guA#*xUj_7%z9I2AwV@bnTM2lSe$wEg_=i{c~qQPck{uT6=ha7 zvsoS#dNV?Jw(BCb)c@nrp(XV{9-MK1I7z&)JW?xy#$ZMGE20DB`^e^_%RbdXwclU zWzLqXiB?E0J!2i_N1(VMu+Ii!SQi?#4Pd)&!Xi#bgju+PPsNEBqHGJ=5hYcB5-m~E zR;`!W|FuTrRUEGukPux*L zx@C0Dq+=M^ZQQs8G#TiBWMTnWEw;%F$8vT(rj$ol#%zd5S_X>M@V+fZi&t<--`I&p zMK>~S+50`YZX;HAolwa(hI>5;LkE|5nj(wJ6^JdW?h+#LTP$oFJHf0dB+=F8!Zo^L zN655@=8l~;AT;(Qgv`L~X)7jTd%1sRNaY=wR4Hed$^oR7C_&+Wu%5ok^L^3-8%l2{G&v~UmT8QXFRu~hK;(yz^N zN}9nXszzvrAZ1RPbDKQDYegL zlum1VSeywJ5CE1kaz~4EvG#AyqAB{9=9V5qE%0J%m2@7&>$MStk=@uG==UH{v_vVd z3YDj%K?nl3nW@x`R%V6>IARlMXtcCRBT|ipj8Gw|&1@-u3#yV$W`nYlvh)n0EHV4D zl*Lp1&ybHtrpqq#NJJK$DFe>Kkl-&3O)0P27C>P(4F6eo{^N%8%;On(A!q4gn+bux zy3ybp9a_yTrXv1}O|I835-G)KqV3pe;z1^Ch1 z@}+P$a-)z-Kmht*0eQJ5@Oz9PdHCvK%w^E6DjF$&g#$TRcA>H&Rx{+w7tST*z@`V! z;I)$Jg;o`*FA=%Sl~MVq*KJa{iVH8=Z*bC?9OW-%$#Xe3-%`D)PSd=Fnk+tCu3qIU zQ8G20Bb`mVq*Qa1%zmusgQ5d}MX+(611nBrL;@wkaU1W+Yf2^onRL^zD`N>OEQQAf zjDya9s|h4-7wX|IVl9lmY}+|aAr?-ZS+>8F7@Pyk4sa2Vbz}!qiPKwa5zv-wSQ1{X zzthbu8KBd8iq(U=uA5&}C3n@NC$nT(P;QF~+UAt!R^>VIY((TnNQc8$jr6Q%sZf zb|o9Fd``;Edlx%K%PDxp#Q$=fffln{oAD2oYf99_WVzsciM~v|!BAs= zyEP>qPpsHn-1O?bj8oE&oz6>^I z#q(z?qM@+}`5ZuE+FRkp=iD}$7fNt{q%LxC9T?3O0bbLzmH}>sSGk4Lw&)uex2&We zeh}8<&}3qCP3`DamWZg{i*0J(R}dYyOL;cDOg$`|e;ITv17~sDEf6I<%B2A}^yJ9$ zJr1#Au1!Fix4@NA!9V;!2nhFM@G}kJMdNYsaqqe3IZnO^ev94LLy|)_&yUA{Y1`O! zhNQwmGm(Q}9LOkL5N#AK`n2nRXrX5mMH1RXJ2C=Z`EoN6Ye{@9Y~?k*Rd#p&U=8d^ z=hAZjXx0bi6ToDf6SP{_Yq#8`E4K+*Iq1WJ$l{^0^bY-jf?O#EN-%r}-96!rUz&Jy z@)6xwq1%m2_pQj>9X=w=nxvV3EjKXHhyj*(&Kt?{Z{TYV5x!JXe%ZN^=_zf%^yISm z^iVN8`<4m;QXU2>M+CKO+fbhjv2?;qGY_4k3XBh~@awz=pG+BmG=>@_)M!(gaY%?m z_9C`}w)U;XQZJF*5u}#*GNm+LuyCzG##vL4HA>v}ZmfygV1dx0tvzdb}QvfUwZBKdI$lrz3A zWWHRQkvc9GxHzugR%*5ZLznx!nj(P{MqE_@3jxA4>VZx0W4 zdk1^H)3eV0!3W2hLFq-ku7YsnB|%t61p)=*4uY7jCXI$@yn6L=wXxc$*R|NbRIS%N z<)mG!tqM=wNk2%%i|na|%IEN>o{Fzi5vKmP=7m{XCr`6~wklYMa=uXyCTr$eQjiQ+ znFs0D7Me@_m1TdS1&>EJGm%bFO($+(tL zrCb#cC)Fr|9@!jEtMz(ZN@Ng*_w+!*Qz{<79GgpJo0#TLS*H7SIq1=wFMZMY^H~!a zdb5QhumGr!S=Skz;uQ8U!iQG?Amqo1=LI&iAIb+4BTZ1 z5vTw5rXC^gH)kqB5mb1$HgI6RhJ|^fy1G_vuIH*)NLFhKKk+~coaK8t4JlZEJk8^= z>WkHXtk+h>bpk1ne5^G{=5jTUR4Zp=nFP>s?u7uy=IYBvo zyS3$^yIYGH{5n!BuDf@#57U>1Ovj&sFk}?K1j%>f!KC$i=?R20%RJoiNya1g3K_b` zIX>9n7*gGD0el1ML5~+QWmRgNx3dzIRs)pvzpZiGv1h%=H?zXHzXpvw)J>7%f!%kAsVM zUmB=|EEY z*bz@lPjR3ADeHo__d+?}3laF@g&+?-=rFPvG4vG6=*mXevI5@bI+#g&ORz|kZqhs? zO{cRiQb=@=wb*3346gWjvVHRhVIY1+I7Uhnb(j?~yRt%hFUxOJ>h045D>Z;2U-3uLYj+Shi zAAYc>*R`CAAOeU>Fzx>P&$JAeKeFM_?J@yQyG#%P1w-amW+S(4S@||Qr@w%IvDlN?fKGT)yk!|t+xblp{tM5 zi2t-}h9+pcHfGKjb@7XYTeQSNnlG*g|Mjls8^AM&N7EToO@Q)q&R$#3%MTZ?Lb+58 zQ@rq2ls-`d-thbD(sx>PCd>kVK^F?VOeYhXhqN!;t3DbBU25(QxK3XZj6?L+YiTL7 zQ$drH>;=9V#l_n1fN9k49*9%7tgfkZynC{DaEu}lzG&JX^H5EXoq z{BF%OJ2$`W_}Y1ny5j1`Ns!zcb0SQ|TcVT;&C`^YD22f&NTqM`(p?G0uJ2vsx@iC0 zBLuT`w*e#F?DpQ?S?3%>;rV_dm1#r!`1s_aO~#x*(BOJe6!TSo?&@q5n%t+ShaG?r z8fL7e%Jx}@sz{`*~L>`^GpbeC3GFVWkUDD`y(Z`uj9y!+}oeePu?HzA>u~GlgKw^9ANPKff;u)k3x3h5Da6!#1fm-Cwspk zJob(0*|!+{z8U#{x9=}5PL2^WNmIfy;z)PfrvMhv#3Pk2y13oW@kNKQM?wT>LQkmM zIP5X}fpJM=o^tS5&D=NC+~ zwQ*ci*iricHNYCD?!;01@Zjg;qxKn=s*x84HxX>k*x0kbzwe+^BQNOMs3~2>d82idmSaD?2_hGcbzH90XDvpPcWW9nex2 z#fl%0>FVtKVC!|dpc9OjB}FHv7Y5hjaq42*iJ^I{6v+${h!&_7>OO6swK2)aUX}?v zY#$u!&W}SFR?QwHozk2i(}br2&afOLW<5B6L)nQb{0!hr3|gLDfDk6Bp@V1d--42B zBjQvTfM&pNVPYYI_MUfkH62&dWh2fzhn-zir(`Gxrpoh^_h-Zi@QJ(b-}zDd5D-+b z`(eUP+du_1_6#z>($O!#Oo-oZ4Pu^OoShJ}qS7R`tjhVtZ?t-n#bZd&(LEv8Nt-IO$V5%Z2h=szoo+Hd_^a^c+1OP>a2Sgoukvk_63?~9)pm%{x2mF5WS@OC5SgR<)2NNG+pq0lJnNx(0>XnC@xf z4a`ixplVSkjWp)6naJ-k7!!;HBLT60zs%=Sz^`qTKJ`#M1^k2N+#O9h3ixmY7|urH z1(x*uw6lBAKJ0Z4J5URevG141=QU8@tCn+9`||smX1A_dA~T^3v_ll}QiU;Ropy0J zaaDy;V62KFz&WYwjv1@MsKb-pUx=3~j6K==tuXwoFqAl}q8QC46h;w$e^nTB z0_ZP+*)Uc`aeI4(q0CPeMjaIPWbfeD!qkNg+AD-PQSzcf3_n#IXE>?{V&9(?4nFfx zg?UcSjtaxU0X!IS-YM+UyGButcg@1kwZhQ#!qAPv(9OcoPP=fBL5DhpgZYjYzrwPL z)AO`nLOkZ0ipn`S`nfO|tXENg#Nk14=zBv4%kVYN1 z3#Wo+Rfrj;Z zeIb(k<85InAC3(65PP7lS7Om;Y24zne^fYQk4}mja#TDe&kNIni!O@Di*Iy_#kQXR z3c8cMA-Md$_8>I#8|tDeA&AITL;|VhOQ!3a8>@~9vj3`1FX$;F{hIHS5HheLonBin zR~wrZydzW+N9M@0*V%7>zdyX_ot~UoChj^Nw?vavZQaDUxcum*6Zz^NK?)tjtY0VruNGB3Z>N-jxNn9Sz9m<8SS=LL34=DZ#JEG9`Ps^VgQD8>7;!xbn7hBnzm zs!5m%(n~!_LWU(&%4J$&xx1fDRso|WLy0@BvwM*ay;NxP70}icvf&mOwUR1@V(WBB z1`o7G<@aZYHF0n)qF5IYD5y>14vM=V3}O2M`i)29^j?FSRovM#ZoKtD<@<5+J_*Z{ zL?8TFl<^s7^rJ3+bR0^yt%l(pi&&huMX;IAMW(Nqlt%HZMkP@k5AGl)ZB3|X7%O9H zi13dRArPk`)RH*CE21nC+VByHLl50FTZn4}019EgvoV>i4{np2(wwtslq!{eBn{qs zaa2k*c;BBLDsdO2!*~My(5!}74Tf?=8n01JjTBry`M>Ocy?a|5NtP%4xBV%?bZ<$3 zkPyCrsOKPHesCQHW+|H zrc|7~SiD<*PmV&upOAtarOuHpk4OjSu*@!3Ovwji}!;3R2(m?yN zY#L{D<{DIO6HiTP&-*t2yFXt22#p|$bZ}ifpKppLO+H^cLwIAoQxuF*0_=3m+c2Xo z7upJACcu_)wSR~e7~u?d05;Uf47UeLhyXt$NxNGR=0cSU;0SObI8hKTzZJ<$U)tQl zO~ht@=4xc~kwxZnPUC*GzoR_roEcYW2h}9m%I0*Rg<0ZH3dd8v2M$L3k@R5Z3nv@@ z#$?6})((fzI9;L$behj}-Jj8T5m6fN|ZJ1=Z-d!reN@t&{Auv)INU*RDthl2CrW z*0sf-oRnd=C15IVYm$iQS&M^G}N@7O1m=50xAkY9OP6RGWEo zRjPIr1Wcgr+i`MfO=JVuupQV6NX>wHfAJkrXl8 z;%G8)HTA$=8=Q<=y$i}>t=Rzkr4!0>Zf)J!wMT3By{yVw2Xy8oCUg8iVNh`d4&p4_ zw-**E#p<45PwqeF1j#eiLYR7gkk(a%UHzdfiu12dcyseL7fFCKRCF$kFKU-hvlos$ z48uHkof!z5Uy?YwraT64!V03yA`kSJZ!*FicEOkgIU;_{hB>}_=T77JO) zdGg})`1s`Hw7K}Fr_WE9n$OqW|9^VC60H2Ox$c7p@zUbb;&Ym7_2kn7r{2%G{#xKwQ{d94$are$?`(qNu&Bj;c>Ave~_1Y`5Z!fk#Pf)N7i*1<# zHP4O9dI68*3rg`_yB%wPKRb9FoZ$wI!BD#*MQ2{J^~k>Ss)k01W*vU}$_q{zB< z57$<^k6pV_kiCim_!ZZ+U3>WW@q@w>|BH<;K^}6hpWeL-Z@giW_U#tjiJsoYr6of) z;R(cEMkKA@nfX0qF~0aftv84Y>p#U1QW|vW-6^J}T3dI$GB|F3rrPQ0$2oIDnyH^U zAnC1cZq#(XODk`@+S}jSJ|h>a2Bp4;DHr1%pvA_QZSOn3$7Q}Rckh(f(?uca!mF^h zui|N@^J>v~=38YXO(IG4tj%+SBGr`iejLU~bCX%fM3qi0(_LL`8KjcGL!~ar${v@A9l_p-yo-yFa`g>7tb6{b51 zH6i&fudGaO8{J1^p`jVlo<`A}PoM-L*AjN_6OwD^S$p_@Na#_4S}Qfy)gb`_BpF>G z{;sUevA5FPx<=+a;}92s*YWFD$i@sBNaS#P|1FdCU^+gh2a7}3IE+2mR4|xCK@Nu{ z?sXN$_t&Ibr(=E%<3VzjneM7NpN7%EbXOlfegxqaZ$wI0@7kmm6%0j@qPuL?9zHUB z+S_;U+^HRZ^1+k)-SUw2LvKfn)LJb~1esuTF9o`<@?wR4VHLdEoxo_4DNP>=*b|Tgy zyVlt1mG~3^dfYhN-+bRYKuFY9Z+~lNd#i_kZ@znf_kR1gy?y-qb?2#oRTSNylV)gzBirU5t+W}|Q- zWZ(l`T1A;28QWgwZLw7!OD zO~HMM{rdfMkt{&_w069DO3WFj@{ZQj(xa)<3Jq~Ft?dxoxI97N@=L~uB4yNN2khyrPU`+&L5%G$$6O*)rcfQ(99E0lb>D;z#U z>-?VeQ)}a|zki0B>+A2Ad3SXc|5;mG{rY?Q`7-}Xqke@1{k4C6aTUg2qcEO+?u7h; zuAiiQBH$klY?pUONJyK?pG1Y8ZOIYcE*3<7PzrFL&>hCRxX0$_K7>_fD1%kW7T5FN=G-)UOG$Zkas4ZiiWr z=hw~d;^HEAwrTpKo!1r@7w6d09zXf{k(aQASM;xxolEPQC-Opo|55Q6W+$!X#jm+< zD2a*cyKES{D+LEL^W}>f2OpCZ^&rN7=QeGbaTxo5PEZP7znX8~?k;tTph^%^=CMHuOW|No3c} zgGZ}fFz*MC+THf5yZcazw9}*~*xI*6{A2CgVu#BKmgfYcLWVfUUcepi2pU#@A-mlX zBsh_CeB5PLMqdRd-q$t$3eF;OMTvjnkyOUdEVFEngGrNaB{yzN+!I%}9B=?CaLSTU zS{pD4!0y*B{VIUEU)N4m2K7ngi=lJ4WKyZ2uDr_(BDxohZ-LBlYsN$tJds8RJBRZ&uAX@3Apu*c&E`LCgp7S4&~dAGt?iz4Sa0Aja2X}-#S7uw`+BCm^7|7FiWa3}#AK10B z1nP$64jX1|b!~O^(Hg{e?Rc3{xDpG!H*wTBSs90)?O-LD*fhwKG$RmY6Dw1hF0PsK zk5G7YL67cdUG2{-Dziv^0i#Qfim{#;F0@5&*LmW!$5$D@osL;;KU{6EnyVmVK{K-h z_@T&Y@=jgLoKJIqF6o?^z-0Df7)+yFo~+)`{5s=tD{nI;WPYFBNNC=G^e&!*#nloP z6%ubxF4D2Me{Q$w2C^D;c=ktU`*P_G~`6R%S(bjM53>Icc-$3R8#aS?vdg(W|CVwunox5gt7rm!im~EzM za4ldqDI^Sk)a0z7x=6PA@pmydK5kJ41RC8Nr2$2-&PEPp-bd3+&Of%y`E_phhC_1r zVmmocTKsN)`Q?`lvx?viSii@?=N%hgke6L@{;`dQ^23TZ8k&Rc7R{d(b>s6 zCp5IiI6 zHstrZ`?1)hyW|FOC9~K)~?x( z$Acz!T6{|W%$&#gZ7|tN;%qv$={$ey?vsbz2aD~Q_A<^SAU<7ZOYJ^-vIe^=%{R<{ zp5D#VYr1ZRb1k}09zS_R4ke(Yd&8`4KZjYK9bCtKoPGR~+FHEUr<*7Sq^NPK~ju@$Tb`2Zlk=RyAyl(~HiI~`_)a}~c_kcb@e z1bLNjVT>0xzp^&oqlZnH#Gpfwa51R}&v4RAldBA>O62WsnP8eH-*_y~i)q6w;KKrT zzGL176YTgfjI5zUktYNo?m5(dILd=C#y{DV7eR9sqgou}4c(+jKt`aFPs)uWbKdoF zFu}^%p&FwQm>kcH(~V_&W3gKgIt(l*5fE`>GY%#UODaju-v$#XJby>t>~&-a5%N6g ze9V&g`1jW7GE#UvdeG`HpzqQ!NyGfwAnG5&Rf?>;_R<=T5=eD?{uQTx_zi^*q}T}P zOR-(r>1{Bnd@U$D%zE()-Xp2u42I!5h~a`;kZmOCu8?viFI{a9?031j(1+{ZR0-vZ zthH5fe-RH~ZSwcGJ8$xQf&+-a2)cCjbT+8vy(SN%=MTN*7vb^6529%CnyBgpS0atR zklJ`)Q=2X~)l!2hlrrV%xq%rNVIt&mTdda09nMosYnl1OvQ0{Q_@E z&cWs_T7gR9>VhjEUHI^*W`-FP_C}GYlYIvmdLPJ26cW)xkTbb2sY^4sm3y=h{34z%TwJOy40-X z9)6TrbMTkVzXOgdYXXo$Oq3#*m@E@?`gsIt9nbRe1;Z2p68}6(+sVYn&Bp8P!$yl} zr)4@zOD4#FAWJWGSniRS1MZO7c+ezv?jJ1-1-iLD$b+13nFnAc_&v*me3}shSz9gT zf%R6;17wpV&Md0$=-_fB3!lG|xKDfG$e2*HhxneWFtaVP*{UGL2>}H?-n^B!0u9&_ z<$$akAb2kT-Q~`b2`^%jFym`OB5el2T2w?g6M@-(aFU%=6D}l6gg<2l3E?SFh$KWV z+moc%eCp02?xuD)jSSU2F#$aqa4aRKFNDo7Hl#$ar4-W)+qP|V;Lv7f93ZSRNOO(> zSdhGg3y26^&?C06SO{36k=++ikM?((Xx2j1B%=xEvUifHXNLt=I zevJ;oRMcJCTP_wFl}@^_I#6=w_mj@a)rs;?H;|*gPRD1H>mA}ov^wF2I@t1tX>=sp zrBI0ifQUA5?$l;UbZMLOL1Y{|=lIUaN#~+}g>eaZknDeO=(1p_H<)|iW3Ty1z#9$Z zVxM19jWgktB>`N|jVV~1VO8$!oN9(u@zkvfe`0ns!=M~sW`kPHFskSBbHRQLJWX6# zX+xYvttOK+xeO^hCy-as+koO;5t(-x2E>mYq6{Z=)BA^rkRD}tx!7PpIu&rg3!CqM zTZVvtZ!Wk&7F=K__;&68<_z)o6>kt_s&tLH*B{U3wg;mN?Npk$?#z@ursz5ouY}IM z(=i(01GGql4G)M%Gmoi9nBj)VJa~xVlULgY4;22eZWx4pL z*$QH)c9Tn+rr}^bJ)TC?$0N8{>42R2~0{P-Z2OI~JwxJXSqy<5G zO1kOJt+Am512dvE^8xui4KUn)Uk>(mWhT=MEy=f46~EJYb4CLxb?50!F%X%5(`i3X z(#3X3fl(l;{w?7tI2NC}mxT9gJ@S~jql;?43VARw?<1xk+wLT) zx`STgd3-_WgUqd-9Z_c{RmS2;N8AQH1cH(YKp<4;d74JVWr=A7SC|NY8Pt{83ZsxK zf97Y+sL^OO7R|CNlkM8caD|??nerShv%m_j1%yD0ErD)fGc&n^2WT$Y1LrQVEC~|p z;e&FtzeCG)5Xu5E2iy03xr|#O`W2_FxUi~#$};sBdkneK$Js&exgpV4H%yp^@)F+y z$p+AA8m-Sj!|5c)!NmK2gi(Plk(2es3<6;4d6#fuzUD;!QA7L=@v7}S*2ZlHpPpsJ z5Z!WgDV>hlf?gZAZwkk=a4@7JL8?nf#_lN#es^KvLt0GOj_L7>w#+KdORJXK`7 zQQS%dIN2nC=lUsh9+BO?NS7TNmptu&8?QZ0BSt^I(H7wC=wMQR3s3<897WmKMY|&s zPN!pbl3+ll6-H%-cyAO((Rx> zDl!7_a4i%1efh3`c3jb8L;heg>2XNZr(zwpS$mepYJ*ov z>W)2hhFG*()`Xd2QQFNY|AG`3uqX(zl22HWnIT+OB%zWHMgpR16-p!EF@`!xrYT0| zq&+Rjm;Di^VCo0c3@LgDIAU&|ag7dY7&F%+HCaGsHYU3p?H4?;Lzo3Yh;7r$O~}vV zPRE>E*cpg_b0R|ubQ-oFW<|wdRd$sIfl&*tyO+Vm)Ip}zf3=508%;~_gADX%-BaNP zH3cW;wXD5tX?)0CbU@Nzn=YwYCd zH2&1d(tc-bvn;rmSS;9!`9KB$A zhZYF!O^}=B@$b#kV{QK6)U22;Z=LM0>~BLCf(%AHNcYq%n}%spP9qUx zlo*#yW4&RPg{TzpHl1|&W*qBiGY}-fV#q}?Td}-OG-6_#;lWixKWF7iZGTGPId>rf z+>H0{!}a$qxlAjJ5(I6|Ea0s(gj`vZ_u{gkB=)W`6>C9Q;Hw-#?rr&w`_bQLujxJYanQSCX3q5m_|Lj=baOE!^X!>Px9C3MpLJT^ zL%&0@kFz_uK$H5dby`;8I(4moF5I0QI%3n9sv{637v%rS`KloB* z0dU>LPm0q{$Gk!nOk!0yIp@}#2mMdPRv~K!R7HWUVsNuFm#b)Y`G5$253?7uz@zAx zm6L`G(VQ+QJRAfd&@ABHGedpsjaUJgvEqY_IaL#a--{Va&>*9Qw_7e%qk@Ypv4uN4 zq)e77HVU*Yn}xPOsi&l9Dw7X(|1ziX_e;r@Hmf41|dpbddb-GNO@*dRj7obo9bfv9>%W8=s z(Z~YgynWUoeS~2HN-J}XysMFS$v>>lbq!0weD0$Xm5#Gunt;B{+04QsVHdqc6hr&6 z`LG`)vDM4GN%d@aaGX#%EJ&{f==jjU9JY5Azf0kznO}p(vu5#s=^c!z*sr~z47WI| znSmKW*T9n;<0oi4I=?rcuZP*!3!7_(3vT_~9T@n#>52$q?#y8?yo9Ibn_1_o#{7}C zfcB5)a|&Uz;p8usWzbd-#*ND;D~WtG9qd6tE-Qj1iR_RzgYwL#s8UzuTH$#ZA?8{1 zUd}aRCSHXGhH}tbOfHQ5b~qzn(U5JgE1XftqzX183#WAv z(!^#+??N~Zn+#q}taFgY-u({}WI5x)=Fm|yZ)D*DBDvVwf=nc3dF$Ai?6zTS7CN0j ziI5EIVY}U4xM?yTk7B3h3xJyCSZ+RkJ;Hey6~#c%1*ABC^zP>y!bp^xBmL3Or8>MboSBbMYt+V?+1c6`9i@@S7%4SsX-*EclV1x}Ct26bW<1 zL~gCqAY6p`XnIb{1A7_7R~>lGuJB@3#=&GotQ4Iv%ceH#+<&B_h*>4&n ztHGyywTF~wmW0wnG@@C>Efl)4bluSWE8Qmuns2YIF1Ji~js9F)U3o&k;s9wtmcO?o zH3S{OhOLMbSra(VWwX0_((WEVT6uE%75_Y5TX}MNyz2hMf4{!mZ+-jPr7tIgrLXc2 zq~)Ox-II2=yV$|eVKIxn3|vH0_9P%Gww}uD|e{>v94JN2CVDY%YAPfkSWj&Ht#yye*)i7Eu!(Q5meF@ z#^7U?iWVS4w4k7!B719Qn~Rcxm$K+mwAgELjw)_P=+m+o&h|vyeCC|Gm&KS#LZVth zf2U9@f-qTc$3)6lB+^hlzr!7wSID}uBzfo6x+2CES`PfW`=1DnAaYXL>)sHBu&PcR za>;oNdxK9Rzls56O|0MeB8+;YFs>95s`_8z9T3Je1|JPQIFP?#%JLox>}kles!bjI zt9smyd8E_X+0ZmoHv+oBu-bcWFfiqee^|30hpIxmBE*!vUJHMz4O8_%XGkhO=(Qf` zK&OL40|@XVNEQE={sZk61w9g82yOI^0hX%tL)HxPu^`zO%3Zf)ovBz7Z`c6LM?Y%y z1h`VBC-K*l^y^8y*jYTLc~=Zv2mza_F*RC=e^UX4DMxKv)OFc3PGVTc2t@r$f5t*@ z=vFxO0Mn43CPVIAjo-!Lxc@6X(lF*@vl$N%TSd{oiNybw2)y=u5hYPR zIf~n%Bg4VHIGqE72#Zmg#K|;+xg{P@7An|ODd&j3At~|;8Q=XdI1M!eEWKF3hUjf5&e@ISyGJ1zMu1Xm6AT;MSN#woR*3L9zTJlXEdh z`D>Mvl$J>mZ75;j?+eUHh)6t=@ZjyweM`02jR?@#8qhTw`B~J)VNQGELe==YlNm^d zs|&+Yp2e98G0^3Dz{;AI%pQ@s@Oz6)aaU& z@~vWBytTARih8)o?298Xo(W!ruKK$9KZ{Ey7FRcd=j-Y@uX?|F{qJhY1pn?g8zlqk zQ`e|`aJjC6cT*M(XP%^We{KUsb6uo!p7Y>#zdgO{;1I`XU$ADcX^H-lKg@>sKxfc^ zKwBz@QobWopjOXN3h;g^y88{8AA{bH7r^vkT-1o@mc*`~I>UiC92YQI@f7hzY7kD0 zvf#BQA=3YQ*({LVcN%|+ldHIGHZOxPBKcpJi}1ED2%c{lfrvxxf4@oWHLf|j1<`lOhWG7MgtljP3;%P(uk6cwG0LHK4l-3BO?fTUw^U z=>Rwgj4zl!i?f{BklvpE$C-SSO9h*CPusW8&iLwn8%zXKf4UMgelcY1_BO z;8vQI!10TkXQV6hCNy`TP^yY!zpXQ76s_gna!aB5M7UX7DyVuuX*Xu4n2fPpgQpst zc-C&dJe47BQI$SaF%-@rG;{Aev;j9XL7?yrpD8=H@=uMER@QYxKbWyl<;FiBl5~Zh z4J^K<$f&|ee_PyY>QlKWsZhV#OfQ^O5a_1MqCKNbA=#~>U~%9Psj663$`GS72%D?goJp#0!%|8ECfe>q9@bTBv-K}55SR!y#@Z0 zzzCABCg~^m!j5oJWo`L8Gm{|WLJzzn;(;}W+ZDH^e}I_SSY+;CeR!v1(xABcNDu^{ zDfw~969VrLqumfDqzuNP6LH|=nGPQ)mYjxYf79yK~P0s`mH*mgkL*;<{XeobdhuPa8j1LL5 zB;XV2e=Ff&17--v9S(ez=QSsVYC;Mqp4#u&C`*Ti&mC|DtCR|Pcy}vZ80%gyOk^oM z<;Vw73Bk)x%HqrXz8Q>khU{CU8>LJPr0LYbBzO5D`Gtca78J-%S^^||A33TK36xTc zq{ZdgixKttB@4(}HLDXtE`_ZlrxW%a!e%3*e;OwFiuiC*B8tj@3W;hC*-Xp6pXb(a zX-`BDw#}R53c55(tgHYQ0fv7GE(2Efvl2n6F&p712InZeN2()FRSbM^-C7-Qp4xR01hw*J ze_8s{Cce<+w_xS`jD(AqheS^(7$pIiixuMiS1SV6boT)$dVAfS$TufNi#I@NTEI1@ ziw`m@C1&fMuRVPHW zT&E$<*V<~gYu+Y*gi#cjR|o}RmuQ@7e+XA;cs`}1&1T8$gnb*sPXdw@*Z$tMSLVgR zOM@bkac0}*z*@7@+uGhe*fvSJj^uKZ9RdkNSUPJb=|x9+WStiWFIVobY(*R|qSz2_X@5-Zq;93I31m6%aADC|CjA z-d?l2*dhju`xWVn_!}zs6yLE2aC_G0Cq*a^ zYsH%aY!KP_Fp`9i69adjD_|juf1sBPkTj?VHWytQX`{{<1DtyeX=uZ&eTJD4u3V5-d;W)y-?ATjLP zoO0OGA0BISgPpl#qRoIBwM;-y_Jkx}Mv+>-(1#)OKSkd)F-rikB4;QPvgW)}WYlwjqT zRc6>JnP|t&SDaIHsoey8e-P4=H(G^)9C5X23`a(F-hi&{qT=4i*XDpD)49&K1o)G< z?CL)g&y@N!V)hIU@^s#+g2AA6QM9oKd3qy79puP$Q&}x$GwTLS5uSoJm*{c)PPY<0 zVlqdfvm+1=MnTr3E@mAwu!o|gVSR& zF3~}tOq(18m>{0tH9trYd`me4f*ypkVn5)hGjGXq0Ng&|cJq+vrywMr#1u52RvhQJ zkp#Z^XXIDXaxs3~e=P(7w}dRoFh*Pb<4BUc3biLkz6tT(ge*D;9_4~gE`&~mM1bdT z@R=M13bJxoDHF&)fnC|h`qNcRSlw2pP@guDz~3dFXH9uy0j5o22g|0hpm(}p9*ZTX zfZ{grcTNR{fZZB-?+CS(-I4&4pf~tDm&f5&pQY#^Z=x5ke-enmUxaBgap8|=A{h8Q zMX^%C2{kyz0Avfsb7ck{yNL=rh8Dt_0>Tl%sJR%Kh-qw-qH;rKV~7|m#^I3Bt=?o& z4<{FNJ|XvV%n|ls0$AdIQa+kS&i~kK};Sx;)V)$Zj8mACG)l_Pl(~v?w5QkU$x9> zcz^iKB#6{^;+ENP@=|>j=Lg+2uZr_bEpgU9x6F6uC;z|ab%VWr5#SA#a5_f(VIDm& z?|1%I4d)DFvlS)e6tKm?@Wp$oKJvQH%~wQQpU#cLf9@ya4##YF2KIbBQlM1NC4Si{hT1Pk2|Q*Ekd7tR;HTl>VDcb6{|s3|w||7?`b@pp<3~cL@o0fJ`TR zj>8*qf3o^XJP0u{3Bojz&GAOXKTQ?73}=>KtgHv3gifhN>TO~QtO>&Drlry#2EuXJ zN5Mz15=~w0&n#KM3a|!Y){la4Y*Rc`>HvYIr$7o9j{x&Z2Gc(4q6ij&z(Mrmu*e7n zM4A_2ko3u0!D$CNNh+GYagf_I3?j-$e;E##f1?@0I|uIR@3}5gAVNQHkT$xlap&7a~(%Hs?B+cNk1WFi#8#9{n%nU4Y#S*_I|KbF> zbHVSEVSWWFLc$poa^VVWVc$%Ug4|r8D3Xnt$TAeA#3F#I!#BMHbFla7@Yl`#ZPPn2 zfA9A9-uGT^zcep?Gly@s&DP$#-}Za2-yE7Zdpj?;_YchG?n|?^w|ltXdvSEQw|{_P z7B&w|?_hzxZSMYNw*UTafBWFT?CqQ0+jl#??U&})&Heq&-NWAYLCf@Zw|0(R_I6*l z%!{K#v%7bQL3Vm?dxzUE&EZ~)rk?F-fA(IPx7+($Z#H)iH(&I2dWXN!l&^Y+yO{3P z-aZD}H19U|4|`ijJDdCF-O>KLy@PFo^}XyJZ0&6J-fq8ao8GS3-80+ow|5WC!JEyU zo$_)q&fc%P+xu99zg+WT+wAlbG`4IZH-U#+t&qBUAoatM~_e=7Sa8iCJW<>2q9^F6Ar?QFega|`bY5E zN9H`ti3cEkTN_@A#2U26WsrvO2f=WnWd6rAi1RQo z6aGiru1yVU_C0$BvBv9K?zY;+|4QA?-fkZJ)oi$K5_yJ{KXm=g%!NbJ+dbOEc{_X2 z18_QJ@dnyT;!B(6svR`>RYD??=ua7sls%dM$-!(&2eO?wB9kcSa~(WSsoDRk3vOB;0 z!XIVN!c2#ujd^ZX$mdIH6RpDpi2nZW>|1Du`BAI<6K@ZyOlAkXC(Ot7wa1_Q=OZ(B z95nt`q9*{Zf1_!775qk=iCiG?*Jbn%*ehpgl3ENBiHPURV1t_fD63D%Tg9IB0{ z$DWxKe}n>p8u+OTP&R=`4y=`}!xY|A$6b*I6Bh_c{-xRqgm6wv;;~p|{o^40q|vU1 zS8l#CYpQarLg6D-=j^~NZ_sV{=s{cXOR$mp>YL{9f7NvnzJwkG?Io?pOAAMM-f)ES zxqBA7E>{RDzu^Fuw0U@&@wj}InI&nC4``ht^i|Wia``$Gb)`q&AyIP)?DLB(=sV z@PF{{f8LfymyYUKafRujy2@xaRZ-0pp%{(8&pSA!#u0%v4viI8ARbgsEI-2FfFJMX%aU9 z?pmEf+*Eu-nGJLAp3KW9u}aAT9)tE%aS?l`f7NY{{9{>H^6VKiD;a|r7mmT~sdfjz z2adhn9i_CHt`QgMb77v8rYM>c6>k_uGM}6pYdr+kqP*U1`Yf+z?EgKgtBw?_jq}4~ zYZRnxMsIAs*m}AB>h+u6U;euDc6aaH-}VmG?Z88 z(S34@t$jhQ?n0j~U5e*&8b`bdUJT$Rrr1TTjs0N z7)?{M)!xLHo63U<#(N%KY?=-8=;2c^BDfzmHc=WCZ1z07_&2j*o~#z%{;dH%hmTR1 z=aEIP@ei9OX2U#qT#UM^9pf;D_4px16lk8fe~yy~ zrDV*5`^Cp)?U+SDhD?zUxF?p;aUB^PE_-S=%-SPxU95rk#eI0VMprMYg_{+#_HfqBlJDnK+rNVci2SSzn^Uo3M;hbHo>gm^CodGbsb)NWLC_>?z)+O)MRGG{|%GN zHrz134zeuU$*3qn^l;6rm`B}pe^VTBfq*vhhUu}HH_T1lmrHw4n)uP$I%U4Z<>*kl zv0*?4m0>xJh2jvW4z+ly9f?M&J@11Sv}fJr3gm${kpw>_G0g7_a&G?5hk^>y?JnWcJ%I@_Zg?pdAv|E(o0*lf1scsH>=IL z3Wus~#g!x2Nv=$fO?sSU0HSS_T-nqN*cTT@=$;l*fngi&}g`tBii zX;dmZq4wEx3u6U?j0DID+XdXD!8JuxQ=d4ASIAvo42tExSg->YMkKs>G-ro+v*lD{ zBfoN%)QoN;75!JbEwjp*e`-pjy$FNMY;#?V24nevN}aUp_OoFUxXTcqF1Mc9+eX_Q zOl&_KlJZWKVTm3qXw_sOn7i->QM_?1PG+((s>DJ^7{o9HT###-{Ee3jOsQP!N{3=( z1MNfPWk@ZQgQ%(%UAMp*(93=f`o(1ZAeOS#oItz${FnT=mzHtTe*~$uOaOXmnSl2k zf6G?3Odz|{G668ljEA18NOLTiUkV>)QWM6s5P5+WdO)Zi)2Usj@Gg$=GN#*xOTH^X zQ(lYI{fd%=D$X#$nGV<@=?vGXGg7)@$@PP1zE0BI3JV0*$TV(}p^ioM=@A_8IbW%4 zAed({>HY7TR34+Qf0m0st~aGeA}mN2Bp?UP?LEKv9TNvoxc$c=^e}HxbZZzTN!o1E zZkiQ?ypJRp z%-ucXaKJZ}DKZWM8UzN5W(6tZrzuskj;Ih$>6AFiBoGUie|23mu<;A@Rr>T~t%^H} zaD8AzPbU+L=;dh0qc|9=M`Rohe&~c?fpQrWnZh8=WX+7)!EzOF$O1=ss`h*&N3U&O zLP;@(EE$4IX)v!69(`l&Jr&7o-d_Y$X|64Le3BSMFoBy$8ltcvha zGijokQA;I@jatIb8P)|1@1>Ufk-H$AV3&D+9nNnrz zvE@wc-?{UAk$%U{Gjrtq{|?qz-T40kdsU#ib|8!jyfE<=ILZXEL&*mKe7zH|&SGN$mxkv2+d_^hcs)9FsaW zFyk=GI7Q#s1~GXB(A9sPOkpoW5_j>gxwNTPs)XCTj9nE2YeX;^%9O9fLYC4qLNXY; za;fz3e;pFoW^tplo0-U9aD`xT5ZHkmySn%jFI8cM=R*_T>CAXSni){8MO>Cqx zXn3XAOnoUxNNO4T59ESJ0DYajBw&=~qW_TwZ7g;K9dJQ_^h~auxNHMeEbL=U_Fz|)%`5Bd@ULticNMB@hCk}51mLJh%p0rqw zB!sCxxJFWNG6eARBSt;${)oqtgVZ*q@)W|pWi6PGUog(RlHt{VxckTsSQ5q9gE#tp)m?$1fHEUnEC+VIG%BH|Ie-u7JCDMe8NIQjZOzK`8r|srJI!}-ntA%6x zf>Y$6DB+9xR-C5`%H!G5IJu{e$1UqeELsWyLri&LexW3Dn_xlw!^VdE0_7|fR(OGv zra*lCTJScCv7o&FseN&+N%#he$*dO-Be;myV)Gf9C=1bVCfJaQWTApEDqLkre+o~4 z%g|my8VdUT>3B+mD^lpi1!rCODN_1{xKH&qvwoONQM5abZAz82@-%=+7^Pb-qVSw^ z>0H_rxq)TT>GX%a zoGQywbiwpu#A(vuS5Gl>5@^q zd!3|5!jjt2g}|w{(C*%$xtIoN5a*WNr#p8&^m$WEVI07fE@2c);IN+6xr z=!|0Nk(vT#%ltBwA{3=zEANH${HDx?>`?G9J;16((3)U9ygU!x>4jv z(GWC_rl=Xj53^EB9Yg?de-6BN=-9Kw?;SOEB6QS3t}NX2oFaN1B1&u@^!e-N{%&vg zHE1u)G_006BF>aVlu(^qb%%yOc^F?vf`}4-VK{`Lvelh@Wk9=-gQiGM4ZRN1k&Y4+ zazZKwQpgTWK(7#b{GlaM`kp6gnp{!Z3B19s0tzyvvxCeaHbsbZf6L%o;goYNX;O$` zB@^TYS(7u7mb(d!^Rh3 zY%?=Rpg_oMG+Y@ae;E~Qo8jr$xDR?Uko_b>`U7|aB8`FBT3+VtBS?`NU7OS*@eVv| zhbUYorii~B;C&vOL4wzM8eEyJcSkEYgK>tsmY4|+w3JLh8M5Uq1@U0X zkhR79rFTd*e<&R`ay*4eOp1YNL;?4_%qt4QD7X-LCqRtAv^C(et>#J@1m*n+qPFP? z()u}yi&}&U5l&dtr7R4xa`NQPFn9)E@o9c#VVuK!=Qg%O_8`X==n#mnT3&9O7uSYS zs>zoAaO@>vqK&}(`~8Qjt7Gs|6expuw8HYy zhjSbEM;-dV?NL6CKD3?8ac~t(2sn8Xg7*&WXO3U|@c9Gn*oW&6sz&D<;6spJf2dri zUr6BiW`dMBzr44h4d*)tOi^y$FC5tU%^<8(ALeMue{V{)B!y{~lk9_;X8KlVDfP`P zBAr}k&;2;N3MS1Uy>6M$EpyF$6i*9a$n)e1`xG1Zc<^6)(27CWD=rXSyP?c>%t63ZKjC ze?|sbXJB*i<7VlP5*Xl7e>uENa(A_Smzcktqs58Ag2(Q!u*t^ zP8m)7k%yM_b?3+{h+HNlQL3>HRiMDG{aos}Fx*rMe;fdlEzZnj3eu&6gAic6k6AX>&akh;1OV*~ z=@BVjk!_N}MG(d!bfnXm-urvac+ns!DeWr3zsbfR-W=FGm@_gSHJ+UO0|5<#=JFaz zi2(&3C)^H>Bb~HjA3lD-=7n)Tr5d>!xPx<=Bom4JqSB{W z#VCmex@>iy06z6Mgyn9NJxRz68;Se)c!GN+Jf+!gp<^}(f6t)dau>sXTGl<0H`d)O^Ijeri4ze`$rpz0HY<;BLnsPg^|7B0OI`4X`mGe6Pj0jEyb! zC2X0GvK?%_bS8MO4T?$^?Xb}Z_6YGa`Aia>g1haLeWAkL#5evHUi=U8S7*Ywk#GNl zpY_w4NH-T#Nv+xdQV^I~b?Oe)#% zNMbvnglo+Lp^{)hqV0%9z}G5HcahYq=KNi zil&(C0&e~)C>oc2aVv?lf9cq!&A|QCGR41-_IHXW1IO@k{6WzKtN{8NN$gjA;L;47 z*vr*p@W&wC%_K-O>*nsolPQu*kskAHFd>%bTfbcYb_Pd5q?C}#&U9gLiaWXn?ZA!V z7U_Cd*GQe$DL>weAPf6H(3M2|nf8?I&i(4K2XApzAjqjp9vbyff0RePVW{f6Ly9D- zx|{K!1_X-8W|>fYdQbyoI%ZjPsdLw@LlNoeiqCZD4RarA>5lnucIFfiqTbBv;Na{hNjgCCN6k2hTclV^BQp!Cnq4qK&iPI(=}NCL z9MrW@@JARSb5NEee^g!6qB|nRcmrJFmW{4?DRi+Z zhy)SReUerdpE40yQO>Au%|E6#4cQTyEK$?6Z%vf+N%uounjfcQXfx7edNIOqJjN(V zCU6#FsS!c#oWTf!Eiw}#*+v$`0}Aa|XjmQw!cpgr#~MSBf3u&FKs3Cx8k9-PQ3de; z??;?}iPqE*_-%3@I{!$5K6@n6MNbwMRd^)n7)9MM8~*o2|6vNt5v-PMuc0bK5+@`o z21jNTg+qx0XrQ9I8lLd>W=o<57~M7mlNC=r2_TaoCDd$1CSBgmMBPDmd;AW@bsrpF@I!v&`no!YAUO+hqj9XFmBcP!E)jtCa zGSe{bHAhVu_t)d|BobG=Vnx8aLvs~7ST3lOaP&>c4*8Ne#~9_T;B4QN73_l>7W*Rn z%l*bk`an+C=ftW$phDFLCI4Ff5oY}KWMv~sz*0YMf8fkTSuuj*xnPyE185t+|IO@r zma)0I&yo>#V25FBwXk>d2Ik)~joINEExO10QeFYpB~HVSWcN0Puu=Z)!shEvxYr_4 zEK`ULXm%17O0bn|uc3=V5k&=%+Gho4qc(h?_md=-cNB>g6}!*uOb~Cr-9>fUTkxt| zp-}wCf6!VT?LPyn)j9stkXoJSdvS_@vR)<#JwT}mvbB`V>@(zfR^LlAmO>S&3&jJd z4~@4Mluf!yp%9V9`XtFNJY9gZiu}=9phXmh_;-+FOZPhz6@lbH^itoa1E867+cTbPNLKbW5PBh-S=*t+b@K<2D8B**b1ckImE?bqA8+xwe`+b_@d z_Fr!Ab0phrv%US^>)!6>j%$U0w%KNNZld#soQWww_-a8J>gIx~Bdkmo&g2xg6fPBB zf1oOx-0vOr<(`gX(n*tpk-L7#Qwpx$_^go?g&{asP7e=+66J`d+kcfH z?#B5>dqCDKxN@S%0D3dG0IdkSzKvCQO`C34$(=gR?PnMoXe&#sI-yS-+r|Ie&4J(lO}?hUkSl{NrN@`}ko|f3Wb4vG$EI zy4bF9Y(%8D{me4CmlWQ47(`Kl8)Arb9lEQJ>z%={t6na;reZ^us2?jhq@!l5C5N{d z_He#Ri(IPktzi!)m^lR%N04gtvKO095iDIix?LV%vm#r@4}UEos5;BazS6C4;AnA^hN#-fkn1m@TvbV# z>8?NnKX4=Rg4azU#{j2-2JI%{%u+Q;AeSL%l1lr`tQOM%)ld$)f9f^KP;f>1F{V6- zOeB0clh|$OyAc(R!|1`lX5&P+2`M59d?#wYL!YL+RA-S1YI>GXbF+XEMA59fKk|~^ z@+O?u4+UQ?T%r=(W`uwZF8Og`^Ud^v+q6srpD0@r7&hXa;26j1RjTnLVbJ3s?~htY zH(p~$@HOWM=$BiXfA}Tp0D5TxOI|a|Erd5vC?UJNFi)Wr8Ro^c4wTuP+yW(ehMogv z^w0{fl5b2tnr1~}0dnQn8HUIl!3!<3lono)ly90MtW2N`3xx?YVhZAuAVHNIE?S*w zLJF!>u*=^Xi+XD*$b7#6_th_Yo6)^q8I4b0qh(h4F2dDn=IgHO=N-h;1{@rHl z!WCN*tS1D*e~L$93vFTH5Pe*kvSP>e!NCuAps|RQYU?EU*^NwGL)8H&Y8K>%Jr1wY-$?(xU1 zf3tPtJnoaBIojV5Q@V$G85cW14`Bj@)FI{0Au7T`1)d^%7yv{$sdFT99@;duF>>2; zF{|)093UZxl4S)dD5?BsDc({?`#UC0kRA-#qnJV3X{nJ1e~?NVA)l~YyqDTfYB^|E2OmbRF4W!PMAfAI zQ$S=hgDgw>m#H*fY+}@A&#+EvDJmp615z!o)!uUxTv@Q9`$=# zH}@&A4&Mz7`9dtqN7B)9qn=hU|r97!m7Zj#%T1*E{R2)C#PCX^xBM;mb zp-y-7ib|2P!A2Ov(f$rb400hpP>LK4;%q@C!XVTPVMYWSqT&X7+rzwYu| z_g?*BSI<|@)-L*whMR9z|N7hNr;Z(j`SVE>Zgl@dR#2yxu79}S;A}_FTf8(F`2U|A zBmscZWLbaVz-pO>w167J*S8~Oum6npyU3Ps7sy>fmYMtQ`zXYL0295Fe;P!f4YpLP zv)I61QeHOVPDC0L+c#Y0kK=H}O_pyNvT`rtR+vP=wTZ*Nr3|4E{IEcp;s#h5gqArz ztt^lZ-fe3{BNgr|_z_ll!_XbPvZ>(Xp>@Zz)WuFfX~G|jLkjB#1yg8;*F9G z$UF{*9f0-`C8r}~`^3H|f9c>t=b?m&OF$|;CPXjvWf~YttXuK4r6n z+ab0MPjemoo@zVf2Nh_m7O2KiT-3vsw(ADvCAA|7Y#LF;sK@TT-)*^xWld;d=$Y4O#;PjGJ<_D)if0%GTS+mgY2xljO z5ZOK`F(>H*l^BN@_$A|g~{hlbM}wa_^tBFy0WOjh)4+V69s3f9)46#V)0 z;*T(DM?t5%`egOzN00gCL<^#G?$F^DCh6mw5-yaZa^}$eBHMngMA)M6}BNskPOoHU0tPR;ZQc8e;iX$RE z)f75EaM5$1(9~wQ;4#7gd26Du&#u~Yj5*-xIg{8R@uPEkDokvLi@*>Q@u|#E~BVX-=t4I2k;Wca%bLJ zT%9%D<)iE5^5y8E;wL70mqu&5Oc)hwxwBG;rrD`h=UcO@0S3f0xn>8=>CvV#J`gIJ zdEfP!P%uZi<6JxEYFVh0=tb=>>}@c?Qw7d;L{a>=e;Y!sI{b%X7wUzu!g^vhjJT_^ z`}|FAs*6wW-ZosDBOWYjz&rRf+M#&oALU_$OU|8oRf~eEoxKKGqu@u-Hhv9=aEL6< z5NB04y41NHuBvIGCX$3%4x}UH3%r5?*T6D`=)hyb+jNPXQJyu^ok&c7Wv|+zH%!v} ztmNs6f6LTOB_0$RRZg$8E+&PQy>bQ!m3zZxr4QCY*LA03-Uip_R*6ZTcY3twjS(Ok z17q{+`YS`8eQg_Lw;*-{`ecV5_P|8`5x5>+L*38r{&^b288k2|frbErB0mvCyZY3G zMP+T_>Wq&}!ug(><>gRUTcAc^mBz>6so8Lce?yzQTZCq1%`PE8c!1VAkc9kO97z() z(?*dH9ux#F%4p7W56YB$6%5ncVB#7mqTdF7P5|g17_FpFA(=rP`{Y2eRb9trwLpmj zU|RW~sx#(2B}Hw*=_Q-URRS-=MFN}=lFeB;J@Dr603gLJ_%=Iosqt-3LU~|~;bL57 ze^zrqnWRacAdZfCbot4Xjr;Ah8}6$DtJ18vN!%p_L>CWL+&wg^9F6*m%pX@8&KVhF zaSIZ695ufUChAP3*NdTvWw_#P<=y$Y;d)p=!Um!Af8CG)$w&kD32(9L;qbowUm# zRkumJrTDA)Aziow+`h>+NFp12nxys;*^nI{aJxZU%Qv4kQXb(7?^ z?=lbc=9c>Pxa>=%ZMh#m?WMLY|I`oqBRe>-7h?+(>4y0t&hA*Qen>6bV$9ZnPvPeaP$D^xrTZN%9f2!5p&k;F(~CxtJD znUZ5eaG8VyM5{VGaE7u>xcLC!6#0p1M!@WkBV)68&3bV_e@wEdjZwObHt{Ja)e|;t zJn+R$bSYFLHwN(9c;He^FqiuoYO>+qGT6VHIY@;pXdE8g$?t?d=C zZZQBYVnI$8f8$}dEAy_?#pl*K+}L*Mr&2G;@eNMmz7E_|s#*3Isae*@};`8(YC9Iimn% ztrn0{;{tbjt@9P)mJO`nCvi(#rEj;rp6t%Ho8XOl^5?_q-n7eHTg^&L`^9G)QwEFyYoWMm^ytG^b zMV7&@y;|MV%;0joiYK^Ir>>$pyAqh2ygX^Of4eE%nsr2QNAGR^DwMLDvKO3R=^Qm@ zDY!~pRz}y8Bp=y4><5uq;Mkl6aObwS zl-Ja&C8kJdnE)&Ulw8P=1xK0luYivu_0pQB$dXbjXiHrB(68lNxCGbXhhoF1&I7xk ze^BTLRRCs&uloWq52jDf)#<#9aZ%?8j&r&OYmy0lw#CF@PDc@G-jWb+s61&K6}&O3 z%u;skms~0EJSx{^ESygiS|b!gH5)|7i?b{RVUHcUPb-O73#kO23fpO#q|FB15`>d; zTP|(vr%p!InTRP*0qXoo6s znp;jhR_}lEapy%9E*f^SCsA$f9ylvvIv07ki0%ax+D4@4w$^tOxKz39SSO2QtSk4 zeh|PfO`P-2Okb(@w`@w{Dkc_atJ(;pS11N9fAt|K1f`mAGU)Z|1`)Qf;^&q|YQ8uR z<0(~zW5g74NU`;#uSSh8MYB7L6wQ>;Q31XY<$wg6o)E5Utp~Li55qXjf3Nv%gteJtX>vWV1J)Z$P91vO31`tutH}Jo9A$nw0}?7UOSKCi z@zQD)0Ry*WCva3F;Bh2AKXzH3#9a7aI6q4P_D9xI&P_09bZ)ByYnM_CK1H&ehe5V( zB!5!Fc}S>JRJ$%iR>Mo8e^k?DCQ(+SE{Rg^%P9({#=mP4c=9y~GpX1KDTI<}l`m$Z z9gcquQVK5sE=v)GR6=KhRKk}wx^{l5rHZBCekc%dUWB#su6UW0OwDp@F{Du`kda(S z6!w?zQafP&3eaz(Ev9MCmQgt(6eC07!<6BHv3LtLR)#2g`}rY!f8zY7sPg+}sSxxm zb>fv+S$Pp>Re*kz9|8{psFQIsH>F;K`gy^90rW2XzxbJ9 zbRV3n3R!69KT&mjYF|m?0DmUbXcZo7H*z0FfGTr~OaAth0B&Wv=BhY#+r>@kH{2+| zkAG)lFP!1hU#8rT&U9Nua}d`Tt+;f(CmERhkv0946GXTzC1m1%ionj}m4OfemRUPe zVG#jv8#rpIPdUd^s|y$VI(fsY&>+$go7U=AiBns@M$-D!uTT_1On;sDgI0%s)B+)I z5bKxD9-5xERP1H|^DLAXl25)n$~9m>+EA0(SL zgNEB?986kVjnhC!Lw`xEzEh(z3e@8~+Z%315z}YoIaaTiIh)hhJ9IjJy%sxuX5 zN{~GaqD%y1-V6ENJ0jZGX~y+&CPTL~L>ny{7w=y;aT_5IUQWEMzi7Uw-Xue^S=#5P zlosN91!R)!ZJf`MWFcEj)5wL!AnjKv`zT2dZRflW5&}WQ$$v~kB?x|V2bVz@!4UbK zJI#m^&(80-bgS*v0hd#H?8R@x4B6{-GrxPYu|R!<+;Dj^A##Qw@d*?TH1DpNPc-g= z!FiW+j%z|K%RE=%e8}Ko9*+Xa&9>si4^L6wEnnl`^w(=@2)E5_U0467*3Z z>)eil%Mj%^T_zeex=%BkB5H|^>LVLb*~c+Ot5QYFd}ObwxIsTJPwn#TQ0N)4K#Jl+ ztuQK-84jU^xHgoZM5}QHRGA?%Zw?RNnGDskQwmEG%ztz`E`XWC$)cb=PW}j^C}=0? zMJF32S7+zbi+2Aad>#%q9zTBg@X61rumEMi@%ShWH_x+oC`YhS+2?j@sen?m^E+Cu zpL9+-ot9b9gq>`pnWj-Y>yIp405{A6S}wS~GYCQBYgSp*w=bug}= ztCcxeKg>QH{Q$LfonD-WG%K);e4J*vmV4HLgnw<3=z#FkE2}BrkW(ZIC~b%R9OmXC z4f=LCjUvSAi@1tzGrZW*iqC7&qvXs}=(I)YzJQotWnID(mrY{y`Z$e{b9$%x!C4;FasNl{5Qrh(g$^Y!c6z;jmobX4+$N#ZaM#lbY9hUx)+ITF+?%7-zX81k&1L( zLU&HH>F)P}$ZpoIxP$V~saIV0`T7+Yo$AP@(D2llrBqQPNN|*{o}~3Enc4GHcYm6E zfZSPfN|>T>WTg_P*_ad6TEwMq#&adfA4@?8?kOG?wJGS@rk6{qQOPJ%uZS@rRjl~` z*n9V-IFck^`0vJS-XT=e))Z1v1?bj7qtT%y)XgjcEuik1p*1L}3LvGb%-YN>Ax5oZ z`yk(WxqXt)etwBdW)`5!?CzPfGJl(CD&ywi;o;%o;TL|TsVK%)X*zTZu%nJ@jSxjb zo_%xJ%864+M^ig?_@#QuB=V#`ol)X*Knecd5~>b)m#-bDPNUSJKQX07EDViXJ}*!m zslQ|{;Z*2x`U0Ify_tW)`Nv1DqibIfv>X_6+k~!zm(U4H|Fb5nOE z`DQ3X7^PEp5#TA`9~&4WR4$tZ)fdtr!abh$*+3odq%;;A*voScMV9yeqspep9g7ml zgrUap0?2tlxi8!(j_qlhu~qwYiZ?w@Xf`qwUO$RSpO_A|ZigO(JG^IId^E#gI*EFc zOewY- z5RleVHbc*()naL=<7r-&=`r#T=G;eOI-05 zP}oYPGmd6BLs}?YlY+S^5H28}y7C3l_;^2blIb)I#pmhz&sMF4<6_mXaMCB zKM*3=E}t;^D$lap@+ynuDz~k${z&sn>SW2GgY!<$3)KL*xqs}>im^UJu<@hZKe{FDjBMlJX)Oo)vkP4%13>YSbRl$`LlPPu!-!21Ic6i1<=HZ_!HpBPO;&udGT8$JQ+c9RnWiXa z^^WDFJD%x!a2q2{G?awM(Ux3V%##aw{ZBmYI-x{ih}A}W>q@GsZ0MfFc&9hcZyzBly}1$ zblEeDlVrNMROiLi7pa7o$jf^kJOAwXVpn%a5yq-wHms1XrfJdQFLRLFm1TckWP)oz z^L1krTz@^FGjV}A59oJJbOP*u5s(58X(;2nC~CyqQpW7er=u_?uH74s)%C_1`)a$x z^p%VKCQfQTaMzpIM^)frHz7HYT1D-r&dO)R~E?Zu%M{>Sola_n<> z{^wf0LOlK-%S^h(&e7cS0qEY7BAq&2=Gn*yOn=N>-RD|nUd=bIw#}T^hl?2#Xz!bv z_=eir9Z=WRP`d_tqJ<~Yr7G&dz&KAg;YVb-lcbqC_`A-%+tj&TEUc*t4%UUZSyMXR z5OtT8S8B|ouabO76K7?1MJO|m#DQv`vYhnAZ%0f*)eb=To1Vt{u&pVoRA%(DF3X3* z$$ylD@TOfPvixzU-p4@%H8)wHp2b1%OUQP^$uu0oG11{<>MJ@c0#~dFyIjvAXDo|w zK@tZ2-<2?NOL=JFP-Y*T=61vrE8MC<|1%663!A_L~jn^15SA_0Z7i8YM zP0iHL>9J$|wa!|FthU|ORcVtiN=zSq?SDwH_xS8;mk#A^i))t6s>{HnSFU=`jkUUF z-;}A;HYv}q`QxiePzQGcsWE2VtT>?AJA$@%AAhriN#xNmJNQRiRLZu(l9Pmj!;#amlNe?XyjU7WJE{|Nm znG50%{wky;{VT5z#c4DINBpWLN21Cz|6^~i06Cv!9mPyT;I61I80_8?K zN1~2edOttIs`_PpiD*kIeAPIj?SF4;8VT-$g?Y>-;8t!rfj}Lb!_4c%$DIh8#R%C@}fPtB&sF7rW_LL1BDb=963H!3~L3t0%|t$%>LQ7r@l z{JyYN;MN94%{!sdkX5R;1S=$Jd&IcfSIUTJsB)rfrNpFpT0d(PNQ=!LF`Ecx^O-Uu z0EgV@I+G}Y_%3H#VO^jtJ=dsq?M}c54rPBuNYj=?gLWd%Ad#ooybw7j8pj#Nv&ddQ zN-Fv`8&ZN9esvWq5Sx@KKYszUJxCY(#Hq52BDru|2hn3T(cD zPX`Yt{hQa~N0-I1oXd%>8P0OvR05r(RH@G;sPPZuX}paB`AiYnw&k1ap*!8d7idR? zXK9B{ty)usVr-!)Kc+T1eB*^fxgoP%M2mFjQbZ(G&DzXKhI$#+r+=U!N9y3G0JtqS z_$;%~PjF$Bn+ri%_LI>_v-v2h0vO`D>e#?Ts_!Wl2q+@qNj$h52LOXr!#Y$5d8^ST zjX81X|9*fbYU=^ir%HV0IW#KZgVR!QJ%ztkH&CU>OOoRt!+hdifWQp&9XMT&VRm2U_{gwfjaa|m5wCYSlAU*1!OP6&s)`*o!}?s)V!p_VV)ri zQHD%JVRw%IljVkg)4~!aBX~$yjR#*l^?2FqMy^Rq&XcPKRuM1~9enJzdGo2qaGUR*FOzI^ zsVG*iU+=MD^GqE%4>e;ljeg;O5Pn1M_jIr++@Ue`jr7K6krEM`Ad8ZjYzQ z@a@qgAI-+L2Y)BOyr{~a@dJzP#nI7{dGtr~0Uesk=Y8r_$gH#&FvnnshhIKm~ z+6KQ%}rk(HK{nQd=9+1%ORGkkg>FCk_`*8cuC;SX8w}T%p^eu>yoS- z^W!&mShYlFfn@9D*D&}G+W|s5fWPSU6>!}#AU92CWa>p1*qU-;=e$6EK7UqHHfr*G zi%d>gaMl+ZZ(-mt65hDMuWrzlQ^gPZ;o_KsoqsUz0O%@u)uMBtNDby8h;Rcxg*nZ9 zg_g!|)9KI2I34j8iVck16*;Q3D1iouzl0#P*?}pLB>lA5iD|hLccQ4`Al%T}jA!Ch z>*!At2{Z{ZP^Gk6UvT;^N4yv>TZsb?pd$oriufCjRTC|aELKZXaIB~C2yw{rZ?xR2j z06&I`Y`7%Q;mNvm|F5JM!= zdw!!LOE*q-aiV}z&4*VFp1Wy;3oxKI0e{+uY1Xm0mA_@6M~}s}-rD=4M{$+*gC2U# z(F3U}xP}Bks^k%&xQynq`y-`0T5Z3wa{3H<8%Cw07i>Q^!iPA71xbkU9Ry-c&9iqqTgf44Sd(Mv~Ej==xbuRuzmQEHf~>{}%BahY=U+`yK1 z_fiO{b7k@%7EJ9pxpL<>&L27O_yCe0ayIF5djY`<>RvJcjfGU%9)E+%ZGc!Ls5jL8 z)!bPzXu38EBDuui1Z=^p9B(Q{$mB{~{Z+F&7#No-8P|%oy80$8r_}{ToSBWs+DCH_ z>qs6*-8PJk@R}H>1IDG%F$a|oLtMG0hlI~6-?vrFT3-3J5;$0@kc>n1RdXGBUGjVb6=S zLf)|%V&n0Ssa40;FgtlA5p@e&=HnTuFj+34(8+}@XJbkO?B& zs3p4WV#xxYBY#m%YCbD%l+fH?A1Eftrf>JZe@ zzoX@#BiBe!>u}<uJJ~qwt`Sif?9&sqBP;5jCy2tBhHJ((^_`Wa8ezb=*%)lgOP z7k%?XUY&8UM!{X*r)Oy#yWCg2BEia%I#G^Rnyp_&l7!+Iu=vE4DIdpMYdXIFjwkr^ z1XFhLE?*X7tTbL8h~GqUpf3}+1ngMo;t|nI#eXeSb0Qbm#b97Ium$vh@LORBxS(pt zMy6o#Ag$~~g1>k!KoL6$A@D;vvmCs@B(M^XPcu9|l`RAe)1tD*yt+l)Jg z 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 z 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

    A5Z=_0D6Ca#-cc#UZQ5>+P9QW1P6fA7;@3? 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

    5(!<9?Q#P^CB#`T%mqm-u(UAfhU%|%Y#k( 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