From 36a3ec33e70af3cdbe2b86e9462daaf355bc19d6 Mon Sep 17 00:00:00 2001 From: Miguel Date: Mon, 9 Jun 2025 16:22:34 +0200 Subject: [PATCH] vault backup: 2025-06-09 16:22:34 --- .obsidian/community-plugins.json | 5 +- .../obsidian-excalidraw-plugin/data.json | 217 ++ .../obsidian-excel-to-markdown-table/main.js | 230 +++ .../manifest.json | 10 + .../styles.css | 1 + .../obsidian-mindmap-nextgen/data.json | 1 - .../plugins/recent-files-obsidian/data.json | 264 +-- .obsidian/plugins/solve/main.js | 1763 +++++++++++++++++ .obsidian/plugins/solve/manifest.json | 14 + .obsidian/plugins/solve/styles.css | 76 + .obsidian/workspace.json | 118 +- .../AI Prompts useful.md | 10 + .../Problem with drag&drop or Left Click.md | 20 + .../Inverters/Mitsubishi/MR-J4.md | 5 + .../Python/Scripts Python/Calc/Calc v0.1.md | 236 +++ .../Python/Scripts Python/Calc/Calc v0.2.md | 434 ++++ .../Scripts Python/Calc/Calc v0.3 Pure.md | 165 ++ .../Conda - Anaconda - miniconda.md | 7 + ... Comandos WIFI - Clientes de wlan y CAP.md | 51 + 03-VM/44 - 98050 - Fiera/98050_Hardware.md | 36 + 03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md | 113 ++ 03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md | 55 + .../44 - 98050 - Fiera/IO/Mapping Divider.md | 57 + 03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md | 140 ++ .../Layout - Anello-Ring.md | 441 +++++ ...olo di accumulo - Logica - v 0.0 - Ita.md} | 2 +- ...volo di accumulo - Logica - v 0.1 - Esp.md | 68 + .../adjuntos/Layout-Model.png | Bin 0 -> 185145 bytes ...IPs & Address - Master - Vetromeccanica.md | 2 +- 29 files changed, 4340 insertions(+), 201 deletions(-) create mode 100644 .obsidian/plugins/obsidian-excel-to-markdown-table/main.js create mode 100644 .obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json create mode 100644 .obsidian/plugins/obsidian-excel-to-markdown-table/styles.css create mode 100644 .obsidian/plugins/solve/main.js create mode 100644 .obsidian/plugins/solve/manifest.json create mode 100644 .obsidian/plugins/solve/styles.css create mode 100644 01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md create mode 100644 01-Documentation/Inverters/Mitsubishi/MR-J4.md create mode 100644 01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md create mode 100644 01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md create mode 100644 01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md create mode 100644 01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md create mode 100644 03-VM/44 - 98050 - Fiera/98050_Hardware.md create mode 100644 03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md create mode 100644 03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md create mode 100644 03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md create mode 100644 03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md create mode 100644 03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md rename 03-VM/44 - 98050 - Fiera/{Progetto 98050 Fiera - Tavolo di accumulo.md => Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md} (99%) create mode 100644 03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md create mode 100644 03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png diff --git a/.obsidian/community-plugins.json b/.obsidian/community-plugins.json index 8285dbd..f2adf3c 100644 --- a/.obsidian/community-plugins.json +++ b/.obsidian/community-plugins.json @@ -1,7 +1,6 @@ [ "mousewheel-image-zoom", "obsidian-image-toolkit", - "numerals", "copy-as-html", "copy-document-as-html", "obsidian-pandoc", @@ -23,9 +22,9 @@ "recent-files-obsidian", "obsidian-auto-link-title", "advanced-canvas", - "obsidian-minimal-settings", "obsidian-mindmap-nextgen", "obsidian-plantuml", "mcp-tools", - "obsidian-local-rest-api" + "obsidian-local-rest-api", + "obsidian-excel-to-markdown-table" ] \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json index 732d146..6027b66 100644 --- a/.obsidian/plugins/obsidian-excalidraw-plugin/data.json +++ b/.obsidian/plugins/obsidian-excalidraw-plugin/data.json @@ -102,6 +102,223 @@ "version": 2, "source": "https://github.com/zsviczian/obsidian-excalidraw-plugin/releases/tag/2.9.2", "libraryItems": [ + { + "id": "Jcb27Z7tsLyhmBl-4Yl7A", + "status": "unpublished", + "elements": [ + { + "id": "e01IusppIXekthvQI4dsi", + "type": "rectangle", + "x": -646.8844788749002, + "y": -374.28650595561646, + "width": 22.13098427962416, + "height": 22.13098427962416, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aN", + "roundness": null, + "seed": 1261532191, + "version": 64, + "versionNonce": 1784958993, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false + }, + { + "id": "OJsW5dAkHk_bM3YQqzdLc", + "type": "line", + "x": -646.9383377449386, + "y": -374.18299579915805, + "width": 21.67528767610702, + "height": 21.67528767610696, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aO", + "roundness": null, + "seed": 176168273, + "version": 35, + "versionNonce": 416626047, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 21.67528767610702, + 21.67528767610696 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "qVrEcAmiTyjmVNhcIpBbv", + "type": "line", + "x": -646.9383377449386, + "y": -370.4296992318668, + "width": 18.20348835136258, + "height": 18.20348835136258, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aP", + "roundness": null, + "seed": 255581791, + "version": 36, + "versionNonce": 1919034865, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 18.20348835136258, + 18.20348835136258 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "2LRECUsuFp9ZwO3Yh5ZDs", + "type": "line", + "x": -646.9383377449386, + "y": -365.73807852275274, + "width": 13.473250240646507, + "height": 13.533411429315947, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aQ", + "roundness": null, + "seed": 2651295, + "version": 33, + "versionNonce": 2024811935, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 13.473250240646507, + 13.533411429315947 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + }, + { + "id": "K5zwTUBZbp8soB1Y2dF15", + "type": "line", + "x": -646.9383377449386, + "y": -359.54513918672217, + "width": 7.487284433781497, + "height": 7.366962056442219, + "angle": 0, + "strokeColor": "#1971c2", + "backgroundColor": "#ffffff", + "fillStyle": "solid", + "strokeWidth": 0.5, + "strokeStyle": "solid", + "roughness": 0, + "opacity": 100, + "groupIds": [ + "zoxFXczlNsNs7_uDZMfy8" + ], + "frameId": null, + "index": "aR", + "roundness": null, + "seed": 387931679, + "version": 33, + "versionNonce": 1273642961, + "isDeleted": false, + "boundElements": [], + "updated": 1749053618097, + "link": null, + "locked": false, + "points": [ + [ + 0, + 0 + ], + [ + 7.487284433781497, + 7.366962056442219 + ] + ], + "lastCommittedPoint": null, + "startBinding": null, + "endBinding": null, + "startArrowhead": null, + "endArrowhead": null + } + ], + "created": 1749053623052 + }, { "id": "qLdU5G5F49LoCvIYKf21c", "status": "unpublished", diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js b/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js new file mode 100644 index 0000000..7080987 --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/main.js @@ -0,0 +1,230 @@ +/* +THIS IS A GENERATED/BUNDLED FILE BY ESBUILD +if you want to view the source, please visit the github repository of this plugin +*/ + +var __create = Object.create; +var __defProp = Object.defineProperty; +var __getOwnPropDesc = Object.getOwnPropertyDescriptor; +var __getOwnPropNames = Object.getOwnPropertyNames; +var __getProtoOf = Object.getPrototypeOf; +var __hasOwnProp = Object.prototype.hasOwnProperty; +var __markAsModule = (target) => __defProp(target, "__esModule", { value: true }); +var __export = (target, all) => { + __markAsModule(target); + for (var name in all) + __defProp(target, name, { get: all[name], enumerable: true }); +}; +var __reExport = (target, module2, desc) => { + if (module2 && typeof module2 === "object" || typeof module2 === "function") { + for (let key of __getOwnPropNames(module2)) + if (!__hasOwnProp.call(target, key) && key !== "default") + __defProp(target, key, { get: () => module2[key], enumerable: !(desc = __getOwnPropDesc(module2, key)) || desc.enumerable }); + } + return target; +}; +var __toModule = (module2) => { + return __reExport(__markAsModule(__defProp(module2 != null ? __create(__getProtoOf(module2)) : {}, "default", module2 && module2.__esModule && "default" in module2 ? { get: () => module2.default, enumerable: true } : { value: module2, enumerable: true })), module2); +}; +var __async = (__this, __arguments, generator) => { + return new Promise((resolve, reject) => { + var fulfilled = (value) => { + try { + step(generator.next(value)); + } catch (e) { + reject(e); + } + }; + var rejected = (value) => { + try { + step(generator.throw(value)); + } catch (e) { + reject(e); + } + }; + var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected); + step((generator = generator.apply(__this, __arguments)).next()); + }); +}; + +// src/main.ts +__export(exports, { + default: () => ExcelToMarkdownTablePlugin +}); +var import_obsidian = __toModule(require("obsidian")); + +// src/table-alignment-syntax.ts +var ALIGNED_LEFT_SYNTAX = { + prefix: "", + postfix: "", + adjust: 0 +}; +var ALIGNED_RIGHT_SYNTAX = { + prefix: "", + postfix: ":", + adjust: 1 +}; +var ALIGNED_CENTER_SYNTAX = { + prefix: ":", + postfix: ":", + adjust: 2 +}; + +// src/excel-markdown-helpers.ts +var ALIGNED_LEFT = "l"; +var ALIGNED_RIGHT = "r"; +var ALIGNED_CENTER = "c"; +var EXCEL_COLUMN_DELIMITER = " "; +var MARKDOWN_NEWLINE = "
"; +var UNESCAPED_DOUBLE_QUOTE = '"'; +var EXCEL_ROW_DELIMITER_REGEX = /[\n\u0085\u2028\u2029]|\r\n?/g; +var COLUMN_ALIGNMENT_REGEX = /^(\^[lcr])/i; +var EXCEL_NEWLINE_ESCAPED_CELL_REGEX = /"([^\t]*(?<=[^\r])\n[^\t]*)"/g; +var EXCEL_NEWLINE_REGEX = /\n/g; +var EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX = /""/g; +function addMarkdownSyntax(rows, columnWidths) { + return rows.map(function(row, rowIndex) { + return "| " + row.map(function(column, index) { + column = column.replace("|", "\\|"); + return column + Array(columnWidths[index] - column.length + 1).join(" "); + }).join(" | ") + " |"; + }); +} +function addAlignmentSyntax(markdownRows, columnWidths, colAlignments) { + let result = Object.assign([], markdownRows); + result.splice(1, 0, "|" + columnWidths.map(function(width, index) { + let { prefix, postfix, adjust } = calculateAlignmentMarkdownSyntaxMetadata(colAlignments[index]); + return prefix + Array(columnWidths[index] + 3 - adjust).join("-") + postfix; + }).join("|") + "|"); + return result; +} +function calculateAlignmentMarkdownSyntaxMetadata(alignment) { + switch (alignment) { + case ALIGNED_LEFT: + return ALIGNED_LEFT_SYNTAX; + case ALIGNED_CENTER: + return ALIGNED_CENTER_SYNTAX; + case ALIGNED_RIGHT: + return ALIGNED_RIGHT_SYNTAX; + default: + return ALIGNED_LEFT_SYNTAX; + } +} +function getColumnWidthsAndAlignments(rows) { + let colAlignments = []; + return { + columnWidths: rows[0].map(function(column, columnIndex) { + let alignment = columnAlignment(column); + colAlignments.push(alignment); + column = column.replace(COLUMN_ALIGNMENT_REGEX, ""); + rows[0][columnIndex] = column; + return columnWidth(rows, columnIndex); + }), + colAlignments + }; +} +function columnAlignment(columnHeaderText) { + var m = columnHeaderText.match(COLUMN_ALIGNMENT_REGEX); + if (m) { + var alignChar = m[1][1].toLowerCase(); + return columnAlignmentFromChar(alignChar); + } + return ALIGNED_LEFT; +} +function columnAlignmentFromChar(alignChar) { + switch (alignChar) { + case ALIGNED_LEFT: + return ALIGNED_LEFT; + case ALIGNED_CENTER: + return ALIGNED_CENTER; + case ALIGNED_RIGHT: + return ALIGNED_RIGHT; + default: + return ALIGNED_LEFT; + } +} +function columnWidth(rows, columnIndex) { + return Math.max.apply(null, rows.map(function(row) { + return row[columnIndex] && row[columnIndex].length || 0; + })); +} +function splitIntoRowsAndColumns(data) { + var rows = data.split(EXCEL_ROW_DELIMITER_REGEX).map(function(row) { + return row.split(EXCEL_COLUMN_DELIMITER); + }); + return rows; +} +function replaceIntraCellNewline(data) { + let cellReplacer = (_) => _.slice(1, -1).replace(EXCEL_DOUBLE_QUOTE_ESCAPED_REGEX, UNESCAPED_DOUBLE_QUOTE).replace(EXCEL_NEWLINE_REGEX, MARKDOWN_NEWLINE); + return data.replace(EXCEL_NEWLINE_ESCAPED_CELL_REGEX, cellReplacer); +} + +// src/excel-markdown-tables.ts +var LINE_ENDING = "\n"; +function excelToMarkdown(rawData) { + let data = rawData.trim(); + var intraCellNewlineReplacedData = replaceIntraCellNewline(data); + var rows = splitIntoRowsAndColumns(intraCellNewlineReplacedData); + var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows); + const markdownRows = addMarkdownSyntax(rows, columnWidths); + return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING); +} +function getExcelRows(rawData) { + let data = rawData.trim(); + var intraCellNewlineReplacedData = replaceIntraCellNewline(data); + return splitIntoRowsAndColumns(intraCellNewlineReplacedData); +} +function excelRowsToMarkdown(rows) { + var { columnWidths, colAlignments } = getColumnWidthsAndAlignments(rows); + const markdownRows = addMarkdownSyntax(rows, columnWidths); + return addAlignmentSyntax(markdownRows, columnWidths, colAlignments).join(LINE_ENDING); +} +function isExcelData(rows) { + return rows && rows[0] && rows[0].length > 1 ? true : false; +} + +// src/main.ts +var ExcelToMarkdownTablePlugin = class extends import_obsidian.Plugin { + constructor() { + super(...arguments); + this.pasteHandler = (evt, editor) => { + if (evt.clipboardData === null) { + return; + } + if (evt.clipboardData.types.length === 1 && evt.clipboardData.types[0] === "text/plain") { + return; + } + const rawData = evt.clipboardData.getData("text"); + const rows = getExcelRows(rawData); + if (isExcelData(rows)) { + const markdownData = excelRowsToMarkdown(rows); + editor.replaceSelection(markdownData + "\n"); + evt.preventDefault(); + } + }; + } + onload() { + return __async(this, null, function* () { + this.addCommand({ + id: "excel-to-markdown-table", + name: "Excel to Markdown", + hotkeys: [ + { + modifiers: ["Mod", "Alt"], + key: "v" + } + ], + editorCallback: (editor, view) => __async(this, null, function* () { + const text = yield navigator.clipboard.readText(); + editor.replaceSelection(excelToMarkdown(text)); + }) + }); + this.app.workspace.on("editor-paste", this.pasteHandler); + }); + } + onunload() { + this.app.workspace.off("editor-paste", this.pasteHandler); + } +}; + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json b/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json new file mode 100644 index 0000000..7d3f9dd --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/manifest.json @@ -0,0 +1,10 @@ +{ + "id": "obsidian-excel-to-markdown-table", + "name": "Excel to Markdown Table", + "version": "0.4.0", + "minAppVersion": "0.12.0", + "description": "An Obsidian plugin to paste data from Microsoft Excel, Google Sheets, Apple Numbers and LibreOffice Calc as Markdown tables in Obsidian editor.", + "author": "Ganessh Kumar R P ", + "authorUrl": "https://ganesshkumar.com", + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css b/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/.obsidian/plugins/obsidian-excel-to-markdown-table/styles.css @@ -0,0 +1 @@ + diff --git a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json index 41f4552..825ab8e 100644 --- a/.obsidian/plugins/obsidian-mindmap-nextgen/data.json +++ b/.obsidian/plugins/obsidian-mindmap-nextgen/data.json @@ -1,7 +1,6 @@ { "version": "2.0", "layout": [ - null, null, null, null diff --git a/.obsidian/plugins/recent-files-obsidian/data.json b/.obsidian/plugins/recent-files-obsidian/data.json index 52ccde4..81a3fc5 100644 --- a/.obsidian/plugins/recent-files-obsidian/data.json +++ b/.obsidian/plugins/recent-files-obsidian/data.json @@ -1,5 +1,141 @@ { "recentFiles": [ + { + "basename": "PLC IO Tags", + "path": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md" + }, + { + "basename": "Problem with drag&drop or Left Click", + "path": "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md" + }, + { + "basename": "Mapping Divider", + "path": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md" + }, + { + "basename": "SysInternals Tools - WinInternals", + "path": "01-Documentation/Windows/SysInternals Tools - WinInternals.md" + }, + { + "basename": "Device IO Tags", + "path": "03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md" + }, + { + "basename": "AI Prompts useful", + "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md" + }, + { + "basename": "Layout - Anello-Ring", + "path": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md" + }, + { + "basename": "IO - Ips Nodes", + "path": "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md" + }, + { + "basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md" + }, + { + "basename": "98050_Hardware", + "path": "03-VM/44 - 98050 - Fiera/98050_Hardware.md" + }, + { + "basename": "Conda - Anaconda - miniconda", + "path": "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md" + }, + { + "basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp", + "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md" + }, + { + "basename": "Calc v0.3 Pure", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md" + }, + { + "basename": "Calc v0.2", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md" + }, + { + "basename": "Calc v0.1", + "path": "01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md" + }, + { + "basename": "Miniconda Como hacer un backup completo de un entorno creado con Miniconda", + "path": "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md" + }, + { + "basename": "Group Scripts Manager", + "path": "01-Documentation/Python/Scripts Python/Group Scripts Manager.md" + }, + { + "basename": "Notes - Update Multilane Table", + "path": "03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md" + }, + { + "basename": "Backups - Mikrotik", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md" + }, + { + "basename": "Mikrotik - Comandos WIFI - Clientes de wlan y CAP", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md" + }, + { + "basename": "Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge", + "path": "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md" + }, + { + "basename": "Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita", + "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md" + }, + { + "basename": "Drawing 2025-02-24 19.56.40.excalidraw", + "path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-24 19.56.40.excalidraw.md" + }, + { + "basename": "Drawing 2025-02-25 18.12.26.excalidraw", + "path": "03-VM/41 - 94154 - Update Multilane Table/Drawing 2025-02-25 18.12.26.excalidraw.md" + }, + { + "basename": "IPs & Address - Master - Vetromeccanica", + "path": "03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md" + }, + { + "basename": "Autocad - useful Commands", + "path": "01-Documentation/Autocad - Acad/Autocad - useful Commands.md" + }, + { + "basename": "Autocad - Acad - show all layers - unlock all layers", + "path": "01-Documentation/Autocad - Acad/Autocad - Acad - show all layers - unlock all layers.md" + }, + { + "basename": "Minimotor - Setup - Chingiolli - FC6", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Setup - Chingiolli - FC6.md" + }, + { + "basename": "Minimotor - Encoder setup", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Minimotor - Encoder setup.md" + }, + { + "basename": "Drawing 2024-04-03 11.29.20.excalidraw", + "path": "01-Documentation/Vetromeccanica/Minimotor - FC6/Drawing 2024-04-03 11.29.20.excalidraw.md" + }, + { + "basename": "Siemens HMI Translate - Python - LLM - Google Translate", + "path": "01-Documentation/Python/Scripts Python/Siemens HMI Translate - Python - LLM - Google Translate.md" + }, + { + "basename": "MR-J4", + "path": "01-Documentation/Inverters/Mitsubishi/MR-J4.md" + }, + { + "basename": "Test - Fatto su Maselli - 06-05-2025", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md" + }, + { + "basename": "Hardware used for 485-TCP", + "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md" + }, { "basename": "FB2120 - MasseliTCP Read - v1.8", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md" @@ -8,10 +144,6 @@ "basename": "FB2120 - MasseliTCP Read - Descrizzione Software - v1.8", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md" }, - { - "basename": "Hardware used for 485-TCP", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md" - }, { "basename": "Versiones", "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md" @@ -24,10 +156,6 @@ "basename": "Maselli - ADAM - Protocol", "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md" }, - { - "basename": "Progetto 98050 Fiera - Tavolo di accumulo", - "path": "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md" - }, { "basename": "Install Docker on Ubuntu", "path": "01-Documentation/Dockers/Install Docker on Ubuntu.md" @@ -56,14 +184,6 @@ "basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200", "path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md" }, - { - "basename": "DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md" - }, - { - "basename": "Test - Fatto su Maselli - 06-05-2025", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md" - }, { "basename": "GIT commands HELP", "path": "01-Documentation/GIT - GitHub/GIT commands HELP.md" @@ -79,118 +199,6 @@ { "basename": "GitHub Privacy", "path": "01-Documentation/GIT - GitHub/GitHub Privacy.md" - }, - { - "basename": "Visit to Maselli 06-05-2025", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md" - }, - { - "basename": "Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python", - "path": "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using com0com - MaselliSimulatorApp Python.md" - }, - { - "basename": "CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO", - "path": "01-Documentation/Dispositivos - Manuales/CableMAX - Converter 485 - Serial Adaptor RS232 - CM-RSDB9-PRO.md" - }, - { - "basename": "ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update", - "path": "01-Documentation/Dispositivos - Manuales/ADAM/ADAM 4021 - 485 to 4..20ma - Commissioning & Firmware update.md" - }, - { - "basename": "Maselli Sensor to Siemens PLC Communication Implementation", - "path": "01-Documentation/Dispositivos - Manuales/ADAM/Maselli Sensor to Siemens PLC Communication Implementation.md" - }, - { - "basename": "Masselli (UR62 & UR29)", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Masselli (UR62 & UR29).md" - }, - { - "basename": "ADAM -", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/ADAM -.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/06 - E5.007363 - Modifica O&U - SAE196 (cip integrato)/Untitled.md" - }, - { - "basename": "Communication TSEND_C - TRCV_C", - "path": "01-Documentation/Siemens/PLC Siemens/Communication TSEND_C - TRCV_C.md" - }, - { - "basename": "Maselli Proprietary Serial-Socket Protocol", - "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Utility/Maselli Proprietary Serial-Socket Protocol.md" - }, - { - "basename": "Maselli - Protocol - Gateway - 485 - Ethernet", - "path": "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - Protocol - Gateway - 485 - Ethernet.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Untitled.md" - }, - { - "basename": "com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11", - "path": "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/com0com Setup Only version 2.2 - version 3 NOT WORKING with Windows 11.md" - }, - { - "basename": "LAD Descriptions from XDA files from Tia Portal", - "path": "01-Documentation/Python/Scripts Python/XML to SCL Siemens/LAD Descriptions from XDA files from Tia Portal.md" - }, - { - "basename": "AI Prompts useful", - "path": "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md" - }, - { - "basename": "Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp", - "path": "01-Documentation/Siemens/Openness/Guía de Exportación a Formato SIMATIC SD con TIA Portal Openness y Csharp.md" - }, - { - "basename": "Projects Description", - "path": "04-SIDEL/Projects Description.md" - }, - { - "basename": "SAE346 - HMI - Machine Configuration", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - HMI - Machine Configuration.md" - }, - { - "basename": "Comm - Mixer - Filler", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/COMM - FILLER - MIXER/Comm - Mixer - Filler.md" - }, - { - "basename": "SAE346 - Software adaptation from Master - Notes", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Software adaptation from Master - Notes.md" - }, - { - "basename": "SAE346 P&ID", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 P&ID.md" - }, - { - "basename": "SAE346 - Signals - CIP - Filler - Syrop", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Signals - CIP - Filler - Syrop.md" - }, - { - "basename": "SAE346 - Process diagram", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Process diagram.md" - }, - { - "basename": "SAE346 - Master adaptation to compile", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - Master adaptation to compile.md" - }, - { - "basename": "SAE346 - IO from Electrical Diagram", - "path": "04-SIDEL/05 - E5.007161 - Modifica O&U - SAE346/SAE346 - IO from Electrical Diagram.md" - }, - { - "basename": "Openness Python Library - siemens_tia_scripting", - "path": "01-Documentation/Siemens/Openness/Openness Python Library - siemens_tia_scripting.md" - }, - { - "basename": "Untitled", - "path": "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235/Untitled.md" - }, - { - "basename": "Notas para crear nuevas aplicaciones", - "path": "07 - Desarrolo de Proyectos - Scripts - Visual Studio/Proyectos Visual Studio/Notas para crear nuevas aplicaciones.md" } ], "omittedPaths": [], diff --git a/.obsidian/plugins/solve/main.js b/.obsidian/plugins/solve/main.js new file mode 100644 index 0000000..6021d0a --- /dev/null +++ b/.obsidian/plugins/solve/main.js @@ -0,0 +1,1763 @@ +var Bh=Object.create;var rn=Object.defineProperty;var Yh=Object.getOwnPropertyDescriptor;var Gh=Object.getOwnPropertyNames;var Hh=Object.getPrototypeOf,Wh=Object.prototype.hasOwnProperty;var E=(i,e)=>()=>(e||i((e={exports:{}}).exports,e),e.exports),zh=(i,e)=>{for(var t in e)rn(i,t,{get:e[t],enumerable:!0})},ka=(i,e,t,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let a of Gh(e))!Wh.call(i,a)&&a!==t&&rn(i,a,{get:()=>e[a],enumerable:!(n=Yh(e,a))||n.enumerable});return i};var me=(i,e,t)=>(t=i!=null?Bh(Hh(i)):{},ka(e||!i||!i.__esModule?rn(t,"default",{value:i,enumerable:!0}):t,i)),jh=i=>ka(rn({},"__esModule",{value:!0}),i);var br=E((Gs,Zt)=>{(function(i,e){typeof Gs=="object"&&typeof Zt!="undefined"?Zt.exports=e():typeof define=="function"&&define.amd?define(e):i.moment=e()})(Gs,function(){"use strict";var i;function e(){return i.apply(null,arguments)}function t(r){i=r}function n(r){return r instanceof Array||Object.prototype.toString.call(r)==="[object Array]"}function a(r){return r!=null&&Object.prototype.toString.call(r)==="[object Object]"}function l(r,s){return Object.prototype.hasOwnProperty.call(r,s)}function c(r){if(Object.getOwnPropertyNames)return Object.getOwnPropertyNames(r).length===0;var s;for(s in r)if(l(r,s))return!1;return!0}function v(r){return r===void 0}function h(r){return typeof r=="number"||Object.prototype.toString.call(r)==="[object Number]"}function d(r){return r instanceof Date||Object.prototype.toString.call(r)==="[object Date]"}function g(r,s){var o=[],u,p=r.length;for(u=0;u>>0,u;for(u=0;u0)for(o=0;o=0;return(m?o?"+":"":"-")+Math.pow(10,Math.max(0,p)).toString().substr(1)+u}var gs=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|N{1,5}|YYYYYY|YYYYY|YYYY|YY|y{2,4}|yo?|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,Vr=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,ys={},Yt={};function P(r,s,o,u){var p=u;typeof u=="string"&&(p=function(){return this[u]()}),r&&(Yt[r]=p),s&&(Yt[s[0]]=function(){return nt(p.apply(this,arguments),s[1],s[2])}),o&&(Yt[o]=function(){return this.localeData().ordinal(p.apply(this,arguments),r)})}function zc(r){return r.match(/\[[\s\S]/)?r.replace(/^\[|\]$/g,""):r.replace(/\\/g,"")}function jc(r){var s=r.match(gs),o,u;for(o=0,u=s.length;o=0&&Vr.test(r);)r=r.replace(Vr,u),Vr.lastIndex=0,o-=1;return r}var $c={LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"};function Kc(r){var s=this._longDateFormat[r],o=this._longDateFormat[r.toUpperCase()];return s||!o?s:(this._longDateFormat[r]=o.match(gs).map(function(u){return u==="MMMM"||u==="MM"||u==="DD"||u==="dddd"?u.slice(1):u}).join(""),this._longDateFormat[r])}var Zc="Invalid date";function Jc(){return this._invalidDate}var Qc="%d",Xc=/\d{1,2}/;function ep(r){return this._ordinal.replace("%d",r)}var tp={future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",w:"a week",ww:"%d weeks",M:"a month",MM:"%d months",y:"a year",yy:"%d years"};function rp(r,s,o,u){var p=this._relativeTime[o];return rt(p)?p(r,s,o,u):p.replace(/%d/i,r)}function np(r,s){var o=this._relativeTime[r>0?"future":"past"];return rt(o)?o(s):o.replace(/%s/i,s)}var mr={};function xe(r,s){var o=r.toLowerCase();mr[o]=mr[o+"s"]=mr[s]=r}function Fe(r){return typeof r=="string"?mr[r]||mr[r.toLowerCase()]:void 0}function _s(r){var s={},o,u;for(u in r)l(r,u)&&(o=Fe(u),o&&(s[o]=r[u]));return s}var ji={};function be(r,s){ji[r]=s}function sp(r){var s=[],o;for(o in r)l(r,o)&&s.push({unit:o,priority:ji[o]});return s.sort(function(u,p){return u.priority-p.priority}),s}function kr(r){return r%4===0&&r%100!==0||r%400===0}function qe(r){return r<0?Math.ceil(r)||0:Math.floor(r)}function B(r){var s=+r,o=0;return s!==0&&isFinite(s)&&(o=qe(s)),o}function Gt(r,s){return function(o){return o!=null?($i(this,r,o),e.updateOffset(this,s),this):Cr(this,r)}}function Cr(r,s){return r.isValid()?r._d["get"+(r._isUTC?"UTC":"")+s]():NaN}function $i(r,s,o){r.isValid()&&!isNaN(o)&&(s==="FullYear"&&kr(r.year())&&r.month()===1&&r.date()===29?(o=B(o),r._d["set"+(r._isUTC?"UTC":"")+s](o,r.month(),Hr(o,r.month()))):r._d["set"+(r._isUTC?"UTC":"")+s](o))}function ip(r){return r=Fe(r),rt(this[r])?this[r]():this}function ap(r,s){if(typeof r=="object"){r=_s(r);var o=sp(r),u,p=o.length;for(u=0;u68?1900:2e3)};var sa=Gt("FullYear",!0);function Rp(){return kr(this.year())}function Dp(r,s,o,u,p,m,I){var M;return r<100&&r>=0?(M=new Date(r+400,s,o,u,p,m,I),isFinite(M.getFullYear())&&M.setFullYear(r)):M=new Date(r,s,o,u,p,m,I),M}function fr(r){var s,o;return r<100&&r>=0?(o=Array.prototype.slice.call(arguments),o[0]=r+400,s=new Date(Date.UTC.apply(null,o)),isFinite(s.getUTCFullYear())&&s.setUTCFullYear(r)):s=new Date(Date.UTC.apply(null,arguments)),s}function Wr(r,s,o){var u=7+s-o,p=(7+fr(r,0,u).getUTCDay()-s)%7;return-p+u-1}function ia(r,s,o,u,p){var m=(7+o-u)%7,I=Wr(r,u,p),M=1+7*(s-1)+m+I,q,$;return M<=0?(q=r-1,$=dr(q)+M):M>dr(r)?(q=r+1,$=M-dr(r)):(q=r,$=M),{year:q,dayOfYear:$}}function Ir(r,s,o){var u=Wr(r.year(),s,o),p=Math.floor((r.dayOfYear()-u-1)/7)+1,m,I;return p<1?(I=r.year()-1,m=p+pt(I,s,o)):p>pt(r.year(),s,o)?(m=p-pt(r.year(),s,o),I=r.year()+1):(I=r.year(),m=p),{week:m,year:I}}function pt(r,s,o){var u=Wr(r,s,o),p=Wr(r+1,s,o);return(dr(r)-u+p)/7}P("w",["ww",2],"wo","week"),P("W",["WW",2],"Wo","isoWeek"),xe("week","w"),xe("isoWeek","W"),be("week",5),be("isoWeek",5),w("w",Z),w("ww",Z,ke),w("W",Z),w("WW",Z,ke),hr(["w","ww","W","WW"],function(r,s,o,u){s[u.substr(0,1)]=B(r)});function Pp(r){return Ir(r,this._week.dow,this._week.doy).week}var Mp={dow:0,doy:6};function Ep(){return this._week.dow}function Ap(){return this._week.doy}function Op(r){var s=this.localeData().week(this);return r==null?s:this.add((r-s)*7,"d")}function Np(r){var s=Ir(this,1,4).week;return r==null?s:this.add((r-s)*7,"d")}P("d",0,"do","day"),P("dd",0,0,function(r){return this.localeData().weekdaysMin(this,r)}),P("ddd",0,0,function(r){return this.localeData().weekdaysShort(this,r)}),P("dddd",0,0,function(r){return this.localeData().weekdays(this,r)}),P("e",0,0,"weekday"),P("E",0,0,"isoWeekday"),xe("day","d"),xe("weekday","e"),xe("isoWeekday","E"),be("day",11),be("weekday",11),be("isoWeekday",11),w("d",Z),w("e",Z),w("E",Z),w("dd",function(r,s){return s.weekdaysMinRegex(r)}),w("ddd",function(r,s){return s.weekdaysShortRegex(r)}),w("dddd",function(r,s){return s.weekdaysRegex(r)}),hr(["dd","ddd","dddd"],function(r,s,o,u){var p=o._locale.weekdaysParse(r,u,o._strict);p!=null?s.d=p:_(o).invalidWeekday=r}),hr(["d","e","E"],function(r,s,o,u){s[u]=B(r)});function Tp(r,s){return typeof r!="string"?r:isNaN(r)?(r=s.weekdaysParse(r),typeof r=="number"?r:null):parseInt(r,10)}function Vp(r,s){return typeof r=="string"?s.weekdaysParse(r)%7||7:isNaN(r)?null:r}function ws(r,s){return r.slice(s,7).concat(r.slice(0,s))}var Lp="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),aa="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),kp="Su_Mo_Tu_We_Th_Fr_Sa".split("_"),Cp=vr,Fp=vr,qp=vr;function Up(r,s){var o=n(this._weekdays)?this._weekdays:this._weekdays[r&&r!==!0&&this._weekdays.isFormat.test(s)?"format":"standalone"];return r===!0?ws(o,this._week.dow):r?o[r.day()]:o}function Bp(r){return r===!0?ws(this._weekdaysShort,this._week.dow):r?this._weekdaysShort[r.day()]:this._weekdaysShort}function Yp(r){return r===!0?ws(this._weekdaysMin,this._week.dow):r?this._weekdaysMin[r.day()]:this._weekdaysMin}function Gp(r,s,o){var u,p,m,I=r.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],u=0;u<7;++u)m=y([2e3,1]).day(u),this._minWeekdaysParse[u]=this.weekdaysMin(m,"").toLocaleLowerCase(),this._shortWeekdaysParse[u]=this.weekdaysShort(m,"").toLocaleLowerCase(),this._weekdaysParse[u]=this.weekdays(m,"").toLocaleLowerCase();return o?s==="dddd"?(p=se.call(this._weekdaysParse,I),p!==-1?p:null):s==="ddd"?(p=se.call(this._shortWeekdaysParse,I),p!==-1?p:null):(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null):s==="dddd"?(p=se.call(this._weekdaysParse,I),p!==-1||(p=se.call(this._shortWeekdaysParse,I),p!==-1)?p:(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null)):s==="ddd"?(p=se.call(this._shortWeekdaysParse,I),p!==-1||(p=se.call(this._weekdaysParse,I),p!==-1)?p:(p=se.call(this._minWeekdaysParse,I),p!==-1?p:null)):(p=se.call(this._minWeekdaysParse,I),p!==-1||(p=se.call(this._weekdaysParse,I),p!==-1)?p:(p=se.call(this._shortWeekdaysParse,I),p!==-1?p:null))}function Hp(r,s,o){var u,p,m;if(this._weekdaysParseExact)return Gp.call(this,r,s,o);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),u=0;u<7;u++){if(p=y([2e3,1]).day(u),o&&!this._fullWeekdaysParse[u]&&(this._fullWeekdaysParse[u]=new RegExp("^"+this.weekdays(p,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[u]=new RegExp("^"+this.weekdaysShort(p,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[u]=new RegExp("^"+this.weekdaysMin(p,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[u]||(m="^"+this.weekdays(p,"")+"|^"+this.weekdaysShort(p,"")+"|^"+this.weekdaysMin(p,""),this._weekdaysParse[u]=new RegExp(m.replace(".",""),"i")),o&&s==="dddd"&&this._fullWeekdaysParse[u].test(r))return u;if(o&&s==="ddd"&&this._shortWeekdaysParse[u].test(r))return u;if(o&&s==="dd"&&this._minWeekdaysParse[u].test(r))return u;if(!o&&this._weekdaysParse[u].test(r))return u}}function Wp(r){if(!this.isValid())return r!=null?this:NaN;var s=this._isUTC?this._d.getUTCDay():this._d.getDay();return r!=null?(r=Tp(r,this.localeData()),this.add(r-s,"d")):s}function zp(r){if(!this.isValid())return r!=null?this:NaN;var s=(this.day()+7-this.localeData()._week.dow)%7;return r==null?s:this.add(r-s,"d")}function jp(r){if(!this.isValid())return r!=null?this:NaN;if(r!=null){var s=Vp(r,this.localeData());return this.day(this.day()%7?s:s-7)}else return this.day()||7}function $p(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysStrictRegex:this._weekdaysRegex):(l(this,"_weekdaysRegex")||(this._weekdaysRegex=Cp),this._weekdaysStrictRegex&&r?this._weekdaysStrictRegex:this._weekdaysRegex)}function Kp(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(l(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=Fp),this._weekdaysShortStrictRegex&&r?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)}function Zp(r){return this._weekdaysParseExact?(l(this,"_weekdaysRegex")||Rs.call(this),r?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(l(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=qp),this._weekdaysMinStrictRegex&&r?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)}function Rs(){function r(De,ft){return ft.length-De.length}var s=[],o=[],u=[],p=[],m,I,M,q,$;for(m=0;m<7;m++)I=y([2e3,1]).day(m),M=Ce(this.weekdaysMin(I,"")),q=Ce(this.weekdaysShort(I,"")),$=Ce(this.weekdays(I,"")),s.push(M),o.push(q),u.push($),p.push(M),p.push(q),p.push($);s.sort(r),o.sort(r),u.sort(r),p.sort(r),this._weekdaysRegex=new RegExp("^("+p.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ds(){return this.hours()%12||12}function Jp(){return this.hours()||24}P("H",["HH",2],0,"hour"),P("h",["hh",2],0,Ds),P("k",["kk",2],0,Jp),P("hmm",0,0,function(){return""+Ds.apply(this)+nt(this.minutes(),2)}),P("hmmss",0,0,function(){return""+Ds.apply(this)+nt(this.minutes(),2)+nt(this.seconds(),2)}),P("Hmm",0,0,function(){return""+this.hours()+nt(this.minutes(),2)}),P("Hmmss",0,0,function(){return""+this.hours()+nt(this.minutes(),2)+nt(this.seconds(),2)});function oa(r,s){P(r,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),s)})}oa("a",!0),oa("A",!1),xe("hour","h"),be("hour",13);function la(r,s){return s._meridiemParse}w("a",la),w("A",la),w("H",Z),w("h",Z),w("k",Z),w("HH",Z,ke),w("hh",Z,ke),w("kk",Z,ke),w("hmm",Ji),w("hmmss",Qi),w("Hmm",Ji),w("Hmmss",Qi),j(["H","HH"],ue),j(["k","kk"],function(r,s,o){var u=B(r);s[ue]=u===24?0:u}),j(["a","A"],function(r,s,o){o._isPm=o._locale.isPM(r),o._meridiem=r}),j(["h","hh"],function(r,s,o){s[ue]=B(r),_(o).bigHour=!0}),j("hmm",function(r,s,o){var u=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u)),_(o).bigHour=!0}),j("hmmss",function(r,s,o){var u=r.length-4,p=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u,2)),s[ct]=B(r.substr(p)),_(o).bigHour=!0}),j("Hmm",function(r,s,o){var u=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u))}),j("Hmmss",function(r,s,o){var u=r.length-4,p=r.length-2;s[ue]=B(r.substr(0,u)),s[$e]=B(r.substr(u,2)),s[ct]=B(r.substr(p))});function Qp(r){return(r+"").toLowerCase().charAt(0)==="p"}var Xp=/[ap]\.?m?\.?/i,em=Gt("Hours",!0);function tm(r,s,o){return r>11?o?"pm":"PM":o?"am":"AM"}var ua={calendar:Hc,longDateFormat:$c,invalidDate:Zc,ordinal:Qc,dayOfMonthOrdinalParse:Xc,relativeTime:tp,months:dp,monthsShort:Xi,week:Mp,weekdays:Lp,weekdaysMin:kp,weekdaysShort:aa,meridiemParse:Xp},Q={},gr={},yr;function rm(r,s){var o,u=Math.min(r.length,s.length);for(o=0;o0;){if(p=zr(m.slice(0,o).join("-")),p)return p;if(u&&u.length>=o&&rm(m,u)>=o-1)break;o--}s++}return yr}function sm(r){return r.match("^[^/\\\\]*$")!=null}function zr(r){var s=null,o;if(Q[r]===void 0&&typeof Zt!="undefined"&&Zt&&Zt.exports&&sm(r))try{s=yr._abbr,o=require,o("./locale/"+r),St(s)}catch(u){Q[r]=null}return Q[r]}function St(r,s){var o;return r&&(v(s)?o=mt(r):o=Ps(r,s),o&&(yr=o)),yr._abbr}function Ps(r,s){if(s!==null){var o,u=ua;if(s.abbr=r,Q[r]!=null)Wi("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),u=Q[r]._config;else if(s.parentLocale!=null)if(Q[s.parentLocale]!=null)u=Q[s.parentLocale]._config;else if(o=zr(s.parentLocale),o!=null)u=o._config;else return gr[s.parentLocale]||(gr[s.parentLocale]=[]),gr[s.parentLocale].push({name:r,config:s}),null;return Q[r]=new fs(ds(u,s)),gr[r]&&gr[r].forEach(function(p){Ps(p.name,p.config)}),St(r),Q[r]}else return delete Q[r],null}function im(r,s){if(s!=null){var o,u,p=ua;Q[r]!=null&&Q[r].parentLocale!=null?Q[r].set(ds(Q[r]._config,s)):(u=zr(r),u!=null&&(p=u._config),s=ds(p,s),u==null&&(s.abbr=r),o=new fs(s),o.parentLocale=Q[r],Q[r]=o),St(r)}else Q[r]!=null&&(Q[r].parentLocale!=null?(Q[r]=Q[r].parentLocale,r===St()&&St(r)):Q[r]!=null&&delete Q[r]);return Q[r]}function mt(r){var s;if(r&&r._locale&&r._locale._abbr&&(r=r._locale._abbr),!r)return yr;if(!n(r)){if(s=zr(r),s)return s;r=[r]}return nm(r)}function am(){return Is(Q)}function Ms(r){var s,o=r._a;return o&&_(r).overflow===-2&&(s=o[ut]<0||o[ut]>11?ut:o[st]<1||o[st]>Hr(o[we],o[ut])?st:o[ue]<0||o[ue]>24||o[ue]===24&&(o[$e]!==0||o[ct]!==0||o[Ot]!==0)?ue:o[$e]<0||o[$e]>59?$e:o[ct]<0||o[ct]>59?ct:o[Ot]<0||o[Ot]>999?Ot:-1,_(r)._overflowDayOfYear&&(sst)&&(s=st),_(r)._overflowWeeks&&s===-1&&(s=mp),_(r)._overflowWeekday&&s===-1&&(s=vp),_(r).overflow=s),r}var om=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,lm=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d|))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([+-]\d\d(?::?\d\d)?|\s*Z)?)?$/,um=/Z|[+-]\d\d(?::?\d\d)?/,jr=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/],["YYYYMM",/\d{6}/,!1],["YYYY",/\d{4}/,!1]],Es=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],cm=/^\/?Date\((-?\d+)/i,pm=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/,mm={UT:0,GMT:0,EDT:-4*60,EST:-5*60,CDT:-5*60,CST:-6*60,MDT:-6*60,MST:-7*60,PDT:-7*60,PST:-8*60};function pa(r){var s,o,u=r._i,p=om.exec(u)||lm.exec(u),m,I,M,q,$=jr.length,De=Es.length;if(p){for(_(r).iso=!0,s=0,o=$;sdr(I)||r._dayOfYear===0)&&(_(r)._overflowDayOfYear=!0),o=fr(I,0,r._dayOfYear),r._a[ut]=o.getUTCMonth(),r._a[st]=o.getUTCDate()),s=0;s<3&&r._a[s]==null;++s)r._a[s]=u[s]=p[s];for(;s<7;s++)r._a[s]=u[s]=r._a[s]==null?s===2?1:0:r._a[s];r._a[ue]===24&&r._a[$e]===0&&r._a[ct]===0&&r._a[Ot]===0&&(r._nextDay=!0,r._a[ue]=0),r._d=(r._useUTC?fr:Dp).apply(null,u),m=r._useUTC?r._d.getUTCDay():r._d.getDay(),r._tzm!=null&&r._d.setUTCMinutes(r._d.getUTCMinutes()-r._tzm),r._nextDay&&(r._a[ue]=24),r._w&&typeof r._w.d!="undefined"&&r._w.d!==m&&(_(r).weekdayMismatch=!0)}}function _m(r){var s,o,u,p,m,I,M,q,$;s=r._w,s.GG!=null||s.W!=null||s.E!=null?(m=1,I=4,o=Wt(s.GG,r._a[we],Ir(J(),1,4).year),u=Wt(s.W,1),p=Wt(s.E,1),(p<1||p>7)&&(q=!0)):(m=r._locale._week.dow,I=r._locale._week.doy,$=Ir(J(),m,I),o=Wt(s.gg,r._a[we],$.year),u=Wt(s.w,$.week),s.d!=null?(p=s.d,(p<0||p>6)&&(q=!0)):s.e!=null?(p=s.e+m,(s.e<0||s.e>6)&&(q=!0)):p=m),u<1||u>pt(o,m,I)?_(r)._overflowWeeks=!0:q!=null?_(r)._overflowWeekday=!0:(M=ia(o,u,p,m,I),r._a[we]=M.year,r._dayOfYear=M.dayOfYear)}e.ISO_8601=function(){},e.RFC_2822=function(){};function Os(r){if(r._f===e.ISO_8601){pa(r);return}if(r._f===e.RFC_2822){ma(r);return}r._a=[],_(r).empty=!0;var s=""+r._i,o,u,p,m,I,M=s.length,q=0,$,De;for(p=zi(r._f,r._locale).match(gs)||[],De=p.length,o=0;o0&&_(r).unusedInput.push(I),s=s.slice(s.indexOf(u)+u.length),q+=u.length),Yt[m]?(u?_(r).empty=!1:_(r).unusedTokens.push(m),pp(m,u,r)):r._strict&&!u&&_(r).unusedTokens.push(m);_(r).charsLeftOver=M-q,s.length>0&&_(r).unusedInput.push(s),r._a[ue]<=12&&_(r).bigHour===!0&&r._a[ue]>0&&(_(r).bigHour=void 0),_(r).parsedDateParts=r._a.slice(0),_(r).meridiem=r._meridiem,r._a[ue]=Sm(r._locale,r._a[ue],r._meridiem),$=_(r).era,$!==null&&(r._a[we]=r._locale.erasConvertYear($,r._a[we])),As(r),Ms(r)}function Sm(r,s,o){var u;return o==null?s:r.meridiemHour!=null?r.meridiemHour(s,o):(r.isPM!=null&&(u=r.isPM(o),u&&s<12&&(s+=12),!u&&s===12&&(s=0)),s)}function xm(r){var s,o,u,p,m,I,M=!1,q=r._f.length;if(q===0){_(r).invalidFormat=!0,r._d=new Date(NaN);return}for(p=0;pthis?this:r:ee()});function da(r,s){var o,u;if(s.length===1&&n(s[0])&&(s=s[0]),!s.length)return J();for(o=s[0],u=1;uthis.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()}function Gm(){if(!v(this._isDSTShifted))return this._isDSTShifted;var r={},s;return je(r,this),r=va(r),r._a?(s=r._isUTC?y(r._a):J(r._a),this._isDSTShifted=this.isValid()&&Vm(r._a,s.toArray())>0):this._isDSTShifted=!1,this._isDSTShifted}function Hm(){return this.isValid()?!this._isUTC:!1}function Wm(){return this.isValid()?this._isUTC:!1}function Ia(){return this.isValid()?this._isUTC&&this._offset===0:!1}var zm=/^(-|\+)?(?:(\d*)[. ])?(\d+):(\d+)(?::(\d+)(\.\d*)?)?$/,jm=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ke(r,s){var o=r,u=null,p,m,I;return Kr(r)?o={ms:r._milliseconds,d:r._days,M:r._months}:h(r)||!isNaN(+r)?(o={},s?o[s]=+r:o.milliseconds=+r):(u=zm.exec(r))?(p=u[1]==="-"?-1:1,o={y:0,d:B(u[st])*p,h:B(u[ue])*p,m:B(u[$e])*p,s:B(u[ct])*p,ms:B(Ns(u[Ot]*1e3))*p}):(u=jm.exec(r))?(p=u[1]==="-"?-1:1,o={y:Nt(u[2],p),M:Nt(u[3],p),w:Nt(u[4],p),d:Nt(u[5],p),h:Nt(u[6],p),m:Nt(u[7],p),s:Nt(u[8],p)}):o==null?o={}:typeof o=="object"&&("from"in o||"to"in o)&&(I=$m(J(o.from),J(o.to)),o={},o.ms=I.milliseconds,o.M=I.months),m=new $r(o),Kr(r)&&l(r,"_locale")&&(m._locale=r._locale),Kr(r)&&l(r,"_isValid")&&(m._isValid=r._isValid),m}Ke.fn=$r.prototype,Ke.invalid=Tm;function Nt(r,s){var o=r&&parseFloat(r.replace(",","."));return(isNaN(o)?0:o)*s}function ga(r,s){var o={};return o.months=s.month()-r.month()+(s.year()-r.year())*12,r.clone().add(o.months,"M").isAfter(s)&&--o.months,o.milliseconds=+s-+r.clone().add(o.months,"M"),o}function $m(r,s){var o;return r.isValid()&&s.isValid()?(s=Vs(s,r),r.isBefore(s)?o=ga(r,s):(o=ga(s,r),o.milliseconds=-o.milliseconds,o.months=-o.months),o):{milliseconds:0,months:0}}function ya(r,s){return function(o,u){var p,m;return u!==null&&!isNaN(+u)&&(Wi(s,"moment()."+s+"(period, number) is deprecated. Please use moment()."+s+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),m=o,o=u,u=m),p=Ke(o,u),_a(this,p,r),this}}function _a(r,s,o,u){var p=s._milliseconds,m=Ns(s._days),I=Ns(s._months);r.isValid()&&(u=u==null?!0:u,I&&ta(r,Cr(r,"Month")+I*o),m&&$i(r,"Date",Cr(r,"Date")+m*o),p&&r._d.setTime(r._d.valueOf()+p*o),u&&e.updateOffset(r,m||I))}var Km=ya(1,"add"),Zm=ya(-1,"subtract");function Sa(r){return typeof r=="string"||r instanceof String}function Jm(r){return _e(r)||d(r)||Sa(r)||h(r)||Xm(r)||Qm(r)||r===null||r===void 0}function Qm(r){var s=a(r)&&!c(r),o=!1,u=["years","year","y","months","month","M","days","day","d","dates","date","D","hours","hour","h","minutes","minute","m","seconds","second","s","milliseconds","millisecond","ms"],p,m,I=u.length;for(p=0;po.valueOf():o.valueOf()9999?Lr(o,s?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):rt(Date.prototype.toISOString)?s?this.toDate().toISOString():new Date(this.valueOf()+this.utcOffset()*60*1e3).toISOString().replace("Z",Lr(o,"Z")):Lr(o,s?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")}function vv(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var r="moment",s="",o,u,p,m;return this.isLocal()||(r=this.utcOffset()===0?"moment.utc":"moment.parseZone",s="Z"),o="["+r+'("]',u=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",p="-MM-DD[T]HH:mm:ss.SSS",m=s+'[")]',this.format(o+u+p+m)}function hv(r){r||(r=this.isUtc()?e.defaultFormatUtc:e.defaultFormat);var s=Lr(this,r);return this.localeData().postformat(s)}function dv(r,s){return this.isValid()&&(_e(r)&&r.isValid()||J(r).isValid())?Ke({to:this,from:r}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function fv(r){return this.from(J(),r)}function Iv(r,s){return this.isValid()&&(_e(r)&&r.isValid()||J(r).isValid())?Ke({from:this,to:r}).locale(this.locale()).humanize(!s):this.localeData().invalidDate()}function gv(r){return this.to(J(),r)}function xa(r){var s;return r===void 0?this._locale._abbr:(s=mt(r),s!=null&&(this._locale=s),this)}var ba=Se("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(r){return r===void 0?this.localeData():this.locale(r)});function wa(){return this._locale}var Jr=1e3,zt=60*Jr,Qr=60*zt,Ra=(365*400+97)*24*Qr;function jt(r,s){return(r%s+s)%s}function Da(r,s,o){return r<100&&r>=0?new Date(r+400,s,o)-Ra:new Date(r,s,o).valueOf()}function Pa(r,s,o){return r<100&&r>=0?Date.UTC(r+400,s,o)-Ra:Date.UTC(r,s,o)}function yv(r){var s,o;if(r=Fe(r),r===void 0||r==="millisecond"||!this.isValid())return this;switch(o=this._isUTC?Pa:Da,r){case"year":s=o(this.year(),0,1);break;case"quarter":s=o(this.year(),this.month()-this.month()%3,1);break;case"month":s=o(this.year(),this.month(),1);break;case"week":s=o(this.year(),this.month(),this.date()-this.weekday());break;case"isoWeek":s=o(this.year(),this.month(),this.date()-(this.isoWeekday()-1));break;case"day":case"date":s=o(this.year(),this.month(),this.date());break;case"hour":s=this._d.valueOf(),s-=jt(s+(this._isUTC?0:this.utcOffset()*zt),Qr);break;case"minute":s=this._d.valueOf(),s-=jt(s,zt);break;case"second":s=this._d.valueOf(),s-=jt(s,Jr);break}return this._d.setTime(s),e.updateOffset(this,!0),this}function _v(r){var s,o;if(r=Fe(r),r===void 0||r==="millisecond"||!this.isValid())return this;switch(o=this._isUTC?Pa:Da,r){case"year":s=o(this.year()+1,0,1)-1;break;case"quarter":s=o(this.year(),this.month()-this.month()%3+3,1)-1;break;case"month":s=o(this.year(),this.month()+1,1)-1;break;case"week":s=o(this.year(),this.month(),this.date()-this.weekday()+7)-1;break;case"isoWeek":s=o(this.year(),this.month(),this.date()-(this.isoWeekday()-1)+7)-1;break;case"day":case"date":s=o(this.year(),this.month(),this.date()+1)-1;break;case"hour":s=this._d.valueOf(),s+=Qr-jt(s+(this._isUTC?0:this.utcOffset()*zt),Qr)-1;break;case"minute":s=this._d.valueOf(),s+=zt-jt(s,zt)-1;break;case"second":s=this._d.valueOf(),s+=Jr-jt(s,Jr)-1;break}return this._d.setTime(s),e.updateOffset(this,!0),this}function Sv(){return this._d.valueOf()-(this._offset||0)*6e4}function xv(){return Math.floor(this.valueOf()/1e3)}function bv(){return new Date(this.valueOf())}function wv(){var r=this;return[r.year(),r.month(),r.date(),r.hour(),r.minute(),r.second(),r.millisecond()]}function Rv(){var r=this;return{years:r.year(),months:r.month(),date:r.date(),hours:r.hours(),minutes:r.minutes(),seconds:r.seconds(),milliseconds:r.milliseconds()}}function Dv(){return this.isValid()?this.toISOString():null}function Pv(){return K(this)}function Mv(){return f({},_(this))}function Ev(){return _(this).overflow}function Av(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}}P("N",0,0,"eraAbbr"),P("NN",0,0,"eraAbbr"),P("NNN",0,0,"eraAbbr"),P("NNNN",0,0,"eraName"),P("NNNNN",0,0,"eraNarrow"),P("y",["y",1],"yo","eraYear"),P("y",["yy",2],0,"eraYear"),P("y",["yyy",3],0,"eraYear"),P("y",["yyyy",4],0,"eraYear"),w("N",ks),w("NN",ks),w("NNN",ks),w("NNNN",Bv),w("NNNNN",Yv),j(["N","NN","NNN","NNNN","NNNNN"],function(r,s,o,u){var p=o._locale.erasParse(r,u,o._strict);p?_(o).era=p:_(o).invalidEra=r}),w("y",Ht),w("yy",Ht),w("yyy",Ht),w("yyyy",Ht),w("yo",Gv),j(["y","yy","yyy","yyyy"],we),j(["yo"],function(r,s,o,u){var p;o._locale._eraYearOrdinalRegex&&(p=r.match(o._locale._eraYearOrdinalRegex)),o._locale.eraYearOrdinalParse?s[we]=o._locale.eraYearOrdinalParse(r,p):s[we]=parseInt(r,10)});function Ov(r,s){var o,u,p,m=this._eras||mt("en")._eras;for(o=0,u=m.length;o=0)return m[u]}function Tv(r,s){var o=r.since<=r.until?1:-1;return s===void 0?e(r.since).year():e(r.since).year()+(s-r.offset)*o}function Vv(){var r,s,o,u=this.localeData().eras();for(r=0,s=u.length;rm&&(s=m),Zv.call(this,r,s,o,u,p))}function Zv(r,s,o,u,p){var m=ia(r,s,o,u,p),I=fr(m.year,0,m.dayOfYear);return this.year(I.getUTCFullYear()),this.month(I.getUTCMonth()),this.date(I.getUTCDate()),this}P("Q",0,"Qo","quarter"),xe("quarter","Q"),be("quarter",7),w("Q",Ki),j("Q",function(r,s){s[ut]=(B(r)-1)*3});function Jv(r){return r==null?Math.ceil((this.month()+1)/3):this.month((r-1)*3+this.month()%3)}P("D",["DD",2],"Do","date"),xe("date","D"),be("date",9),w("D",Z),w("DD",Z,ke),w("Do",function(r,s){return r?s._dayOfMonthOrdinalParse||s._ordinalParse:s._dayOfMonthOrdinalParseLenient}),j(["D","DD"],st),j("Do",function(r,s){s[st]=B(r.match(Z)[0])});var Ea=Gt("Date",!0);P("DDD",["DDDD",3],"DDDo","dayOfYear"),xe("dayOfYear","DDD"),be("dayOfYear",4),w("DDD",qr),w("DDDD",Zi),j(["DDD","DDDD"],function(r,s,o){o._dayOfYear=B(r)});function Qv(r){var s=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return r==null?s:this.add(r-s,"d")}P("m",["mm",2],0,"minute"),xe("minute","m"),be("minute",14),w("m",Z),w("mm",Z,ke),j(["m","mm"],$e);var Xv=Gt("Minutes",!1);P("s",["ss",2],0,"second"),xe("second","s"),be("second",15),w("s",Z),w("ss",Z,ke),j(["s","ss"],ct);var eh=Gt("Seconds",!1);P("S",0,0,function(){return~~(this.millisecond()/100)}),P(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),P(0,["SSS",3],0,"millisecond"),P(0,["SSSS",4],0,function(){return this.millisecond()*10}),P(0,["SSSSS",5],0,function(){return this.millisecond()*100}),P(0,["SSSSSS",6],0,function(){return this.millisecond()*1e3}),P(0,["SSSSSSS",7],0,function(){return this.millisecond()*1e4}),P(0,["SSSSSSSS",8],0,function(){return this.millisecond()*1e5}),P(0,["SSSSSSSSS",9],0,function(){return this.millisecond()*1e6}),xe("millisecond","ms"),be("millisecond",16),w("S",qr,Ki),w("SS",qr,ke),w("SSS",qr,Zi);var xt,Aa;for(xt="SSSS";xt.length<=9;xt+="S")w(xt,Ht);function th(r,s){s[Ot]=B(("0."+r)*1e3)}for(xt="S";xt.length<=9;xt+="S")j(xt,th);Aa=Gt("Milliseconds",!1),P("z",0,0,"zoneAbbr"),P("zz",0,0,"zoneName");function rh(){return this._isUTC?"UTC":""}function nh(){return this._isUTC?"Coordinated Universal Time":""}var S=_t.prototype;S.add=Km,S.calendar=rv,S.clone=nv,S.diff=cv,S.endOf=_v,S.format=hv,S.from=dv,S.fromNow=fv,S.to=Iv,S.toNow=gv,S.get=ip,S.invalidAt=Ev,S.isAfter=sv,S.isBefore=iv,S.isBetween=av,S.isSame=ov,S.isSameOrAfter=lv,S.isSameOrBefore=uv,S.isValid=Pv,S.lang=ba,S.locale=xa,S.localeData=wa,S.max=Pm,S.min=Dm,S.parsingFlags=Mv,S.set=ap,S.startOf=yv,S.subtract=Zm,S.toArray=wv,S.toObject=Rv,S.toDate=bv,S.toISOString=mv,S.inspect=vv,typeof Symbol!="undefined"&&Symbol.for!=null&&(S[Symbol.for("nodejs.util.inspect.custom")]=function(){return"Moment<"+this.format()+">"}),S.toJSON=Dv,S.toString=pv,S.unix=xv,S.valueOf=Sv,S.creationData=Av,S.eraName=Vv,S.eraNarrow=Lv,S.eraAbbr=kv,S.eraYear=Cv,S.year=sa,S.isLeapYear=Rp,S.weekYear=Hv,S.isoWeekYear=Wv,S.quarter=S.quarters=Jv,S.month=ra,S.daysInMonth=xp,S.week=S.weeks=Op,S.isoWeek=S.isoWeeks=Np,S.weeksInYear=$v,S.weeksInWeekYear=Kv,S.isoWeeksInYear=zv,S.isoWeeksInISOWeekYear=jv,S.date=Ea,S.day=S.days=Wp,S.weekday=zp,S.isoWeekday=jp,S.dayOfYear=Qv,S.hour=S.hours=em,S.minute=S.minutes=Xv,S.second=S.seconds=eh,S.millisecond=S.milliseconds=Aa,S.utcOffset=km,S.utc=Fm,S.local=qm,S.parseZone=Um,S.hasAlignedHourOffset=Bm,S.isDST=Ym,S.isLocal=Hm,S.isUtcOffset=Wm,S.isUtc=Ia,S.isUTC=Ia,S.zoneAbbr=rh,S.zoneName=nh,S.dates=Se("dates accessor is deprecated. Use date instead.",Ea),S.months=Se("months accessor is deprecated. Use month instead",ra),S.years=Se("years accessor is deprecated. Use year instead",sa),S.zone=Se("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",Cm),S.isDSTShifted=Se("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",Gm);function sh(r){return J(r*1e3)}function ih(){return J.apply(null,arguments).parseZone()}function Oa(r){return r}var H=fs.prototype;H.calendar=Wc,H.longDateFormat=Kc,H.invalidDate=Jc,H.ordinal=ep,H.preparse=Oa,H.postformat=Oa,H.relativeTime=rp,H.pastFuture=np,H.set=Gc,H.eras=Ov,H.erasParse=Nv,H.erasConvertYear=Tv,H.erasAbbrRegex=qv,H.erasNameRegex=Fv,H.erasNarrowRegex=Uv,H.months=gp,H.monthsShort=yp,H.monthsParse=Sp,H.monthsRegex=wp,H.monthsShortRegex=bp,H.week=Pp,H.firstDayOfYear=Ap,H.firstDayOfWeek=Ep,H.weekdays=Up,H.weekdaysMin=Yp,H.weekdaysShort=Bp,H.weekdaysParse=Hp,H.weekdaysRegex=$p,H.weekdaysShortRegex=Kp,H.weekdaysMinRegex=Zp,H.isPM=Qp,H.meridiem=tm;function en(r,s,o,u){var p=mt(),m=y().set(u,s);return p[o](m,r)}function Na(r,s,o){if(h(r)&&(s=r,r=void 0),r=r||"",s!=null)return en(r,s,o,"month");var u,p=[];for(u=0;u<12;u++)p[u]=en(r,u,o,"month");return p}function Fs(r,s,o,u){typeof r=="boolean"?(h(s)&&(o=s,s=void 0),s=s||""):(s=r,o=s,r=!1,h(s)&&(o=s,s=void 0),s=s||"");var p=mt(),m=r?p._week.dow:0,I,M=[];if(o!=null)return en(s,(o+m)%7,u,"day");for(I=0;I<7;I++)M[I]=en(s,(I+m)%7,u,"day");return M}function ah(r,s){return Na(r,s,"months")}function oh(r,s){return Na(r,s,"monthsShort")}function lh(r,s,o){return Fs(r,s,o,"weekdays")}function uh(r,s,o){return Fs(r,s,o,"weekdaysShort")}function ch(r,s,o){return Fs(r,s,o,"weekdaysMin")}St("en",{eras:[{since:"0001-01-01",until:1/0,offset:1,name:"Anno Domini",narrow:"AD",abbr:"AD"},{since:"0000-12-31",until:-1/0,offset:1,name:"Before Christ",narrow:"BC",abbr:"BC"}],dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(r){var s=r%10,o=B(r%100/10)===1?"th":s===1?"st":s===2?"nd":s===3?"rd":"th";return r+o}}),e.lang=Se("moment.lang is deprecated. Use moment.locale instead.",St),e.langData=Se("moment.langData is deprecated. Use moment.localeData instead.",mt);var vt=Math.abs;function ph(){var r=this._data;return this._milliseconds=vt(this._milliseconds),this._days=vt(this._days),this._months=vt(this._months),r.milliseconds=vt(r.milliseconds),r.seconds=vt(r.seconds),r.minutes=vt(r.minutes),r.hours=vt(r.hours),r.months=vt(r.months),r.years=vt(r.years),this}function Ta(r,s,o,u){var p=Ke(s,o);return r._milliseconds+=u*p._milliseconds,r._days+=u*p._days,r._months+=u*p._months,r._bubble()}function mh(r,s){return Ta(this,r,s,1)}function vh(r,s){return Ta(this,r,s,-1)}function Va(r){return r<0?Math.floor(r):Math.ceil(r)}function hh(){var r=this._milliseconds,s=this._days,o=this._months,u=this._data,p,m,I,M,q;return r>=0&&s>=0&&o>=0||r<=0&&s<=0&&o<=0||(r+=Va(qs(o)+s)*864e5,s=0,o=0),u.milliseconds=r%1e3,p=qe(r/1e3),u.seconds=p%60,m=qe(p/60),u.minutes=m%60,I=qe(m/60),u.hours=I%24,s+=qe(I/24),q=qe(La(s)),o+=q,s-=Va(qs(q)),M=qe(o/12),o%=12,u.days=s,u.months=o,u.years=M,this}function La(r){return r*4800/146097}function qs(r){return r*146097/4800}function dh(r){if(!this.isValid())return NaN;var s,o,u=this._milliseconds;if(r=Fe(r),r==="month"||r==="quarter"||r==="year")switch(s=this._days+u/864e5,o=this._months+La(s),r){case"month":return o;case"quarter":return o/3;case"year":return o/12}else switch(s=this._days+Math.round(qs(this._months)),r){case"week":return s/7+u/6048e5;case"day":return s+u/864e5;case"hour":return s*24+u/36e5;case"minute":return s*1440+u/6e4;case"second":return s*86400+u/1e3;case"millisecond":return Math.floor(s*864e5)+u;default:throw new Error("Unknown unit "+r)}}function fh(){return this.isValid()?this._milliseconds+this._days*864e5+this._months%12*2592e6+B(this._months/12)*31536e6:NaN}function ht(r){return function(){return this.as(r)}}var Ih=ht("ms"),gh=ht("s"),yh=ht("m"),_h=ht("h"),Sh=ht("d"),xh=ht("w"),bh=ht("M"),wh=ht("Q"),Rh=ht("y");function Dh(){return Ke(this)}function Ph(r){return r=Fe(r),this.isValid()?this[r+"s"]():NaN}function Tt(r){return function(){return this.isValid()?this._data[r]:NaN}}var Mh=Tt("milliseconds"),Eh=Tt("seconds"),Ah=Tt("minutes"),Oh=Tt("hours"),Nh=Tt("days"),Th=Tt("months"),Vh=Tt("years");function Lh(){return qe(this.days()/7)}var dt=Math.round,$t={ss:44,s:45,m:45,h:22,d:26,w:null,M:11};function kh(r,s,o,u,p){return p.relativeTime(s||1,!!o,r,u)}function Ch(r,s,o,u){var p=Ke(r).abs(),m=dt(p.as("s")),I=dt(p.as("m")),M=dt(p.as("h")),q=dt(p.as("d")),$=dt(p.as("M")),De=dt(p.as("w")),ft=dt(p.as("y")),bt=m<=o.ss&&["s",m]||m0,bt[4]=u,kh.apply(null,bt)}function Fh(r){return r===void 0?dt:typeof r=="function"?(dt=r,!0):!1}function qh(r,s){return $t[r]===void 0?!1:s===void 0?$t[r]:($t[r]=s,r==="s"&&($t.ss=s-1),!0)}function Uh(r,s){if(!this.isValid())return this.localeData().invalidDate();var o=!1,u=$t,p,m;return typeof r=="object"&&(s=r,r=!1),typeof r=="boolean"&&(o=r),typeof s=="object"&&(u=Object.assign({},$t,s),s.s!=null&&s.ss==null&&(u.ss=s.s-1)),p=this.localeData(),m=Ch(this,!o,u,p),o&&(m=p.pastFuture(+this,m)),p.postformat(m)}var Us=Math.abs;function Kt(r){return(r>0)-(r<0)||+r}function tn(){if(!this.isValid())return this.localeData().invalidDate();var r=Us(this._milliseconds)/1e3,s=Us(this._days),o=Us(this._months),u,p,m,I,M=this.asSeconds(),q,$,De,ft;return M?(u=qe(r/60),p=qe(u/60),r%=60,u%=60,m=qe(o/12),o%=12,I=r?r.toFixed(3).replace(/\.?0+$/,""):"",q=M<0?"-":"",$=Kt(this._months)!==Kt(M)?"-":"",De=Kt(this._days)!==Kt(M)?"-":"",ft=Kt(this._milliseconds)!==Kt(M)?"-":"",q+"P"+(m?$+m+"Y":"")+(o?$+o+"M":"")+(s?De+s+"D":"")+(p||u||r?"T":"")+(p?ft+p+"H":"")+(u?ft+u+"M":"")+(r?ft+I+"S":"")):"P0D"}var Y=$r.prototype;Y.isValid=Nm,Y.abs=ph,Y.add=mh,Y.subtract=vh,Y.as=dh,Y.asMilliseconds=Ih,Y.asSeconds=gh,Y.asMinutes=yh,Y.asHours=_h,Y.asDays=Sh,Y.asWeeks=xh,Y.asMonths=bh,Y.asQuarters=wh,Y.asYears=Rh,Y.valueOf=fh,Y._bubble=hh,Y.clone=Dh,Y.get=Ph,Y.milliseconds=Mh,Y.seconds=Eh,Y.minutes=Ah,Y.hours=Oh,Y.days=Nh,Y.weeks=Lh,Y.months=Th,Y.years=Vh,Y.humanize=Uh,Y.toISOString=tn,Y.toString=tn,Y.toJSON=tn,Y.locale=xa,Y.localeData=wa,Y.toIsoString=Se("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",tn),Y.lang=ba,P("X",0,0,"unix"),P("x",0,0,"valueOf"),w("x",Br),w("X",lp),j("X",function(r,s,o){o._d=new Date(parseFloat(r)*1e3)}),j("x",function(r,s,o){o._d=new Date(B(r))});return e.version="2.29.4",t(J),e.fn=S,e.min=Mm,e.max=Em,e.now=Am,e.utc=y,e.unix=sh,e.months=ah,e.isDate=d,e.locale=St,e.invalid=ee,e.duration=Ke,e.isMoment=_e,e.weekdays=lh,e.parseZone=ih,e.localeData=mt,e.isDuration=Kr,e.monthsShort=oh,e.weekdaysMin=ch,e.defineLocale=Ps,e.updateLocale=im,e.locales=am,e.weekdaysShort=uh,e.normalizeUnits=Fe,e.relativeTimeRounding=Fh,e.relativeTimeThreshold=qh,e.calendarFormat=tv,e.prototype=S,e.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},e})});var Dn=E((Z1,ja)=>{var $h={boolean:!1,function:!0,object:!0,number:!1,string:!1,undefined:!1};ja.exports=$h});var Rr=E((J1,$a)=>{var Kh=Dn();function Zh(i){return!!(i&&Kh[typeof i])}$a.exports=Zh});var Jt=E((Q1,Ka)=>{var Jh=Object.prototype,Qh=Jh.toString,Xh=RegExp("^"+String(Qh).replace(/[.*+?^${}()|[\]\\]/g,"\\$&").replace(/toString| for [^\]]+/g,".*?")+"$");Ka.exports=Xh});var Ja=E((X1,Za)=>{var ed=Dn(),td=Object.prototype,rd=td.hasOwnProperty,nd=function(i){var e,t=i,n=[];if(!t||!ed[typeof i])return n;for(e in t)rd.call(t,e)&&n.push(e);return n};Za.exports=nd});var Ks=E((eg,Qa)=>{var sd=Rr(),id=Jt(),ad=Ja(),Pn=id.test(Pn=Object.keys)&&Pn,od=Pn?function(i){return sd(i)?Pn(i):[]}:ad;Qa.exports=od});var Zs=E((tg,Xa)=>{function ld(){}Xa.exports=ld});var Js=E((ng,ro)=>{var eo=Rr(),rg=Zs(),ud=Jt(),Mn=ud.test(Mn=Object.create)&&Mn;function to(i,e){return eo(i)?Mn(i):{}}Mn||(to=function(){function i(){}return function(e){if(eo(e)){i.prototype=e;var t=new i;i.prototype=null}return t||globalThis.Object()}}());ro.exports=to});var En=E((sg,io)=>{var cd=Zs(),pd=Jt(),no={configurable:!1,enumerable:!1,value:null,writable:!1},so=function(){try{var i={},e=pd.test(e=Object.defineProperty)&&e,t=e(i,i,i)&&e}catch(n){}return t}(),md=so?function(i,e){no.value=e,so(i,"__bindData__",no)}:cd;io.exports=md});var oo=E((ig,ao)=>{var vd=Js(),hd=Rr(),dd=En(),fd=[],Id=fd.push;function gd(i){var e=i[0],t=i[2],n=i[4];function a(){if(t){var l=t.slice();Id.apply(l,arguments)}if(this instanceof a){var c=vd(e.prototype),v=e.apply(c,l||arguments);return hd(v)?v:c}return e.apply(n,l||arguments)}return dd(a,i),a}ao.exports=gd});var Qs=E((ag,lo)=>{function yd(i,e,t){e||(e=0),typeof t=="undefined"&&(t=i?i.length:0);for(var n=-1,a=t-e||0,l=Array(a<0?0:a);++n{var _d=Js(),Sd=Rr(),xd=En(),bd=Qs(),wd=[],uo=wd.push;function co(i){var e=i[0],t=i[1],n=i[2],a=i[3],l=i[4],c=i[5],v=t&1,h=t&2,d=t&4,g=t&8,f=e;function y(){var R=v?l:this;if(n){var _=n.slice();uo.apply(_,arguments)}if((a||d)&&(_||(_=bd(arguments)),a&&uo.apply(_,a),d&&_.length{function Rd(i){return typeof i=="function"}vo.exports=Rd});var yo=E((ug,go)=>{var Dd=oo(),Pd=mo(),Md=ho(),Ed=[],fo=Ed.push;function Io(i,e,t,n,a,l){var c=e&1,v=e&2,h=e&4,d=e&8,g=e&16,f=e&32;if(!v&&!Md(i))throw new TypeError;g&&!t.length&&(e&=-17,g=t=!1),f&&!n.length&&(e&=-33,f=n=!1);var y=i&&i.__bindData__;if(y&&y!==!0)return y=y.slice(),c&&!(y[1]&1)&&(y[4]=a),!c&&y[1]&1&&(e|=8),h&&!(y[1]&4)&&(y[5]=l),g&&fo.apply(y[2]||(y[2]=[]),t),f&&fo.apply(y[3]||(y[3]=[]),n),y[1]|=e,Io.apply(null,y);var R=e==1||e===17?Dd:Pd;return R([i,e,t,n,a,l])}go.exports=Io});var xo=E((pg,So)=>{var _o=yo(),cg=Jt(),Ad=Qs();function Od(i,e){return arguments.length>2?_o(i,17,Ad(arguments,2),null,e):_o(i,1,null,null,e)}So.exports=Od});var wo=E((mg,bo)=>{function Nd(i){return i}bo.exports=Nd});var Do=E((vg,Ro)=>{var Td=Jt(),Vd=/\bthis\b/,Xs={};Xs.funcDecomp=!Td.test(globalThis.WinRTError)&&Vd.test(function(){return this});Xs.funcNames=typeof Function.name=="string";Ro.exports=Xs});var ti=E((hg,Po)=>{var Ld=xo(),kd=wo(),Cd=En(),ei=Do(),Fd=/^\s*function[ \n\r\t]+\w/,qd=/\bthis\b/,Ud=Function.prototype.toString;function Bd(i,e,t){if(typeof i!="function")return kd;if(typeof e=="undefined"||!("prototype"in i))return i;var n=i.__bindData__;if(typeof n=="undefined"&&(ei.funcNames&&(n=!i.name),n=n||!ei.funcDecomp,!n)){var a=Ud.call(i);ei.funcNames||(n=!Fd.test(a)),n||(n=qd.test(a),Cd(i,n))}if(n===!1||n!==!0&&n[1]&1)return i;switch(t){case 1:return function(l){return i.call(e,l)};case 2:return function(l,c){return i.call(e,l,c)};case 3:return function(l,c,v){return i.call(e,l,c,v)};case 4:return function(l,c,v,h){return i.call(e,l,c,v,h)}}return Ld(i,e)}Po.exports=Bd});var Ao=E((dg,Eo)=>{var Yd=ti(),Gd=Ks(),Mo=Dn(),Hd=function(i,e,t){var n,a=i,l=a;if(!a||!Mo[typeof a])return l;e=e&&typeof t=="undefined"?e:Yd(e,t,3);for(var c=-1,v=Mo[typeof a]&&Gd(a),h=v?v.length:0;++c{var Wd=ti(),zd=Ao();function jd(i,e,t){var n=-1,a=i?i.length:0;if(e=e&&typeof t=="undefined"?e:Wd(e,t,3),typeof a=="number")for(;++n{var To,Vo;To={mm:{name:{singular:"Millimeter",plural:"Millimeters"},to_anchor:1/1e3},cm:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/100},m:{name:{singular:"Meter",plural:"Meters"},to_anchor:1},km:{name:{singular:"Kilometer",plural:"Kilometers"},to_anchor:1e3}};Vo={in:{name:{singular:"Inch",plural:"Inches"},to_anchor:1/12},yd:{name:{singular:"Yard",plural:"Yards"},to_anchor:3},"ft-us":{name:{singular:"US Survey Foot",plural:"US Survey Feet"},to_anchor:1.000002},ft:{name:{singular:"Foot",plural:"Feet"},to_anchor:1},mi:{name:{singular:"Mile",plural:"Miles"},to_anchor:5280}};Lo.exports={metric:To,imperial:Vo,_anchors:{metric:{unit:"m",ratio:3.28084},imperial:{unit:"ft",ratio:1/3.28084}}}});var Uo=E((gg,qo)=>{var Co,Fo;Co={mm2:{name:{singular:"Square Millimeter",plural:"Square Millimeters"},to_anchor:1/1e6},cm2:{name:{singular:"Centimeter",plural:"Centimeters"},to_anchor:1/1e4},m2:{name:{singular:"Square Meter",plural:"Square Meters"},to_anchor:1},ha:{name:{singular:"Hectare",plural:"Hectares"},to_anchor:1e4},km2:{name:{singular:"Square Kilometer",plural:"Square Kilometers"},to_anchor:1e6}};Fo={in2:{name:{singular:"Square Inch",plural:"Square Inches"},to_anchor:1/144},yd2:{name:{singular:"Square Yard",plural:"Square Yards"},to_anchor:9},ft2:{name:{singular:"Square Foot",plural:"Square Feet"},to_anchor:1},ac:{name:{singular:"Acre",plural:"Acres"},to_anchor:43560},mi2:{name:{singular:"Square Mile",plural:"Square Miles"},to_anchor:27878400}};qo.exports={metric:Co,imperial:Fo,_anchors:{metric:{unit:"m2",ratio:10.7639},imperial:{unit:"ft2",ratio:1/10.7639}}}});var Ho=E((yg,Go)=>{var Bo,Yo;Bo={mcg:{name:{singular:"Microgram",plural:"Micrograms"},to_anchor:1/1e6},mg:{name:{singular:"Milligram",plural:"Milligrams"},to_anchor:1/1e3},g:{name:{singular:"Gram",plural:"Grams"},to_anchor:1},kg:{name:{singular:"Kilogram",plural:"Kilograms"},to_anchor:1e3},mt:{name:{singular:"Metric Tonne",plural:"Metric Tonnes"},to_anchor:1e6}};Yo={oz:{name:{singular:"Ounce",plural:"Ounces"},to_anchor:1/16},lb:{name:{singular:"Pound",plural:"Pounds"},to_anchor:1},t:{name:{singular:"Ton",plural:"Tons"},to_anchor:2e3}};Go.exports={metric:Bo,imperial:Yo,_anchors:{metric:{unit:"g",ratio:1/453.592},imperial:{unit:"lb",ratio:453.592}}}});var $o=E((_g,jo)=>{var Wo,zo;Wo={mm3:{name:{singular:"Cubic Millimeter",plural:"Cubic Millimeters"},to_anchor:1/1e6},cm3:{name:{singular:"Cubic Centimeter",plural:"Cubic Centimeters"},to_anchor:1/1e3},ml:{name:{singular:"Millilitre",plural:"Millilitres"},to_anchor:1/1e3},cl:{name:{singular:"Centilitre",plural:"Centilitres"},to_anchor:1/100},dl:{name:{singular:"Decilitre",plural:"Decilitres"},to_anchor:1/10},l:{name:{singular:"Litre",plural:"Litres"},to_anchor:1},kl:{name:{singular:"Kilolitre",plural:"Kilolitres"},to_anchor:1e3},m3:{name:{singular:"Cubic meter",plural:"Cubic meters"},to_anchor:1e3},km3:{name:{singular:"Cubic kilometer",plural:"Cubic kilometers"},to_anchor:1e12},krm:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:1/1e3},tsk:{name:{singular:"Tesked",plural:"Teskedar"},to_anchor:5/1e3},msk:{name:{singular:"Matsked",plural:"Matskedar"},to_anchor:15/1e3},kkp:{name:{singular:"Kaffekopp",plural:"Kaffekoppar"},to_anchor:150/1e3},glas:{name:{singular:"Glas",plural:"Glas"},to_anchor:200/1e3},kanna:{name:{singular:"Kanna",plural:"Kannor"},to_anchor:2.617}};zo={tsp:{name:{singular:"Teaspoon",plural:"Teaspoons"},to_anchor:1/6},Tbs:{name:{singular:"Tablespoon",plural:"Tablespoons"},to_anchor:1/2},in3:{name:{singular:"Cubic inch",plural:"Cubic inches"},to_anchor:.55411},"fl-oz":{name:{singular:"Fluid Ounce",plural:"Fluid Ounces"},to_anchor:1},cup:{name:{singular:"Cup",plural:"Cups"},to_anchor:8},pnt:{name:{singular:"Pint",plural:"Pints"},to_anchor:16},qt:{name:{singular:"Quart",plural:"Quarts"},to_anchor:32},gal:{name:{singular:"Gallon",plural:"Gallons"},to_anchor:128},ft3:{name:{singular:"Cubic foot",plural:"Cubic feet"},to_anchor:957.506},yd3:{name:{singular:"Cubic yard",plural:"Cubic yards"},to_anchor:25852.7}};jo.exports={metric:Wo,imperial:zo,_anchors:{metric:{unit:"l",ratio:33.8140226},imperial:{unit:"fl-oz",ratio:1/33.8140226}}}});var Jo=E((Sg,Zo)=>{var Ko;Ko={ea:{name:{singular:"Each",plural:"Each"},to_anchor:1},dz:{name:{singular:"Dozen",plural:"Dozens"},to_anchor:12}};Zo.exports={metric:Ko,imperial:{},_anchors:{metric:{unit:"ea",ratio:1}}}});var tl=E((xg,el)=>{var Qo,Xo;Qo={C:{name:{singular:"degree Celsius",plural:"degrees Celsius"},to_anchor:1,anchor_shift:0},K:{name:{singular:"degree Kelvin",plural:"degrees Kelvin"},to_anchor:1,anchor_shift:273.15}};Xo={F:{name:{singular:"degree Fahrenheit",plural:"degrees Fahrenheit"},to_anchor:1},R:{name:{singular:"degree Rankine",plural:"degrees Rankine"},to_anchor:1,anchor_shift:459.67}};el.exports={metric:Qo,imperial:Xo,_anchors:{metric:{unit:"C",transform:function(i){return i/(5/9)+32}},imperial:{unit:"F",transform:function(i){return(i-32)*(5/9)}}}}});var il=E((bg,sl)=>{var nl,rl=365.25;nl={ns:{name:{singular:"Nanosecond",plural:"Nanoseconds"},to_anchor:1/1e9},mu:{name:{singular:"Microsecond",plural:"Microseconds"},to_anchor:1/1e6},ms:{name:{singular:"Millisecond",plural:"Milliseconds"},to_anchor:1/1e3},s:{name:{singular:"Second",plural:"Seconds"},to_anchor:1},min:{name:{singular:"Minute",plural:"Minutes"},to_anchor:60},h:{name:{singular:"Hour",plural:"Hours"},to_anchor:60*60},d:{name:{singular:"Day",plural:"Days"},to_anchor:60*60*24},week:{name:{singular:"Week",plural:"Weeks"},to_anchor:60*60*24*7},month:{name:{singular:"Month",plural:"Months"},to_anchor:60*60*24*rl/12},year:{name:{singular:"Year",plural:"Years"},to_anchor:60*60*24*rl}};sl.exports={metric:nl,_anchors:{metric:{unit:"s",ratio:1}}}});var ul=E((wg,ll)=>{var al,ol;al={b:{name:{singular:"Bit",plural:"Bits"},to_anchor:1},Kb:{name:{singular:"Kilobit",plural:"Kilobits"},to_anchor:1024},Mb:{name:{singular:"Megabit",plural:"Megabits"},to_anchor:1048576},Gb:{name:{singular:"Gigabit",plural:"Gigabits"},to_anchor:1073741824},Tb:{name:{singular:"Terabit",plural:"Terabits"},to_anchor:1099511627776}};ol={B:{name:{singular:"Byte",plural:"Bytes"},to_anchor:1},KB:{name:{singular:"Kilobyte",plural:"Kilobytes"},to_anchor:1024},MB:{name:{singular:"Megabyte",plural:"Megabytes"},to_anchor:1048576},GB:{name:{singular:"Gigabyte",plural:"Gigabytes"},to_anchor:1073741824},TB:{name:{singular:"Terabyte",plural:"Terabytes"},to_anchor:1099511627776}};ll.exports={bits:al,bytes:ol,_anchors:{bits:{unit:"b",ratio:1/8},bytes:{unit:"B",ratio:8}}}});var ml=E((Rg,pl)=>{var cl;cl={ppm:{name:{singular:"Part-per Million",plural:"Parts-per Million"},to_anchor:1},ppb:{name:{singular:"Part-per Billion",plural:"Parts-per Billion"},to_anchor:.001},ppt:{name:{singular:"Part-per Trillion",plural:"Parts-per Trillion"},to_anchor:1e-6},ppq:{name:{singular:"Part-per Quadrillion",plural:"Parts-per Quadrillion"},to_anchor:1e-9}};pl.exports={metric:cl,imperial:{},_anchors:{metric:{unit:"ppm",ratio:1e-6}}}});var fl=E((Dg,dl)=>{var vl,hl;vl={"m/s":{name:{singular:"Metre per second",plural:"Metres per second"},to_anchor:3.6},"km/h":{name:{singular:"Kilometre per hour",plural:"Kilometres per hour"},to_anchor:1}};hl={"m/h":{name:{singular:"Mile per hour",plural:"Miles per hour"},to_anchor:1},knot:{name:{singular:"Knot",plural:"Knots"},to_anchor:1.150779},"ft/s":{name:{singular:"Foot per second",plural:"Feet per second"},to_anchor:.681818}};dl.exports={metric:vl,imperial:hl,_anchors:{metric:{unit:"km/h",ratio:1/1.609344},imperial:{unit:"m/h",ratio:1.609344}}}});var _l=E((Pg,yl)=>{var Il,gl;Il={"min/km":{name:{singular:"Minute per kilometre",plural:"Minutes per kilometre"},to_anchor:.06},"s/m":{name:{singular:"Second per metre",plural:"Seconds per metre"},to_anchor:1}};gl={"min/mi":{name:{singular:"Minute per mile",plural:"Minutes per mile"},to_anchor:.0113636},"s/ft":{name:{singular:"Second per foot",plural:"Seconds per foot"},to_anchor:1}};yl.exports={metric:Il,imperial:gl,_anchors:{metric:{unit:"s/m",ratio:.3048},imperial:{unit:"s/ft",ratio:1/.3048}}}});var wl=E((Mg,bl)=>{var Sl,xl;Sl={Pa:{name:{singular:"pascal",plural:"pascals"},to_anchor:1/1e3},kPa:{name:{singular:"kilopascal",plural:"kilopascals"},to_anchor:1},MPa:{name:{singular:"megapascal",plural:"megapascals"},to_anchor:1e3},hPa:{name:{singular:"hectopascal",plural:"hectopascals"},to_anchor:1/10},bar:{name:{singular:"bar",plural:"bar"},to_anchor:100},torr:{name:{singular:"torr",plural:"torr"},to_anchor:101325/76e4}};xl={psi:{name:{singular:"pound per square inch",plural:"pounds per square inch"},to_anchor:1/1e3},ksi:{name:{singular:"kilopound per square inch",plural:"kilopound per square inch"},to_anchor:1}};bl.exports={metric:Sl,imperial:xl,_anchors:{metric:{unit:"kPa",ratio:.00014503768078},imperial:{unit:"psi",ratio:1/.00014503768078}}}});var Pl=E((Eg,Dl)=>{var Rl;Rl={A:{name:{singular:"Ampere",plural:"Amperes"},to_anchor:1},mA:{name:{singular:"Milliampere",plural:"Milliamperes"},to_anchor:.001},kA:{name:{singular:"Kiloampere",plural:"Kiloamperes"},to_anchor:1e3}};Dl.exports={metric:Rl,_anchors:{metric:{unit:"A",ratio:1}}}});var Al=E((Ag,El)=>{var Ml;Ml={V:{name:{singular:"Volt",plural:"Volts"},to_anchor:1},mV:{name:{singular:"Millivolt",plural:"Millivolts"},to_anchor:.001},kV:{name:{singular:"Kilovolt",plural:"Kilovolts"},to_anchor:1e3}};El.exports={metric:Ml,_anchors:{metric:{unit:"V",ratio:1}}}});var Tl=E((Og,Nl)=>{var Ol;Ol={W:{name:{singular:"Watt",plural:"Watts"},to_anchor:1},mW:{name:{singular:"Milliwatt",plural:"Milliwatts"},to_anchor:.001},kW:{name:{singular:"Kilowatt",plural:"Kilowatts"},to_anchor:1e3},MW:{name:{singular:"Megawatt",plural:"Megawatts"},to_anchor:1e6},GW:{name:{singular:"Gigawatt",plural:"Gigawatts"},to_anchor:1e9}};Nl.exports={metric:Ol,_anchors:{metric:{unit:"W",ratio:1}}}});var kl=E((Ng,Ll)=>{var Vl;Vl={VAR:{name:{singular:"Volt-Ampere Reactive",plural:"Volt-Amperes Reactive"},to_anchor:1},mVAR:{name:{singular:"Millivolt-Ampere Reactive",plural:"Millivolt-Amperes Reactive"},to_anchor:.001},kVAR:{name:{singular:"Kilovolt-Ampere Reactive",plural:"Kilovolt-Amperes Reactive"},to_anchor:1e3},MVAR:{name:{singular:"Megavolt-Ampere Reactive",plural:"Megavolt-Amperes Reactive"},to_anchor:1e6},GVAR:{name:{singular:"Gigavolt-Ampere Reactive",plural:"Gigavolt-Amperes Reactive"},to_anchor:1e9}};Ll.exports={metric:Vl,_anchors:{metric:{unit:"VAR",ratio:1}}}});var ql=E((Tg,Fl)=>{var Cl;Cl={VA:{name:{singular:"Volt-Ampere",plural:"Volt-Amperes"},to_anchor:1},mVA:{name:{singular:"Millivolt-Ampere",plural:"Millivolt-Amperes"},to_anchor:.001},kVA:{name:{singular:"Kilovolt-Ampere",plural:"Kilovolt-Amperes"},to_anchor:1e3},MVA:{name:{singular:"Megavolt-Ampere",plural:"Megavolt-Amperes"},to_anchor:1e6},GVA:{name:{singular:"Gigavolt-Ampere",plural:"Gigavolt-Amperes"},to_anchor:1e9}};Fl.exports={metric:Cl,_anchors:{metric:{unit:"VA",ratio:1}}}});var Yl=E((Vg,Bl)=>{var Ul;Ul={Wh:{name:{singular:"Watt-hour",plural:"Watt-hours"},to_anchor:3600},mWh:{name:{singular:"Milliwatt-hour",plural:"Milliwatt-hours"},to_anchor:3.6},kWh:{name:{singular:"Kilowatt-hour",plural:"Kilowatt-hours"},to_anchor:36e5},MWh:{name:{singular:"Megawatt-hour",plural:"Megawatt-hours"},to_anchor:36e8},GWh:{name:{singular:"Gigawatt-hour",plural:"Gigawatt-hours"},to_anchor:36e11},J:{name:{singular:"Joule",plural:"Joules"},to_anchor:1},kJ:{name:{singular:"Kilojoule",plural:"Kilojoules"},to_anchor:1e3}};Bl.exports={metric:Ul,_anchors:{metric:{unit:"J",ratio:1}}}});var Wl=E((Lg,Hl)=>{var Gl;Gl={VARh:{name:{singular:"Volt-Ampere Reactive Hour",plural:"Volt-Amperes Reactive Hour"},to_anchor:1},mVARh:{name:{singular:"Millivolt-Ampere Reactive Hour",plural:"Millivolt-Amperes Reactive Hour"},to_anchor:.001},kVARh:{name:{singular:"Kilovolt-Ampere Reactive Hour",plural:"Kilovolt-Amperes Reactive Hour"},to_anchor:1e3},MVARh:{name:{singular:"Megavolt-Ampere Reactive Hour",plural:"Megavolt-Amperes Reactive Hour"},to_anchor:1e6},GVARh:{name:{singular:"Gigavolt-Ampere Reactive Hour",plural:"Gigavolt-Amperes Reactive Hour"},to_anchor:1e9}};Hl.exports={metric:Gl,_anchors:{metric:{unit:"VARh",ratio:1}}}});var Kl=E((kg,$l)=>{var zl,jl;zl={"mm3/s":{name:{singular:"Cubic Millimeter per second",plural:"Cubic Millimeters per second"},to_anchor:1/1e6},"cm3/s":{name:{singular:"Cubic Centimeter per second",plural:"Cubic Centimeters per second"},to_anchor:1/1e3},"ml/s":{name:{singular:"Millilitre per second",plural:"Millilitres per second"},to_anchor:1/1e3},"cl/s":{name:{singular:"Centilitre per second",plural:"Centilitres per second"},to_anchor:1/100},"dl/s":{name:{singular:"Decilitre per second",plural:"Decilitres per second"},to_anchor:1/10},"l/s":{name:{singular:"Litre per second",plural:"Litres per second"},to_anchor:1},"l/min":{name:{singular:"Litre per minute",plural:"Litres per minute"},to_anchor:1/60},"l/h":{name:{singular:"Litre per hour",plural:"Litres per hour"},to_anchor:1/3600},"kl/s":{name:{singular:"Kilolitre per second",plural:"Kilolitres per second"},to_anchor:1e3},"kl/min":{name:{singular:"Kilolitre per minute",plural:"Kilolitres per minute"},to_anchor:50/3},"kl/h":{name:{singular:"Kilolitre per hour",plural:"Kilolitres per hour"},to_anchor:5/18},"m3/s":{name:{singular:"Cubic meter per second",plural:"Cubic meters per second"},to_anchor:1e3},"m3/min":{name:{singular:"Cubic meter per minute",plural:"Cubic meters per minute"},to_anchor:50/3},"m3/h":{name:{singular:"Cubic meter per hour",plural:"Cubic meters per hour"},to_anchor:5/18},"km3/s":{name:{singular:"Cubic kilometer per second",plural:"Cubic kilometers per second"},to_anchor:1e12}};jl={"tsp/s":{name:{singular:"Teaspoon per second",plural:"Teaspoons per second"},to_anchor:1/6},"Tbs/s":{name:{singular:"Tablespoon per second",plural:"Tablespoons per second"},to_anchor:1/2},"in3/s":{name:{singular:"Cubic inch per second",plural:"Cubic inches per second"},to_anchor:.55411},"in3/min":{name:{singular:"Cubic inch per minute",plural:"Cubic inches per minute"},to_anchor:.55411/60},"in3/h":{name:{singular:"Cubic inch per hour",plural:"Cubic inches per hour"},to_anchor:.55411/3600},"fl-oz/s":{name:{singular:"Fluid Ounce per second",plural:"Fluid Ounces per second"},to_anchor:1},"fl-oz/min":{name:{singular:"Fluid Ounce per minute",plural:"Fluid Ounces per minute"},to_anchor:1/60},"fl-oz/h":{name:{singular:"Fluid Ounce per hour",plural:"Fluid Ounces per hour"},to_anchor:1/3600},"cup/s":{name:{singular:"Cup per second",plural:"Cups per second"},to_anchor:8},"pnt/s":{name:{singular:"Pint per second",plural:"Pints per second"},to_anchor:16},"pnt/min":{name:{singular:"Pint per minute",plural:"Pints per minute"},to_anchor:4/15},"pnt/h":{name:{singular:"Pint per hour",plural:"Pints per hour"},to_anchor:1/225},"qt/s":{name:{singular:"Quart per second",plural:"Quarts per second"},to_anchor:32},"gal/s":{name:{singular:"Gallon per second",plural:"Gallons per second"},to_anchor:128},"gal/min":{name:{singular:"Gallon per minute",plural:"Gallons per minute"},to_anchor:32/15},"gal/h":{name:{singular:"Gallon per hour",plural:"Gallons per hour"},to_anchor:8/225},"ft3/s":{name:{singular:"Cubic foot per second",plural:"Cubic feet per second"},to_anchor:957.506},"ft3/min":{name:{singular:"Cubic foot per minute",plural:"Cubic feet per minute"},to_anchor:957.506/60},"ft3/h":{name:{singular:"Cubic foot per hour",plural:"Cubic feet per hour"},to_anchor:957.506/3600},"yd3/s":{name:{singular:"Cubic yard per second",plural:"Cubic yards per second"},to_anchor:25852.7},"yd3/min":{name:{singular:"Cubic yard per minute",plural:"Cubic yards per minute"},to_anchor:25852.7/60},"yd3/h":{name:{singular:"Cubic yard per hour",plural:"Cubic yards per hour"},to_anchor:25852.7/3600}};$l.exports={metric:zl,imperial:jl,_anchors:{metric:{unit:"l/s",ratio:33.8140227},imperial:{unit:"fl-oz/s",ratio:1/33.8140227}}}});var Xl=E((Cg,Ql)=>{var Zl,Jl;Zl={lx:{name:{singular:"Lux",plural:"Lux"},to_anchor:1}};Jl={"ft-cd":{name:{singular:"Foot-candle",plural:"Foot-candles"},to_anchor:1}};Ql.exports={metric:Zl,imperial:Jl,_anchors:{metric:{unit:"lx",ratio:1/10.76391},imperial:{unit:"ft-cd",ratio:10.76391}}}});var ru=E((Fg,tu)=>{var eu;eu={mHz:{name:{singular:"millihertz",plural:"millihertz"},to_anchor:1/1e3},Hz:{name:{singular:"hertz",plural:"hertz"},to_anchor:1},kHz:{name:{singular:"kilohertz",plural:"kilohertz"},to_anchor:1e3},MHz:{name:{singular:"megahertz",plural:"megahertz"},to_anchor:1e3*1e3},GHz:{name:{singular:"gigahertz",plural:"gigahertz"},to_anchor:1e3*1e3*1e3},THz:{name:{singular:"terahertz",plural:"terahertz"},to_anchor:1e3*1e3*1e3*1e3},rpm:{name:{singular:"rotation per minute",plural:"rotations per minute"},to_anchor:1/60},"deg/s":{name:{singular:"degree per second",plural:"degrees per second"},to_anchor:1/360},"rad/s":{name:{singular:"radian per second",plural:"radians per second"},to_anchor:1/(Math.PI*2)}};tu.exports={metric:eu,_anchors:{frequency:{unit:"hz",ratio:1}}}});var iu=E((qg,su)=>{var nu;nu={rad:{name:{singular:"radian",plural:"radians"},to_anchor:180/Math.PI},deg:{name:{singular:"degree",plural:"degrees"},to_anchor:1},grad:{name:{singular:"gradian",plural:"gradians"},to_anchor:9/10},arcmin:{name:{singular:"arcminute",plural:"arcminutes"},to_anchor:1/60},arcsec:{name:{singular:"arcsecond",plural:"arcseconds"},to_anchor:1/3600}};su.exports={metric:nu,_anchors:{metric:{unit:"deg",ratio:1}}}});var Pr=E((Ug,lu)=>{var au,Dr=Ks(),Ue=No(),It={length:ko(),area:Uo(),mass:Ho(),volume:$o(),each:Jo(),temperature:tl(),time:il(),digital:ul(),partsPer:ml(),speed:fl(),pace:_l(),pressure:wl(),current:Pl(),voltage:Al(),power:Tl(),reactivePower:kl(),apparentPower:ql(),energy:Yl(),reactiveEnergy:Wl(),volumeFlowRate:Kl(),illuminance:Xl(),frequency:ru(),angle:iu()},Be;Be=function(i,e){e?this.val=i/e:this.val=i};Be.prototype.from=function(i){if(this.destination)throw new Error(".from must be called before .to");return this.origin=this.getUnit(i),this.origin||this.throwUnsupportedUnitError(i),this};Be.prototype.to=function(i){if(!this.origin)throw new Error(".to must be called after .from");this.destination=this.getUnit(i);var e,t;if(this.destination||this.throwUnsupportedUnitError(i),this.origin.abbr===this.destination.abbr)return this.val;if(this.destination.measure!=this.origin.measure)throw new Error("Cannot convert incompatible measures of "+this.destination.measure+" and "+this.origin.measure);return e=this.val*this.origin.unit.to_anchor,this.origin.unit.anchor_shift&&(e-=this.origin.unit.anchor_shift),this.origin.system!=this.destination.system&&(t=It[this.origin.measure]._anchors[this.origin.system].transform,typeof t=="function"?e=t(e):e*=It[this.origin.measure]._anchors[this.origin.system].ratio),this.destination.unit.anchor_shift&&(e+=this.destination.unit.anchor_shift),e/this.destination.unit.to_anchor};Be.prototype.toBest=function(e){if(!this.origin)throw new Error(".toBest must be called after .from");var e=Object.assign({exclude:[],cutOffNumber:1},e),t;return Ue(this.possibilities(),function(n){var a=this.describe(n),l=e.exclude.indexOf(n)===-1;if(l&&a.system===this.origin.system){var c=this.to(n);(!t||c>=e.cutOffNumber&&c{"use strict";Object.defineProperty(ot,"__esModule",{value:!0});function Pe(i){let e=i||"";return function(){throw new Error("this method "+e+" is abstract! (it has no implementation in class "+this.constructor.name+")")}}function wt(i,e){if(!i)throw new Error(e||"Assertion failed")}function ai(i,e,t){let n;Object.defineProperty(i,e,{get(){return n||(n=t.call(this)),n}})}function $d(i){return i&&Object.assign({},i)}function wu(i,e){let t=[];for(;e-- >0;)t.push(i());return t}function Ru(i,e){return new Array(e+1).join(i)}function Fn(i,e){return wu(()=>i,e)}function oi(i){let e=[];for(let t=0;t{e.indexOf(t)<0&&e.push(t)}),e}function kt(i){let e=i[0];return e===e.toUpperCase()}function Pu(i){return!kt(i)}function Mu(i,e,t){let n=t||" ";return i.lengthString.fromCodePoint(parseInt(i,16));function Eu(i){if(i.charAt(0)==="\\")switch(i.charAt(1)){case"b":return"\b";case"f":return"\f";case"n":return` +`;case"r":return"\r";case"t":return" ";case"v":return"\v";case"x":return ni(i.slice(2,4));case"u":return i.charAt(2)==="{"?ni(i.slice(3,-1)):ni(i.slice(2,6));default:return i.charAt(1)}else return i}function Ii(i){if(i==null)return String(i);let e=Object.prototype.toString.call(i);try{let t;return i.constructor&&i.constructor.name?t=i.constructor.name:e.indexOf("[object ")===0?t=e.slice(8,-1):t=typeof i,t+": "+JSON.stringify(String(i))}catch(t){return e}}var Kd=Object.freeze({__proto__:null,abstract:Pe,assert:wt,defineLazyProperty:ai,clone:$d,repeatFn:wu,repeatStr:Ru,repeat:Fn,getDuplicates:oi,copyWithoutDuplicates:Du,isSyntactic:kt,isLexical:Pu,padLeft:Mu,StringBuffer:Bt,unescapeCodePoint:Eu,unexpectedObjToString:Ii}),Zd={Lu:/\p{Lu}/u,Ll:/\p{Ll}/u,Lt:/\p{Lt}/u,Lm:/\p{Lm}/u,Lo:/\p{Lo}/u,Nl:/\p{Nl}/u,Nd:/\p{Nd}/u,Mn:/\p{Mn}/u,Mc:/\p{Mc}/u,Pc:/\p{Pc}/u,Zs:/\p{Zs}/u,L:/\p{Letter}/u,Ltmo:/\p{Lt}|\p{Lm}|\p{Lo}/u},V=class i{constructor(){if(this.constructor===i)throw new Error("PExpr cannot be instantiated -- it's abstract")}withSource(e){return e&&(this.source=e.trimmed()),this}},ge=Object.create(V.prototype),ye=Object.create(V.prototype),le=class extends V{constructor(e){super(),this.obj=e}},ce=class extends V{constructor(e,t){super(),this.from=e,this.to=t,this.matchCodePoint=e.length>1||t.length>1}},pe=class extends V{constructor(e){super(),this.index=e}},re=class extends V{constructor(e){super(),this.terms=e}},Ct=class extends re{constructor(e,t,n){let a=e.rules[t].body;super([n,a]),this.superGrammar=e,this.name=t,this.body=n}},Ft=class extends re{constructor(e,t,n,a){let l=e.rules[t].body;super([...n,l,...a]),this.superGrammar=e,this.ruleName=t,this.expansionPos=n.length}},ie=class extends V{constructor(e){super(),this.factors=e}},he=class extends V{constructor(e){super(),this.expr=e}},at=class extends he{},gt=class extends he{},Ye=class extends he{};at.prototype.operator="*";gt.prototype.operator="+";Ye.prototype.operator="?";at.prototype.minNumMatches=0;gt.prototype.minNumMatches=1;Ye.prototype.minNumMatches=0;at.prototype.maxNumMatches=Number.POSITIVE_INFINITY;gt.prototype.maxNumMatches=Number.POSITIVE_INFINITY;Ye.prototype.maxNumMatches=1;var de=class extends V{constructor(e){super(),this.expr=e}},fe=class extends V{constructor(e){super(),this.expr=e}},Ie=class extends V{constructor(e){super(),this.expr=e}},z=class extends V{constructor(e,t=[]){super(),this.ruleName=e,this.args=t}isSyntactic(){return kt(this.ruleName)}toMemoKey(){return this._memoKey||Object.defineProperty(this,"_memoKey",{value:this.toString()}),this._memoKey}},oe=class extends V{constructor(e){super(),this.category=e,this.pattern=Zd[e]}};function ne(i,e){let t;return e?(t=new Error(e.getLineAndColumnMessage()+i),t.shortMessage=i,t.interval=e):t=new Error(i),t}function li(){return ne("Interval sources don't match")}function Jd(i){let e=new Error;return Object.defineProperty(e,"message",{enumerable:!0,get(){return i.message}}),Object.defineProperty(e,"shortMessage",{enumerable:!0,get(){return"Expected "+i.getExpectedText()}}),e.interval=i.getInterval(),e}function Qd(i,e,t){let n=e?`Grammar ${i} is not declared in namespace '${e}'`:"Undeclared grammar "+i;return ne(n,t)}function Xd(i,e){return ne("Grammar "+i.name+" is already declared in this namespace")}function ef(i){return ne(`Grammar '${i.name}' does not support incremental parsing`)}function Au(i,e,t){return ne("Rule "+i+" is not declared in grammar "+e,t)}function tf(i,e,t){return ne("Cannot override rule "+i+" because it is not declared in "+e,t)}function rf(i,e,t){return ne("Cannot extend rule "+i+" because it is not declared in "+e,t)}function vu(i,e,t,n){let a="Duplicate declaration for rule '"+i+"' in grammar '"+e+"'";return e!==t&&(a+=" (originally declared in '"+t+"')"),ne(a,n)}function Ou(i,e,t,n){return ne("Wrong number of parameters for rule "+i+" (expected "+e+", got "+t+")",n)}function nf(i,e,t,n){return ne("Wrong number of arguments for rule "+i+" (expected "+e+", got "+t+")",n)}function hu(i,e,t){return ne("Duplicate parameter names in rule "+i+": "+e.join(", "),t)}function sf(i,e){return ne("Invalid parameter to rule "+i+": "+e+" has arity "+e.getArity()+", but parameter expressions must have arity 1",e.source)}var af="NOTE: A _syntactic rule_ is a rule whose name begins with a capital letter. See https://ohmjs.org/d/svl for more details.";function of(i,e){return ne("Cannot apply syntactic rule "+i+" from here (inside a lexical context)",e.source)}function lf(i){let{ruleName:e}=i;return ne(`applySyntactic is for syntactic rules, but '${e}' is a lexical rule. `+af,i.source)}function uf(i){return ne("applySyntactic is not required here (in a syntactic context)",i.source)}function du(i,e){return ne("Incorrect argument type: expected "+i,e.source)}function cf(i){return ne("'...' can appear at most once in a rule body",i.source)}function pf(i){let e=i._node;wt(e&&e.isNonterminal()&&e.ctorName==="escapeChar_unicodeCodePoint");let t=i.children.slice(1,-1).map(a=>a.source),n=t[0].coverageWith(...t.slice(1));return ne(`U+${n.contents} is not a valid Unicode code point`,n)}function Nu(i,e){let t=e.length>0?e[e.length-1].args:[],a="Nullable expression "+i.expr.substituteParams(t)+" is not allowed inside '"+i.operator+"' (possible infinite loop)";if(e.length>0){let l=e.map(c=>new z(c.ruleName,c.args)).join(` +`);a+=` +Application stack (most recent application last): +`+l}return ne(a,i.expr.source)}function Tu(i,e,t,n){return ne("Rule "+i+" involves an alternation which has inconsistent arity (expected "+e+", got "+t+")",n.source)}function mf(i){let e=i.map(t=>t.message);return ne(["Errors:"].concat(e).join(` +- `),i[0].interval)}function vf(i,e,t,n){let a=n.slice(0,-1).map(h=>{let d=" "+h[0].name+" > "+h[1];return h.length===3?d+" for '"+h[2]+"'":d}).join(` +`);a+=` + `+e+" > "+i;let l="";i==="_iter"&&(l=[` +NOTE: as of Ohm v16, there is no default action for iteration nodes \u2014 see `," https://ohmjs.org/d/dsa for details."].join(` +`));let c=[`Missing semantic action for '${i}' in ${t} '${e}'.${l}`,"Action stack (most recent call last):",a].join(` +`),v=ne(c);return v.name="missingSemanticAction",v}function hf(i){if(i.length===1)throw i[0];if(i.length>1)throw mf(i)}function df(i){let e=0;return i.map(n=>{let a=n.toString();return e=Math.max(e,a.length),a}).map(n=>Mu(n,e))}function fu(i,e,t){let n=i.length,a=i.slice(0,t),l=i.slice(t+e.length);return(a+e+l).substr(0,n)}function ff(...i){let e=this,{offset:t}=e,{repeatStr:n}=Kd,a=new Bt;a.append("Line "+e.lineNum+", col "+e.colNum+`: +`);let l=df([e.prevLine==null?0:e.lineNum-1,e.lineNum,e.nextLine==null?0:e.lineNum+1]),c=(g,f,y)=>{a.append(y+l[g]+" | "+f+` +`)};e.prevLine!=null&&c(0,e.prevLine," "),c(1,e.line,"> ");let v=e.line.length,h=n(" ",v+1);for(let g=0;g=0&&f<=y,"range start must be >= 0 and <= end");let R=t-e.colNum+1;f=Math.max(0,f-R),y=Math.min(y-R,v),h=fu(h,n("~",y-f),f)}let d=2+l[1].length+3;return a.append(n(" ",d)),h=fu(h,"^",e.colNum-1),a.append(h.replace(/ +$/,"")+` +`),e.nextLine!=null&&c(2,e.nextLine," "),a.contents()}var ui=[];function Vu(i){ui.push(i)}function If(i){ui.forEach(e=>{e(i)}),ui=null}function gi(i,e){let t=1,n=1,a=0,l=0,c=null,v=null,h=-1;for(;a=0&&(v=i.slice(h,l).replace(/\r?\n$/,""));let g=i.slice(l,d).replace(/\r$/,"");return{offset:e,lineNum:t,colNum:n,line:g,prevLine:v,nextLine:c,toString:ff}}function yi(i,e,...t){return gi(i,e).toString(...t)}var Iu=(()=>{let i=0;return e=>""+e+i++})(),qt=class i{constructor(e,t,n){this.sourceString=e,this.startIdx=t,this.endIdx=n}get contents(){return this._contents===void 0&&(this._contents=this.sourceString.slice(this.startIdx,this.endIdx)),this._contents}get length(){return this.endIdx-this.startIdx}coverageWith(...e){return i.coverage(...e,this)}collapsedLeft(){return new i(this.sourceString,this.startIdx,this.startIdx)}collapsedRight(){return new i(this.sourceString,this.endIdx,this.endIdx)}getLineAndColumn(){return gi(this.sourceString,this.startIdx)}getLineAndColumnMessage(){let e=[this.startIdx,this.endIdx];return yi(this.sourceString,this.startIdx,e)}minus(e){if(this.sourceString!==e.sourceString)throw li();return this.startIdx===e.startIdx&&this.endIdx===e.endIdx?[]:this.startIdx=e.startIdx&&this.endIdx<=e.endIdx,"other interval does not cover this one"),new i(this.sourceString,this.startIdx-e.startIdx,this.endIdx-e.startIdx)}trimmed(){let{contents:e}=this,t=this.startIdx+e.match(/^\s*/)[0].length,n=this.endIdx-e.match(/\s*$/)[0].length;return new i(this.sourceString,t,n)}subInterval(e,t){let n=this.startIdx+e;return new i(this.sourceString,n,n+t)}};qt.coverage=function(i,...e){let{startIdx:t,endIdx:n}=i;for(let a of e){if(a.sourceString!==i.sourceString)throw li();t=Math.min(t,a.startIdx),n=Math.max(n,a.endIdx)}return new qt(i.sourceString,t,n)};var gf=65535,Xt=class{constructor(e){this.source=e,this.pos=0,this.examinedLength=0}atEnd(){let e=this.pos>=this.source.length;return this.examinedLength=Math.max(this.examinedLength,this.pos+1),e}next(){let e=this.source[this.pos++];return this.examinedLength=Math.max(this.examinedLength,this.pos),e}nextCharCode(){let e=this.next();return e&&e.charCodeAt(0)}nextCodePoint(){let e=this.source.slice(this.pos++).codePointAt(0);return e>gf&&(this.pos+=1),this.examinedLength=Math.max(this.examinedLength,this.pos),e}matchString(e,t){let n;if(t){for(n=0;n!n.isFluffy());for(let n=0;n0&&(n===t.length-1?e.append(t.length>2?", or ":" or "):e.append(", ")),e.append(t[n].toString());return e.contents()}getInterval(){let e=this.getRightmostFailurePosition();return new qt(this.input,e,e)}},ci=class{constructor(){this.applicationMemoKeyStack=[],this.memo={},this.maxExaminedLength=0,this.maxRightmostFailureOffset=-1,this.currentLeftRecursion=void 0}isActive(e){return this.applicationMemoKeyStack.indexOf(e.toMemoKey())>=0}enter(e){this.applicationMemoKeyStack.push(e.toMemoKey())}exit(){this.applicationMemoKeyStack.pop()}startLeftRecursion(e,t){t.isLeftRecursion=!0,t.headApplication=e,t.nextLeftRecursion=this.currentLeftRecursion,this.currentLeftRecursion=t;let{applicationMemoKeyStack:n}=this,a=n.indexOf(e.toMemoKey())+1,l=n.slice(a);t.isInvolved=function(c){return l.indexOf(c)>=0},t.updateInvolvedApplicationMemoKeys=function(){for(let c=a;c{let l=n[a];e+l.examinedLength>t?delete n[a]:(this.maxExaminedLength=Math.max(this.maxExaminedLength,l.examinedLength),this.maxRightmostFailureOffset=Math.max(this.maxRightmostFailureOffset,l.rightmostFailureOffset))})}},yf="\u2717",_f="\u2713",Sf="\u22C5",xf="\u21D2",bf="\u2409",wf="\u240A",Rf="\u240D",pi={succeeded:1,isRootNode:2,isImplicitSpaces:4,isMemoized:8,isHeadOfLeftRecursion:16,terminatesLR:32};function Df(i){return Fn(" ",i).join("")}function Pf(i,e,t){let n=Lu(i.slice(e,e+t));return n.length{a(d,l,v+1)}),n.exit&&n.exit.call(t,l,c,v))}this.isRootNode?this.children.forEach(l=>{a(l,null,0)}):a(this,null,0)}toString(){let e=new Bt;return this.walk((t,n,a)=>{if(!t)return this.SKIP;if(t.expr.constructor.name!=="Alt"){if(e.append(Pf(t.input,t.pos,10)+Df(a*2+1)),e.append((t.succeeded?_f:yf)+" "+t.displayString),t.isHeadOfLeftRecursion&&e.append(" (LR)"),t.succeeded){let c=Lu(t.source.contents);e.append(" "+xf+" "),e.append(typeof c=="string"?'"'+c+'"':c)}e.append(` +`)}}),e.contents()}};er.prototype.SKIP={};Object.keys(pi).forEach(i=>{let e=pi[i];Object.defineProperty(er.prototype,i,{get(){return(this._flags&e)!==0},set(t){t?this._flags|=e:this._flags&=~e}})});V.prototype.allowsSkippingPrecedingSpace=Pe("allowsSkippingPrecedingSpace");ge.allowsSkippingPrecedingSpace=ye.allowsSkippingPrecedingSpace=z.prototype.allowsSkippingPrecedingSpace=le.prototype.allowsSkippingPrecedingSpace=ce.prototype.allowsSkippingPrecedingSpace=oe.prototype.allowsSkippingPrecedingSpace=function(){return!0};re.prototype.allowsSkippingPrecedingSpace=he.prototype.allowsSkippingPrecedingSpace=Ie.prototype.allowsSkippingPrecedingSpace=fe.prototype.allowsSkippingPrecedingSpace=de.prototype.allowsSkippingPrecedingSpace=pe.prototype.allowsSkippingPrecedingSpace=ie.prototype.allowsSkippingPrecedingSpace=function(){return!1};var Mr;Vu(i=>{Mr=i});var Nn;V.prototype.assertAllApplicationsAreValid=function(i,e){Nn=0,this._assertAllApplicationsAreValid(i,e)};V.prototype._assertAllApplicationsAreValid=Pe("_assertAllApplicationsAreValid");ge._assertAllApplicationsAreValid=ye._assertAllApplicationsAreValid=le.prototype._assertAllApplicationsAreValid=ce.prototype._assertAllApplicationsAreValid=pe.prototype._assertAllApplicationsAreValid=oe.prototype._assertAllApplicationsAreValid=function(i,e){};Ie.prototype._assertAllApplicationsAreValid=function(i,e){Nn++,this.expr._assertAllApplicationsAreValid(i,e),Nn--};re.prototype._assertAllApplicationsAreValid=function(i,e){for(let t=0;t{if(d._assertAllApplicationsAreValid(i,e,v),d.getArity()!==1)throw sf(this.ruleName,d)})};V.prototype.assertChoicesHaveUniformArity=Pe("assertChoicesHaveUniformArity");ge.assertChoicesHaveUniformArity=ye.assertChoicesHaveUniformArity=le.prototype.assertChoicesHaveUniformArity=ce.prototype.assertChoicesHaveUniformArity=pe.prototype.assertChoicesHaveUniformArity=Ie.prototype.assertChoicesHaveUniformArity=oe.prototype.assertChoicesHaveUniformArity=function(i){};re.prototype.assertChoicesHaveUniformArity=function(i){if(this.terms.length===0)return;let e=this.terms[0].getArity();for(let t=0;t{e.assertIteratedExprsAreNotNullable(i)})};var Ar=class{constructor(e){this.matchLength=e}get ctorName(){throw new Error("subclass responsibility")}numChildren(){return this.children?this.children.length:0}childAt(e){if(this.children)return this.children[e]}indexOfChild(e){return this.children.indexOf(e)}hasChildren(){return this.numChildren()>0}hasNoChildren(){return!this.hasChildren()}onlyChild(){if(this.numChildren()!==1)throw new Error("cannot get only child of a node of type "+this.ctorName+" (it has "+this.numChildren()+" children)");return this.firstChild()}firstChild(){if(this.hasNoChildren())throw new Error("cannot get first child of a "+this.ctorName+" node, which has no children");return this.childAt(0)}lastChild(){if(this.hasNoChildren())throw new Error("cannot get last child of a "+this.ctorName+" node, which has no children");return this.childAt(this.numChildren()-1)}childBefore(e){let t=this.indexOfChild(e);if(t<0)throw new Error("Node.childBefore() called w/ an argument that is not a child");if(t===0)throw new Error("cannot get child before first child");return this.childAt(t-1)}childAfter(e){let t=this.indexOfChild(e);if(t<0)throw new Error("Node.childAfter() called w/ an argument that is not a child");if(t===this.numChildren()-1)throw new Error("cannot get child after last child");return this.childAt(t+1)}isTerminal(){return!1}isNonterminal(){return!1}isIteration(){return!1}isOptional(){return!1}},yt=class extends Ar{get ctorName(){return"_terminal"}isTerminal(){return!0}get primitiveValue(){throw new Error("The `primitiveValue` property was removed in Ohm v17.")}},mi=class extends Ar{constructor(e,t,n,a){super(a),this.ruleName=e,this.children=t,this.childOffsets=n}get ctorName(){return this.ruleName}isNonterminal(){return!0}isLexical(){return Pu(this.ctorName)}isSyntactic(){return kt(this.ctorName)}},Tn=class extends Ar{constructor(e,t,n,a){super(n),this.children=e,this.childOffsets=t,this.optional=a}get ctorName(){return"_iter"}isIteration(){return!0}isOptional(){return this.optional}};V.prototype.eval=Pe("eval");ge.eval=function(i){let{inputStream:e}=i,t=e.pos,n=e.nextCodePoint();return n!==void 0?(i.pushBinding(new yt(String.fromCodePoint(n).length),t),!0):(i.processFailure(t,this),!1)};ye.eval=function(i){let{inputStream:e}=i,t=e.pos;return e.atEnd()?(i.pushBinding(new yt(0),t),!0):(i.processFailure(t,this),!1)};le.prototype.eval=function(i){let{inputStream:e}=i,t=e.pos;return e.matchString(this.obj)?(i.pushBinding(new yt(this.obj.length),t),!0):(i.processFailure(t,this),!1)};ce.prototype.eval=function(i){let{inputStream:e}=i,t=e.pos,n=this.matchCodePoint?e.nextCodePoint():e.nextCharCode();return n!==void 0&&this.from.codePointAt(0)<=n&&n<=this.to.codePointAt(0)?(i.pushBinding(new yt(String.fromCodePoint(n).length),t),!0):(i.processFailure(t,this),!1)};pe.prototype.eval=function(i){return i.eval(i.currentApplication().args[this.index])};Ie.prototype.eval=function(i){i.enterLexifiedContext();let e=i.eval(this.expr);return i.exitLexifiedContext(),e};re.prototype.eval=function(i){for(let e=0;e0){let y=a[n-1],R=l[n-1],_=R[R.length-1]+y[y.length-1].matchLength;d=l[0][0],g=_-d}let f=this instanceof Ye;for(h=0;ht.outputRecipe(i,e)))};Ct.prototype.outputRecipe=function(i,e){return this.terms[0].outputRecipe(i,e)};Ft.prototype.outputRecipe=function(i,e){let t=this.terms.slice(0,this.expansionPos),n=this.terms.slice(this.expansionPos+1);return["splice",Je(this,e),t.map(a=>a.outputRecipe(i,e)),n.map(a=>a.outputRecipe(i,e))]};ie.prototype.outputRecipe=function(i,e){return["seq",Je(this,e)].concat(this.factors.map(t=>t.outputRecipe(i,e)))};at.prototype.outputRecipe=gt.prototype.outputRecipe=Ye.prototype.outputRecipe=de.prototype.outputRecipe=fe.prototype.outputRecipe=Ie.prototype.outputRecipe=function(i,e){return[this.constructor.name.toLowerCase(),Je(this,e),this.expr.outputRecipe(i,e)]};z.prototype.outputRecipe=function(i,e){return["app",Je(this,e),this.ruleName,this.args.map(t=>t.outputRecipe(i,e))]};oe.prototype.outputRecipe=function(i,e){return["unicodeChar",Je(this,e),this.category]};V.prototype.introduceParams=Pe("introduceParams");ge.introduceParams=ye.introduceParams=le.prototype.introduceParams=ce.prototype.introduceParams=pe.prototype.introduceParams=oe.prototype.introduceParams=function(i){return this};re.prototype.introduceParams=function(i){return this.terms.forEach((e,t,n)=>{n[t]=e.introduceParams(i)}),this};ie.prototype.introduceParams=function(i){return this.factors.forEach((e,t,n)=>{n[t]=e.introduceParams(i)}),this};he.prototype.introduceParams=de.prototype.introduceParams=fe.prototype.introduceParams=Ie.prototype.introduceParams=function(i){return this.expr=this.expr.introduceParams(i),this};z.prototype.introduceParams=function(i){let e=i.indexOf(this.ruleName);if(e>=0){if(this.args.length>0)throw new Error("Parameterized rules cannot be passed as arguments to another rule.");return new pe(e).withSource(this.source)}else return this.args.forEach((t,n,a)=>{a[n]=t.introduceParams(i)}),this};V.prototype.isNullable=function(i){return this._isNullable(i,Object.create(null))};V.prototype._isNullable=Pe("_isNullable");ge._isNullable=ce.prototype._isNullable=pe.prototype._isNullable=gt.prototype._isNullable=oe.prototype._isNullable=function(i,e){return!1};ye._isNullable=function(i,e){return!0};le.prototype._isNullable=function(i,e){return typeof this.obj=="string"?this.obj==="":!1};re.prototype._isNullable=function(i,e){return this.terms.length===0||this.terms.some(t=>t._isNullable(i,e))};ie.prototype._isNullable=function(i,e){return this.factors.every(t=>t._isNullable(i,e))};at.prototype._isNullable=Ye.prototype._isNullable=de.prototype._isNullable=fe.prototype._isNullable=function(i,e){return!0};Ie.prototype._isNullable=function(i,e){return this.expr._isNullable(i,e)};z.prototype._isNullable=function(i,e){let t=this.toMemoKey();if(!Object.prototype.hasOwnProperty.call(e,t)){let{body:n}=i.rules[this.ruleName],a=n.substituteParams(this.args);e[t]=!1,e[t]=a._isNullable(i,e)}return e[t]};V.prototype.substituteParams=Pe("substituteParams");ge.substituteParams=ye.substituteParams=le.prototype.substituteParams=ce.prototype.substituteParams=oe.prototype.substituteParams=function(i){return this};pe.prototype.substituteParams=function(i){return i[this.index]};re.prototype.substituteParams=function(i){return new re(this.terms.map(e=>e.substituteParams(i)))};ie.prototype.substituteParams=function(i){return new ie(this.factors.map(e=>e.substituteParams(i)))};he.prototype.substituteParams=de.prototype.substituteParams=fe.prototype.substituteParams=Ie.prototype.substituteParams=function(i){return new this.constructor(this.expr.substituteParams(i))};z.prototype.substituteParams=function(i){if(this.args.length===0)return this;{let e=this.args.map(t=>t.substituteParams(i));return new z(this.ruleName,e)}};function gu(i){return/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(i)}function _i(i){let e=Object.create(null);i.forEach(t=>{e[t]=(e[t]||0)+1}),Object.keys(e).forEach(t=>{if(e[t]<=1)return;let n=1;i.forEach((a,l)=>{a===t&&(i[l]=a+"_"+n++)})})}V.prototype.toArgumentNameList=Pe("toArgumentNameList");ge.toArgumentNameList=function(i,e){return["any"]};ye.toArgumentNameList=function(i,e){return["end"]};le.prototype.toArgumentNameList=function(i,e){return typeof this.obj=="string"&&/^[_a-zA-Z0-9]+$/.test(this.obj)?["_"+this.obj]:["$"+i]};ce.prototype.toArgumentNameList=function(i,e){let t=this.from+"_to_"+this.to;return gu(t)||(t="_"+t),gu(t)||(t="$"+i),[t]};re.prototype.toArgumentNameList=function(i,e){let t=this.terms.map(l=>l.toArgumentNameList(i,!0)),n=[],a=t[0].length;for(let l=0;l{let a=n.toArgumentNameList(i,!0);t=t.concat(a),i+=a.length}),e||_i(t),t};he.prototype.toArgumentNameList=function(i,e){let t=this.expr.toArgumentNameList(i,e).map(n=>n[n.length-1]==="s"?n+"es":n+"s");return e||_i(t),t};Ye.prototype.toArgumentNameList=function(i,e){return this.expr.toArgumentNameList(i,e).map(t=>"opt"+t[0].toUpperCase()+t.slice(1))};de.prototype.toArgumentNameList=function(i,e){return[]};fe.prototype.toArgumentNameList=Ie.prototype.toArgumentNameList=function(i,e){return this.expr.toArgumentNameList(i,e)};z.prototype.toArgumentNameList=function(i,e){return[this.ruleName]};oe.prototype.toArgumentNameList=function(i,e){return["$"+i]};pe.prototype.toArgumentNameList=function(i,e){return["param"+this.index]};V.prototype.toDisplayString=Pe("toDisplayString");re.prototype.toDisplayString=ie.prototype.toDisplayString=function(){return this.source?this.source.trimmed().contents:"["+this.constructor.name+"]"};ge.toDisplayString=ye.toDisplayString=he.prototype.toDisplayString=de.prototype.toDisplayString=fe.prototype.toDisplayString=Ie.prototype.toDisplayString=le.prototype.toDisplayString=ce.prototype.toDisplayString=pe.prototype.toDisplayString=function(){return this.toString()};z.prototype.toDisplayString=function(){if(this.args.length>0){let i=this.args.map(e=>e.toDisplayString());return this.ruleName+"<"+i.join(",")+">"}else return this.ruleName};oe.prototype.toDisplayString=function(){return"Unicode ["+this.category+"] character"};function Mf(i){return i==="description"||i==="string"||i==="code"}var Le=class i{constructor(e,t,n){if(!Mf(n))throw new Error("invalid Failure type: "+n);this.pexpr=e,this.text=t,this.type=n,this.fluffy=!1}getPExpr(){return this.pexpr}getText(){return this.text}getType(){return this.type}isDescription(){return this.type==="description"}isStringTerminal(){return this.type==="string"}isCode(){return this.type==="code"}isFluffy(){return this.fluffy}makeFluffy(){this.fluffy=!0}clearFluffy(){this.fluffy=!1}subsumes(e){return this.getText()===e.getText()&&this.type===e.type&&(!this.isFluffy()||this.isFluffy()&&e.isFluffy())}toString(){return this.type==="string"?JSON.stringify(this.getText()):this.getText()}clone(){let e=new i(this.pexpr,this.text,this.type);return this.isFluffy()&&e.makeFluffy(),e}toKey(){return this.toString()+"#"+this.type}};V.prototype.toFailure=Pe("toFailure");ge.toFailure=function(i){return new Le(this,"any object","description")};ye.toFailure=function(i){return new Le(this,"end of input","description")};le.prototype.toFailure=function(i){return new Le(this,this.obj,"string")};ce.prototype.toFailure=function(i){return new Le(this,JSON.stringify(this.from)+".."+JSON.stringify(this.to),"code")};de.prototype.toFailure=function(i){let e=this.expr===ge?"nothing":"not "+this.expr.toFailure(i);return new Le(this,e,"description")};fe.prototype.toFailure=function(i){return this.expr.toFailure(i)};z.prototype.toFailure=function(i){let{description:e}=i.rules[this.ruleName];return e||(e=(/^[aeiouAEIOU]/.test(this.ruleName)?"an":"a")+" "+this.ruleName),new Le(this,e,"description")};oe.prototype.toFailure=function(i){return new Le(this,"a Unicode ["+this.category+"] character","description")};re.prototype.toFailure=function(i){let t="("+this.terms.map(n=>n.toFailure(i)).join(" or ")+")";return new Le(this,t,"description")};ie.prototype.toFailure=function(i){let t="("+this.factors.map(n=>n.toFailure(i)).join(" ")+")";return new Le(this,t,"description")};he.prototype.toFailure=function(i){let e="("+this.expr.toFailure(i)+this.operator+")";return new Le(this,e,"description")};V.prototype.toString=Pe("toString");ge.toString=function(){return"any"};ye.toString=function(){return"end"};le.prototype.toString=function(){return JSON.stringify(this.obj)};ce.prototype.toString=function(){return JSON.stringify(this.from)+".."+JSON.stringify(this.to)};pe.prototype.toString=function(){return"$"+this.index};Ie.prototype.toString=function(){return"#("+this.expr.toString()+")"};re.prototype.toString=function(){return this.terms.length===1?this.terms[0].toString():"("+this.terms.map(i=>i.toString()).join(" | ")+")"};ie.prototype.toString=function(){return this.factors.length===1?this.factors[0].toString():"("+this.factors.map(i=>i.toString()).join(" ")+")"};he.prototype.toString=function(){return this.expr+this.operator};de.prototype.toString=function(){return"~"+this.expr};fe.prototype.toString=function(){return"&"+this.expr};z.prototype.toString=function(){if(this.args.length>0){let i=this.args.map(e=>e.toString());return this.ruleName+"<"+i.join(",")+">"}else return this.ruleName};oe.prototype.toString=function(){return"\\p{"+this.category+"}"};var Vn=class i extends V{constructor(e){super(),this.obj=e}_getString(e){let t=e.currentApplication().args[this.obj.index];return wt(t instanceof le,"expected a Terminal expression"),t.obj}allowsSkippingPrecedingSpace(){return!0}eval(e){let{inputStream:t}=e,n=t.pos,a=this._getString(e);return t.matchString(a,!0)?(e.pushBinding(new yt(a.length),n),!0):(e.processFailure(n,this),!1)}getArity(){return 1}substituteParams(e){return new i(this.obj.substituteParams(e))}toDisplayString(){return this.obj.toDisplayString()+" (case-insensitive)"}toFailure(e){return new Le(this,this.obj.toFailure(e)+" (case-insensitive)","description")}_isNullable(e,t){return this.obj._isNullable(e,t)}},Ef=Object.freeze({__proto__:null,CaseInsensitiveTerminal:Vn,PExpr:V,any:ge,end:ye,Terminal:le,Range:ce,Param:pe,Alt:re,Extend:Ct,Splice:Ft,Seq:ie,Iter:he,Star:at,Plus:gt,Opt:Ye,Not:de,Lookahead:fe,Lex:Ie,Apply:z,UnicodeChar:oe}),ku;Vu(i=>{ku=i.rules.applySyntactic.body});var si=new z("spaces"),vi=class{constructor(e,t,n){this.matcher=e,this.startExpr=t,this.grammar=e.grammar,this.input=e.getInput(),this.inputStream=new Xt(this.input),this.memoTable=e._memoTable,this.userData=void 0,this.doNotMemoize=!1,this._bindings=[],this._bindingOffsets=[],this._applicationStack=[],this._posStack=[0],this.inLexifiedContextStack=[!1],this.rightmostFailurePosition=-1,this._rightmostFailurePositionStack=[],this._recordedFailuresStack=[],n!==void 0&&(this.positionToRecordFailures=n,this.recordedFailures=Object.create(null))}posToOffset(e){return e-this._posStack[this._posStack.length-1]}enterApplication(e,t){this._posStack.push(this.inputStream.pos),this._applicationStack.push(t),this.inLexifiedContextStack.push(!1),e.enter(t),this._rightmostFailurePositionStack.push(this.rightmostFailurePosition),this.rightmostFailurePosition=-1}exitApplication(e,t){let n=this._posStack.pop();this._applicationStack.pop(),this.inLexifiedContextStack.pop(),e.exit(),this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,this._rightmostFailurePositionStack.pop()),t&&this.pushBinding(t,n)}enterLexifiedContext(){this.inLexifiedContextStack.push(!0)}exitLexifiedContext(){this.inLexifiedContextStack.pop()}currentApplication(){return this._applicationStack[this._applicationStack.length-1]}inSyntacticContext(){let e=this.currentApplication();return e?e.isSyntactic()&&!this.inLexifiedContext():this.startExpr.factors[0].isSyntactic()}inLexifiedContext(){return this.inLexifiedContextStack[this.inLexifiedContextStack.length-1]}skipSpaces(){return this.pushFailuresInfo(),this.eval(si),this.popBinding(),this.popFailuresInfo(),this.inputStream.pos}skipSpacesIfInSyntacticContext(){return this.inSyntacticContext()?this.skipSpaces():this.inputStream.pos}maybeSkipSpacesBefore(e){return e.allowsSkippingPrecedingSpace()&&e!==si?this.skipSpacesIfInSyntacticContext():this.inputStream.pos}pushBinding(e,t){this._bindings.push(e),this._bindingOffsets.push(this.posToOffset(t))}popBinding(){this._bindings.pop(),this._bindingOffsets.pop()}numBindings(){return this._bindings.length}truncateBindings(e){for(;this._bindings.length>e;)this.popBinding()}getCurrentPosInfo(){return this.getPosInfo(this.inputStream.pos)}getPosInfo(e){let t=this.memoTable[e];return t||(t=this.memoTable[e]=new ci),t}processFailure(e,t){if(this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,e),this.recordedFailures&&e===this.positionToRecordFailures){let n=this.currentApplication();n&&(t=t.substituteParams(n.args)),this.recordFailure(t.toFailure(this.grammar),!1)}}recordFailure(e,t){let n=e.toKey();this.recordedFailures[n]?this.recordedFailures[n].isFluffy()&&!e.isFluffy()&&this.recordedFailures[n].clearFluffy():this.recordedFailures[n]=t?e.clone():e}recordFailures(e,t){Object.keys(e).forEach(n=>{this.recordFailure(e[n],t)})}cloneRecordedFailures(){if(!this.recordedFailures)return;let e=Object.create(null);return Object.keys(this.recordedFailures).forEach(t=>{e[t]=this.recordedFailures[t].clone()}),e}getRightmostFailurePosition(){return this.rightmostFailurePosition}_getRightmostFailureOffset(){return this.rightmostFailurePosition>=0?this.posToOffset(this.rightmostFailurePosition):-1}getMemoizedTraceEntry(e,t){let n=this.memoTable[e];if(n&&t instanceof z){let a=n.memo[t.toMemoKey()];if(a&&a.traceEntry){let l=a.traceEntry.cloneWithExpr(t);return l.isMemoized=!0,l}}return null}getTraceEntry(e,t,n,a){if(t instanceof z){let l=this.currentApplication(),c=l?l.args:[];t=t.substituteParams(c)}return this.getMemoizedTraceEntry(e,t)||new er(this.input,e,this.inputStream.pos,t,n,a,this.trace)}isTracing(){return!!this.trace}hasNecessaryInfo(e){return this.trace&&!e.traceEntry?!1:this.recordedFailures&&this.inputStream.pos+e.rightmostFailureOffset===this.positionToRecordFailures?!!e.failuresAtRightmostPosition:!0}useMemoizedResult(e,t){this.trace&&this.trace.push(t.traceEntry);let n=this.inputStream.pos+t.rightmostFailureOffset;return this.rightmostFailurePosition=Math.max(this.rightmostFailurePosition,n),this.recordedFailures&&this.positionToRecordFailures===n&&t.failuresAtRightmostPosition&&this.recordFailures(t.failuresAtRightmostPosition,!0),this.inputStream.examinedLength=Math.max(this.inputStream.examinedLength,t.examinedLength+e),t.value?(this.inputStream.pos+=t.matchLength,this.pushBinding(t.value,e),!0):!1}eval(e){let{inputStream:t}=this,n=this._bindings.length,a=this.userData,l;this.recordedFailures&&(l=this.recordedFailures,this.recordedFailures=Object.create(null));let c=t.pos,v=this.maybeSkipSpacesBefore(e),h;this.trace&&(h=this.trace,this.trace=[]);let d=e.eval(this);if(this.trace){let g=this._bindings.slice(n),f=this.getTraceEntry(v,e,d,g);f.isImplicitSpaces=e===si,f.isRootNode=e===this.startExpr,h.push(f),this.trace=h}return d?this.recordedFailures&&t.pos===this.positionToRecordFailures&&Object.keys(this.recordedFailures).forEach(g=>{this.recordedFailures[g].makeFluffy()}):(t.pos=c,this.truncateBindings(n),this.userData=a),this.recordedFailures&&this.recordFailures(l,!1),e===ku&&this.skipSpaces(),d}getMatchResult(){this.grammar._setUpMatchState(this),this.eval(this.startExpr);let e;this.recordedFailures&&(e=Object.keys(this.recordedFailures).map(n=>this.recordedFailures[n]));let t=this._bindings[0];return t&&(t.grammar=this.grammar),new On(this.matcher,this.input,this.startExpr,t,this._bindingOffsets[0],this.rightmostFailurePosition,e)}getTrace(){this.trace=[];let e=this.getMatchResult(),t=this.trace[this.trace.length-1];return t.result=e,t}pushFailuresInfo(){this._rightmostFailurePositionStack.push(this.rightmostFailurePosition),this._recordedFailuresStack.push(this.recordedFailures)}popFailuresInfo(){this.rightmostFailurePosition=this._rightmostFailurePositionStack.pop(),this.recordedFailures=this._recordedFailuresStack.pop()}},hi=class{constructor(e){this.grammar=e,this._memoTable=[],this._input="",this._isMemoTableStale=!1}_resetMemoTable(){this._memoTable=[],this._isMemoTableStale=!1}getInput(){return this._input}setInput(e){return this._input!==e&&this.replaceInputRange(0,this._input.length,e),this}replaceInputRange(e,t,n){let a=this._input,l=this._memoTable;if(e<0||e>a.length||t<0||t>a.length||e>t)throw new Error("Invalid indices: "+e+" and "+t);this._input=a.slice(0,e)+n+a.slice(t),this._input!==a&&l.length>0&&(this._isMemoTableStale=!0);let c=l.slice(t);l.length=e;for(let v=0;vObject.prototype.hasOwnProperty.call(i,e),Ln=class{constructor(e,t,n){this._node=e,this.source=t,this._baseInterval=n,e.isNonterminal()&&wt(t===n),this._childWrappers=[]}_forgetMemoizedResultFor(e){delete this._node[this._semantics.attributeKeys[e]],this.children.forEach(t=>{t._forgetMemoizedResultFor(e)})}child(e){if(!(0<=e&&ec._node),a=new Tn(n,[],-1,!1),l=this._semantics.wrap(a,null,null);return l._childWrappers=t,l}get children(){return this._children()}get ctorName(){return this._node.ctorName}get numChildren(){return this._node.numChildren()}get sourceString(){return this.source.contents}},Te=class i{constructor(e,t){let n=this;if(this.grammar=e,this.checkedActionDicts=!1,this.Wrapper=class extends(t?t.Wrapper:Ln){constructor(a,l,c){super(a,l,c),n.checkActionDictsIfHaventAlready(),this._semantics=n}toString(){return"[semantics wrapper for "+n.grammar.name+"]"}},this.super=t,t){if(!(e.equals(this.super.grammar)||e._inheritsFrom(this.super.grammar)))throw new Error("Cannot extend a semantics for grammar '"+this.super.grammar.name+"' for use with grammar '"+e.name+"' (not a sub-grammar)");this.operations=Object.create(this.super.operations),this.attributes=Object.create(this.super.attributes),this.attributeKeys=Object.create(null);for(let a in this.attributes)Object.defineProperty(this.attributeKeys,a,{value:Iu(a)})}else this.operations=Object.create(null),this.attributes=Object.create(null),this.attributeKeys=Object.create(null)}toString(){return"[semantics for "+this.grammar.name+"]"}checkActionDictsIfHaventAlready(){this.checkedActionDicts||(this.checkActionDicts(),this.checkedActionDicts=!0)}checkActionDicts(){let e;for(e in this.operations)this.operations[e].checkActionDict(this.grammar);for(e in this.attributes)this.attributes[e].checkActionDict(this.grammar)}toRecipe(e){function t(a){return a.super!==i.BuiltInSemantics._getSemantics()}let n=`(function(g) { +`;if(t(this)){n+=" var semantics = "+this.super.toRecipe(!0)+"(g";let a=this.super.grammar,l=this.grammar;for(;l!==a;)n+=".superGrammar",l=l.superGrammar;n+=`); +`,n+=" return g.extendSemantics(semantics)"}else n+=" return g.createSemantics()";return["Operation","Attribute"].forEach(a=>{let l=this[a.toLowerCase()+"s"];Object.keys(l).forEach(c=>{let{actionDict:v,formals:h,builtInDefault:d}=l[c],g=c;h.length>0&&(g+="("+h.join(", ")+")");let f;t(this)&&this.super[a.toLowerCase()+"s"][c]?f="extend"+a:f="add"+a,n+=` + .`+f+"("+JSON.stringify(g)+", {";let y=[];Object.keys(v).forEach(R=>{if(v[R]!==d){let _=v[R].toString().trim();_=_.replace(/^.*\(/,"function("),y.push(` + `+JSON.stringify(R)+": "+_)}}),n+=y.join(",")+` + })`})}),n+=`; + })`,e||(n=`(function() { + var grammar = this.fromRecipe(`+this.grammar.toRecipe()+`); + var semantics = `+n+`(grammar); + return semantics; +}); +`),n}addOperationOrAttribute(e,t,n){let a=e+"s",l=yu(t,e),{name:c}=l,{formals:v}=l;this.assertNewName(c,e);let h=Af(e,c,f),d={_default:h};Object.keys(n).forEach(y=>{d[y]=n[y]});let g=e==="operation"?new Ut(c,v,d,h):new Or(c,d,h);g.checkActionDict(this.grammar),this[a][c]=g;function f(...y){let R=this._semantics[a][c];if(arguments.length!==R.formals.length)throw new Error("Invalid number of arguments passed to "+c+" "+e+" (expected "+R.formals.length+", got "+arguments.length+")");let _=Object.create(null);for(let[ee,ae]of Object.entries(y)){let At=R.formals[ee];_[At]=ae}let O=this.args;this.args=_;let K=R.execute(this._semantics,this);return this.args=O,K}e==="operation"?(this.Wrapper.prototype[c]=f,this.Wrapper.prototype[c].toString=function(){return"["+c+" operation]"}):(Object.defineProperty(this.Wrapper.prototype,c,{get:f,configurable:!0}),Object.defineProperty(this.attributeKeys,c,{value:Iu(c)}))}extendOperationOrAttribute(e,t,n){let a=e+"s";if(yu(t,"attribute"),!(this.super&&t in this.super[a]))throw new Error("Cannot extend "+e+" '"+t+"': did not inherit an "+e+" with that name");if(di(this[a],t))throw new Error("Cannot extend "+e+" '"+t+"' again");let l=this[a][t].formals,c=this[a][t].actionDict,v=Object.create(c);Object.keys(n).forEach(h=>{v[h]=n[h]}),this[a][t]=e==="operation"?new Ut(t,l,v):new Or(t,v),this[a][t].checkActionDict(this.grammar)}assertNewName(e,t){if(di(Ln.prototype,e))throw new Error("Cannot add "+t+" '"+e+"': that's a reserved name");if(e in this.operations)throw new Error("Cannot add "+t+" '"+e+"': an operation with that name already exists");if(e in this.attributes)throw new Error("Cannot add "+t+" '"+e+"': an attribute with that name already exists")}wrap(e,t,n){let a=n||t;return e instanceof this.Wrapper?e:new this.Wrapper(e,t,a)}};function yu(i,e){if(!Te.prototypeGrammar)return wt(i.indexOf("(")===-1),{name:i,formals:[]};let t=Te.prototypeGrammar.match(i,e==="operation"?"OperationSignature":"AttributeSignature");if(t.failed())throw new Error(t.message);return Te.prototypeGrammarSemantics(t).parse()}function Af(i,e,t){return function(...n){let l=(this._semantics.operations[e]||this._semantics.attributes[e]).formals.map(c=>this.args[c]);if(!this.isIteration()&&n.length===1)return t.apply(n[0],l);throw vf(this.ctorName,e,i,Er)}}Te.createSemantics=function(i,e){let t=new Te(i,e!==void 0?e:Te.BuiltInSemantics._getSemantics()),n=function(l){if(!(l instanceof On))throw new TypeError("Semantics expected a MatchResult, but got "+Ii(l));if(l.failed())throw new TypeError("cannot apply Semantics to "+l.toString());let c=l._cst;if(c.grammar!==i)throw new Error("Cannot use a MatchResult from grammar '"+c.grammar.name+"' with a semantics for '"+i.name+"'");let v=new Xt(l.input);return t.wrap(c,v.interval(l._cstOffset,l.input.length))};return n.addOperation=function(a,l){return t.addOperationOrAttribute("operation",a,l),n},n.extendOperation=function(a,l){return t.extendOperationOrAttribute("operation",a,l),n},n.addAttribute=function(a,l){return t.addOperationOrAttribute("attribute",a,l),n},n.extendAttribute=function(a,l){return t.extendOperationOrAttribute("attribute",a,l),n},n._getActionDict=function(a){let l=t.operations[a]||t.attributes[a];if(!l)throw new Error('"'+a+'" is not a valid operation or attribute name in this semantics for "'+i.name+'"');return l.actionDict},n._remove=function(a){let l;return a in t.operations?(l=t.operations[a],delete t.operations[a]):a in t.attributes&&(l=t.attributes[a],delete t.attributes[a]),delete t.Wrapper.prototype[a],l},n.getOperationNames=function(){return Object.keys(t.operations)},n.getAttributeNames=function(){return Object.keys(t.attributes)},n.getGrammar=function(){return t.grammar},n.toRecipe=function(a){return t.toRecipe(a)},n.toString=t.toString.bind(t),n._getSemantics=function(){return t},n};var Ut=class{constructor(e,t,n,a){this.name=e,this.formals=t,this.actionDict=n,this.builtInDefault=a}checkActionDict(e){e._checkTopDownActionDict(this.typeName,this.name,this.actionDict)}execute(e,t){try{let{ctorName:n}=t._node,a=this.actionDict[n];return a?(Er.push([this,n]),a.apply(t,t._children())):t.isNonterminal()&&(a=this.actionDict._nonterminal,a)?(Er.push([this,"_nonterminal",n]),a.apply(t,t._children())):(Er.push([this,"default action",n]),this.actionDict._default.apply(t,t._children()))}finally{Er.pop()}}};Ut.prototype.typeName="operation";var Or=class extends Ut{constructor(e,t,n){super(e,[],t,n)}execute(e,t){let n=t._node,a=e.attributeKeys[this.name];return di(n,a)||(n[a]=Ut.prototype.execute.call(this,e,t)),n[a]}};Or.prototype.typeName="attribute";var _u=["_iter","_terminal","_nonterminal","_default"];function Su(i){return Object.keys(i.rules).sort().map(e=>i.rules[e])}var Of=i=>i.replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029"),Cu,Fu,Ve=class i{constructor(e,t,n,a){if(this.name=e,this.superGrammar=t,this.rules=n,a){if(!(a in n))throw new Error("Invalid start rule: '"+a+"' is not a rule in grammar '"+e+"'");this.defaultStartRule=a}this._matchStateInitializer=void 0,this.supportsIncrementalParsing=!0}matcher(){return new hi(this)}isBuiltIn(){return this===i.ProtoBuiltInRules||this===i.BuiltInRules}equals(e){if(this===e)return!0;if(e==null||this.name!==e.name||this.defaultStartRule!==e.defaultStartRule||!(this.superGrammar===e.superGrammar||this.superGrammar.equals(e.superGrammar)))return!1;let t=Su(this),n=Su(e);return t.length===n.length&&t.every((a,l)=>a.description===n[l].description&&a.formals.join(",")===n[l].formals.join(",")&&a.body.toString()===n[l].body.toString())}match(e,t){let n=this.matcher();return n.replaceInputRange(0,0,e),n.match(t)}trace(e,t){let n=this.matcher();return n.replaceInputRange(0,0,e),n.trace(t)}createSemantics(){return Te.createSemantics(this)}extendSemantics(e){return Te.createSemantics(this,e._getSemantics())}_checkTopDownActionDict(e,t,n){let a=[];for(let l in n){let c=n[l];if(!_u.includes(l)&&!(l in this.rules)){a.push(`'${l}' is not a valid semantic action for '${this.name}'`);continue}if(typeof c!="function"){a.push(`'${l}' must be a function in an action dictionary for '${this.name}'`);continue}let h=c.length,d=this._topDownActionArity(l);if(h!==d){let g;l==="_iter"||l==="_nonterminal"?g=`it should use a rest parameter, e.g. \`${l}(...children) {}\`. NOTE: this is new in Ohm v16 \u2014 see https://ohmjs.org/d/ati for details.`:g=`expected ${d}, got ${h}`,a.push(`Semantic action '${l}' has the wrong arity: ${g}`)}}if(a.length>0){let l=a.map(v=>"- "+v),c=new Error([`Found errors in the action dictionary of the '${t}' ${e}:`,...l].join(` +`));throw c.problems=a,c}}_topDownActionArity(e){return _u.includes(e)?0:this.rules[e].body.getArity()}_inheritsFrom(e){let t=this.superGrammar;for(;t;){if(t.equals(e,!0))return!0;t=t.superGrammar}return!1}toRecipe(e=void 0){let t={};this.source&&(t.source=this.source.contents);let n=null;this.defaultStartRule&&(n=this.defaultStartRule);let a={};Object.keys(this.rules).forEach(v=>{let h=this.rules[v],{body:d}=h,g=!this.superGrammar||!this.superGrammar.rules[v],f;g?f="define":f=d instanceof Ct?"extend":"override";let y={};if(h.source&&this.source){let O=h.source.relativeTo(this.source);y.sourceInterval=[O.startIdx,O.endIdx]}let R=g?h.description:null,_=d.outputRecipe(h.formals,this.source);a[v]=[f,y,R,h.formals,_]});let l="null";e?l=e:this.superGrammar&&!this.superGrammar.isBuiltIn()&&(l=this.superGrammar.toRecipe());let c=[...["grammar",t,this.name].map(JSON.stringify),l,...[n,a].map(JSON.stringify)];return Of(`[${c.join(",")}]`)}toOperationActionDictionaryTemplate(){return this._toOperationOrAttributeActionDictionaryTemplate()}toAttributeActionDictionaryTemplate(){return this._toOperationOrAttributeActionDictionaryTemplate()}_toOperationOrAttributeActionDictionaryTemplate(){let e=new Bt;e.append("{");let t=!0;for(let n in this.rules){let{body:a}=this.rules[n];t?t=!1:e.append(","),e.append(` +`),e.append(" "),this.addSemanticActionTemplate(n,a,e)}return e.append(` +}`),e.contents()}addSemanticActionTemplate(e,t,n){n.append(e),n.append(": function(");let a=this._topDownActionArity(e);n.append(Fn("_",a).join(", ")),n.append(`) { +`),n.append(" }")}parseApplication(e){let t;if(e.indexOf("<")===-1)t=new z(e);else{let a=Cu.match(e,"Base_application");t=Fu(a,{})}if(!(t.ruleName in this.rules))throw Au(t.ruleName,this.name);let{formals:n}=this.rules[t.ruleName];if(n.length!==t.args.length){let{source:a}=this.rules[t.ruleName];throw Ou(t.ruleName,n.length,t.args.length,a)}return t}_setUpMatchState(e){this._matchStateInitializer&&this._matchStateInitializer(e)}};Ve.ProtoBuiltInRules=new Ve("ProtoBuiltInRules",void 0,{any:{body:ge,formals:[],description:"any character",primitive:!0},end:{body:ye,formals:[],description:"end of input",primitive:!0},caseInsensitive:{body:new Vn(new pe(0)),formals:["str"],primitive:!0},lower:{body:new oe("Ll"),formals:[],description:"a lowercase letter",primitive:!0},upper:{body:new oe("Lu"),formals:[],description:"an uppercase letter",primitive:!0},unicodeLtmo:{body:new oe("Ltmo"),formals:[],description:"a Unicode character in Lt, Lm, or Lo",primitive:!0},spaces:{body:new at(new z("space")),formals:[]},space:{body:new ce("\0"," "),formals:[],description:"a space"}});Ve.initApplicationParser=function(i,e){Cu=i,Fu=e};var kn=class{constructor(e){this.name=e}sourceInterval(e,t){return this.source.subInterval(e,t-e)}ensureSuperGrammar(){return this.superGrammar||this.withSuperGrammar(this.name==="BuiltInRules"?Ve.ProtoBuiltInRules:Ve.BuiltInRules),this.superGrammar}ensureSuperGrammarRuleForOverriding(e,t){let n=this.ensureSuperGrammar().rules[e];if(!n)throw tf(e,this.superGrammar.name,t);return n}installOverriddenOrExtendedRule(e,t,n,a){let l=oi(t);if(l.length>0)throw hu(e,l,a);let c=this.ensureSuperGrammar().rules[e],v=c.formals,h=v?v.length:0;if(t.length!==h)throw Ou(e,h,t.length,a);return this.install(e,t,n,c.description,a)}install(e,t,n,a,l,c=!1){return this.rules[e]={body:n.introduceParams(t),formals:t,description:a,source:l,primitive:c},this}withSuperGrammar(e){if(this.superGrammar)throw new Error("the super grammar of a GrammarDecl cannot be set more than once");return this.superGrammar=e,this.rules=Object.create(e.rules),e.isBuiltIn()||(this.defaultStartRule=e.defaultStartRule),this}withDefaultStartRule(e){return this.defaultStartRule=e,this}withSource(e){return this.source=new Xt(e).interval(0,e.length),this}build(){let e=new Ve(this.name,this.ensureSuperGrammar(),this.rules,this.defaultStartRule);e._matchStateInitializer=e.superGrammar._matchStateInitializer,e.supportsIncrementalParsing=e.superGrammar.supportsIncrementalParsing;let t=[],n=!1;return Object.keys(e.rules).forEach(a=>{let{body:l}=e.rules[a];try{l.assertChoicesHaveUniformArity(a)}catch(c){t.push(c)}try{l.assertAllApplicationsAreValid(a,e)}catch(c){t.push(c),n=!0}}),n||Object.keys(e.rules).forEach(a=>{let{body:l}=e.rules[a];try{l.assertIteratedExprsAreNotNullable(e,[])}catch(c){t.push(c)}}),t.length>0&&hf(t),this.source&&(e.source=this.source),e}define(e,t,n,a,l,c){if(this.ensureSuperGrammar(),this.superGrammar.rules[e])throw vu(e,this.name,this.superGrammar.name,l);if(this.rules[e])throw vu(e,this.name,this.name,l);let v=oi(t);if(v.length>0)throw hu(e,v,l);return this.install(e,t,n,a,l,c)}override(e,t,n,a,l){return this.ensureSuperGrammarRuleForOverriding(e,l),this.installOverriddenOrExtendedRule(e,t,n,l),this}extend(e,t,n,a,l){if(!this.ensureSuperGrammar().rules[e])throw rf(e,this.superGrammar.name,l);let v=new Ct(this.superGrammar,e,n);return v.source=n.source,this.installOverriddenOrExtendedRule(e,t,v,l),this}},tr=class{constructor(){this.currentDecl=null,this.currentRuleName=null}newGrammar(e){return new kn(e)}grammar(e,t,n,a,l){let c=new kn(t);return n&&c.withSuperGrammar(n instanceof Ve?n:this.fromRecipe(n)),a&&c.withDefaultStartRule(a),e&&e.source&&c.withSource(e.source),this.currentDecl=c,Object.keys(l).forEach(v=>{this.currentRuleName=v;let h=l[v],d=h[0],g=h[1],f=h[2],y=h[3],R=this.fromRecipe(h[4]),_;c.source&&g&&g.sourceInterval&&(_=c.source.subInterval(g.sourceInterval[0],g.sourceInterval[1]-g.sourceInterval[0])),c[d](v,y,R,f,_)}),this.currentRuleName=this.currentDecl=null,c.build()}terminal(e){return new le(e)}range(e,t){return new ce(e,t)}param(e){return new pe(e)}alt(...e){let t=[];for(let n of e)n instanceof V||(n=this.fromRecipe(n)),n instanceof re?t=t.concat(n.terms):t.push(n);return t.length===1?t[0]:new re(t)}seq(...e){let t=[];for(let n of e)n instanceof V||(n=this.fromRecipe(n)),n instanceof ie?t=t.concat(n.factors):t.push(n);return t.length===1?t[0]:new ie(t)}star(e){return e instanceof V||(e=this.fromRecipe(e)),new at(e)}plus(e){return e instanceof V||(e=this.fromRecipe(e)),new gt(e)}opt(e){return e instanceof V||(e=this.fromRecipe(e)),new Ye(e)}not(e){return e instanceof V||(e=this.fromRecipe(e)),new de(e)}lookahead(e){return e instanceof V||(e=this.fromRecipe(e)),new fe(e)}lex(e){return e instanceof V||(e=this.fromRecipe(e)),new Ie(e)}app(e,t){return t&&t.length>0&&(t=t.map(function(n){return n instanceof V?n:this.fromRecipe(n)},this)),new z(e,t)}splice(e,t){return new Ft(this.currentDecl.superGrammar,this.currentRuleName,e.map(n=>this.fromRecipe(n)),t.map(n=>this.fromRecipe(n)))}fromRecipe(e){let t=e[0]==="grammar"?e.slice(1):e.slice(2),n=this[e[0]](...t),a=e[1];return a&&a.sourceInterval&&this.currentDecl&&n.withSource(this.currentDecl.sourceInterval(...a.sourceInterval)),n}};function qn(i){return typeof i=="function"?i.call(new tr):(typeof i=="string"&&(i=JSON.parse(i)),new tr().fromRecipe(i))}var Si=qn(["grammar",{source:`BuiltInRules { + + alnum (an alpha-numeric character) + = letter + | digit + + letter (a letter) + = lower + | upper + | unicodeLtmo + + digit (a digit) + = "0".."9" + + hexDigit (a hexadecimal digit) + = digit + | "a".."f" + | "A".."F" + + ListOf + = NonemptyListOf + | EmptyListOf + + NonemptyListOf + = elem (sep elem)* + + EmptyListOf + = /* nothing */ + + listOf + = nonemptyListOf + | emptyListOf + + nonemptyListOf + = elem (sep elem)* + + emptyListOf + = /* nothing */ + + // Allows a syntactic rule application within a lexical context. + applySyntactic = app +}`},"BuiltInRules",null,null,{alnum:["define",{sourceInterval:[18,78]},"an alpha-numeric character",[],["alt",{sourceInterval:[60,78]},["app",{sourceInterval:[60,66]},"letter",[]],["app",{sourceInterval:[73,78]},"digit",[]]]],letter:["define",{sourceInterval:[82,142]},"a letter",[],["alt",{sourceInterval:[107,142]},["app",{sourceInterval:[107,112]},"lower",[]],["app",{sourceInterval:[119,124]},"upper",[]],["app",{sourceInterval:[131,142]},"unicodeLtmo",[]]]],digit:["define",{sourceInterval:[146,177]},"a digit",[],["range",{sourceInterval:[169,177]},"0","9"]],hexDigit:["define",{sourceInterval:[181,254]},"a hexadecimal digit",[],["alt",{sourceInterval:[219,254]},["app",{sourceInterval:[219,224]},"digit",[]],["range",{sourceInterval:[231,239]},"a","f"],["range",{sourceInterval:[246,254]},"A","F"]]],ListOf:["define",{sourceInterval:[258,336]},null,["elem","sep"],["alt",{sourceInterval:[282,336]},["app",{sourceInterval:[282,307]},"NonemptyListOf",[["param",{sourceInterval:[297,301]},0],["param",{sourceInterval:[303,306]},1]]],["app",{sourceInterval:[314,336]},"EmptyListOf",[["param",{sourceInterval:[326,330]},0],["param",{sourceInterval:[332,335]},1]]]]],NonemptyListOf:["define",{sourceInterval:[340,388]},null,["elem","sep"],["seq",{sourceInterval:[372,388]},["param",{sourceInterval:[372,376]},0],["star",{sourceInterval:[377,388]},["seq",{sourceInterval:[378,386]},["param",{sourceInterval:[378,381]},1],["param",{sourceInterval:[382,386]},0]]]]],EmptyListOf:["define",{sourceInterval:[392,434]},null,["elem","sep"],["seq",{sourceInterval:[438,438]}]],listOf:["define",{sourceInterval:[438,516]},null,["elem","sep"],["alt",{sourceInterval:[462,516]},["app",{sourceInterval:[462,487]},"nonemptyListOf",[["param",{sourceInterval:[477,481]},0],["param",{sourceInterval:[483,486]},1]]],["app",{sourceInterval:[494,516]},"emptyListOf",[["param",{sourceInterval:[506,510]},0],["param",{sourceInterval:[512,515]},1]]]]],nonemptyListOf:["define",{sourceInterval:[520,568]},null,["elem","sep"],["seq",{sourceInterval:[552,568]},["param",{sourceInterval:[552,556]},0],["star",{sourceInterval:[557,568]},["seq",{sourceInterval:[558,566]},["param",{sourceInterval:[558,561]},1],["param",{sourceInterval:[562,566]},0]]]]],emptyListOf:["define",{sourceInterval:[572,682]},null,["elem","sep"],["seq",{sourceInterval:[685,685]}]],applySyntactic:["define",{sourceInterval:[685,710]},null,["app"],["param",{sourceInterval:[707,710]},0]]}]);Ve.BuiltInRules=Si;If(Ve.BuiltInRules);var Un=qn(["grammar",{source:`Ohm { + + Grammars + = Grammar* + + Grammar + = ident SuperGrammar? "{" Rule* "}" + + SuperGrammar + = "<:" ident + + Rule + = ident Formals? ruleDescr? "=" RuleBody -- define + | ident Formals? ":=" OverrideRuleBody -- override + | ident Formals? "+=" RuleBody -- extend + + RuleBody + = "|"? NonemptyListOf + + TopLevelTerm + = Seq caseName -- inline + | Seq + + OverrideRuleBody + = "|"? NonemptyListOf + + OverrideTopLevelTerm + = "..." -- superSplice + | TopLevelTerm + + Formals + = "<" ListOf ">" + + Params + = "<" ListOf ">" + + Alt + = NonemptyListOf + + Seq + = Iter* + + Iter + = Pred "*" -- star + | Pred "+" -- plus + | Pred "?" -- opt + | Pred + + Pred + = "~" Lex -- not + | "&" Lex -- lookahead + | Lex + + Lex + = "#" Base -- lex + | Base + + Base + = ident Params? ~(ruleDescr? "=" | ":=" | "+=") -- application + | oneCharTerminal ".." oneCharTerminal -- range + | terminal -- terminal + | "(" Alt ")" -- paren + + ruleDescr (a rule description) + = "(" ruleDescrText ")" + + ruleDescrText + = (~")" any)* + + caseName + = "--" (~"\\n" space)* name (~"\\n" space)* ("\\n" | &"}") + + name (a name) + = nameFirst nameRest* + + nameFirst + = "_" + | letter + + nameRest + = "_" + | alnum + + ident (an identifier) + = name + + terminal + = "\\"" terminalChar* "\\"" + + oneCharTerminal + = "\\"" terminalChar "\\"" + + terminalChar + = escapeChar + | ~"\\\\" ~"\\"" ~"\\n" "\\u{0}".."\\u{10FFFF}" + + escapeChar (an escape sequence) + = "\\\\\\\\" -- backslash + | "\\\\\\"" -- doubleQuote + | "\\\\\\'" -- singleQuote + | "\\\\b" -- backspace + | "\\\\n" -- lineFeed + | "\\\\r" -- carriageReturn + | "\\\\t" -- tab + | "\\\\u{" hexDigit hexDigit? hexDigit? + hexDigit? hexDigit? hexDigit? "}" -- unicodeCodePoint + | "\\\\u" hexDigit hexDigit hexDigit hexDigit -- unicodeEscape + | "\\\\x" hexDigit hexDigit -- hexEscape + + space + += comment + + comment + = "//" (~"\\n" any)* &("\\n" | end) -- singleLine + | "/*" (~"*/" any)* "*/" -- multiLine + + tokens = token* + + token = caseName | comment | ident | operator | punctuation | terminal | any + + operator = "<:" | "=" | ":=" | "+=" | "*" | "+" | "?" | "~" | "&" + + punctuation = "<" | ">" | "," | "--" +}`},"Ohm",null,"Grammars",{Grammars:["define",{sourceInterval:[9,32]},null,[],["star",{sourceInterval:[24,32]},["app",{sourceInterval:[24,31]},"Grammar",[]]]],Grammar:["define",{sourceInterval:[36,83]},null,[],["seq",{sourceInterval:[50,83]},["app",{sourceInterval:[50,55]},"ident",[]],["opt",{sourceInterval:[56,69]},["app",{sourceInterval:[56,68]},"SuperGrammar",[]]],["terminal",{sourceInterval:[70,73]},"{"],["star",{sourceInterval:[74,79]},["app",{sourceInterval:[74,78]},"Rule",[]]],["terminal",{sourceInterval:[80,83]},"}"]]],SuperGrammar:["define",{sourceInterval:[87,116]},null,[],["seq",{sourceInterval:[106,116]},["terminal",{sourceInterval:[106,110]},"<:"],["app",{sourceInterval:[111,116]},"ident",[]]]],Rule_define:["define",{sourceInterval:[131,181]},null,[],["seq",{sourceInterval:[131,170]},["app",{sourceInterval:[131,136]},"ident",[]],["opt",{sourceInterval:[137,145]},["app",{sourceInterval:[137,144]},"Formals",[]]],["opt",{sourceInterval:[146,156]},["app",{sourceInterval:[146,155]},"ruleDescr",[]]],["terminal",{sourceInterval:[157,160]},"="],["app",{sourceInterval:[162,170]},"RuleBody",[]]]],Rule_override:["define",{sourceInterval:[188,248]},null,[],["seq",{sourceInterval:[188,235]},["app",{sourceInterval:[188,193]},"ident",[]],["opt",{sourceInterval:[194,202]},["app",{sourceInterval:[194,201]},"Formals",[]]],["terminal",{sourceInterval:[214,218]},":="],["app",{sourceInterval:[219,235]},"OverrideRuleBody",[]]]],Rule_extend:["define",{sourceInterval:[255,305]},null,[],["seq",{sourceInterval:[255,294]},["app",{sourceInterval:[255,260]},"ident",[]],["opt",{sourceInterval:[261,269]},["app",{sourceInterval:[261,268]},"Formals",[]]],["terminal",{sourceInterval:[281,285]},"+="],["app",{sourceInterval:[286,294]},"RuleBody",[]]]],Rule:["define",{sourceInterval:[120,305]},null,[],["alt",{sourceInterval:[131,305]},["app",{sourceInterval:[131,170]},"Rule_define",[]],["app",{sourceInterval:[188,235]},"Rule_override",[]],["app",{sourceInterval:[255,294]},"Rule_extend",[]]]],RuleBody:["define",{sourceInterval:[309,362]},null,[],["seq",{sourceInterval:[324,362]},["opt",{sourceInterval:[324,328]},["terminal",{sourceInterval:[324,327]},"|"]],["app",{sourceInterval:[329,362]},"NonemptyListOf",[["app",{sourceInterval:[344,356]},"TopLevelTerm",[]],["terminal",{sourceInterval:[358,361]},"|"]]]]],TopLevelTerm_inline:["define",{sourceInterval:[385,408]},null,[],["seq",{sourceInterval:[385,397]},["app",{sourceInterval:[385,388]},"Seq",[]],["app",{sourceInterval:[389,397]},"caseName",[]]]],TopLevelTerm:["define",{sourceInterval:[366,418]},null,[],["alt",{sourceInterval:[385,418]},["app",{sourceInterval:[385,397]},"TopLevelTerm_inline",[]],["app",{sourceInterval:[415,418]},"Seq",[]]]],OverrideRuleBody:["define",{sourceInterval:[422,491]},null,[],["seq",{sourceInterval:[445,491]},["opt",{sourceInterval:[445,449]},["terminal",{sourceInterval:[445,448]},"|"]],["app",{sourceInterval:[450,491]},"NonemptyListOf",[["app",{sourceInterval:[465,485]},"OverrideTopLevelTerm",[]],["terminal",{sourceInterval:[487,490]},"|"]]]]],OverrideTopLevelTerm_superSplice:["define",{sourceInterval:[522,543]},null,[],["terminal",{sourceInterval:[522,527]},"..."]],OverrideTopLevelTerm:["define",{sourceInterval:[495,562]},null,[],["alt",{sourceInterval:[522,562]},["app",{sourceInterval:[522,527]},"OverrideTopLevelTerm_superSplice",[]],["app",{sourceInterval:[550,562]},"TopLevelTerm",[]]]],Formals:["define",{sourceInterval:[566,606]},null,[],["seq",{sourceInterval:[580,606]},["terminal",{sourceInterval:[580,583]},"<"],["app",{sourceInterval:[584,602]},"ListOf",[["app",{sourceInterval:[591,596]},"ident",[]],["terminal",{sourceInterval:[598,601]},","]]],["terminal",{sourceInterval:[603,606]},">"]]],Params:["define",{sourceInterval:[610,647]},null,[],["seq",{sourceInterval:[623,647]},["terminal",{sourceInterval:[623,626]},"<"],["app",{sourceInterval:[627,643]},"ListOf",[["app",{sourceInterval:[634,637]},"Seq",[]],["terminal",{sourceInterval:[639,642]},","]]],["terminal",{sourceInterval:[644,647]},">"]]],Alt:["define",{sourceInterval:[651,685]},null,[],["app",{sourceInterval:[661,685]},"NonemptyListOf",[["app",{sourceInterval:[676,679]},"Seq",[]],["terminal",{sourceInterval:[681,684]},"|"]]]],Seq:["define",{sourceInterval:[689,704]},null,[],["star",{sourceInterval:[699,704]},["app",{sourceInterval:[699,703]},"Iter",[]]]],Iter_star:["define",{sourceInterval:[719,736]},null,[],["seq",{sourceInterval:[719,727]},["app",{sourceInterval:[719,723]},"Pred",[]],["terminal",{sourceInterval:[724,727]},"*"]]],Iter_plus:["define",{sourceInterval:[743,760]},null,[],["seq",{sourceInterval:[743,751]},["app",{sourceInterval:[743,747]},"Pred",[]],["terminal",{sourceInterval:[748,751]},"+"]]],Iter_opt:["define",{sourceInterval:[767,783]},null,[],["seq",{sourceInterval:[767,775]},["app",{sourceInterval:[767,771]},"Pred",[]],["terminal",{sourceInterval:[772,775]},"?"]]],Iter:["define",{sourceInterval:[708,794]},null,[],["alt",{sourceInterval:[719,794]},["app",{sourceInterval:[719,727]},"Iter_star",[]],["app",{sourceInterval:[743,751]},"Iter_plus",[]],["app",{sourceInterval:[767,775]},"Iter_opt",[]],["app",{sourceInterval:[790,794]},"Pred",[]]]],Pred_not:["define",{sourceInterval:[809,824]},null,[],["seq",{sourceInterval:[809,816]},["terminal",{sourceInterval:[809,812]},"~"],["app",{sourceInterval:[813,816]},"Lex",[]]]],Pred_lookahead:["define",{sourceInterval:[831,852]},null,[],["seq",{sourceInterval:[831,838]},["terminal",{sourceInterval:[831,834]},"&"],["app",{sourceInterval:[835,838]},"Lex",[]]]],Pred:["define",{sourceInterval:[798,862]},null,[],["alt",{sourceInterval:[809,862]},["app",{sourceInterval:[809,816]},"Pred_not",[]],["app",{sourceInterval:[831,838]},"Pred_lookahead",[]],["app",{sourceInterval:[859,862]},"Lex",[]]]],Lex_lex:["define",{sourceInterval:[876,892]},null,[],["seq",{sourceInterval:[876,884]},["terminal",{sourceInterval:[876,879]},"#"],["app",{sourceInterval:[880,884]},"Base",[]]]],Lex:["define",{sourceInterval:[866,903]},null,[],["alt",{sourceInterval:[876,903]},["app",{sourceInterval:[876,884]},"Lex_lex",[]],["app",{sourceInterval:[899,903]},"Base",[]]]],Base_application:["define",{sourceInterval:[918,979]},null,[],["seq",{sourceInterval:[918,963]},["app",{sourceInterval:[918,923]},"ident",[]],["opt",{sourceInterval:[924,931]},["app",{sourceInterval:[924,930]},"Params",[]]],["not",{sourceInterval:[932,963]},["alt",{sourceInterval:[934,962]},["seq",{sourceInterval:[934,948]},["opt",{sourceInterval:[934,944]},["app",{sourceInterval:[934,943]},"ruleDescr",[]]],["terminal",{sourceInterval:[945,948]},"="]],["terminal",{sourceInterval:[951,955]},":="],["terminal",{sourceInterval:[958,962]},"+="]]]]],Base_range:["define",{sourceInterval:[986,1041]},null,[],["seq",{sourceInterval:[986,1022]},["app",{sourceInterval:[986,1001]},"oneCharTerminal",[]],["terminal",{sourceInterval:[1002,1006]},".."],["app",{sourceInterval:[1007,1022]},"oneCharTerminal",[]]]],Base_terminal:["define",{sourceInterval:[1048,1106]},null,[],["app",{sourceInterval:[1048,1056]},"terminal",[]]],Base_paren:["define",{sourceInterval:[1113,1168]},null,[],["seq",{sourceInterval:[1113,1124]},["terminal",{sourceInterval:[1113,1116]},"("],["app",{sourceInterval:[1117,1120]},"Alt",[]],["terminal",{sourceInterval:[1121,1124]},")"]]],Base:["define",{sourceInterval:[907,1168]},null,[],["alt",{sourceInterval:[918,1168]},["app",{sourceInterval:[918,963]},"Base_application",[]],["app",{sourceInterval:[986,1022]},"Base_range",[]],["app",{sourceInterval:[1048,1056]},"Base_terminal",[]],["app",{sourceInterval:[1113,1124]},"Base_paren",[]]]],ruleDescr:["define",{sourceInterval:[1172,1231]},"a rule description",[],["seq",{sourceInterval:[1210,1231]},["terminal",{sourceInterval:[1210,1213]},"("],["app",{sourceInterval:[1214,1227]},"ruleDescrText",[]],["terminal",{sourceInterval:[1228,1231]},")"]]],ruleDescrText:["define",{sourceInterval:[1235,1266]},null,[],["star",{sourceInterval:[1255,1266]},["seq",{sourceInterval:[1256,1264]},["not",{sourceInterval:[1256,1260]},["terminal",{sourceInterval:[1257,1260]},")"]],["app",{sourceInterval:[1261,1264]},"any",[]]]]],caseName:["define",{sourceInterval:[1270,1338]},null,[],["seq",{sourceInterval:[1285,1338]},["terminal",{sourceInterval:[1285,1289]},"--"],["star",{sourceInterval:[1290,1304]},["seq",{sourceInterval:[1291,1302]},["not",{sourceInterval:[1291,1296]},["terminal",{sourceInterval:[1292,1296]},` +`]],["app",{sourceInterval:[1297,1302]},"space",[]]]],["app",{sourceInterval:[1305,1309]},"name",[]],["star",{sourceInterval:[1310,1324]},["seq",{sourceInterval:[1311,1322]},["not",{sourceInterval:[1311,1316]},["terminal",{sourceInterval:[1312,1316]},` +`]],["app",{sourceInterval:[1317,1322]},"space",[]]]],["alt",{sourceInterval:[1326,1337]},["terminal",{sourceInterval:[1326,1330]},` +`],["lookahead",{sourceInterval:[1333,1337]},["terminal",{sourceInterval:[1334,1337]},"}"]]]]],name:["define",{sourceInterval:[1342,1382]},"a name",[],["seq",{sourceInterval:[1363,1382]},["app",{sourceInterval:[1363,1372]},"nameFirst",[]],["star",{sourceInterval:[1373,1382]},["app",{sourceInterval:[1373,1381]},"nameRest",[]]]]],nameFirst:["define",{sourceInterval:[1386,1418]},null,[],["alt",{sourceInterval:[1402,1418]},["terminal",{sourceInterval:[1402,1405]},"_"],["app",{sourceInterval:[1412,1418]},"letter",[]]]],nameRest:["define",{sourceInterval:[1422,1452]},null,[],["alt",{sourceInterval:[1437,1452]},["terminal",{sourceInterval:[1437,1440]},"_"],["app",{sourceInterval:[1447,1452]},"alnum",[]]]],ident:["define",{sourceInterval:[1456,1489]},"an identifier",[],["app",{sourceInterval:[1485,1489]},"name",[]]],terminal:["define",{sourceInterval:[1493,1531]},null,[],["seq",{sourceInterval:[1508,1531]},["terminal",{sourceInterval:[1508,1512]},'"'],["star",{sourceInterval:[1513,1526]},["app",{sourceInterval:[1513,1525]},"terminalChar",[]]],["terminal",{sourceInterval:[1527,1531]},'"']]],oneCharTerminal:["define",{sourceInterval:[1535,1579]},null,[],["seq",{sourceInterval:[1557,1579]},["terminal",{sourceInterval:[1557,1561]},'"'],["app",{sourceInterval:[1562,1574]},"terminalChar",[]],["terminal",{sourceInterval:[1575,1579]},'"']]],terminalChar:["define",{sourceInterval:[1583,1660]},null,[],["alt",{sourceInterval:[1602,1660]},["app",{sourceInterval:[1602,1612]},"escapeChar",[]],["seq",{sourceInterval:[1621,1660]},["not",{sourceInterval:[1621,1626]},["terminal",{sourceInterval:[1622,1626]},"\\"]],["not",{sourceInterval:[1627,1632]},["terminal",{sourceInterval:[1628,1632]},'"']],["not",{sourceInterval:[1633,1638]},["terminal",{sourceInterval:[1634,1638]},` +`]],["range",{sourceInterval:[1639,1660]},"\0","\u{10FFFF}"]]]],escapeChar_backslash:["define",{sourceInterval:[1703,1758]},null,[],["terminal",{sourceInterval:[1703,1709]},"\\\\"]],escapeChar_doubleQuote:["define",{sourceInterval:[1765,1822]},null,[],["terminal",{sourceInterval:[1765,1771]},'\\"']],escapeChar_singleQuote:["define",{sourceInterval:[1829,1886]},null,[],["terminal",{sourceInterval:[1829,1835]},"\\'"]],escapeChar_backspace:["define",{sourceInterval:[1893,1948]},null,[],["terminal",{sourceInterval:[1893,1898]},"\\b"]],escapeChar_lineFeed:["define",{sourceInterval:[1955,2009]},null,[],["terminal",{sourceInterval:[1955,1960]},"\\n"]],escapeChar_carriageReturn:["define",{sourceInterval:[2016,2076]},null,[],["terminal",{sourceInterval:[2016,2021]},"\\r"]],escapeChar_tab:["define",{sourceInterval:[2083,2132]},null,[],["terminal",{sourceInterval:[2083,2088]},"\\t"]],escapeChar_unicodeCodePoint:["define",{sourceInterval:[2139,2243]},null,[],["seq",{sourceInterval:[2139,2221]},["terminal",{sourceInterval:[2139,2145]},"\\u{"],["app",{sourceInterval:[2146,2154]},"hexDigit",[]],["opt",{sourceInterval:[2155,2164]},["app",{sourceInterval:[2155,2163]},"hexDigit",[]]],["opt",{sourceInterval:[2165,2174]},["app",{sourceInterval:[2165,2173]},"hexDigit",[]]],["opt",{sourceInterval:[2188,2197]},["app",{sourceInterval:[2188,2196]},"hexDigit",[]]],["opt",{sourceInterval:[2198,2207]},["app",{sourceInterval:[2198,2206]},"hexDigit",[]]],["opt",{sourceInterval:[2208,2217]},["app",{sourceInterval:[2208,2216]},"hexDigit",[]]],["terminal",{sourceInterval:[2218,2221]},"}"]]],escapeChar_unicodeEscape:["define",{sourceInterval:[2250,2309]},null,[],["seq",{sourceInterval:[2250,2291]},["terminal",{sourceInterval:[2250,2255]},"\\u"],["app",{sourceInterval:[2256,2264]},"hexDigit",[]],["app",{sourceInterval:[2265,2273]},"hexDigit",[]],["app",{sourceInterval:[2274,2282]},"hexDigit",[]],["app",{sourceInterval:[2283,2291]},"hexDigit",[]]]],escapeChar_hexEscape:["define",{sourceInterval:[2316,2371]},null,[],["seq",{sourceInterval:[2316,2339]},["terminal",{sourceInterval:[2316,2321]},"\\x"],["app",{sourceInterval:[2322,2330]},"hexDigit",[]],["app",{sourceInterval:[2331,2339]},"hexDigit",[]]]],escapeChar:["define",{sourceInterval:[1664,2371]},"an escape sequence",[],["alt",{sourceInterval:[1703,2371]},["app",{sourceInterval:[1703,1709]},"escapeChar_backslash",[]],["app",{sourceInterval:[1765,1771]},"escapeChar_doubleQuote",[]],["app",{sourceInterval:[1829,1835]},"escapeChar_singleQuote",[]],["app",{sourceInterval:[1893,1898]},"escapeChar_backspace",[]],["app",{sourceInterval:[1955,1960]},"escapeChar_lineFeed",[]],["app",{sourceInterval:[2016,2021]},"escapeChar_carriageReturn",[]],["app",{sourceInterval:[2083,2088]},"escapeChar_tab",[]],["app",{sourceInterval:[2139,2221]},"escapeChar_unicodeCodePoint",[]],["app",{sourceInterval:[2250,2291]},"escapeChar_unicodeEscape",[]],["app",{sourceInterval:[2316,2339]},"escapeChar_hexEscape",[]]]],space:["extend",{sourceInterval:[2375,2394]},null,[],["app",{sourceInterval:[2387,2394]},"comment",[]]],comment_singleLine:["define",{sourceInterval:[2412,2458]},null,[],["seq",{sourceInterval:[2412,2443]},["terminal",{sourceInterval:[2412,2416]},"//"],["star",{sourceInterval:[2417,2429]},["seq",{sourceInterval:[2418,2427]},["not",{sourceInterval:[2418,2423]},["terminal",{sourceInterval:[2419,2423]},` +`]],["app",{sourceInterval:[2424,2427]},"any",[]]]],["lookahead",{sourceInterval:[2430,2443]},["alt",{sourceInterval:[2432,2442]},["terminal",{sourceInterval:[2432,2436]},` +`],["app",{sourceInterval:[2439,2442]},"end",[]]]]]],comment_multiLine:["define",{sourceInterval:[2465,2501]},null,[],["seq",{sourceInterval:[2465,2487]},["terminal",{sourceInterval:[2465,2469]},"/*"],["star",{sourceInterval:[2470,2482]},["seq",{sourceInterval:[2471,2480]},["not",{sourceInterval:[2471,2476]},["terminal",{sourceInterval:[2472,2476]},"*/"]],["app",{sourceInterval:[2477,2480]},"any",[]]]],["terminal",{sourceInterval:[2483,2487]},"*/"]]],comment:["define",{sourceInterval:[2398,2501]},null,[],["alt",{sourceInterval:[2412,2501]},["app",{sourceInterval:[2412,2443]},"comment_singleLine",[]],["app",{sourceInterval:[2465,2487]},"comment_multiLine",[]]]],tokens:["define",{sourceInterval:[2505,2520]},null,[],["star",{sourceInterval:[2514,2520]},["app",{sourceInterval:[2514,2519]},"token",[]]]],token:["define",{sourceInterval:[2524,2600]},null,[],["alt",{sourceInterval:[2532,2600]},["app",{sourceInterval:[2532,2540]},"caseName",[]],["app",{sourceInterval:[2543,2550]},"comment",[]],["app",{sourceInterval:[2553,2558]},"ident",[]],["app",{sourceInterval:[2561,2569]},"operator",[]],["app",{sourceInterval:[2572,2583]},"punctuation",[]],["app",{sourceInterval:[2586,2594]},"terminal",[]],["app",{sourceInterval:[2597,2600]},"any",[]]]],operator:["define",{sourceInterval:[2604,2669]},null,[],["alt",{sourceInterval:[2615,2669]},["terminal",{sourceInterval:[2615,2619]},"<:"],["terminal",{sourceInterval:[2622,2625]},"="],["terminal",{sourceInterval:[2628,2632]},":="],["terminal",{sourceInterval:[2635,2639]},"+="],["terminal",{sourceInterval:[2642,2645]},"*"],["terminal",{sourceInterval:[2648,2651]},"+"],["terminal",{sourceInterval:[2654,2657]},"?"],["terminal",{sourceInterval:[2660,2663]},"~"],["terminal",{sourceInterval:[2666,2669]},"&"]]],punctuation:["define",{sourceInterval:[2673,2709]},null,[],["alt",{sourceInterval:[2687,2709]},["terminal",{sourceInterval:[2687,2690]},"<"],["terminal",{sourceInterval:[2693,2696]},">"],["terminal",{sourceInterval:[2699,2702]},","],["terminal",{sourceInterval:[2705,2709]},"--"]]]}]),ii=Object.create(V.prototype);function xu(i,e){for(let t in i)if(t===e)return!0;return!1}function xi(i,e,t){let n=new tr,a,l,c,v=!1;return(t||Un).createSemantics().addOperation("visit",{Grammars(g){return g.children.map(f=>f.visit())},Grammar(g,f,y,R,_){let O=g.visit();a=n.newGrammar(O),f.child(0)&&f.child(0).visit(),R.children.map(ee=>ee.visit());let K=a.build();if(K.source=this.source.trimmed(),xu(e,O))throw Xd(K);return e[O]=K,K},SuperGrammar(g,f){let y=f.visit();if(y==="null")a.withSuperGrammar(null);else{if(!e||!xu(e,y))throw Qd(y,e,f.source);a.withSuperGrammar(e[y])}},Rule_define(g,f,y,R,_){l=g.visit(),c=f.children.map(ae=>ae.visit())[0]||[],!a.defaultStartRule&&a.ensureSuperGrammar()!==Ve.ProtoBuiltInRules&&a.withDefaultStartRule(l);let O=_.visit(),K=y.children.map(ae=>ae.visit())[0],ee=this.source.trimmed();return a.define(l,c,O,K,ee)},Rule_override(g,f,y,R){l=g.visit(),c=f.children.map(K=>K.visit())[0]||[];let _=this.source.trimmed();a.ensureSuperGrammarRuleForOverriding(l,_),v=!0;let O=R.visit();return v=!1,a.override(l,c,O,null,_)},Rule_extend(g,f,y,R){l=g.visit(),c=f.children.map(K=>K.visit())[0]||[];let _=R.visit(),O=this.source.trimmed();return a.extend(l,c,_,null,O)},RuleBody(g,f){return n.alt(...f.visit()).withSource(this.source)},OverrideRuleBody(g,f){let y=f.visit(),R=y.indexOf(ii);if(R>=0){let _=y.slice(0,R),O=y.slice(R+1);return O.forEach(K=>{if(K===ii)throw cf(K)}),new Ft(a.superGrammar,l,_,O).withSource(this.source)}else return n.alt(...y).withSource(this.source)},Formals(g,f,y){return f.visit()},Params(g,f,y){return f.visit()},Alt(g){return n.alt(...g.visit()).withSource(this.source)},TopLevelTerm_inline(g,f){let y=l+"_"+f.visit(),R=g.visit(),_=this.source.trimmed(),O=!(a.superGrammar&&a.superGrammar.rules[y]);v&&!O?a.override(y,c,R,null,_):a.define(y,c,R,null,_);let K=c.map(ee=>n.app(ee));return n.app(y,K).withSource(R.source)},OverrideTopLevelTerm_superSplice(g){return ii},Seq(g){return n.seq(...g.children.map(f=>f.visit())).withSource(this.source)},Iter_star(g,f){return n.star(g.visit()).withSource(this.source)},Iter_plus(g,f){return n.plus(g.visit()).withSource(this.source)},Iter_opt(g,f){return n.opt(g.visit()).withSource(this.source)},Pred_not(g,f){return n.not(f.visit()).withSource(this.source)},Pred_lookahead(g,f){return n.lookahead(f.visit()).withSource(this.source)},Lex_lex(g,f){return n.lex(f.visit()).withSource(this.source)},Base_application(g,f){let y=f.children.map(R=>R.visit())[0]||[];return n.app(g.visit(),y).withSource(this.source)},Base_range(g,f,y){return n.range(g.visit(),y.visit()).withSource(this.source)},Base_terminal(g){return n.terminal(g.visit()).withSource(this.source)},Base_paren(g,f,y){return f.visit()},ruleDescr(g,f,y){return f.visit()},ruleDescrText(g){return this.sourceString.trim()},caseName(g,f,y,R,_){return y.visit()},name(g,f){return this.sourceString},nameFirst(g){},nameRest(g){},terminal(g,f,y){return f.children.map(R=>R.visit()).join("")},oneCharTerminal(g,f,y){return f.visit()},escapeChar(g){try{return Eu(this.sourceString)}catch(f){throw f instanceof RangeError&&f.message.startsWith("Invalid code point ")?pf(g):f}},NonemptyListOf(g,f,y){return[g.visit()].concat(y.children.map(R=>R.visit()))},EmptyListOf(){return[]},_terminal(){return this.sourceString}})(i).visit()}var Nf=qn(["grammar",{source:`OperationsAndAttributes { + + AttributeSignature = + name + + OperationSignature = + name Formals? + + Formals + = "(" ListOf ")" + + name (a name) + = nameFirst nameRest* + + nameFirst + = "_" + | letter + + nameRest + = "_" + | alnum + +}`},"OperationsAndAttributes",null,"AttributeSignature",{AttributeSignature:["define",{sourceInterval:[29,58]},null,[],["app",{sourceInterval:[54,58]},"name",[]]],OperationSignature:["define",{sourceInterval:[62,100]},null,[],["seq",{sourceInterval:[87,100]},["app",{sourceInterval:[87,91]},"name",[]],["opt",{sourceInterval:[92,100]},["app",{sourceInterval:[92,99]},"Formals",[]]]]],Formals:["define",{sourceInterval:[104,143]},null,[],["seq",{sourceInterval:[118,143]},["terminal",{sourceInterval:[118,121]},"("],["app",{sourceInterval:[122,139]},"ListOf",[["app",{sourceInterval:[129,133]},"name",[]],["terminal",{sourceInterval:[135,138]},","]]],["terminal",{sourceInterval:[140,143]},")"]]],name:["define",{sourceInterval:[147,187]},"a name",[],["seq",{sourceInterval:[168,187]},["app",{sourceInterval:[168,177]},"nameFirst",[]],["star",{sourceInterval:[178,187]},["app",{sourceInterval:[178,186]},"nameRest",[]]]]],nameFirst:["define",{sourceInterval:[191,223]},null,[],["alt",{sourceInterval:[207,223]},["terminal",{sourceInterval:[207,210]},"_"],["app",{sourceInterval:[217,223]},"letter",[]]]],nameRest:["define",{sourceInterval:[227,257]},null,[],["alt",{sourceInterval:[242,257]},["terminal",{sourceInterval:[242,245]},"_"],["app",{sourceInterval:[252,257]},"alnum",[]]]]}]);Tf(Ve.BuiltInRules);Vf(Nf);function Tf(i){let e={empty(){return this.iteration()},nonEmpty(t,n,a){return this.iteration([t].concat(a.children))}};Te.BuiltInSemantics=Te.createSemantics(i,null).addOperation("asIteration",{emptyListOf:e.empty,nonemptyListOf:e.nonEmpty,EmptyListOf:e.empty,NonemptyListOf:e.nonEmpty})}function Vf(i){Te.prototypeGrammarSemantics=i.createSemantics().addOperation("parse",{AttributeSignature(e){return{name:e.parse(),formals:[]}},OperationSignature(e,t){return{name:e.parse(),formals:t.children.map(n=>n.parse())[0]||[]}},Formals(e,t,n){return t.asIteration().children.map(a=>a.parse())},name(e,t){return this.sourceString}}),Te.prototypeGrammar=i}function Lf(i){let e=0,t=[0],n=()=>t[t.length-1],a={},l=/( *).*(?:$|\r?\n|\r)/g,c;for(;(c=l.exec(i))!=null;){let[v,h]=c;if(v.length===0)break;let d=h.length,g=n(),f=e+d;if(d>g)t.push(d),a[f]=1;else if(d1&&(a[e]=1-t.length),a}var qu="an indented block",Uu="a dedent",bu=1114111+1,fi=class extends Xt{constructor(e){super(e.input),this.state=e}_indentationAt(e){return this.state.userData[e]||0}atEnd(){return super.atEnd()&&this._indentationAt(this.pos)===0}next(){if(this._indentationAt(this.pos)!==0){this.examinedLength=Math.max(this.examinedLength,this.pos);return}return super.next()}nextCharCode(){return this._indentationAt(this.pos)!==0?(this.examinedLength=Math.max(this.examinedLength,this.pos),bu):super.nextCharCode()}nextCodePoint(){return this._indentationAt(this.pos)!==0?(this.examinedLength=Math.max(this.examinedLength,this.pos),bu):super.nextCodePoint()}},Cn=class extends V{constructor(e=!0){super(),this.isIndent=e}allowsSkippingPrecedingSpace(){return!0}eval(e){let{inputStream:t}=e,n=e.userData;e.doNotMemoize=!0;let a=t.pos,l=this.isIndent?1:-1;return(n[a]||0)*l>0?(e.userData=Object.create(n),e.userData[a]-=l,e.pushBinding(new yt(0),a),!0):(e.processFailure(a,this),!1)}getArity(){return 1}_assertAllApplicationsAreValid(e,t){}_isNullable(e,t){return!1}assertChoicesHaveUniformArity(e){}assertIteratedExprsAreNotNullable(e){}introduceParams(e){return this}substituteParams(e){return this}toString(){return this.isIndent?"indent":"dedent"}toDisplayString(){return this.toString()}toFailure(e){let t=this.isIndent?qu:Uu;return new Le(this,t,"description")}},kf=new z("indent"),Cf=new z("dedent"),Ff=new Ft(Si,"any",[kf,Cf],[]),Bu=new tr().newGrammar("IndentationSensitive").withSuperGrammar(Si).define("indent",[],new Cn(!0),qu,void 0,!0).define("dedent",[],new Cn(!1),Uu,void 0,!0).extend("any",[],Ff,"any character",void 0).build();Object.assign(Bu,{_matchStateInitializer(i){i.userData=Lf(i.input),i.inputStream=new fi(i)},supportsIncrementalParsing:!1});var qf="17.1.0";Ve.initApplicationParser(Un,xi);var Uf=i=>!!i.constructor&&typeof i.constructor.isBuffer=="function"&&i.constructor.isBuffer(i);function Bf(i,e){let t=Un.match(i,"Grammars");if(t.failed())throw Jd(t);return xi(t,e)}function Yf(i,e){let t=Yu(i,e),n=Object.keys(t);if(n.length===0)throw new Error("Missing grammar definition");if(n.length>1){let l=t[n[1]].source;throw new Error(yi(l.sourceString,l.startIdx)+"Found more than one grammar definition -- use ohm.grammars() instead.")}return t[n[0]]}function Yu(i,e){let t=Object.create(e||{});if(typeof i!="string")if(Uf(i))i=i.toString();else throw new TypeError("Expected string as first argument, got "+Ii(i));return Bf(i,t),t}ot.ExperimentalIndentationSensitive=Bu;ot._buildGrammar=xi;ot.grammar=Yf;ot.grammars=Yu;ot.makeRecipe=qn;ot.ohmGrammar=Un;ot.pexprs=Ef;ot.version=qf});var Hu=E((v2,Gu)=>{"use strict";var{makeRecipe:Gf}=Qe(),Hf=Gf(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Gu.exports=Hf});var nc=E((p3,rc)=>{"use strict";var{makeRecipe:Wf}=Qe(),zf=Wf(["grammar",{source:`BigIntArithmetic {\r + Expression\r + = Bitwise\r +\r + // Potentially bug here AS may need to be Bitwise operator Bitwise\r + Bitwise\r + = Bitwise "<<" AS -- leftShift\r + | Bitwise ">>>" AS -- unsignedRightShift\r + | Bitwise ">>" AS -- rightShift\r + | Bitwise "&" AS -- AND\r + | Bitwise "^" AS -- XOR\r + | Bitwise "|" AS -- OR\r + | AS\r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD remainder E -- remainder\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r +\r + Primitive\r + = hex\r + | binary\r + | bigInteger\r +\r + // Lexical Rules\r + add \r + = "+"\r +\r + subtract \r + = "-"\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r +\r + remainder\r + = "%"\r +\r + exponent\r + = "**"\r +\r + binary\r + = "0b" binaryDigit+\r +\r + binaryDigit\r + = "0" | "1"\r +\r + bigInteger\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BigIntArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[24,53]},null,[],["app",{sourceInterval:[46,53]},"Bitwise",[]]],Bitwise_leftShift:["define",{sourceInterval:[152,180]},null,[],["seq",{sourceInterval:[152,167]},["app",{sourceInterval:[152,159]},"Bitwise",[]],["terminal",{sourceInterval:[160,164]},"<<"],["app",{sourceInterval:[165,167]},"AS",[]]]],Bitwise_unsignedRightShift:["define",{sourceInterval:[192,230]},null,[],["seq",{sourceInterval:[192,208]},["app",{sourceInterval:[192,199]},"Bitwise",[]],["terminal",{sourceInterval:[200,205]},">>>"],["app",{sourceInterval:[206,208]},"AS",[]]]],Bitwise_rightShift:["define",{sourceInterval:[242,271]},null,[],["seq",{sourceInterval:[242,257]},["app",{sourceInterval:[242,249]},"Bitwise",[]],["terminal",{sourceInterval:[250,254]},">>"],["app",{sourceInterval:[255,257]},"AS",[]]]],Bitwise_AND:["define",{sourceInterval:[283,304]},null,[],["seq",{sourceInterval:[283,297]},["app",{sourceInterval:[283,290]},"Bitwise",[]],["terminal",{sourceInterval:[291,294]},"&"],["app",{sourceInterval:[295,297]},"AS",[]]]],Bitwise_XOR:["define",{sourceInterval:[316,337]},null,[],["seq",{sourceInterval:[316,330]},["app",{sourceInterval:[316,323]},"Bitwise",[]],["terminal",{sourceInterval:[324,327]},"^"],["app",{sourceInterval:[328,330]},"AS",[]]]],Bitwise_OR:["define",{sourceInterval:[349,369]},null,[],["seq",{sourceInterval:[349,363]},["app",{sourceInterval:[349,356]},"Bitwise",[]],["terminal",{sourceInterval:[357,360]},"|"],["app",{sourceInterval:[361,363]},"AS",[]]]],Bitwise:["define",{sourceInterval:[133,383]},null,[],["alt",{sourceInterval:[152,383]},["app",{sourceInterval:[152,167]},"Bitwise_leftShift",[]],["app",{sourceInterval:[192,208]},"Bitwise_unsignedRightShift",[]],["app",{sourceInterval:[242,257]},"Bitwise_rightShift",[]],["app",{sourceInterval:[283,297]},"Bitwise_AND",[]],["app",{sourceInterval:[316,330]},"Bitwise_XOR",[]],["app",{sourceInterval:[349,363]},"Bitwise_OR",[]],["app",{sourceInterval:[381,383]},"AS",[]]]],AS_addition:["define",{sourceInterval:[437,459]},null,[],["seq",{sourceInterval:[437,446]},["app",{sourceInterval:[437,439]},"AS",[]],["app",{sourceInterval:[440,443]},"add",[]],["app",{sourceInterval:[444,446]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[471,501]},null,[],["seq",{sourceInterval:[471,485]},["app",{sourceInterval:[471,473]},"AS",[]],["app",{sourceInterval:[474,482]},"subtract",[]],["app",{sourceInterval:[483,485]},"MD",[]]]],AS:["define",{sourceInterval:[423,515]},null,[],["alt",{sourceInterval:[437,515]},["app",{sourceInterval:[437,446]},"AS_addition",[]],["app",{sourceInterval:[471,485]},"AS_subtraction",[]],["app",{sourceInterval:[513,515]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[564,596]},null,[],["seq",{sourceInterval:[564,577]},["app",{sourceInterval:[564,566]},"MD",[]],["app",{sourceInterval:[567,575]},"multiply",[]],["app",{sourceInterval:[576,577]},"E",[]]]],MD_division:["define",{sourceInterval:[608,632]},null,[],["seq",{sourceInterval:[608,619]},["app",{sourceInterval:[608,610]},"MD",[]],["app",{sourceInterval:[611,617]},"divide",[]],["app",{sourceInterval:[618,619]},"E",[]]]],MD_remainder:["define",{sourceInterval:[644,672]},null,[],["seq",{sourceInterval:[644,658]},["app",{sourceInterval:[644,646]},"MD",[]],["app",{sourceInterval:[647,656]},"remainder",[]],["app",{sourceInterval:[657,658]},"E",[]]]],MD:["define",{sourceInterval:[550,685]},null,[],["alt",{sourceInterval:[564,685]},["app",{sourceInterval:[564,577]},"MD_multiplication",[]],["app",{sourceInterval:[608,619]},"MD_division",[]],["app",{sourceInterval:[644,658]},"MD_remainder",[]],["app",{sourceInterval:[684,685]},"E",[]]]],E_exponent:["define",{sourceInterval:[723,748]},null,[],["seq",{sourceInterval:[723,735]},["app",{sourceInterval:[723,724]},"P",[]],["app",{sourceInterval:[725,733]},"exponent",[]],["app",{sourceInterval:[734,735]},"E",[]]]],E:["define",{sourceInterval:[710,761]},null,[],["alt",{sourceInterval:[723,761]},["app",{sourceInterval:[723,735]},"E_exponent",[]],["app",{sourceInterval:[760,761]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[802,836]},null,[],["seq",{sourceInterval:[802,820]},["terminal",{sourceInterval:[802,805]},"("],["app",{sourceInterval:[806,816]},"Expression",[]],["terminal",{sourceInterval:[817,820]},")"]]],P:["define",{sourceInterval:[789,857]},null,[],["alt",{sourceInterval:[802,857]},["app",{sourceInterval:[802,820]},"P_parenthesis",[]],["app",{sourceInterval:[848,857]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[865,929]},null,[],["alt",{sourceInterval:[886,929]},["app",{sourceInterval:[886,889]},"hex",[]],["app",{sourceInterval:[901,907]},"binary",[]],["app",{sourceInterval:[919,929]},"bigInteger",[]]]],add:["define",{sourceInterval:[959,978]},null,[],["terminal",{sourceInterval:[975,978]},"+"]],subtract:["define",{sourceInterval:[986,1010]},null,[],["terminal",{sourceInterval:[1007,1010]},"-"]],multiply:["define",{sourceInterval:[1026,1153]},null,[],["alt",{sourceInterval:[1047,1153]},["terminal",{sourceInterval:[1047,1050]},"*"],["terminal",{sourceInterval:[1062,1067]},"\\*"],["terminal",{sourceInterval:[1106,1116]},"\xD7"],["app",{sourceInterval:[1133,1153]},"caseInsensitive",[["terminal",{sourceInterval:[1149,1152]},"x"]]]]],divide:["define",{sourceInterval:[1169,1212]},null,[],["alt",{sourceInterval:[1187,1212]},["terminal",{sourceInterval:[1187,1190]},"/"],["terminal",{sourceInterval:[1202,1212]},"\xF7"]]],remainder:["define",{sourceInterval:[1225,1249]},null,[],["terminal",{sourceInterval:[1246,1249]},"%"]],exponent:["define",{sourceInterval:[1257,1281]},null,[],["terminal",{sourceInterval:[1277,1281]},"**"]],binary:["define",{sourceInterval:[1289,1324]},null,[],["seq",{sourceInterval:[1307,1324]},["terminal",{sourceInterval:[1307,1311]},"0b"],["plus",{sourceInterval:[1312,1324]},["app",{sourceInterval:[1312,1323]},"binaryDigit",[]]]]],binaryDigit:["define",{sourceInterval:[1332,1364]},null,[],["alt",{sourceInterval:[1355,1364]},["terminal",{sourceInterval:[1355,1358]},"0"],["terminal",{sourceInterval:[1361,1364]},"1"]]],bigInteger:["define",{sourceInterval:[1372,1400]},null,[],["plus",{sourceInterval:[1394,1400]},["app",{sourceInterval:[1394,1399]},"digit",[]]]],hex:["define",{sourceInterval:[1408,1462]},null,[],["alt",{sourceInterval:[1423,1462]},["seq",{sourceInterval:[1423,1437]},["terminal",{sourceInterval:[1423,1427]},"0x"],["plus",{sourceInterval:[1428,1437]},["app",{sourceInterval:[1428,1436]},"hexDigit",[]]]],["seq",{sourceInterval:[1449,1462]},["plus",{sourceInterval:[1449,1458]},["app",{sourceInterval:[1449,1457]},"hexDigit",[]]],["terminal",{sourceInterval:[1459,1462]},"h"]]]]}]);rc.exports=zf});var ic=E((_3,sc)=>{"use strict";var{makeRecipe:jf}=Qe(),$f=jf(["grammar",{source:`Datetime {\r + Expression\r + = Addition\r + | Subtraction\r + | TimeUnitUntilDate\r + | TimeUnitSinceDate\r + | Primitive\r +\r + Addition\r + = Primitive add Timespan\r +\r + Subtraction\r + = Primitive subtract Timespan\r + \r + Primitive\r + = Datetime\r + | Now\r + | Today\r + | Tomorrow\r + | Yesterday\r + | NextDayOfWeek\r + | LastDayOfWeek\r +\r + Timespan\r + = number unitsOfTime\r +\r + Now \r + = now\r +\r + Today \r + = today\r +\r + Tomorrow \r + = tomorrow\r +\r + Yesterday \r + = yesterday\r + \r + // e.g. 1/10/23 or 01.10.2023\r + Datetime \r + = datetimeIso8601\r + | datetimeFormatEuropeanOrUs\r + \r + // e.g. Next Monday\r + NextDayOfWeek\r + = caseInsensitive<"next"> dayOfWeek\r + \r + // e.g. Last Tuesday\r + LastDayOfWeek\r + = caseInsensitive<"last"> dayOfWeek\r + \r + TimeUnitUntilDate\r + = (year | month | week | day) until Datetime\r + \r + TimeUnitSinceDate\r + = (year | month | week | day) since Datetime\r +\r + // Lexical Rules\r + oneDigit\r + = digit\r +\r + twoDigit \r + = digit digit\r + \r + fourDigit\r + = digit digit digit digit\r +\r + time\r + = (twoDigit | oneDigit) ":" (twoDigit | oneDigit) ":" (twoDigit | oneDigit)\r +\r + datetimeIso8601\r + = fourDigit "-" twoDigit "-" twoDigit ("T" | space)? (timeWithMilliseconds | timeWithSeconds)? ("Z" | timeZoneColon | timeZoneHours)?\r +\r + timeWithMilliseconds\r + = twoDigit ":" twoDigit ":" twoDigit "." digit+\r + \r + timeWithSeconds\r + = twoDigit ":" twoDigit ":" twoDigit\r +\r + datetimeFormatEuropeanOrUs\r + = (twoDigit | oneDigit) "/" (twoDigit | oneDigit) "/" (fourDigit | twoDigit) time?\r + | (twoDigit | oneDigit) "-" (twoDigit | oneDigit) "-" (fourDigit | twoDigit) time?\r + | (twoDigit | oneDigit) "." (twoDigit | oneDigit) "." (fourDigit | twoDigit) time?\r + \r + timeZoneColon\r + = "+" digit+ ":" digit+\r + | "-" digit+ ":" digit+\r + \r + timeZoneHours\r + = "+" fourDigit\r +\r + add \r + = "+"\r + | caseInsensitive<"add">\r + | caseInsensitive<"plus">\r +\r + subtract \r + = "-"\r + | caseInsensitive<"take">\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r +\r + now\r + = caseInsensitive<"now">\r +\r + today\r + = caseInsensitive<"today">\r +\r + tomorrow\r + = caseInsensitive<"tomorrow">\r +\r + yesterday\r + = caseInsensitive<"yesterday">\r +\r + dayOfWeek\r + = monday\r + | tuesday\r + | wednesday\r + | thursday\r + | friday\r + | saturday\r + | sunday\r +\r + monday\r + = caseInsensitive<"monday">\r +\r + tuesday\r + = caseInsensitive<"tuesday">\r +\r + wednesday\r + = caseInsensitive<"wednesday">\r +\r + thursday\r + = caseInsensitive<"thursday">\r + \r + friday\r + = caseInsensitive<"friday">\r +\r + saturday\r + = caseInsensitive<"saturday">\r +\r + sunday\r + = caseInsensitive<"sunday">\r +\r + unitsOfTime\r + = year\r + | month\r + | week\r + | day\r + | hour\r + | minute\r + | second\r + | millisecond\r +\r + year\r + = caseInsensitive<"years">\r + | caseInsensitive<"year">\r + | "y"\r +\r + month\r + = caseInsensitive<"months">\r + | caseInsensitive<"month">\r + | "M"\r +\r + week\r + = caseInsensitive<"weeks">\r + | caseInsensitive<"week">\r + | "w"\r +\r + day\r + = caseInsensitive<"days">\r + | caseInsensitive<"day">\r + | "d"\r +\r + hour\r + = caseInsensitive<"hours">\r + | caseInsensitive<"hour">\r + | "h"\r +\r + minute\r + = caseInsensitive<"minutes">\r + | caseInsensitive<"minute">\r + | "m"\r + \r + second\r + = caseInsensitive<"seconds">\r + | caseInsensitive<"second">\r + | "s"\r +\r + millisecond\r + = caseInsensitive<"milliseconds">\r + | caseInsensitive<"millisecond">\r + | "ms"\r + \r + until\r + = "until"\r + | "before"\r + \r + since\r + = "since"\r + | "after"\r +\r + number\r + = digit* "." digit+ -- fract\r + | digit+ -- whole\r + \r + integer\r + = digit+\r +}`},"Datetime",null,"Expression",{Expression:["define",{sourceInterval:[14,126]},null,[],["alt",{sourceInterval:[32,126]},["app",{sourceInterval:[32,40]},"Addition",[]],["app",{sourceInterval:[48,59]},"Subtraction",[]],["app",{sourceInterval:[67,84]},"TimeUnitUntilDate",[]],["app",{sourceInterval:[92,109]},"TimeUnitSinceDate",[]],["app",{sourceInterval:[117,126]},"Primitive",[]]]],Addition:["define",{sourceInterval:[132,170]},null,[],["seq",{sourceInterval:[148,170]},["app",{sourceInterval:[148,157]},"Primitive",[]],["app",{sourceInterval:[158,161]},"add",[]],["app",{sourceInterval:[162,170]},"Timespan",[]]]],Subtraction:["define",{sourceInterval:[176,222]},null,[],["seq",{sourceInterval:[195,222]},["app",{sourceInterval:[195,204]},"Primitive",[]],["app",{sourceInterval:[205,213]},"subtract",[]],["app",{sourceInterval:[214,222]},"Timespan",[]]]],Primitive:["define",{sourceInterval:[230,354]},null,[],["alt",{sourceInterval:[247,354]},["app",{sourceInterval:[247,255]},"Datetime",[]],["app",{sourceInterval:[263,266]},"Now",[]],["app",{sourceInterval:[274,279]},"Today",[]],["app",{sourceInterval:[287,295]},"Tomorrow",[]],["app",{sourceInterval:[303,312]},"Yesterday",[]],["app",{sourceInterval:[320,333]},"NextDayOfWeek",[]],["app",{sourceInterval:[341,354]},"LastDayOfWeek",[]]]],Timespan:["define",{sourceInterval:[360,394]},null,[],["seq",{sourceInterval:[376,394]},["app",{sourceInterval:[376,382]},"number",[]],["app",{sourceInterval:[383,394]},"unitsOfTime",[]]]],Now:["define",{sourceInterval:[400,415]},null,[],["app",{sourceInterval:[412,415]},"now",[]]],Today:["define",{sourceInterval:[421,440]},null,[],["app",{sourceInterval:[435,440]},"today",[]]],Tomorrow:["define",{sourceInterval:[446,471]},null,[],["app",{sourceInterval:[463,471]},"tomorrow",[]]],Yesterday:["define",{sourceInterval:[477,504]},null,[],["app",{sourceInterval:[495,504]},"yesterday",[]]],Datetime:["define",{sourceInterval:[545,610]},null,[],["alt",{sourceInterval:[561,610]},["app",{sourceInterval:[561,576]},"datetimeIso8601",[]],["app",{sourceInterval:[584,610]},"datetimeFormatEuropeanOrUs",[]]]],NextDayOfWeek:["define",{sourceInterval:[641,695]},null,[],["seq",{sourceInterval:[662,695]},["app",{sourceInterval:[662,685]},"caseInsensitive",[["terminal",{sourceInterval:[678,684]},"next"]]],["app",{sourceInterval:[686,695]},"dayOfWeek",[]]]],LastDayOfWeek:["define",{sourceInterval:[727,781]},null,[],["seq",{sourceInterval:[748,781]},["app",{sourceInterval:[748,771]},"caseInsensitive",[["terminal",{sourceInterval:[764,770]},"last"]]],["app",{sourceInterval:[772,781]},"dayOfWeek",[]]]],TimeUnitUntilDate:["define",{sourceInterval:[791,857]},null,[],["seq",{sourceInterval:[815,857]},["alt",{sourceInterval:[816,841]},["app",{sourceInterval:[816,820]},"year",[]],["app",{sourceInterval:[823,828]},"month",[]],["app",{sourceInterval:[831,835]},"week",[]],["app",{sourceInterval:[838,841]},"day",[]]],["app",{sourceInterval:[843,848]},"until",[]],["app",{sourceInterval:[849,857]},"Datetime",[]]]],TimeUnitSinceDate:["define",{sourceInterval:[867,933]},null,[],["seq",{sourceInterval:[891,933]},["alt",{sourceInterval:[892,917]},["app",{sourceInterval:[892,896]},"year",[]],["app",{sourceInterval:[899,904]},"month",[]],["app",{sourceInterval:[907,911]},"week",[]],["app",{sourceInterval:[914,917]},"day",[]]],["app",{sourceInterval:[919,924]},"since",[]],["app",{sourceInterval:[925,933]},"Datetime",[]]]],oneDigit:["define",{sourceInterval:[959,980]},null,[],["app",{sourceInterval:[975,980]},"digit",[]]],twoDigit:["define",{sourceInterval:[986,1014]},null,[],["seq",{sourceInterval:[1003,1014]},["app",{sourceInterval:[1003,1008]},"digit",[]],["app",{sourceInterval:[1009,1014]},"digit",[]]]],fourDigit:["define",{sourceInterval:[1022,1062]},null,[],["seq",{sourceInterval:[1039,1062]},["app",{sourceInterval:[1039,1044]},"digit",[]],["app",{sourceInterval:[1045,1050]},"digit",[]],["app",{sourceInterval:[1051,1056]},"digit",[]],["app",{sourceInterval:[1057,1062]},"digit",[]]]],time:["define",{sourceInterval:[1068,1154]},null,[],["seq",{sourceInterval:[1081,1154]},["alt",{sourceInterval:[1082,1101]},["app",{sourceInterval:[1082,1090]},"twoDigit",[]],["app",{sourceInterval:[1093,1101]},"oneDigit",[]]],["terminal",{sourceInterval:[1103,1106]},":"],["alt",{sourceInterval:[1108,1127]},["app",{sourceInterval:[1108,1116]},"twoDigit",[]],["app",{sourceInterval:[1119,1127]},"oneDigit",[]]],["terminal",{sourceInterval:[1129,1132]},":"],["alt",{sourceInterval:[1134,1153]},["app",{sourceInterval:[1134,1142]},"twoDigit",[]],["app",{sourceInterval:[1145,1153]},"oneDigit",[]]]]],datetimeIso8601:["define",{sourceInterval:[1160,1315]},null,[],["seq",{sourceInterval:[1183,1315]},["app",{sourceInterval:[1183,1192]},"fourDigit",[]],["terminal",{sourceInterval:[1193,1196]},"-"],["app",{sourceInterval:[1197,1205]},"twoDigit",[]],["terminal",{sourceInterval:[1206,1209]},"-"],["app",{sourceInterval:[1210,1218]},"twoDigit",[]],["opt",{sourceInterval:[1219,1233]},["alt",{sourceInterval:[1220,1231]},["terminal",{sourceInterval:[1220,1223]},"T"],["app",{sourceInterval:[1226,1231]},"space",[]]]],["opt",{sourceInterval:[1234,1275]},["alt",{sourceInterval:[1235,1273]},["app",{sourceInterval:[1235,1255]},"timeWithMilliseconds",[]],["app",{sourceInterval:[1258,1273]},"timeWithSeconds",[]]]],["opt",{sourceInterval:[1277,1315]},["alt",{sourceInterval:[1278,1313]},["terminal",{sourceInterval:[1278,1281]},"Z"],["app",{sourceInterval:[1284,1297]},"timeZoneColon",[]],["app",{sourceInterval:[1300,1313]},"timeZoneHours",[]]]]]],timeWithMilliseconds:["define",{sourceInterval:[1320,1394]},null,[],["seq",{sourceInterval:[1349,1394]},["app",{sourceInterval:[1349,1357]},"twoDigit",[]],["terminal",{sourceInterval:[1358,1361]},":"],["app",{sourceInterval:[1362,1370]},"twoDigit",[]],["terminal",{sourceInterval:[1371,1374]},":"],["app",{sourceInterval:[1375,1383]},"twoDigit",[]],["terminal",{sourceInterval:[1384,1387]},"."],["plus",{sourceInterval:[1388,1394]},["app",{sourceInterval:[1388,1393]},"digit",[]]]]],timeWithSeconds:["define",{sourceInterval:[1404,1461]},null,[],["seq",{sourceInterval:[1427,1461]},["app",{sourceInterval:[1427,1435]},"twoDigit",[]],["terminal",{sourceInterval:[1436,1439]},":"],["app",{sourceInterval:[1440,1448]},"twoDigit",[]],["terminal",{sourceInterval:[1449,1452]},":"],["app",{sourceInterval:[1453,1461]},"twoDigit",[]]]],datetimeFormatEuropeanOrUs:["define",{sourceInterval:[1467,1757]},null,[],["alt",{sourceInterval:[1501,1757]},["seq",{sourceInterval:[1501,1581]},["alt",{sourceInterval:[1502,1521]},["app",{sourceInterval:[1502,1510]},"twoDigit",[]],["app",{sourceInterval:[1513,1521]},"oneDigit",[]]],["terminal",{sourceInterval:[1523,1526]},"/"],["alt",{sourceInterval:[1528,1547]},["app",{sourceInterval:[1528,1536]},"twoDigit",[]],["app",{sourceInterval:[1539,1547]},"oneDigit",[]]],["terminal",{sourceInterval:[1549,1552]},"/"],["alt",{sourceInterval:[1554,1574]},["app",{sourceInterval:[1554,1563]},"fourDigit",[]],["app",{sourceInterval:[1566,1574]},"twoDigit",[]]],["opt",{sourceInterval:[1576,1581]},["app",{sourceInterval:[1576,1580]},"time",[]]]],["seq",{sourceInterval:[1589,1669]},["alt",{sourceInterval:[1590,1609]},["app",{sourceInterval:[1590,1598]},"twoDigit",[]],["app",{sourceInterval:[1601,1609]},"oneDigit",[]]],["terminal",{sourceInterval:[1611,1614]},"-"],["alt",{sourceInterval:[1616,1635]},["app",{sourceInterval:[1616,1624]},"twoDigit",[]],["app",{sourceInterval:[1627,1635]},"oneDigit",[]]],["terminal",{sourceInterval:[1637,1640]},"-"],["alt",{sourceInterval:[1642,1662]},["app",{sourceInterval:[1642,1651]},"fourDigit",[]],["app",{sourceInterval:[1654,1662]},"twoDigit",[]]],["opt",{sourceInterval:[1664,1669]},["app",{sourceInterval:[1664,1668]},"time",[]]]],["seq",{sourceInterval:[1677,1757]},["alt",{sourceInterval:[1678,1697]},["app",{sourceInterval:[1678,1686]},"twoDigit",[]],["app",{sourceInterval:[1689,1697]},"oneDigit",[]]],["terminal",{sourceInterval:[1699,1702]},"."],["alt",{sourceInterval:[1704,1723]},["app",{sourceInterval:[1704,1712]},"twoDigit",[]],["app",{sourceInterval:[1715,1723]},"oneDigit",[]]],["terminal",{sourceInterval:[1725,1728]},"."],["alt",{sourceInterval:[1730,1750]},["app",{sourceInterval:[1730,1739]},"fourDigit",[]],["app",{sourceInterval:[1742,1750]},"twoDigit",[]]],["opt",{sourceInterval:[1752,1757]},["app",{sourceInterval:[1752,1756]},"time",[]]]]]],timeZoneColon:["define",{sourceInterval:[1767,1836]},null,[],["alt",{sourceInterval:[1787,1836]},["seq",{sourceInterval:[1787,1808]},["terminal",{sourceInterval:[1787,1790]},"+"],["plus",{sourceInterval:[1791,1797]},["app",{sourceInterval:[1791,1796]},"digit",[]]],["terminal",{sourceInterval:[1798,1801]},":"],["plus",{sourceInterval:[1802,1808]},["app",{sourceInterval:[1802,1807]},"digit",[]]]],["seq",{sourceInterval:[1815,1836]},["terminal",{sourceInterval:[1815,1818]},"-"],["plus",{sourceInterval:[1819,1825]},["app",{sourceInterval:[1819,1824]},"digit",[]]],["terminal",{sourceInterval:[1826,1829]},":"],["plus",{sourceInterval:[1830,1836]},["app",{sourceInterval:[1830,1835]},"digit",[]]]]]],timeZoneHours:["define",{sourceInterval:[1847,1880]},null,[],["seq",{sourceInterval:[1867,1880]},["terminal",{sourceInterval:[1867,1870]},"+"],["app",{sourceInterval:[1871,1880]},"fourDigit",[]]]],add:["define",{sourceInterval:[1886,1960]},null,[],["alt",{sourceInterval:[1897,1960]},["terminal",{sourceInterval:[1897,1900]},"+"],["app",{sourceInterval:[1907,1929]},"caseInsensitive",[["terminal",{sourceInterval:[1923,1928]},"add"]]],["app",{sourceInterval:[1937,1960]},"caseInsensitive",[["terminal",{sourceInterval:[1953,1959]},"plus"]]]]],subtract:["define",{sourceInterval:[1966,2084]},null,[],["alt",{sourceInterval:[1983,2084]},["terminal",{sourceInterval:[1983,1986]},"-"],["app",{sourceInterval:[1994,2017]},"caseInsensitive",[["terminal",{sourceInterval:[2010,2016]},"take"]]],["app",{sourceInterval:[2025,2049]},"caseInsensitive",[["terminal",{sourceInterval:[2041,2048]},"minus"]]],["app",{sourceInterval:[2057,2084]},"caseInsensitive",[["terminal",{sourceInterval:[2073,2083]},"subtract"]]]]],now:["define",{sourceInterval:[2090,2123]},null,[],["app",{sourceInterval:[2101,2123]},"caseInsensitive",[["terminal",{sourceInterval:[2117,2122]},"now"]]]],today:["define",{sourceInterval:[2129,2166]},null,[],["app",{sourceInterval:[2142,2166]},"caseInsensitive",[["terminal",{sourceInterval:[2158,2165]},"today"]]]],tomorrow:["define",{sourceInterval:[2172,2215]},null,[],["app",{sourceInterval:[2188,2215]},"caseInsensitive",[["terminal",{sourceInterval:[2204,2214]},"tomorrow"]]]],yesterday:["define",{sourceInterval:[2221,2266]},null,[],["app",{sourceInterval:[2238,2266]},"caseInsensitive",[["terminal",{sourceInterval:[2254,2265]},"yesterday"]]]],dayOfWeek:["define",{sourceInterval:[2272,2387]},null,[],["alt",{sourceInterval:[2289,2387]},["app",{sourceInterval:[2289,2295]},"monday",[]],["app",{sourceInterval:[2303,2310]},"tuesday",[]],["app",{sourceInterval:[2318,2327]},"wednesday",[]],["app",{sourceInterval:[2335,2343]},"thursday",[]],["app",{sourceInterval:[2351,2357]},"friday",[]],["app",{sourceInterval:[2365,2373]},"saturday",[]],["app",{sourceInterval:[2381,2387]},"sunday",[]]]],monday:["define",{sourceInterval:[2393,2432]},null,[],["app",{sourceInterval:[2407,2432]},"caseInsensitive",[["terminal",{sourceInterval:[2423,2431]},"monday"]]]],tuesday:["define",{sourceInterval:[2438,2479]},null,[],["app",{sourceInterval:[2453,2479]},"caseInsensitive",[["terminal",{sourceInterval:[2469,2478]},"tuesday"]]]],wednesday:["define",{sourceInterval:[2485,2530]},null,[],["app",{sourceInterval:[2502,2530]},"caseInsensitive",[["terminal",{sourceInterval:[2518,2529]},"wednesday"]]]],thursday:["define",{sourceInterval:[2536,2579]},null,[],["app",{sourceInterval:[2552,2579]},"caseInsensitive",[["terminal",{sourceInterval:[2568,2578]},"thursday"]]]],friday:["define",{sourceInterval:[2587,2626]},null,[],["app",{sourceInterval:[2601,2626]},"caseInsensitive",[["terminal",{sourceInterval:[2617,2625]},"friday"]]]],saturday:["define",{sourceInterval:[2632,2675]},null,[],["app",{sourceInterval:[2648,2675]},"caseInsensitive",[["terminal",{sourceInterval:[2664,2674]},"saturday"]]]],sunday:["define",{sourceInterval:[2681,2720]},null,[],["app",{sourceInterval:[2695,2720]},"caseInsensitive",[["terminal",{sourceInterval:[2711,2719]},"sunday"]]]],unitsOfTime:["define",{sourceInterval:[2726,2844]},null,[],["alt",{sourceInterval:[2745,2844]},["app",{sourceInterval:[2745,2749]},"year",[]],["app",{sourceInterval:[2757,2762]},"month",[]],["app",{sourceInterval:[2770,2774]},"week",[]],["app",{sourceInterval:[2782,2785]},"day",[]],["app",{sourceInterval:[2793,2797]},"hour",[]],["app",{sourceInterval:[2805,2811]},"minute",[]],["app",{sourceInterval:[2819,2825]},"second",[]],["app",{sourceInterval:[2833,2844]},"millisecond",[]]]],year:["define",{sourceInterval:[2850,2928]},null,[],["alt",{sourceInterval:[2862,2928]},["app",{sourceInterval:[2862,2886]},"caseInsensitive",[["terminal",{sourceInterval:[2878,2885]},"years"]]],["app",{sourceInterval:[2894,2917]},"caseInsensitive",[["terminal",{sourceInterval:[2910,2916]},"year"]]],["terminal",{sourceInterval:[2925,2928]},"y"]]],month:["define",{sourceInterval:[2934,3015]},null,[],["alt",{sourceInterval:[2947,3015]},["app",{sourceInterval:[2947,2972]},"caseInsensitive",[["terminal",{sourceInterval:[2963,2971]},"months"]]],["app",{sourceInterval:[2980,3004]},"caseInsensitive",[["terminal",{sourceInterval:[2996,3003]},"month"]]],["terminal",{sourceInterval:[3012,3015]},"M"]]],week:["define",{sourceInterval:[3021,3099]},null,[],["alt",{sourceInterval:[3033,3099]},["app",{sourceInterval:[3033,3057]},"caseInsensitive",[["terminal",{sourceInterval:[3049,3056]},"weeks"]]],["app",{sourceInterval:[3065,3088]},"caseInsensitive",[["terminal",{sourceInterval:[3081,3087]},"week"]]],["terminal",{sourceInterval:[3096,3099]},"w"]]],day:["define",{sourceInterval:[3105,3180]},null,[],["alt",{sourceInterval:[3116,3180]},["app",{sourceInterval:[3116,3139]},"caseInsensitive",[["terminal",{sourceInterval:[3132,3138]},"days"]]],["app",{sourceInterval:[3147,3169]},"caseInsensitive",[["terminal",{sourceInterval:[3163,3168]},"day"]]],["terminal",{sourceInterval:[3177,3180]},"d"]]],hour:["define",{sourceInterval:[3186,3264]},null,[],["alt",{sourceInterval:[3198,3264]},["app",{sourceInterval:[3198,3222]},"caseInsensitive",[["terminal",{sourceInterval:[3214,3221]},"hours"]]],["app",{sourceInterval:[3230,3253]},"caseInsensitive",[["terminal",{sourceInterval:[3246,3252]},"hour"]]],["terminal",{sourceInterval:[3261,3264]},"h"]]],minute:["define",{sourceInterval:[3270,3354]},null,[],["alt",{sourceInterval:[3284,3354]},["app",{sourceInterval:[3284,3310]},"caseInsensitive",[["terminal",{sourceInterval:[3300,3309]},"minutes"]]],["app",{sourceInterval:[3318,3343]},"caseInsensitive",[["terminal",{sourceInterval:[3334,3342]},"minute"]]],["terminal",{sourceInterval:[3351,3354]},"m"]]],second:["define",{sourceInterval:[3364,3448]},null,[],["alt",{sourceInterval:[3378,3448]},["app",{sourceInterval:[3378,3404]},"caseInsensitive",[["terminal",{sourceInterval:[3394,3403]},"seconds"]]],["app",{sourceInterval:[3412,3437]},"caseInsensitive",[["terminal",{sourceInterval:[3428,3436]},"second"]]],["terminal",{sourceInterval:[3445,3448]},"s"]]],millisecond:["define",{sourceInterval:[3454,3554]},null,[],["alt",{sourceInterval:[3473,3554]},["app",{sourceInterval:[3473,3504]},"caseInsensitive",[["terminal",{sourceInterval:[3489,3503]},"milliseconds"]]],["app",{sourceInterval:[3512,3542]},"caseInsensitive",[["terminal",{sourceInterval:[3528,3541]},"millisecond"]]],["terminal",{sourceInterval:[3550,3554]},"ms"]]],until:["define",{sourceInterval:[3564,3599]},null,[],["alt",{sourceInterval:[3576,3599]},["terminal",{sourceInterval:[3576,3583]},"until"],["terminal",{sourceInterval:[3591,3599]},"before"]]],since:["define",{sourceInterval:[3609,3643]},null,[],["alt",{sourceInterval:[3621,3643]},["terminal",{sourceInterval:[3621,3628]},"since"],["terminal",{sourceInterval:[3636,3643]},"after"]]],number_fract:["define",{sourceInterval:[3663,3690]},null,[],["seq",{sourceInterval:[3663,3680]},["star",{sourceInterval:[3663,3669]},["app",{sourceInterval:[3663,3668]},"digit",[]]],["terminal",{sourceInterval:[3670,3673]},"."],["plus",{sourceInterval:[3674,3680]},["app",{sourceInterval:[3674,3679]},"digit",[]]]]],number_whole:["define",{sourceInterval:[3698,3725]},null,[],["plus",{sourceInterval:[3698,3704]},["app",{sourceInterval:[3698,3703]},"digit",[]]]],number:["define",{sourceInterval:[3649,3725]},null,[],["alt",{sourceInterval:[3663,3725]},["app",{sourceInterval:[3663,3680]},"number_fract",[]],["app",{sourceInterval:[3698,3704]},"number_whole",[]]]],integer:["define",{sourceInterval:[3735,3755]},null,[],["plus",{sourceInterval:[3749,3755]},["app",{sourceInterval:[3749,3754]},"digit",[]]]]}]);sc.exports=$f});var uc=E((O3,lc)=>{"use strict";var{makeRecipe:Kf}=Qe(),Zf=Kf(["grammar",{source:`Dice {\r + Expression = Roll\r +\r + /*\r + Patterns Examples:\r + roll(0, 7)\r + roll between 1 and 4\r + roll from 2 to 6\r + roll 4-8\r + */\r + Roll\r + = caseInsensitive<"roll"> rollOpen? Primitive rollSeperator? Primitive rollEnd?\r +\r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | number\r +\r + rollOpen \r + = "("\r + | caseInsensitive<"between">\r + | caseInsensitive<"from">\r +\r + rollSeperator\r + = ","\r + | "-"\r + | caseInsensitive<"and">\r + | caseInsensitive<"to">\r +\r + rollEnd\r + = ")"\r +\r + number\r + = digit* "." digit+ -- fract\r + | digit+ -- whole\r +}`},"Dice",null,"Expression",{Expression:["define",{sourceInterval:[10,27]},null,[],["app",{sourceInterval:[23,27]},"Roll",[]]],Roll:["define",{sourceInterval:[147,236]},null,[],["seq",{sourceInterval:[159,236]},["app",{sourceInterval:[159,182]},"caseInsensitive",[["terminal",{sourceInterval:[175,181]},"roll"]]],["opt",{sourceInterval:[183,192]},["app",{sourceInterval:[183,191]},"rollOpen",[]]],["app",{sourceInterval:[193,202]},"Primitive",[]],["opt",{sourceInterval:[203,217]},["app",{sourceInterval:[203,216]},"rollSeperator",[]]],["app",{sourceInterval:[218,227]},"Primitive",[]],["opt",{sourceInterval:[228,236]},["app",{sourceInterval:[228,235]},"rollEnd",[]]]]],Primitive_positive:["define",{sourceInterval:[259,284]},null,[],["seq",{sourceInterval:[259,272]},["terminal",{sourceInterval:[259,262]},"+"],["app",{sourceInterval:[263,272]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[292,317]},null,[],["seq",{sourceInterval:[292,305]},["terminal",{sourceInterval:[292,295]},"-"],["app",{sourceInterval:[296,305]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[242,331]},null,[],["alt",{sourceInterval:[259,331]},["app",{sourceInterval:[259,272]},"Primitive_positive",[]],["app",{sourceInterval:[292,305]},"Primitive_negative",[]],["app",{sourceInterval:[325,331]},"number",[]]]],rollOpen:["define",{sourceInterval:[337,422]},null,[],["alt",{sourceInterval:[354,422]},["terminal",{sourceInterval:[354,357]},"("],["app",{sourceInterval:[365,391]},"caseInsensitive",[["terminal",{sourceInterval:[381,390]},"between"]]],["app",{sourceInterval:[399,422]},"caseInsensitive",[["terminal",{sourceInterval:[415,421]},"from"]]]]],rollSeperator:["define",{sourceInterval:[428,522]},null,[],["alt",{sourceInterval:[449,522]},["terminal",{sourceInterval:[449,452]},","],["terminal",{sourceInterval:[460,463]},"-"],["app",{sourceInterval:[471,493]},"caseInsensitive",[["terminal",{sourceInterval:[487,492]},"and"]]],["app",{sourceInterval:[501,522]},"caseInsensitive",[["terminal",{sourceInterval:[517,521]},"to"]]]]],rollEnd:["define",{sourceInterval:[528,546]},null,[],["terminal",{sourceInterval:[543,546]},")"]],number_fract:["define",{sourceInterval:[566,593]},null,[],["seq",{sourceInterval:[566,583]},["star",{sourceInterval:[566,572]},["app",{sourceInterval:[566,571]},"digit",[]]],["terminal",{sourceInterval:[573,576]},"."],["plus",{sourceInterval:[577,583]},["app",{sourceInterval:[577,582]},"digit",[]]]]],number_whole:["define",{sourceInterval:[601,628]},null,[],["plus",{sourceInterval:[601,607]},["app",{sourceInterval:[601,606]},"digit",[]]]],number:["define",{sourceInterval:[552,628]},null,[],["alt",{sourceInterval:[566,628]},["app",{sourceInterval:[566,583]},"number_fract",[]],["app",{sourceInterval:[601,607]},"number_whole",[]]]]}]);lc.exports=Zf});var mc=E((U3,pc)=>{"use strict";var{makeRecipe:cc}=Qe(),Kn={};Kn.BasicArithmetic=cc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Kn.FunctionArithmetic=cc(["grammar",{source:`FunctionArithmetic <: BasicArithmetic {\r + P\r + := "(" Expression ")" -- parenthesis\r + | Function\r + | Primitive\r +\r + Function\r + = DegreesToRadians\r + | RadiansToDegrees\r + | LogBase\r + | JavascriptMathObjectFunction\r +\r + LogBase \r + = caseInsensitive<"logb"> "(" number "," number ")"\r + | caseInsensitive<"logBase"> "(" number "," number ")"\r +\r + DegreesToRadians \r + = caseInsensitive<"degToRad"> "(" number ")"\r + | caseInsensitive<"degreesToRadians"> "(" number ")"\r + | caseInsensitive<"radians"> "(" number ")"\r + | caseInsensitive<"toRadians"> "(" number ")"\r +\r + RadiansToDegrees \r + = caseInsensitive<"radToDeg"> "(" number ")"\r + | caseInsensitive<"radiansToDegrees"> "(" number ")"\r + | caseInsensitive<"degrees"> "(" number ")"\r + | caseInsensitive<"toDegrees"> "(" number ")"\r +\r + // Pass-through for Math.* functions from JS\r + JavascriptMathObjectFunction = mathJsName "(" ListOf ")"\r +\r + mathJsName \r + = caseInsensitive<"sinh">\r + | caseInsensitive<"sin">\r + | caseInsensitive<"abs">\r + | caseInsensitive<"acosh">\r + | caseInsensitive<"acos">\r + | caseInsensitive<"asinh">\r + | caseInsensitive<"asin">\r + | caseInsensitive<"atan2">\r + | caseInsensitive<"atanh">\r + | caseInsensitive<"atan">\r + | caseInsensitive<"cbrt">\r + | caseInsensitive<"ceil">\r + | caseInsensitive<"clz32">\r + | caseInsensitive<"cosh">\r + | caseInsensitive<"cos">\r + | caseInsensitive<"expm1">\r + | caseInsensitive<"exp">\r + | caseInsensitive<"floor">\r + | caseInsensitive<"fround">\r + | caseInsensitive<"hypot">\r + | caseInsensitive<"imul">\r + | caseInsensitive<"log10">\r + | caseInsensitive<"log1p">\r + | caseInsensitive<"log2">\r + | caseInsensitive<"log">\r + | caseInsensitive<"max">\r + | caseInsensitive<"min">\r + | caseInsensitive<"pow">\r + | caseInsensitive<"random">\r + | caseInsensitive<"round">\r + | caseInsensitive<"sign">\r + | caseInsensitive<"sqrt">\r + | caseInsensitive<"tanh">\r + | caseInsensitive<"tan">\r + | caseInsensitive<"trunc">\r +}`},"FunctionArithmetic",Kn.BasicArithmetic,"Expression",{P_parenthesis:["override",{sourceInterval:[53,87]},null,[],["seq",{sourceInterval:[53,71]},["terminal",{sourceInterval:[53,56]},"("],["app",{sourceInterval:[57,67]},"Expression",[]],["terminal",{sourceInterval:[68,71]},")"]]],P:["override",{sourceInterval:[43,120]},null,[],["alt",{sourceInterval:[53,120]},["app",{sourceInterval:[53,71]},"P_parenthesis",[]],["app",{sourceInterval:[95,103]},"Function",[]],["app",{sourceInterval:[111,120]},"Primitive",[]]]],Function:["define",{sourceInterval:[126,233]},null,[],["alt",{sourceInterval:[142,233]},["app",{sourceInterval:[142,158]},"DegreesToRadians",[]],["app",{sourceInterval:[166,182]},"RadiansToDegrees",[]],["app",{sourceInterval:[190,197]},"LogBase",[]],["app",{sourceInterval:[205,233]},"JavascriptMathObjectFunction",[]]]],LogBase:["define",{sourceInterval:[239,364]},null,[],["alt",{sourceInterval:[255,364]},["seq",{sourceInterval:[255,304]},["app",{sourceInterval:[255,278]},"caseInsensitive",[["terminal",{sourceInterval:[271,277]},"logb"]]],["terminal",{sourceInterval:[279,282]},"("],["app",{sourceInterval:[283,289]},"number",[]],["terminal",{sourceInterval:[290,293]},","],["app",{sourceInterval:[294,300]},"number",[]],["terminal",{sourceInterval:[301,304]},")"]],["seq",{sourceInterval:[312,364]},["app",{sourceInterval:[312,338]},"caseInsensitive",[["terminal",{sourceInterval:[328,337]},"logBase"]]],["terminal",{sourceInterval:[339,342]},"("],["app",{sourceInterval:[343,349]},"number",[]],["terminal",{sourceInterval:[350,353]},","],["app",{sourceInterval:[354,360]},"number",[]],["terminal",{sourceInterval:[361,364]},")"]]]],DegreesToRadians:["define",{sourceInterval:[370,595]},null,[],["alt",{sourceInterval:[395,595]},["seq",{sourceInterval:[395,437]},["app",{sourceInterval:[395,422]},"caseInsensitive",[["terminal",{sourceInterval:[411,421]},"degToRad"]]],["terminal",{sourceInterval:[423,426]},"("],["app",{sourceInterval:[427,433]},"number",[]],["terminal",{sourceInterval:[434,437]},")"]],["seq",{sourceInterval:[445,495]},["app",{sourceInterval:[445,480]},"caseInsensitive",[["terminal",{sourceInterval:[461,479]},"degreesToRadians"]]],["terminal",{sourceInterval:[481,484]},"("],["app",{sourceInterval:[485,491]},"number",[]],["terminal",{sourceInterval:[492,495]},")"]],["seq",{sourceInterval:[503,544]},["app",{sourceInterval:[503,529]},"caseInsensitive",[["terminal",{sourceInterval:[519,528]},"radians"]]],["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,540]},"number",[]],["terminal",{sourceInterval:[541,544]},")"]],["seq",{sourceInterval:[552,595]},["app",{sourceInterval:[552,580]},"caseInsensitive",[["terminal",{sourceInterval:[568,579]},"toRadians"]]],["terminal",{sourceInterval:[581,584]},"("],["app",{sourceInterval:[585,591]},"number",[]],["terminal",{sourceInterval:[592,595]},")"]]]],RadiansToDegrees:["define",{sourceInterval:[601,826]},null,[],["alt",{sourceInterval:[626,826]},["seq",{sourceInterval:[626,668]},["app",{sourceInterval:[626,653]},"caseInsensitive",[["terminal",{sourceInterval:[642,652]},"radToDeg"]]],["terminal",{sourceInterval:[654,657]},"("],["app",{sourceInterval:[658,664]},"number",[]],["terminal",{sourceInterval:[665,668]},")"]],["seq",{sourceInterval:[676,726]},["app",{sourceInterval:[676,711]},"caseInsensitive",[["terminal",{sourceInterval:[692,710]},"radiansToDegrees"]]],["terminal",{sourceInterval:[712,715]},"("],["app",{sourceInterval:[716,722]},"number",[]],["terminal",{sourceInterval:[723,726]},")"]],["seq",{sourceInterval:[734,775]},["app",{sourceInterval:[734,760]},"caseInsensitive",[["terminal",{sourceInterval:[750,759]},"degrees"]]],["terminal",{sourceInterval:[761,764]},"("],["app",{sourceInterval:[765,771]},"number",[]],["terminal",{sourceInterval:[772,775]},")"]],["seq",{sourceInterval:[783,826]},["app",{sourceInterval:[783,811]},"caseInsensitive",[["terminal",{sourceInterval:[799,810]},"toDegrees"]]],["terminal",{sourceInterval:[812,815]},"("],["app",{sourceInterval:[816,822]},"number",[]],["terminal",{sourceInterval:[823,826]},")"]]]],JavascriptMathObjectFunction:["define",{sourceInterval:[880,953]},null,[],["seq",{sourceInterval:[911,953]},["app",{sourceInterval:[911,921]},"mathJsName",[]],["terminal",{sourceInterval:[922,925]},"("],["app",{sourceInterval:[926,949]},"ListOf",[["app",{sourceInterval:[933,943]},"Expression",[]],["terminal",{sourceInterval:[945,948]},","]]],["terminal",{sourceInterval:[950,953]},")"]]],mathJsName:["define",{sourceInterval:[959,2062]},null,[],["alt",{sourceInterval:[978,2062]},["app",{sourceInterval:[978,1001]},"caseInsensitive",[["terminal",{sourceInterval:[994,1e3]},"sinh"]]],["app",{sourceInterval:[1009,1031]},"caseInsensitive",[["terminal",{sourceInterval:[1025,1030]},"sin"]]],["app",{sourceInterval:[1039,1061]},"caseInsensitive",[["terminal",{sourceInterval:[1055,1060]},"abs"]]],["app",{sourceInterval:[1069,1093]},"caseInsensitive",[["terminal",{sourceInterval:[1085,1092]},"acosh"]]],["app",{sourceInterval:[1101,1124]},"caseInsensitive",[["terminal",{sourceInterval:[1117,1123]},"acos"]]],["app",{sourceInterval:[1132,1156]},"caseInsensitive",[["terminal",{sourceInterval:[1148,1155]},"asinh"]]],["app",{sourceInterval:[1164,1187]},"caseInsensitive",[["terminal",{sourceInterval:[1180,1186]},"asin"]]],["app",{sourceInterval:[1195,1219]},"caseInsensitive",[["terminal",{sourceInterval:[1211,1218]},"atan2"]]],["app",{sourceInterval:[1227,1251]},"caseInsensitive",[["terminal",{sourceInterval:[1243,1250]},"atanh"]]],["app",{sourceInterval:[1259,1282]},"caseInsensitive",[["terminal",{sourceInterval:[1275,1281]},"atan"]]],["app",{sourceInterval:[1290,1313]},"caseInsensitive",[["terminal",{sourceInterval:[1306,1312]},"cbrt"]]],["app",{sourceInterval:[1321,1344]},"caseInsensitive",[["terminal",{sourceInterval:[1337,1343]},"ceil"]]],["app",{sourceInterval:[1352,1376]},"caseInsensitive",[["terminal",{sourceInterval:[1368,1375]},"clz32"]]],["app",{sourceInterval:[1384,1407]},"caseInsensitive",[["terminal",{sourceInterval:[1400,1406]},"cosh"]]],["app",{sourceInterval:[1415,1437]},"caseInsensitive",[["terminal",{sourceInterval:[1431,1436]},"cos"]]],["app",{sourceInterval:[1445,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1461,1468]},"expm1"]]],["app",{sourceInterval:[1477,1499]},"caseInsensitive",[["terminal",{sourceInterval:[1493,1498]},"exp"]]],["app",{sourceInterval:[1507,1531]},"caseInsensitive",[["terminal",{sourceInterval:[1523,1530]},"floor"]]],["app",{sourceInterval:[1539,1564]},"caseInsensitive",[["terminal",{sourceInterval:[1555,1563]},"fround"]]],["app",{sourceInterval:[1572,1596]},"caseInsensitive",[["terminal",{sourceInterval:[1588,1595]},"hypot"]]],["app",{sourceInterval:[1604,1627]},"caseInsensitive",[["terminal",{sourceInterval:[1620,1626]},"imul"]]],["app",{sourceInterval:[1635,1659]},"caseInsensitive",[["terminal",{sourceInterval:[1651,1658]},"log10"]]],["app",{sourceInterval:[1667,1691]},"caseInsensitive",[["terminal",{sourceInterval:[1683,1690]},"log1p"]]],["app",{sourceInterval:[1699,1722]},"caseInsensitive",[["terminal",{sourceInterval:[1715,1721]},"log2"]]],["app",{sourceInterval:[1730,1752]},"caseInsensitive",[["terminal",{sourceInterval:[1746,1751]},"log"]]],["app",{sourceInterval:[1760,1782]},"caseInsensitive",[["terminal",{sourceInterval:[1776,1781]},"max"]]],["app",{sourceInterval:[1790,1812]},"caseInsensitive",[["terminal",{sourceInterval:[1806,1811]},"min"]]],["app",{sourceInterval:[1820,1842]},"caseInsensitive",[["terminal",{sourceInterval:[1836,1841]},"pow"]]],["app",{sourceInterval:[1850,1875]},"caseInsensitive",[["terminal",{sourceInterval:[1866,1874]},"random"]]],["app",{sourceInterval:[1883,1907]},"caseInsensitive",[["terminal",{sourceInterval:[1899,1906]},"round"]]],["app",{sourceInterval:[1915,1938]},"caseInsensitive",[["terminal",{sourceInterval:[1931,1937]},"sign"]]],["app",{sourceInterval:[1946,1969]},"caseInsensitive",[["terminal",{sourceInterval:[1962,1968]},"sqrt"]]],["app",{sourceInterval:[1977,2e3]},"caseInsensitive",[["terminal",{sourceInterval:[1993,1999]},"tanh"]]],["app",{sourceInterval:[2008,2030]},"caseInsensitive",[["terminal",{sourceInterval:[2024,2029]},"tan"]]],["app",{sourceInterval:[2038,2062]},"caseInsensitive",[["terminal",{sourceInterval:[2054,2061]},"trunc"]]]]]}]);pc.exports=Kn});var gc=E((X3,Ic)=>{"use strict";var{makeRecipe:fc}=Qe(),Jn={};Jn.BasicArithmetic=fc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);Jn.PercentageArithmetic=fc(["grammar",{source:`PercentageArithmetic <: BasicArithmetic {\r + Expression\r + := PercentageOf\r + | IncreaseBy\r + | DecreaseBy\r + | PercentageIncreaseOrDecrease\r + | LogicalShift\r + \r + Primitive \r + += percentage\r + \r + PercentageOf\r + = percentage caseInsensitive<"of"> number \r + \r + IncreaseBy\r + = caseInsensitive<"increase"> number caseInsensitive<"by"> percentage\r + \r + DecreaseBy\r + = caseInsensitive<"decrease"> number caseInsensitive<"by"> percentage\r + \r + PercentageIncreaseOrDecrease\r + = caseInsensitive<"from">? number caseInsensitive<"to"> number\r +\r + percentage = number "%"\r +}`},"PercentageArithmetic",Jn.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[44,179]},null,[],["alt",{sourceInterval:[65,179]},["app",{sourceInterval:[65,77]},"PercentageOf",[]],["app",{sourceInterval:[89,99]},"IncreaseBy",[]],["app",{sourceInterval:[111,121]},"DecreaseBy",[]],["app",{sourceInterval:[133,161]},"PercentageIncreaseOrDecrease",[]],["app",{sourceInterval:[167,179]},"LogicalShift",[]]]],Primitive:["extend",{sourceInterval:[195,228]},null,[],["app",{sourceInterval:[218,228]},"percentage",[]]],PercentageOf:["define",{sourceInterval:[244,304]},null,[],["seq",{sourceInterval:[265,304]},["app",{sourceInterval:[265,275]},"percentage",[]],["app",{sourceInterval:[276,297]},"caseInsensitive",[["terminal",{sourceInterval:[292,296]},"of"]]],["app",{sourceInterval:[298,304]},"number",[]]]],IncreaseBy:["define",{sourceInterval:[321,407]},null,[],["seq",{sourceInterval:[340,407]},["app",{sourceInterval:[340,367]},"caseInsensitive",[["terminal",{sourceInterval:[356,366]},"increase"]]],["app",{sourceInterval:[368,374]},"number",[]],["app",{sourceInterval:[375,396]},"caseInsensitive",[["terminal",{sourceInterval:[391,395]},"by"]]],["app",{sourceInterval:[397,407]},"percentage",[]]]],DecreaseBy:["define",{sourceInterval:[423,509]},null,[],["seq",{sourceInterval:[442,509]},["app",{sourceInterval:[442,469]},"caseInsensitive",[["terminal",{sourceInterval:[458,468]},"decrease"]]],["app",{sourceInterval:[470,476]},"number",[]],["app",{sourceInterval:[477,498]},"caseInsensitive",[["terminal",{sourceInterval:[493,497]},"by"]]],["app",{sourceInterval:[499,509]},"percentage",[]]]],PercentageIncreaseOrDecrease:["define",{sourceInterval:[521,621]},null,[],["seq",{sourceInterval:[561,621]},["opt",{sourceInterval:[561,585]},["app",{sourceInterval:[561,584]},"caseInsensitive",[["terminal",{sourceInterval:[577,583]},"from"]]]],["app",{sourceInterval:[586,592]},"number",[]],["app",{sourceInterval:[593,614]},"caseInsensitive",[["terminal",{sourceInterval:[609,613]},"to"]]],["app",{sourceInterval:[615,621]},"number",[]]]],percentage:["define",{sourceInterval:[629,652]},null,[],["seq",{sourceInterval:[642,652]},["app",{sourceInterval:[642,648]},"number",[]],["terminal",{sourceInterval:[649,652]},"%"]]]}]);Ic.exports=Jn});var Sc=E((O4,_c)=>{"use strict";var{makeRecipe:yc}=Qe(),ns={};ns.BasicArithmetic=yc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);ns.UnitsOfMeasurementArithmetic=yc(["grammar",{source:`UnitsOfMeasurementArithmetic <: BasicArithmetic {\r + Expression\r + := \r + | Conversion\r + | ConversionPossiblities\r + | LogicalShift\r + \r + Primitive \r + += uom\r + | percentage\r + \r + Conversion\r + = caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> caseInsensitive<"best"> -- best\r + | caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> unit -- convert \r + \r + ConversionPossiblities\r + = caseInsensitive<"convert">? LogicalShift caseInsensitive<"to"> "?"?\r + \r + percentage \r + = number "%"\r + \r + // Important: The reason we include \`~("to" space+)\` is to prevent matching "t" or "torr" units when used in expression "convert 100g + 20 to g"\r + uom \r + = number spaces ~("to" ~"rr") spaces unit\r + \r + unit\r + = "km3/s"\r + | "yd3/h"\r + | "yd3/min"\r + | "yd3/s"\r + | "ft3/h"\r + | "ft3/min"\r + | "ft3/s"\r + | "in3/h"\r + | "in3/min"\r + | "in3/s"\r + | "mm3/s"\r + | "cm3/s"\r + | "fl-oz/h"\r + | "fl-oz/min"\r + | "fl-oz/s"\r + | "gal/h"\r + | "gal/min"\r + | "gal/s"\r + | "pnt/h"\r + | "pnt/min"\r + | "pnt/s"\r + | "cup/s"\r + | "Tbs/s"\r + | "tsp/s"\r + | "m3/h"\r + | "m3/min"\r + | "m3/s"\r + | "kl/h"\r + | "kl/min"\r + | "kl/s"\r + | "l/h"\r + | "l/min"\r + | "l/s"\r + | "dl/s"\r + | "cl/s"\r + | "ml/s"\r + | "min/km"\r + | "s/ft"\r + | "s/m"\r + | "km/h"\r + | "m/h"\r + | "ft/s"\r + | "m/s"\r + | "knot"\r + | "THz"\r + | "GHz"\r + | "MHz"\r + | "kHz"\r + | "mHz"\r + | "Hz"\r + | "rpm"\r + | "rad/s"\r + | "deg/s"\r + | "km3"\r + | "yd3"\r + | "ft3"\r + | "in3"\r + | "mm3"\r + | "cm3"\r + | "m3"\r + | "gal"\r + | "qt"\r + | "pnt"\r + | "cup"\r + | "fl-oz"\r + | "Tbs"\r + | "tsp"\r + | "kl"\r + | "lb"\r + | "lx"\r + | "l"\r + | "ml"\r + | "km2"\r + | "mi2"\r + | "mm2"\r + | "cm2"\r + | "m2"\r + | "in2"\r + | "ft2"\r + | "ha"\r + | "ac"\r + | "GVARh"\r + | "MVARh"\r + | "kVARh"\r + | "mVARh"\r + | "VARh"\r + | "GVAR"\r + | "MVAR"\r + | "kVAR"\r + | "mVAR"\r + | "VAR"\r + | "GVA"\r + | "MVA"\r + | "kVA"\r + | "mVA"\r + | "VA"\r + | "GWh"\r + | "MWh"\r + | "kWh"\r + | "mWh"\r + | "Wh"\r + | "GW"\r + | "MW"\r + | "kW"\r + | "mW"\r + | "W"\r + | "kJ"\r + | "J"\r + | "mcg"\r + | "kg"\r + | "grad"\r + | "g"\r + | "mg"\r + | "oz"\r + | "torr"\r + | "t"\r + | "mt"\r + | "month"\r + | "year"\r + | "week"\r + | "deg"\r + | "d"\r + | "hPa"\r + | "h"\r + | "min"\r + | "s"\r + | "ms"\r + | "mu"\r + | "ns"\r + | "kPa"\r + | "MPa"\r + | "bar"\r + | "psi"\r + | "ksi"\r + | "Pa"\r + | "ft-cd"\r + | "ppm"\r + | "ppb"\r + | "ppt"\r + | "ppq"\r + | "kV"\r + | "V"\r + | "mV"\r + | "kA"\r + | "A"\r + | "mA"\r + | "arcmin"\r + | "arcsec"\r + | "rad"\r + | "ft-us"\r + | "mi"\r + | "mm"\r + | "m"\r + | "cm"\r + | "yd"\r + | "km"\r + | "ft"\r + | "in"\r + | "F"\r + | "Kb"\r + | "KB"\r + | "K"\r + | "C"\r + | "R"\r + | "TB"\r + | "GB"\r + | "MB"\r + | "B"\r + | "Tb"\r + | "Gb"\r + | "Mb"\r + | "b"\r +}`},"UnitsOfMeasurementArithmetic",ns.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[53,148]},null,[],["alt",{sourceInterval:[84,148]},["app",{sourceInterval:[86,96]},"Conversion",[]],["app",{sourceInterval:[108,130]},"ConversionPossiblities",[]],["app",{sourceInterval:[136,148]},"LogicalShift",[]]]],Primitive:["extend",{sourceInterval:[164,212]},null,[],["alt",{sourceInterval:[187,212]},["app",{sourceInterval:[187,190]},"uom",[]],["app",{sourceInterval:[202,212]},"percentage",[]]]],Conversion_best:["define",{sourceInterval:[247,341]},null,[],["seq",{sourceInterval:[247,333]},["opt",{sourceInterval:[247,274]},["app",{sourceInterval:[247,273]},"caseInsensitive",[["terminal",{sourceInterval:[263,272]},"convert"]]]],["app",{sourceInterval:[275,287]},"LogicalShift",[]],["app",{sourceInterval:[288,309]},"caseInsensitive",[["terminal",{sourceInterval:[304,308]},"to"]]],["app",{sourceInterval:[310,333]},"caseInsensitive",[["terminal",{sourceInterval:[326,332]},"best"]]]]],Conversion_convert:["define",{sourceInterval:[353,431]},null,[],["seq",{sourceInterval:[353,420]},["opt",{sourceInterval:[353,380]},["app",{sourceInterval:[353,379]},"caseInsensitive",[["terminal",{sourceInterval:[369,378]},"convert"]]]],["app",{sourceInterval:[381,393]},"LogicalShift",[]],["app",{sourceInterval:[394,415]},"caseInsensitive",[["terminal",{sourceInterval:[410,414]},"to"]]],["app",{sourceInterval:[416,420]},"unit",[]]]],Conversion:["define",{sourceInterval:[228,431]},null,[],["alt",{sourceInterval:[247,431]},["app",{sourceInterval:[247,333]},"Conversion_best",[]],["app",{sourceInterval:[353,420]},"Conversion_convert",[]]]],ConversionPossiblities:["define",{sourceInterval:[452,553]},null,[],["seq",{sourceInterval:[486,553]},["opt",{sourceInterval:[486,513]},["app",{sourceInterval:[486,512]},"caseInsensitive",[["terminal",{sourceInterval:[502,511]},"convert"]]]],["app",{sourceInterval:[514,526]},"LogicalShift",[]],["app",{sourceInterval:[527,548]},"caseInsensitive",[["terminal",{sourceInterval:[543,547]},"to"]]],["opt",{sourceInterval:[549,553]},["terminal",{sourceInterval:[549,552]},"?"]]]],percentage:["define",{sourceInterval:[565,598]},null,[],["seq",{sourceInterval:[588,598]},["app",{sourceInterval:[588,594]},"number",[]],["terminal",{sourceInterval:[595,598]},"%"]]],uom:["define",{sourceInterval:[760,815]},null,[],["seq",{sourceInterval:[776,815]},["app",{sourceInterval:[776,782]},"number",[]],["app",{sourceInterval:[783,789]},"spaces",[]],["not",{sourceInterval:[790,803]},["seq",{sourceInterval:[792,802]},["terminal",{sourceInterval:[792,796]},"to"],["not",{sourceInterval:[797,802]},["terminal",{sourceInterval:[798,802]},"rr"]]]],["app",{sourceInterval:[804,810]},"spaces",[]],["app",{sourceInterval:[811,815]},"unit",[]]]],unit:["define",{sourceInterval:[827,3800]},null,[],["alt",{sourceInterval:[843,3800]},["terminal",{sourceInterval:[843,850]},"km3/s"],["terminal",{sourceInterval:[862,869]},"yd3/h"],["terminal",{sourceInterval:[881,890]},"yd3/min"],["terminal",{sourceInterval:[902,909]},"yd3/s"],["terminal",{sourceInterval:[921,928]},"ft3/h"],["terminal",{sourceInterval:[940,949]},"ft3/min"],["terminal",{sourceInterval:[961,968]},"ft3/s"],["terminal",{sourceInterval:[980,987]},"in3/h"],["terminal",{sourceInterval:[999,1008]},"in3/min"],["terminal",{sourceInterval:[1020,1027]},"in3/s"],["terminal",{sourceInterval:[1039,1046]},"mm3/s"],["terminal",{sourceInterval:[1058,1065]},"cm3/s"],["terminal",{sourceInterval:[1077,1086]},"fl-oz/h"],["terminal",{sourceInterval:[1098,1109]},"fl-oz/min"],["terminal",{sourceInterval:[1121,1130]},"fl-oz/s"],["terminal",{sourceInterval:[1142,1149]},"gal/h"],["terminal",{sourceInterval:[1161,1170]},"gal/min"],["terminal",{sourceInterval:[1182,1189]},"gal/s"],["terminal",{sourceInterval:[1201,1208]},"pnt/h"],["terminal",{sourceInterval:[1220,1229]},"pnt/min"],["terminal",{sourceInterval:[1241,1248]},"pnt/s"],["terminal",{sourceInterval:[1260,1267]},"cup/s"],["terminal",{sourceInterval:[1279,1286]},"Tbs/s"],["terminal",{sourceInterval:[1298,1305]},"tsp/s"],["terminal",{sourceInterval:[1317,1323]},"m3/h"],["terminal",{sourceInterval:[1335,1343]},"m3/min"],["terminal",{sourceInterval:[1355,1361]},"m3/s"],["terminal",{sourceInterval:[1373,1379]},"kl/h"],["terminal",{sourceInterval:[1391,1399]},"kl/min"],["terminal",{sourceInterval:[1411,1417]},"kl/s"],["terminal",{sourceInterval:[1429,1434]},"l/h"],["terminal",{sourceInterval:[1446,1453]},"l/min"],["terminal",{sourceInterval:[1465,1470]},"l/s"],["terminal",{sourceInterval:[1482,1488]},"dl/s"],["terminal",{sourceInterval:[1500,1506]},"cl/s"],["terminal",{sourceInterval:[1518,1524]},"ml/s"],["terminal",{sourceInterval:[1536,1544]},"min/km"],["terminal",{sourceInterval:[1556,1562]},"s/ft"],["terminal",{sourceInterval:[1574,1579]},"s/m"],["terminal",{sourceInterval:[1591,1597]},"km/h"],["terminal",{sourceInterval:[1609,1614]},"m/h"],["terminal",{sourceInterval:[1626,1632]},"ft/s"],["terminal",{sourceInterval:[1644,1649]},"m/s"],["terminal",{sourceInterval:[1661,1667]},"knot"],["terminal",{sourceInterval:[1679,1684]},"THz"],["terminal",{sourceInterval:[1696,1701]},"GHz"],["terminal",{sourceInterval:[1713,1718]},"MHz"],["terminal",{sourceInterval:[1730,1735]},"kHz"],["terminal",{sourceInterval:[1747,1752]},"mHz"],["terminal",{sourceInterval:[1764,1768]},"Hz"],["terminal",{sourceInterval:[1780,1785]},"rpm"],["terminal",{sourceInterval:[1797,1804]},"rad/s"],["terminal",{sourceInterval:[1816,1823]},"deg/s"],["terminal",{sourceInterval:[1835,1840]},"km3"],["terminal",{sourceInterval:[1852,1857]},"yd3"],["terminal",{sourceInterval:[1869,1874]},"ft3"],["terminal",{sourceInterval:[1886,1891]},"in3"],["terminal",{sourceInterval:[1903,1908]},"mm3"],["terminal",{sourceInterval:[1920,1925]},"cm3"],["terminal",{sourceInterval:[1937,1941]},"m3"],["terminal",{sourceInterval:[1953,1958]},"gal"],["terminal",{sourceInterval:[1970,1974]},"qt"],["terminal",{sourceInterval:[1986,1991]},"pnt"],["terminal",{sourceInterval:[2003,2008]},"cup"],["terminal",{sourceInterval:[2020,2027]},"fl-oz"],["terminal",{sourceInterval:[2039,2044]},"Tbs"],["terminal",{sourceInterval:[2056,2061]},"tsp"],["terminal",{sourceInterval:[2073,2077]},"kl"],["terminal",{sourceInterval:[2089,2093]},"lb"],["terminal",{sourceInterval:[2105,2109]},"lx"],["terminal",{sourceInterval:[2121,2124]},"l"],["terminal",{sourceInterval:[2136,2140]},"ml"],["terminal",{sourceInterval:[2152,2157]},"km2"],["terminal",{sourceInterval:[2169,2174]},"mi2"],["terminal",{sourceInterval:[2186,2191]},"mm2"],["terminal",{sourceInterval:[2203,2208]},"cm2"],["terminal",{sourceInterval:[2220,2224]},"m2"],["terminal",{sourceInterval:[2236,2241]},"in2"],["terminal",{sourceInterval:[2253,2258]},"ft2"],["terminal",{sourceInterval:[2270,2274]},"ha"],["terminal",{sourceInterval:[2286,2290]},"ac"],["terminal",{sourceInterval:[2302,2309]},"GVARh"],["terminal",{sourceInterval:[2321,2328]},"MVARh"],["terminal",{sourceInterval:[2340,2347]},"kVARh"],["terminal",{sourceInterval:[2359,2366]},"mVARh"],["terminal",{sourceInterval:[2378,2384]},"VARh"],["terminal",{sourceInterval:[2396,2402]},"GVAR"],["terminal",{sourceInterval:[2414,2420]},"MVAR"],["terminal",{sourceInterval:[2432,2438]},"kVAR"],["terminal",{sourceInterval:[2450,2456]},"mVAR"],["terminal",{sourceInterval:[2468,2473]},"VAR"],["terminal",{sourceInterval:[2485,2490]},"GVA"],["terminal",{sourceInterval:[2502,2507]},"MVA"],["terminal",{sourceInterval:[2519,2524]},"kVA"],["terminal",{sourceInterval:[2536,2541]},"mVA"],["terminal",{sourceInterval:[2553,2557]},"VA"],["terminal",{sourceInterval:[2569,2574]},"GWh"],["terminal",{sourceInterval:[2586,2591]},"MWh"],["terminal",{sourceInterval:[2603,2608]},"kWh"],["terminal",{sourceInterval:[2620,2625]},"mWh"],["terminal",{sourceInterval:[2637,2641]},"Wh"],["terminal",{sourceInterval:[2653,2657]},"GW"],["terminal",{sourceInterval:[2669,2673]},"MW"],["terminal",{sourceInterval:[2685,2689]},"kW"],["terminal",{sourceInterval:[2701,2705]},"mW"],["terminal",{sourceInterval:[2717,2720]},"W"],["terminal",{sourceInterval:[2732,2736]},"kJ"],["terminal",{sourceInterval:[2748,2751]},"J"],["terminal",{sourceInterval:[2763,2768]},"mcg"],["terminal",{sourceInterval:[2780,2784]},"kg"],["terminal",{sourceInterval:[2796,2802]},"grad"],["terminal",{sourceInterval:[2814,2817]},"g"],["terminal",{sourceInterval:[2829,2833]},"mg"],["terminal",{sourceInterval:[2845,2849]},"oz"],["terminal",{sourceInterval:[2861,2867]},"torr"],["terminal",{sourceInterval:[2879,2882]},"t"],["terminal",{sourceInterval:[2894,2898]},"mt"],["terminal",{sourceInterval:[2910,2917]},"month"],["terminal",{sourceInterval:[2929,2935]},"year"],["terminal",{sourceInterval:[2947,2953]},"week"],["terminal",{sourceInterval:[2965,2970]},"deg"],["terminal",{sourceInterval:[2982,2985]},"d"],["terminal",{sourceInterval:[2997,3002]},"hPa"],["terminal",{sourceInterval:[3014,3017]},"h"],["terminal",{sourceInterval:[3029,3034]},"min"],["terminal",{sourceInterval:[3046,3049]},"s"],["terminal",{sourceInterval:[3061,3065]},"ms"],["terminal",{sourceInterval:[3077,3081]},"mu"],["terminal",{sourceInterval:[3093,3097]},"ns"],["terminal",{sourceInterval:[3109,3114]},"kPa"],["terminal",{sourceInterval:[3126,3131]},"MPa"],["terminal",{sourceInterval:[3143,3148]},"bar"],["terminal",{sourceInterval:[3160,3165]},"psi"],["terminal",{sourceInterval:[3177,3182]},"ksi"],["terminal",{sourceInterval:[3194,3198]},"Pa"],["terminal",{sourceInterval:[3210,3217]},"ft-cd"],["terminal",{sourceInterval:[3229,3234]},"ppm"],["terminal",{sourceInterval:[3246,3251]},"ppb"],["terminal",{sourceInterval:[3263,3268]},"ppt"],["terminal",{sourceInterval:[3280,3285]},"ppq"],["terminal",{sourceInterval:[3297,3301]},"kV"],["terminal",{sourceInterval:[3313,3316]},"V"],["terminal",{sourceInterval:[3328,3332]},"mV"],["terminal",{sourceInterval:[3344,3348]},"kA"],["terminal",{sourceInterval:[3360,3363]},"A"],["terminal",{sourceInterval:[3375,3379]},"mA"],["terminal",{sourceInterval:[3391,3399]},"arcmin"],["terminal",{sourceInterval:[3411,3419]},"arcsec"],["terminal",{sourceInterval:[3431,3436]},"rad"],["terminal",{sourceInterval:[3448,3455]},"ft-us"],["terminal",{sourceInterval:[3467,3471]},"mi"],["terminal",{sourceInterval:[3483,3487]},"mm"],["terminal",{sourceInterval:[3499,3502]},"m"],["terminal",{sourceInterval:[3514,3518]},"cm"],["terminal",{sourceInterval:[3530,3534]},"yd"],["terminal",{sourceInterval:[3546,3550]},"km"],["terminal",{sourceInterval:[3562,3566]},"ft"],["terminal",{sourceInterval:[3578,3582]},"in"],["terminal",{sourceInterval:[3594,3597]},"F"],["terminal",{sourceInterval:[3609,3613]},"Kb"],["terminal",{sourceInterval:[3625,3629]},"KB"],["terminal",{sourceInterval:[3641,3644]},"K"],["terminal",{sourceInterval:[3656,3659]},"C"],["terminal",{sourceInterval:[3671,3674]},"R"],["terminal",{sourceInterval:[3686,3690]},"TB"],["terminal",{sourceInterval:[3702,3706]},"GB"],["terminal",{sourceInterval:[3718,3722]},"MB"],["terminal",{sourceInterval:[3734,3737]},"B"],["terminal",{sourceInterval:[3749,3753]},"Tb"],["terminal",{sourceInterval:[3765,3769]},"Gb"],["terminal",{sourceInterval:[3781,3785]},"Mb"],["terminal",{sourceInterval:[3797,3800]},"b"]]]}]);_c.exports=ns});var wc=E((G4,bc)=>{"use strict";var{makeRecipe:xc}=Qe(),as={};as.BasicArithmetic=xc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);as.Vector2Arithmetic=xc(["grammar",{source:`Vector2Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector2\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector2\r + = vector2? "(" Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Cross\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector2 ")" -- function\r + DistanceSq = distanceSq "(" Vector2 "," Vector2 ")" -- function\r + Length = length "(" Vector2 ")" -- function\r + Distance = distance "(" Vector2 "," Vector2 ")" -- function\r + Normalise = normalise "(" Vector2 ")" -- function\r + Dot = dot "(" Vector2 "," Vector2 ")" -- function\r + AngleBetween = angleBetween "(" Vector2 "," Vector2 ")" -- function\r + Cross = cross "(" Vector2 "," Vector2 ")" -- function\r + Lerp = lerp "(" Vector2 "," Vector2 "," number ")" -- function\r +\r + vector2 \r + = caseInsensitive<"Vector2">\r + | caseInsensitive<"Vec2">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + cross\r + = caseInsensitive<"crossproduct">\r + | caseInsensitive<"cross">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector2Arithmetic",as.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector2",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector2_parse:["define",{sourceInterval:[351,402]},null,[],["seq",{sourceInterval:[351,393]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector2",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},")"]]],Vector2:["define",{sourceInterval:[336,402]},null,[],["app",{sourceInterval:[351,402]},"Vector2_parse",[]]],Function:["define",{sourceInterval:[408,544]},null,[],["alt",{sourceInterval:[423,544]},["app",{sourceInterval:[423,431]},"LengthSq",[]],["app",{sourceInterval:[438,448]},"DistanceSq",[]],["app",{sourceInterval:[455,461]},"Length",[]],["app",{sourceInterval:[468,476]},"Distance",[]],["app",{sourceInterval:[483,492]},"Normalise",[]],["app",{sourceInterval:[499,502]},"Dot",[]],["app",{sourceInterval:[509,521]},"AngleBetween",[]],["app",{sourceInterval:[528,533]},"Cross",[]],["app",{sourceInterval:[540,544]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[562,598]},null,[],["seq",{sourceInterval:[562,586]},["app",{sourceInterval:[562,570]},"lengthSq",[]],["terminal",{sourceInterval:[571,574]},"("],["app",{sourceInterval:[575,582]},"Vector2",[]],["terminal",{sourceInterval:[583,586]},")"]]],LengthSq:["define",{sourceInterval:[550,598]},null,[],["app",{sourceInterval:[562,598]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[616,666]},null,[],["seq",{sourceInterval:[616,654]},["app",{sourceInterval:[616,626]},"distanceSq",[]],["terminal",{sourceInterval:[627,630]},"("],["app",{sourceInterval:[631,638]},"Vector2",[]],["terminal",{sourceInterval:[639,642]},","],["app",{sourceInterval:[643,650]},"Vector2",[]],["terminal",{sourceInterval:[651,654]},")"]]],DistanceSq:["define",{sourceInterval:[602,666]},null,[],["app",{sourceInterval:[616,666]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[680,714]},null,[],["seq",{sourceInterval:[680,702]},["app",{sourceInterval:[680,686]},"length",[]],["terminal",{sourceInterval:[687,690]},"("],["app",{sourceInterval:[691,698]},"Vector2",[]],["terminal",{sourceInterval:[699,702]},")"]]],Length:["define",{sourceInterval:[670,714]},null,[],["app",{sourceInterval:[680,714]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[730,778]},null,[],["seq",{sourceInterval:[730,766]},["app",{sourceInterval:[730,738]},"distance",[]],["terminal",{sourceInterval:[739,742]},"("],["app",{sourceInterval:[743,750]},"Vector2",[]],["terminal",{sourceInterval:[751,754]},","],["app",{sourceInterval:[755,762]},"Vector2",[]],["terminal",{sourceInterval:[763,766]},")"]]],Distance:["define",{sourceInterval:[718,778]},null,[],["app",{sourceInterval:[730,778]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[794,831]},null,[],["seq",{sourceInterval:[794,819]},["app",{sourceInterval:[794,803]},"normalise",[]],["terminal",{sourceInterval:[804,807]},"("],["app",{sourceInterval:[808,815]},"Vector2",[]],["terminal",{sourceInterval:[816,819]},")"]]],Normalise:["define",{sourceInterval:[782,831]},null,[],["app",{sourceInterval:[794,831]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[841,884]},null,[],["seq",{sourceInterval:[841,872]},["app",{sourceInterval:[841,844]},"dot",[]],["terminal",{sourceInterval:[845,848]},"("],["app",{sourceInterval:[849,856]},"Vector2",[]],["terminal",{sourceInterval:[857,860]},","],["app",{sourceInterval:[861,868]},"Vector2",[]],["terminal",{sourceInterval:[869,872]},")"]]],Dot:["define",{sourceInterval:[835,884]},null,[],["app",{sourceInterval:[841,884]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[903,955]},null,[],["seq",{sourceInterval:[903,943]},["app",{sourceInterval:[903,915]},"angleBetween",[]],["terminal",{sourceInterval:[916,919]},"("],["app",{sourceInterval:[920,927]},"Vector2",[]],["terminal",{sourceInterval:[928,931]},","],["app",{sourceInterval:[932,939]},"Vector2",[]],["terminal",{sourceInterval:[940,943]},")"]]],AngleBetween:["define",{sourceInterval:[888,955]},null,[],["app",{sourceInterval:[903,955]},"AngleBetween_function",[]]],Cross_function:["define",{sourceInterval:[967,1012]},null,[],["seq",{sourceInterval:[967,1e3]},["app",{sourceInterval:[967,972]},"cross",[]],["terminal",{sourceInterval:[973,976]},"("],["app",{sourceInterval:[977,984]},"Vector2",[]],["terminal",{sourceInterval:[985,988]},","],["app",{sourceInterval:[989,996]},"Vector2",[]],["terminal",{sourceInterval:[997,1e3]},")"]]],Cross:["define",{sourceInterval:[959,1012]},null,[],["app",{sourceInterval:[967,1012]},"Cross_function",[]]],Lerp_function:["define",{sourceInterval:[1023,1078]},null,[],["seq",{sourceInterval:[1023,1066]},["app",{sourceInterval:[1023,1027]},"lerp",[]],["terminal",{sourceInterval:[1028,1031]},"("],["app",{sourceInterval:[1032,1039]},"Vector2",[]],["terminal",{sourceInterval:[1040,1043]},","],["app",{sourceInterval:[1044,1051]},"Vector2",[]],["terminal",{sourceInterval:[1052,1055]},","],["app",{sourceInterval:[1056,1062]},"number",[]],["terminal",{sourceInterval:[1063,1066]},")"]]],Lerp:["define",{sourceInterval:[1016,1078]},null,[],["app",{sourceInterval:[1023,1078]},"Lerp_function",[]]],vector2:["define",{sourceInterval:[1084,1157]},null,[],["alt",{sourceInterval:[1100,1157]},["app",{sourceInterval:[1100,1126]},"caseInsensitive",[["terminal",{sourceInterval:[1116,1125]},"Vector2"]]],["app",{sourceInterval:[1134,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1150,1156]},"Vec2"]]]]],lengthSq:["define",{sourceInterval:[1163,1245]},null,[],["alt",{sourceInterval:[1180,1245]},["app",{sourceInterval:[1180,1207]},"caseInsensitive",[["terminal",{sourceInterval:[1196,1206]},"lengthSq"]]],["app",{sourceInterval:[1215,1245]},"caseInsensitive",[["terminal",{sourceInterval:[1231,1244]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1251,1298]},null,[],["app",{sourceInterval:[1269,1298]},"caseInsensitive",[["terminal",{sourceInterval:[1285,1297]},"distanceSq"]]]],length:["define",{sourceInterval:[1304,1379]},null,[],["alt",{sourceInterval:[1318,1379]},["app",{sourceInterval:[1318,1343]},"caseInsensitive",[["terminal",{sourceInterval:[1334,1342]},"length"]]],["app",{sourceInterval:[1351,1379]},"caseInsensitive",[["terminal",{sourceInterval:[1367,1378]},"magnitude"]]]]],distance:["define",{sourceInterval:[1385,1428]},null,[],["app",{sourceInterval:[1401,1428]},"caseInsensitive",[["terminal",{sourceInterval:[1417,1427]},"distance"]]]],normalise:["define",{sourceInterval:[1434,1516]},null,[],["alt",{sourceInterval:[1452,1516]},["app",{sourceInterval:[1452,1480]},"caseInsensitive",[["terminal",{sourceInterval:[1468,1479]},"normalise"]]],["app",{sourceInterval:[1488,1516]},"caseInsensitive",[["terminal",{sourceInterval:[1504,1515]},"normalize"]]]]],dot:["define",{sourceInterval:[1522,1592]},null,[],["alt",{sourceInterval:[1533,1592]},["app",{sourceInterval:[1533,1562]},"caseInsensitive",[["terminal",{sourceInterval:[1549,1561]},"dotproduct"]]],["app",{sourceInterval:[1570,1592]},"caseInsensitive",[["terminal",{sourceInterval:[1586,1591]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1598,1649]},null,[],["app",{sourceInterval:[1618,1649]},"caseInsensitive",[["terminal",{sourceInterval:[1634,1648]},"angleBetween"]]]],cross:["define",{sourceInterval:[1655,1731]},null,[],["alt",{sourceInterval:[1668,1731]},["app",{sourceInterval:[1668,1699]},"caseInsensitive",[["terminal",{sourceInterval:[1684,1698]},"crossproduct"]]],["app",{sourceInterval:[1707,1731]},"caseInsensitive",[["terminal",{sourceInterval:[1723,1730]},"cross"]]]]],lerp:["define",{sourceInterval:[1737,1772]},null,[],["app",{sourceInterval:[1749,1772]},"caseInsensitive",[["terminal",{sourceInterval:[1765,1771]},"lerp"]]]]}]);bc.exports=as});var Pc=E((H4,Dc)=>{"use strict";var{makeRecipe:Rc}=Qe(),os={};os.BasicArithmetic=Rc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);os.Vector3Arithmetic=Rc(["grammar",{source:`Vector3Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector3\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector3\r + = vector3? "(" Expression "," Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Cross\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector3 ")" -- function\r + DistanceSq = distanceSq "(" Vector3 "," Vector3 ")" -- function\r + Length = length "(" Vector3 ")" -- function\r + Distance = distance "(" Vector3 "," Vector3 ")" -- function\r + Normalise = normalise "(" Vector3 ")" -- function\r + Dot = dot "(" Vector3 "," Vector3 ")" -- function\r + AngleBetween = angleBetween "(" Vector3 "," Vector3 ")" -- function\r + Cross = cross "(" Vector3 "," Vector3 ")" -- function\r + Lerp = lerp "(" Vector3 "," Vector3 "," number ")" -- function\r +\r + vector3 \r + = caseInsensitive<"Vector3">\r + | caseInsensitive<"Vec3">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + cross\r + = caseInsensitive<"crossproduct">\r + | caseInsensitive<"cross">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector3Arithmetic",os.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector3",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector3_parse:["define",{sourceInterval:[351,417]},null,[],["seq",{sourceInterval:[351,408]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector3",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},","],["app",{sourceInterval:[394,404]},"Expression",[]],["terminal",{sourceInterval:[405,408]},")"]]],Vector3:["define",{sourceInterval:[336,417]},null,[],["app",{sourceInterval:[351,417]},"Vector3_parse",[]]],Function:["define",{sourceInterval:[423,559]},null,[],["alt",{sourceInterval:[438,559]},["app",{sourceInterval:[438,446]},"LengthSq",[]],["app",{sourceInterval:[453,463]},"DistanceSq",[]],["app",{sourceInterval:[470,476]},"Length",[]],["app",{sourceInterval:[483,491]},"Distance",[]],["app",{sourceInterval:[498,507]},"Normalise",[]],["app",{sourceInterval:[514,517]},"Dot",[]],["app",{sourceInterval:[524,536]},"AngleBetween",[]],["app",{sourceInterval:[543,548]},"Cross",[]],["app",{sourceInterval:[555,559]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[577,613]},null,[],["seq",{sourceInterval:[577,601]},["app",{sourceInterval:[577,585]},"lengthSq",[]],["terminal",{sourceInterval:[586,589]},"("],["app",{sourceInterval:[590,597]},"Vector3",[]],["terminal",{sourceInterval:[598,601]},")"]]],LengthSq:["define",{sourceInterval:[565,613]},null,[],["app",{sourceInterval:[577,613]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[631,681]},null,[],["seq",{sourceInterval:[631,669]},["app",{sourceInterval:[631,641]},"distanceSq",[]],["terminal",{sourceInterval:[642,645]},"("],["app",{sourceInterval:[646,653]},"Vector3",[]],["terminal",{sourceInterval:[654,657]},","],["app",{sourceInterval:[658,665]},"Vector3",[]],["terminal",{sourceInterval:[666,669]},")"]]],DistanceSq:["define",{sourceInterval:[617,681]},null,[],["app",{sourceInterval:[631,681]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[695,729]},null,[],["seq",{sourceInterval:[695,717]},["app",{sourceInterval:[695,701]},"length",[]],["terminal",{sourceInterval:[702,705]},"("],["app",{sourceInterval:[706,713]},"Vector3",[]],["terminal",{sourceInterval:[714,717]},")"]]],Length:["define",{sourceInterval:[685,729]},null,[],["app",{sourceInterval:[695,729]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[745,793]},null,[],["seq",{sourceInterval:[745,781]},["app",{sourceInterval:[745,753]},"distance",[]],["terminal",{sourceInterval:[754,757]},"("],["app",{sourceInterval:[758,765]},"Vector3",[]],["terminal",{sourceInterval:[766,769]},","],["app",{sourceInterval:[770,777]},"Vector3",[]],["terminal",{sourceInterval:[778,781]},")"]]],Distance:["define",{sourceInterval:[733,793]},null,[],["app",{sourceInterval:[745,793]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[809,846]},null,[],["seq",{sourceInterval:[809,834]},["app",{sourceInterval:[809,818]},"normalise",[]],["terminal",{sourceInterval:[819,822]},"("],["app",{sourceInterval:[823,830]},"Vector3",[]],["terminal",{sourceInterval:[831,834]},")"]]],Normalise:["define",{sourceInterval:[797,846]},null,[],["app",{sourceInterval:[809,846]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[856,899]},null,[],["seq",{sourceInterval:[856,887]},["app",{sourceInterval:[856,859]},"dot",[]],["terminal",{sourceInterval:[860,863]},"("],["app",{sourceInterval:[864,871]},"Vector3",[]],["terminal",{sourceInterval:[872,875]},","],["app",{sourceInterval:[876,883]},"Vector3",[]],["terminal",{sourceInterval:[884,887]},")"]]],Dot:["define",{sourceInterval:[850,899]},null,[],["app",{sourceInterval:[856,899]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[918,970]},null,[],["seq",{sourceInterval:[918,958]},["app",{sourceInterval:[918,930]},"angleBetween",[]],["terminal",{sourceInterval:[931,934]},"("],["app",{sourceInterval:[935,942]},"Vector3",[]],["terminal",{sourceInterval:[943,946]},","],["app",{sourceInterval:[947,954]},"Vector3",[]],["terminal",{sourceInterval:[955,958]},")"]]],AngleBetween:["define",{sourceInterval:[903,970]},null,[],["app",{sourceInterval:[918,970]},"AngleBetween_function",[]]],Cross_function:["define",{sourceInterval:[982,1027]},null,[],["seq",{sourceInterval:[982,1015]},["app",{sourceInterval:[982,987]},"cross",[]],["terminal",{sourceInterval:[988,991]},"("],["app",{sourceInterval:[992,999]},"Vector3",[]],["terminal",{sourceInterval:[1e3,1003]},","],["app",{sourceInterval:[1004,1011]},"Vector3",[]],["terminal",{sourceInterval:[1012,1015]},")"]]],Cross:["define",{sourceInterval:[974,1027]},null,[],["app",{sourceInterval:[982,1027]},"Cross_function",[]]],Lerp_function:["define",{sourceInterval:[1038,1093]},null,[],["seq",{sourceInterval:[1038,1081]},["app",{sourceInterval:[1038,1042]},"lerp",[]],["terminal",{sourceInterval:[1043,1046]},"("],["app",{sourceInterval:[1047,1054]},"Vector3",[]],["terminal",{sourceInterval:[1055,1058]},","],["app",{sourceInterval:[1059,1066]},"Vector3",[]],["terminal",{sourceInterval:[1067,1070]},","],["app",{sourceInterval:[1071,1077]},"number",[]],["terminal",{sourceInterval:[1078,1081]},")"]]],Lerp:["define",{sourceInterval:[1031,1093]},null,[],["app",{sourceInterval:[1038,1093]},"Lerp_function",[]]],vector3:["define",{sourceInterval:[1099,1172]},null,[],["alt",{sourceInterval:[1115,1172]},["app",{sourceInterval:[1115,1141]},"caseInsensitive",[["terminal",{sourceInterval:[1131,1140]},"Vector3"]]],["app",{sourceInterval:[1149,1172]},"caseInsensitive",[["terminal",{sourceInterval:[1165,1171]},"Vec3"]]]]],lengthSq:["define",{sourceInterval:[1178,1260]},null,[],["alt",{sourceInterval:[1195,1260]},["app",{sourceInterval:[1195,1222]},"caseInsensitive",[["terminal",{sourceInterval:[1211,1221]},"lengthSq"]]],["app",{sourceInterval:[1230,1260]},"caseInsensitive",[["terminal",{sourceInterval:[1246,1259]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1266,1313]},null,[],["app",{sourceInterval:[1284,1313]},"caseInsensitive",[["terminal",{sourceInterval:[1300,1312]},"distanceSq"]]]],length:["define",{sourceInterval:[1319,1394]},null,[],["alt",{sourceInterval:[1333,1394]},["app",{sourceInterval:[1333,1358]},"caseInsensitive",[["terminal",{sourceInterval:[1349,1357]},"length"]]],["app",{sourceInterval:[1366,1394]},"caseInsensitive",[["terminal",{sourceInterval:[1382,1393]},"magnitude"]]]]],distance:["define",{sourceInterval:[1400,1443]},null,[],["app",{sourceInterval:[1416,1443]},"caseInsensitive",[["terminal",{sourceInterval:[1432,1442]},"distance"]]]],normalise:["define",{sourceInterval:[1449,1531]},null,[],["alt",{sourceInterval:[1467,1531]},["app",{sourceInterval:[1467,1495]},"caseInsensitive",[["terminal",{sourceInterval:[1483,1494]},"normalise"]]],["app",{sourceInterval:[1503,1531]},"caseInsensitive",[["terminal",{sourceInterval:[1519,1530]},"normalize"]]]]],dot:["define",{sourceInterval:[1537,1607]},null,[],["alt",{sourceInterval:[1548,1607]},["app",{sourceInterval:[1548,1577]},"caseInsensitive",[["terminal",{sourceInterval:[1564,1576]},"dotproduct"]]],["app",{sourceInterval:[1585,1607]},"caseInsensitive",[["terminal",{sourceInterval:[1601,1606]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1613,1664]},null,[],["app",{sourceInterval:[1633,1664]},"caseInsensitive",[["terminal",{sourceInterval:[1649,1663]},"angleBetween"]]]],cross:["define",{sourceInterval:[1670,1746]},null,[],["alt",{sourceInterval:[1683,1746]},["app",{sourceInterval:[1683,1714]},"caseInsensitive",[["terminal",{sourceInterval:[1699,1713]},"crossproduct"]]],["app",{sourceInterval:[1722,1746]},"caseInsensitive",[["terminal",{sourceInterval:[1738,1745]},"cross"]]]]],lerp:["define",{sourceInterval:[1752,1787]},null,[],["app",{sourceInterval:[1764,1787]},"caseInsensitive",[["terminal",{sourceInterval:[1780,1786]},"lerp"]]]]}]);Dc.exports=os});var Ac=E((W4,Ec)=>{"use strict";var{makeRecipe:Mc}=Qe(),ls={};ls.BasicArithmetic=Mc(["grammar",{source:`BasicArithmetic {\r + Expression\r + = LogicalShift\r +\r + LogicalShift\r + = LogicalShift "<<" LogicalShift -- left\r + | LogicalShift ">>" LogicalShift -- right\r + | AS \r +\r + // Addition or Subtraction\r + AS\r + = AS add MD -- addition\r + | AS subtract MD -- subtraction\r + | MD\r +\r + // Multiply or Divide\r + MD\r + = MD multiply E -- multiplication\r + | MD divide E -- division\r + | MD modulo E -- modulo\r + | E\r +\r + // Exponent\r + E\r + = P exponent E -- exponent\r + | P\r +\r + // Parenthesis\r + P\r + = "(" Expression ")" -- parenthesis\r + | Primitive\r + \r + Primitive\r + = "+" Primitive -- positive\r + | "-" Primitive -- negative\r + | constant\r + | hex\r + | number\r + \r + // Lexical Rules\r + add \r + = "+"\r + | caseInsensitive<"plus">\r + | caseInsensitive<"add">\r + | caseInsensitive<"and">\r + \r + subtract \r + = "-"\r + | caseInsensitive<"minus">\r + | caseInsensitive<"subtract">\r + | caseInsensitive<"remove">\r + | caseInsensitive<"take">\r + \r + multiply \r + = "*"\r + | "\\\\*" // Escaped \\* for markdown\r + | "\\u{00D7}" // \xD7\r + | caseInsensitive<"x">\r + | caseInsensitive<"times by">\r + | caseInsensitive<"times">\r + | caseInsensitive<"multiply by">\r + | caseInsensitive<"multiply">\r + \r + divide\r + = "/"\r + | "\\u{00F7}" // \xF7\r + | caseInsensitive<"divide by">\r + | caseInsensitive<"divide">\r +\r + modulo\r + = "%"\r + | caseInsensitive<"modulo">\r + | caseInsensitive<"mod">\r +\r + exponent\r + = "^"\r + | caseInsensitive<"to the power of">\r + | caseInsensitive<"power of">\r + | caseInsensitive<"exponent">\r + | caseInsensitive<"prime">\r +\r + constant \r + = caseInsensitive<"PI"> \r + | caseInsensitive<"E">\r +\r + // Lazy: It will match anything like 1214.200.2442,200 the visitor decides how to interpret\r + number\r + = (separator? digit)+\r +\r + // The separator can be a comma or a period, detected in the visitor\r + separator\r + = "." | ","\r +\r + whole\r + = digit+\r +\r + hex\r + = "0x" hexDigit+\r + | hexDigit+ "h"\r +}`},"BasicArithmetic",null,"Expression",{Expression:["define",{sourceInterval:[21,51]},null,[],["app",{sourceInterval:[39,51]},"LogicalShift",[]]],LogicalShift_left:["define",{sourceInterval:[77,115]},null,[],["seq",{sourceInterval:[77,107]},["app",{sourceInterval:[77,89]},"LogicalShift",[]],["terminal",{sourceInterval:[90,94]},"<<"],["app",{sourceInterval:[95,107]},"LogicalShift",[]]]],LogicalShift_right:["define",{sourceInterval:[123,162]},null,[],["seq",{sourceInterval:[123,153]},["app",{sourceInterval:[123,135]},"LogicalShift",[]],["terminal",{sourceInterval:[136,140]},">>"],["app",{sourceInterval:[141,153]},"LogicalShift",[]]]],LogicalShift:["define",{sourceInterval:[57,172]},null,[],["alt",{sourceInterval:[77,172]},["app",{sourceInterval:[77,107]},"LogicalShift_left",[]],["app",{sourceInterval:[123,153]},"LogicalShift_right",[]],["app",{sourceInterval:[170,172]},"AS",[]]]],AS_addition:["define",{sourceInterval:[219,241]},null,[],["seq",{sourceInterval:[219,228]},["app",{sourceInterval:[219,221]},"AS",[]],["app",{sourceInterval:[222,225]},"add",[]],["app",{sourceInterval:[226,228]},"MD",[]]]],AS_subtraction:["define",{sourceInterval:[249,279]},null,[],["seq",{sourceInterval:[249,263]},["app",{sourceInterval:[249,251]},"AS",[]],["app",{sourceInterval:[252,260]},"subtract",[]],["app",{sourceInterval:[261,263]},"MD",[]]]],AS:["define",{sourceInterval:[209,289]},null,[],["alt",{sourceInterval:[219,289]},["app",{sourceInterval:[219,228]},"AS_addition",[]],["app",{sourceInterval:[249,263]},"AS_subtraction",[]],["app",{sourceInterval:[287,289]},"MD",[]]]],MD_multiplication:["define",{sourceInterval:[330,362]},null,[],["seq",{sourceInterval:[330,343]},["app",{sourceInterval:[330,332]},"MD",[]],["app",{sourceInterval:[333,341]},"multiply",[]],["app",{sourceInterval:[342,343]},"E",[]]]],MD_division:["define",{sourceInterval:[370,394]},null,[],["seq",{sourceInterval:[370,381]},["app",{sourceInterval:[370,372]},"MD",[]],["app",{sourceInterval:[373,379]},"divide",[]],["app",{sourceInterval:[380,381]},"E",[]]]],MD_modulo:["define",{sourceInterval:[402,424]},null,[],["seq",{sourceInterval:[402,413]},["app",{sourceInterval:[402,404]},"MD",[]],["app",{sourceInterval:[405,411]},"modulo",[]],["app",{sourceInterval:[412,413]},"E",[]]]],MD:["define",{sourceInterval:[320,433]},null,[],["alt",{sourceInterval:[330,433]},["app",{sourceInterval:[330,343]},"MD_multiplication",[]],["app",{sourceInterval:[370,381]},"MD_division",[]],["app",{sourceInterval:[402,413]},"MD_modulo",[]],["app",{sourceInterval:[432,433]},"E",[]]]],E_exponent:["define",{sourceInterval:[463,488]},null,[],["seq",{sourceInterval:[463,475]},["app",{sourceInterval:[463,464]},"P",[]],["app",{sourceInterval:[465,473]},"exponent",[]],["app",{sourceInterval:[474,475]},"E",[]]]],E:["define",{sourceInterval:[454,497]},null,[],["alt",{sourceInterval:[463,497]},["app",{sourceInterval:[463,475]},"E_exponent",[]],["app",{sourceInterval:[496,497]},"P",[]]]],P_parenthesis:["define",{sourceInterval:[530,564]},null,[],["seq",{sourceInterval:[530,548]},["terminal",{sourceInterval:[530,533]},"("],["app",{sourceInterval:[534,544]},"Expression",[]],["terminal",{sourceInterval:[545,548]},")"]]],P:["define",{sourceInterval:[521,581]},null,[],["alt",{sourceInterval:[530,581]},["app",{sourceInterval:[530,548]},"P_parenthesis",[]],["app",{sourceInterval:[572,581]},"Primitive",[]]]],Primitive_positive:["define",{sourceInterval:[608,633]},null,[],["seq",{sourceInterval:[608,621]},["terminal",{sourceInterval:[608,611]},"+"],["app",{sourceInterval:[612,621]},"Primitive",[]]]],Primitive_negative:["define",{sourceInterval:[641,666]},null,[],["seq",{sourceInterval:[641,654]},["terminal",{sourceInterval:[641,644]},"-"],["app",{sourceInterval:[645,654]},"Primitive",[]]]],Primitive:["define",{sourceInterval:[591,707]},null,[],["alt",{sourceInterval:[608,707]},["app",{sourceInterval:[608,621]},"Primitive_positive",[]],["app",{sourceInterval:[641,654]},"Primitive_negative",[]],["app",{sourceInterval:[674,682]},"constant",[]],["app",{sourceInterval:[690,693]},"hex",[]],["app",{sourceInterval:[701,707]},"number",[]]]],add:["define",{sourceInterval:[734,838]},null,[],["alt",{sourceInterval:[745,838]},["terminal",{sourceInterval:[745,748]},"+"],["app",{sourceInterval:[756,779]},"caseInsensitive",[["terminal",{sourceInterval:[772,778]},"plus"]]],["app",{sourceInterval:[786,808]},"caseInsensitive",[["terminal",{sourceInterval:[802,807]},"add"]]],["app",{sourceInterval:[816,838]},"caseInsensitive",[["terminal",{sourceInterval:[832,837]},"and"]]]]],subtract:["define",{sourceInterval:[848,999]},null,[],["alt",{sourceInterval:[865,999]},["terminal",{sourceInterval:[865,868]},"-"],["app",{sourceInterval:[876,900]},"caseInsensitive",[["terminal",{sourceInterval:[892,899]},"minus"]]],["app",{sourceInterval:[908,935]},"caseInsensitive",[["terminal",{sourceInterval:[924,934]},"subtract"]]],["app",{sourceInterval:[943,968]},"caseInsensitive",[["terminal",{sourceInterval:[959,967]},"remove"]]],["app",{sourceInterval:[976,999]},"caseInsensitive",[["terminal",{sourceInterval:[992,998]},"take"]]]]],multiply:["define",{sourceInterval:[1011,1262]},null,[],["alt",{sourceInterval:[1028,1262]},["terminal",{sourceInterval:[1028,1031]},"*"],["terminal",{sourceInterval:[1039,1044]},"\\*"],["terminal",{sourceInterval:[1079,1089]},"\xD7"],["app",{sourceInterval:[1102,1122]},"caseInsensitive",[["terminal",{sourceInterval:[1118,1121]},"x"]]],["app",{sourceInterval:[1130,1157]},"caseInsensitive",[["terminal",{sourceInterval:[1146,1156]},"times by"]]],["app",{sourceInterval:[1165,1189]},"caseInsensitive",[["terminal",{sourceInterval:[1181,1188]},"times"]]],["app",{sourceInterval:[1197,1227]},"caseInsensitive",[["terminal",{sourceInterval:[1213,1226]},"multiply by"]]],["app",{sourceInterval:[1235,1262]},"caseInsensitive",[["terminal",{sourceInterval:[1251,1261]},"multiply"]]]]],divide:["define",{sourceInterval:[1274,1383]},null,[],["alt",{sourceInterval:[1288,1383]},["terminal",{sourceInterval:[1288,1291]},"/"],["terminal",{sourceInterval:[1299,1309]},"\xF7"],["app",{sourceInterval:[1322,1350]},"caseInsensitive",[["terminal",{sourceInterval:[1338,1349]},"divide by"]]],["app",{sourceInterval:[1358,1383]},"caseInsensitive",[["terminal",{sourceInterval:[1374,1382]},"divide"]]]]],modulo:["define",{sourceInterval:[1389,1469]},null,[],["alt",{sourceInterval:[1403,1469]},["terminal",{sourceInterval:[1403,1406]},"%"],["app",{sourceInterval:[1414,1439]},"caseInsensitive",[["terminal",{sourceInterval:[1430,1438]},"modulo"]]],["app",{sourceInterval:[1447,1469]},"caseInsensitive",[["terminal",{sourceInterval:[1463,1468]},"mod"]]]]],exponent:["define",{sourceInterval:[1475,1638]},null,[],["alt",{sourceInterval:[1491,1638]},["terminal",{sourceInterval:[1491,1494]},"^"],["app",{sourceInterval:[1502,1536]},"caseInsensitive",[["terminal",{sourceInterval:[1518,1535]},"to the power of"]]],["app",{sourceInterval:[1544,1571]},"caseInsensitive",[["terminal",{sourceInterval:[1560,1570]},"power of"]]],["app",{sourceInterval:[1579,1606]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1605]},"exponent"]]],["app",{sourceInterval:[1614,1638]},"caseInsensitive",[["terminal",{sourceInterval:[1630,1637]},"prime"]]]]],constant:["define",{sourceInterval:[1644,1711]},null,[],["alt",{sourceInterval:[1661,1711]},["app",{sourceInterval:[1661,1682]},"caseInsensitive",[["terminal",{sourceInterval:[1677,1681]},"PI"]]],["app",{sourceInterval:[1691,1711]},"caseInsensitive",[["terminal",{sourceInterval:[1707,1710]},"E"]]]]],number:["define",{sourceInterval:[1812,1845]},null,[],["plus",{sourceInterval:[1826,1845]},["seq",{sourceInterval:[1827,1843]},["opt",{sourceInterval:[1827,1837]},["app",{sourceInterval:[1827,1836]},"separator",[]]],["app",{sourceInterval:[1838,1843]},"digit",[]]]]],separator:["define",{sourceInterval:[1923,1949]},null,[],["alt",{sourceInterval:[1940,1949]},["terminal",{sourceInterval:[1940,1943]},"."],["terminal",{sourceInterval:[1946,1949]},","]]],whole:["define",{sourceInterval:[1955,1974]},null,[],["plus",{sourceInterval:[1968,1974]},["app",{sourceInterval:[1968,1973]},"digit",[]]]],hex:["define",{sourceInterval:[1980,2026]},null,[],["alt",{sourceInterval:[1991,2026]},["seq",{sourceInterval:[1991,2005]},["terminal",{sourceInterval:[1991,1995]},"0x"],["plus",{sourceInterval:[1996,2005]},["app",{sourceInterval:[1996,2004]},"hexDigit",[]]]],["seq",{sourceInterval:[2013,2026]},["plus",{sourceInterval:[2013,2022]},["app",{sourceInterval:[2013,2021]},"hexDigit",[]]],["terminal",{sourceInterval:[2023,2026]},"h"]]]]}]);ls.Vector4Arithmetic=Mc(["grammar",{source:`Vector4Arithmetic <: BasicArithmetic {\r + // Remove support for logical shift\r + Expression \r + := AS\r +\r + P\r + := "(" Expression ")" -- parenthesis\r + | Vector4\r + | Function\r + | Primitive\r +\r + // Remove modulo support for vector\r + MD\r + := MD multiply E -- multiplication\r + | MD divide E -- division\r + | E\r +\r + Vector4\r + = vector4? "(" Expression "," Expression "," Expression "," Expression ")" -- parse\r +\r + Function\r + = LengthSq\r + | DistanceSq\r + | Length\r + | Distance\r + | Normalise\r + | Dot\r + | AngleBetween\r + | Lerp\r +\r + LengthSq = lengthSq "(" Vector4 ")" -- function\r + DistanceSq = distanceSq "(" Vector4 "," Vector4 ")" -- function\r + Length = length "(" Vector4 ")" -- function\r + Distance = distance "(" Vector4 "," Vector4 ")" -- function\r + Normalise = normalise "(" Vector4 ")" -- function\r + Dot = dot "(" Vector4 "," Vector4 ")" -- function\r + AngleBetween = angleBetween "(" Vector4 "," Vector4 ")" -- function\r + Lerp = lerp "(" Vector4 "," Vector4 "," number ")" -- function\r +\r + vector4 \r + = caseInsensitive<"Vector4">\r + | caseInsensitive<"Vec4">\r +\r + lengthSq \r + = caseInsensitive<"lengthSq">\r + | caseInsensitive<"magnitudeSq">\r +\r + distanceSq\r + = caseInsensitive<"distanceSq">\r +\r + length\r + = caseInsensitive<"length">\r + | caseInsensitive<"magnitude">\r +\r + distance\r + = caseInsensitive<"distance">\r +\r + normalise \r + = caseInsensitive<"normalise">\r + | caseInsensitive<"normalize">\r +\r + dot\r + = caseInsensitive<"dotproduct">\r + | caseInsensitive<"dot">\r +\r + angleBetween\r + = caseInsensitive<"angleBetween">\r +\r + lerp\r + = caseInsensitive<"lerp">\r +}`},"Vector4Arithmetic",ls.BasicArithmetic,"Expression",{Expression:["override",{sourceInterval:[81,103]},null,[],["app",{sourceInterval:[101,103]},"AS",[]]],P_parenthesis:["override",{sourceInterval:[119,153]},null,[],["seq",{sourceInterval:[119,137]},["terminal",{sourceInterval:[119,122]},"("],["app",{sourceInterval:[123,133]},"Expression",[]],["terminal",{sourceInterval:[134,137]},")"]]],P:["override",{sourceInterval:[109,201]},null,[],["alt",{sourceInterval:[119,201]},["app",{sourceInterval:[119,137]},"P_parenthesis",[]],["app",{sourceInterval:[161,168]},"Vector4",[]],["app",{sourceInterval:[176,184]},"Function",[]],["app",{sourceInterval:[192,201]},"Primitive",[]]]],MD_multiplication:["override",{sourceInterval:[257,289]},null,[],["seq",{sourceInterval:[257,270]},["app",{sourceInterval:[257,259]},"MD",[]],["app",{sourceInterval:[260,268]},"multiply",[]],["app",{sourceInterval:[269,270]},"E",[]]]],MD_division:["override",{sourceInterval:[297,321]},null,[],["seq",{sourceInterval:[297,308]},["app",{sourceInterval:[297,299]},"MD",[]],["app",{sourceInterval:[300,306]},"divide",[]],["app",{sourceInterval:[307,308]},"E",[]]]],MD:["override",{sourceInterval:[246,330]},null,[],["alt",{sourceInterval:[257,330]},["app",{sourceInterval:[257,270]},"MD_multiplication",[]],["app",{sourceInterval:[297,308]},"MD_division",[]],["app",{sourceInterval:[329,330]},"E",[]]]],Vector4_parse:["define",{sourceInterval:[351,432]},null,[],["seq",{sourceInterval:[351,423]},["opt",{sourceInterval:[351,359]},["app",{sourceInterval:[351,358]},"vector4",[]]],["terminal",{sourceInterval:[360,363]},"("],["app",{sourceInterval:[364,374]},"Expression",[]],["terminal",{sourceInterval:[375,378]},","],["app",{sourceInterval:[379,389]},"Expression",[]],["terminal",{sourceInterval:[390,393]},","],["app",{sourceInterval:[394,404]},"Expression",[]],["terminal",{sourceInterval:[405,408]},","],["app",{sourceInterval:[409,419]},"Expression",[]],["terminal",{sourceInterval:[420,423]},")"]]],Vector4:["define",{sourceInterval:[336,432]},null,[],["app",{sourceInterval:[351,432]},"Vector4_parse",[]]],Function:["define",{sourceInterval:[438,562]},null,[],["alt",{sourceInterval:[453,562]},["app",{sourceInterval:[453,461]},"LengthSq",[]],["app",{sourceInterval:[468,478]},"DistanceSq",[]],["app",{sourceInterval:[485,491]},"Length",[]],["app",{sourceInterval:[498,506]},"Distance",[]],["app",{sourceInterval:[513,522]},"Normalise",[]],["app",{sourceInterval:[529,532]},"Dot",[]],["app",{sourceInterval:[539,551]},"AngleBetween",[]],["app",{sourceInterval:[558,562]},"Lerp",[]]]],LengthSq_function:["define",{sourceInterval:[580,616]},null,[],["seq",{sourceInterval:[580,604]},["app",{sourceInterval:[580,588]},"lengthSq",[]],["terminal",{sourceInterval:[589,592]},"("],["app",{sourceInterval:[593,600]},"Vector4",[]],["terminal",{sourceInterval:[601,604]},")"]]],LengthSq:["define",{sourceInterval:[568,616]},null,[],["app",{sourceInterval:[580,616]},"LengthSq_function",[]]],DistanceSq_function:["define",{sourceInterval:[634,684]},null,[],["seq",{sourceInterval:[634,672]},["app",{sourceInterval:[634,644]},"distanceSq",[]],["terminal",{sourceInterval:[645,648]},"("],["app",{sourceInterval:[649,656]},"Vector4",[]],["terminal",{sourceInterval:[657,660]},","],["app",{sourceInterval:[661,668]},"Vector4",[]],["terminal",{sourceInterval:[669,672]},")"]]],DistanceSq:["define",{sourceInterval:[620,684]},null,[],["app",{sourceInterval:[634,684]},"DistanceSq_function",[]]],Length_function:["define",{sourceInterval:[698,732]},null,[],["seq",{sourceInterval:[698,720]},["app",{sourceInterval:[698,704]},"length",[]],["terminal",{sourceInterval:[705,708]},"("],["app",{sourceInterval:[709,716]},"Vector4",[]],["terminal",{sourceInterval:[717,720]},")"]]],Length:["define",{sourceInterval:[688,732]},null,[],["app",{sourceInterval:[698,732]},"Length_function",[]]],Distance_function:["define",{sourceInterval:[748,796]},null,[],["seq",{sourceInterval:[748,784]},["app",{sourceInterval:[748,756]},"distance",[]],["terminal",{sourceInterval:[757,760]},"("],["app",{sourceInterval:[761,768]},"Vector4",[]],["terminal",{sourceInterval:[769,772]},","],["app",{sourceInterval:[773,780]},"Vector4",[]],["terminal",{sourceInterval:[781,784]},")"]]],Distance:["define",{sourceInterval:[736,796]},null,[],["app",{sourceInterval:[748,796]},"Distance_function",[]]],Normalise_function:["define",{sourceInterval:[812,849]},null,[],["seq",{sourceInterval:[812,837]},["app",{sourceInterval:[812,821]},"normalise",[]],["terminal",{sourceInterval:[822,825]},"("],["app",{sourceInterval:[826,833]},"Vector4",[]],["terminal",{sourceInterval:[834,837]},")"]]],Normalise:["define",{sourceInterval:[800,849]},null,[],["app",{sourceInterval:[812,849]},"Normalise_function",[]]],Dot_function:["define",{sourceInterval:[859,902]},null,[],["seq",{sourceInterval:[859,890]},["app",{sourceInterval:[859,862]},"dot",[]],["terminal",{sourceInterval:[863,866]},"("],["app",{sourceInterval:[867,874]},"Vector4",[]],["terminal",{sourceInterval:[875,878]},","],["app",{sourceInterval:[879,886]},"Vector4",[]],["terminal",{sourceInterval:[887,890]},")"]]],Dot:["define",{sourceInterval:[853,902]},null,[],["app",{sourceInterval:[859,902]},"Dot_function",[]]],AngleBetween_function:["define",{sourceInterval:[921,973]},null,[],["seq",{sourceInterval:[921,961]},["app",{sourceInterval:[921,933]},"angleBetween",[]],["terminal",{sourceInterval:[934,937]},"("],["app",{sourceInterval:[938,945]},"Vector4",[]],["terminal",{sourceInterval:[946,949]},","],["app",{sourceInterval:[950,957]},"Vector4",[]],["terminal",{sourceInterval:[958,961]},")"]]],AngleBetween:["define",{sourceInterval:[906,973]},null,[],["app",{sourceInterval:[921,973]},"AngleBetween_function",[]]],Lerp_function:["define",{sourceInterval:[984,1039]},null,[],["seq",{sourceInterval:[984,1027]},["app",{sourceInterval:[984,988]},"lerp",[]],["terminal",{sourceInterval:[989,992]},"("],["app",{sourceInterval:[993,1e3]},"Vector4",[]],["terminal",{sourceInterval:[1001,1004]},","],["app",{sourceInterval:[1005,1012]},"Vector4",[]],["terminal",{sourceInterval:[1013,1016]},","],["app",{sourceInterval:[1017,1023]},"number",[]],["terminal",{sourceInterval:[1024,1027]},")"]]],Lerp:["define",{sourceInterval:[977,1039]},null,[],["app",{sourceInterval:[984,1039]},"Lerp_function",[]]],vector4:["define",{sourceInterval:[1045,1118]},null,[],["alt",{sourceInterval:[1061,1118]},["app",{sourceInterval:[1061,1087]},"caseInsensitive",[["terminal",{sourceInterval:[1077,1086]},"Vector4"]]],["app",{sourceInterval:[1095,1118]},"caseInsensitive",[["terminal",{sourceInterval:[1111,1117]},"Vec4"]]]]],lengthSq:["define",{sourceInterval:[1124,1206]},null,[],["alt",{sourceInterval:[1141,1206]},["app",{sourceInterval:[1141,1168]},"caseInsensitive",[["terminal",{sourceInterval:[1157,1167]},"lengthSq"]]],["app",{sourceInterval:[1176,1206]},"caseInsensitive",[["terminal",{sourceInterval:[1192,1205]},"magnitudeSq"]]]]],distanceSq:["define",{sourceInterval:[1212,1259]},null,[],["app",{sourceInterval:[1230,1259]},"caseInsensitive",[["terminal",{sourceInterval:[1246,1258]},"distanceSq"]]]],length:["define",{sourceInterval:[1265,1340]},null,[],["alt",{sourceInterval:[1279,1340]},["app",{sourceInterval:[1279,1304]},"caseInsensitive",[["terminal",{sourceInterval:[1295,1303]},"length"]]],["app",{sourceInterval:[1312,1340]},"caseInsensitive",[["terminal",{sourceInterval:[1328,1339]},"magnitude"]]]]],distance:["define",{sourceInterval:[1346,1389]},null,[],["app",{sourceInterval:[1362,1389]},"caseInsensitive",[["terminal",{sourceInterval:[1378,1388]},"distance"]]]],normalise:["define",{sourceInterval:[1395,1477]},null,[],["alt",{sourceInterval:[1413,1477]},["app",{sourceInterval:[1413,1441]},"caseInsensitive",[["terminal",{sourceInterval:[1429,1440]},"normalise"]]],["app",{sourceInterval:[1449,1477]},"caseInsensitive",[["terminal",{sourceInterval:[1465,1476]},"normalize"]]]]],dot:["define",{sourceInterval:[1483,1553]},null,[],["alt",{sourceInterval:[1494,1553]},["app",{sourceInterval:[1494,1523]},"caseInsensitive",[["terminal",{sourceInterval:[1510,1522]},"dotproduct"]]],["app",{sourceInterval:[1531,1553]},"caseInsensitive",[["terminal",{sourceInterval:[1547,1552]},"dot"]]]]],angleBetween:["define",{sourceInterval:[1559,1610]},null,[],["app",{sourceInterval:[1579,1610]},"caseInsensitive",[["terminal",{sourceInterval:[1595,1609]},"angleBetween"]]]],lerp:["define",{sourceInterval:[1616,1651]},null,[],["app",{sourceInterval:[1628,1651]},"caseInsensitive",[["terminal",{sourceInterval:[1644,1650]},"lerp"]]]]}]);Ec.exports=ls});var eI={};zh(eI,{default:()=>hs});module.exports=jh(eI);var nn=class{constructor(e){this.capacity=e,this.cache=new Map,this.frequencies=new Map,this.minFrequency=0,this.order=0}updateFrequency(e){let t=this.cache.get(e);if(!t)return;let n=t.frequency;t.frequency++,t.order=this.order++;let a=this.frequencies.get(n);a==null||a.delete(e),a&&a.size===0&&(this.frequencies.delete(n),n===this.minFrequency&&this.minFrequency++);let l=this.frequencies.get(t.frequency);l||(l=new Set,this.frequencies.set(t.frequency,l)),l.add(e)}get(e){let t=this.cache.get(e);if(t)return this.updateFrequency(e),t.value}set(e,t){var l,c;let n=this.cache.get(e);if(n){n.value=t,this.updateFrequency(e);return}if(this.cache.size===this.capacity){let v=this.frequencies.get(this.minFrequency);if(v){let h=null,d=1/0;for(let g of v){let f=(c=(l=this.cache.get(g))==null?void 0:l.order)!=null?c:1/0;f[...i].reduce((e,t)=>Math.imul(31,e)+t.charCodeAt(0)|0,0);var Bs=class{constructor(e){this.lfuCache=new nn(e)}get(e){let t=Sr(e);return this.lfuCache.get(t)}set(e,t){let n=Sr(e);return this.lfuCache.set(n,t),t}clear(){this.lfuCache.clear()}},xr=new Bs(200);var Ys=class{constructor(){this.listeners={}}on(e,t){this.listeners[e]||(this.listeners[e]=[]),this.listeners[e].push(t)}emit(e,...t){let n=this.listeners[e];n&&n.forEach(a=>a(...t))}removeListener(e,t){let n=this.listeners[e];if(n){let a=n.indexOf(t);a!==-1&&n.splice(a,1)}}removeAllListeners(){this.listeners={}}},it=new Ys;var Fa=me(br()),b={engine:{explicitMode:!1},interface:{renderResultEndOfLine:!1,showStatusBarCompanion:!0,animateResults:!0,animationClass:"animate__pulse",animationDuration:"200ms"},inlineSolve:{includeExpressionOnCommit:!1,includeBackticksOnCommit:!0,includeEqualsOnCommit:!0},variable:{renderResult:!0},arithmeticProvider:{enabled:!0,renderEqualsBeforeResult:!0},functionArithmeticProvider:{enabled:!0},vectorArithmeticProvider:{enabled:!0},percentageArithmeticProvider:{enabled:!0},datetimeProvider:{enabled:!0,parsingFormat:0},unitOfMeasurementProvider:{enabled:!0},diceProvider:{enabled:!0},bigIntegerArithmeticProvider:{enabled:!0},numberResult:{decimalSeparatorLocale:"en-US"},integerResult:{enableSeperator:!1},floatResult:{enableSeperator:!1,decimalPlaces:2},percentageResult:{enableSeperator:!1,decimalPlaces:2},datetimeResult:{format:Fa.default.defaultFormat},hexResult:{enablePadding:!1,paddingZeros:8},unitOfMeasurementResult:{decimalPlaces:2,unitNames:!1}};var sn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.arithmeticProvider.enabled)!=null?e:b.arithmeticProvider.enabled}set enabled(e){this.parent.settings.arithmeticProvider.enabled=e}get renderEqualsBeforeResult(){var e;return(e=this.parent.settings.arithmeticProvider.renderEqualsBeforeResult)!=null?e:b.arithmeticProvider.renderEqualsBeforeResult}set renderEqualsBeforeResult(e){this.parent.settings.arithmeticProvider.renderEqualsBeforeResult=e}};var an=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.bigIntegerArithmeticProvider.enabled)!=null?e:b.bigIntegerArithmeticProvider.enabled}set enabled(e){this.parent.settings.bigIntegerArithmeticProvider.enabled=e}};var on=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.datetimeProvider.enabled)!=null?e:b.datetimeProvider.enabled}set enabled(e){this.parent.settings.datetimeProvider.enabled=e}get parsingFormat(){var e;return(e=this.parent.settings.datetimeProvider.parsingFormat)!=null?e:b.datetimeProvider.parsingFormat}set parsingFormat(e){this.parent.settings.datetimeProvider.parsingFormat=e}};var ln=class{constructor(e){this.parent=e}get format(){var e;return(e=this.parent.settings.datetimeResult.format)!=null?e:b.datetimeResult.format}set format(e){this.parent.settings.datetimeResult.format=e}};var un=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.diceProvider.enabled)!=null?e:b.diceProvider.enabled}set enabled(e){this.parent.settings.diceProvider.enabled=e}};var cn=class{constructor(e){this.parent=e}get explicitMode(){var e;return(e=this.parent.settings.engine.explicitMode)!=null?e:b.engine.explicitMode}set explicitMode(e){this.parent.settings.engine.explicitMode=e}};var pn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.floatResult.enableSeperator)!=null?e:b.floatResult.enableSeperator}set enableSeperator(e){this.parent.settings.floatResult.enableSeperator=e}get decimalPlaces(){var e;return(e=this.parent.settings.floatResult.decimalPlaces)!=null?e:b.floatResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.floatResult.decimalPlaces=e}};var mn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.functionArithmeticProvider.enabled)!=null?e:b.functionArithmeticProvider.enabled}set enabled(e){this.parent.settings.functionArithmeticProvider.enabled=e}};var vn=class{constructor(e){this.parent=e}get enablePadding(){var e;return(e=this.parent.settings.hexResult.enablePadding)!=null?e:b.hexResult.enablePadding}set enablePadding(e){this.parent.settings.hexResult.enablePadding=e}get paddingZeros(){var e;return(e=this.parent.settings.hexResult.paddingZeros)!=null?e:b.hexResult.paddingZeros}set paddingZeros(e){this.parent.settings.hexResult.paddingZeros=e}};var hn=class{constructor(e){this.parent=e}get includeExpressionOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeExpressionOnCommit)!=null?e:b.inlineSolve.includeExpressionOnCommit}set includeExpressionOnCommit(e){this.parent.settings.inlineSolve.includeExpressionOnCommit=e}get includeBackticksOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeBackticksOnCommit)!=null?e:b.inlineSolve.includeBackticksOnCommit}set includeBackticksOnCommit(e){this.parent.settings.inlineSolve.includeBackticksOnCommit=e}get includeEqualsOnCommit(){var e;return(e=this.parent.settings.inlineSolve.includeEqualsOnCommit)!=null?e:b.inlineSolve.includeEqualsOnCommit}set includeEqualsOnCommit(e){this.parent.settings.inlineSolve.includeEqualsOnCommit=e}};var dn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.integerResult.enableSeperator)!=null?e:b.integerResult.enableSeperator}set enableSeperator(e){this.parent.settings.integerResult.enableSeperator=e}};var fn=class{constructor(e){this.parent=e}get renderResultEndOfLine(){var e;return(e=this.parent.settings.interface.renderResultEndOfLine)!=null?e:b.interface.renderResultEndOfLine}set renderResultEndOfLine(e){this.parent.settings.interface.renderResultEndOfLine=e}get showStatusBarCompanion(){var e;return(e=this.parent.settings.interface.showStatusBarCompanion)!=null?e:b.interface.showStatusBarCompanion}set showStatusBarCompanion(e){this.parent.settings.interface.showStatusBarCompanion=e}get animateResults(){var e;return(e=this.parent.settings.interface.animateResults)!=null?e:b.interface.animateResults}set animateResults(e){this.parent.settings.interface.animateResults=e}get animationClass(){var e;return(e=this.parent.settings.interface.animationClass)!=null?e:b.interface.animationClass}set animationClass(e){this.parent.settings.interface.animationClass=e}get animationDuration(){var e;return(e=this.parent.settings.interface.animationDuration)!=null?e:b.interface.animationDuration}set animationDuration(e){this.parent.settings.interface.animationDuration=e}};var In=class{constructor(e){this.parent=e}get decimalSeparatorLocale(){var e;return(e=this.parent.settings.numberResult.decimalSeparatorLocale)!=null?e:b.numberResult.decimalSeparatorLocale}set decimalSeparatorLocale(e){this.parent.settings.numberResult.decimalSeparatorLocale=e}};var gn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.percentageArithmeticProvider.enabled)!=null?e:b.percentageArithmeticProvider.enabled}set enabled(e){this.parent.settings.percentageArithmeticProvider.enabled=e}};var yn=class{constructor(e){this.parent=e}get enableSeperator(){var e;return(e=this.parent.settings.percentageResult.enableSeperator)!=null?e:b.percentageResult.enableSeperator}set enableSeperator(e){this.parent.settings.percentageResult.enableSeperator=e}get decimalPlaces(){var e;return(e=this.parent.settings.percentageResult.decimalPlaces)!=null?e:b.percentageResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.percentageResult.decimalPlaces=e}};var _n=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.unitOfMeasurementProvider.enabled)!=null?e:b.unitOfMeasurementProvider.enabled}set enabled(e){this.parent.settings.unitOfMeasurementProvider.enabled=e}};var Sn=class{constructor(e){this.parent=e}get decimalPlaces(){var e;return(e=this.parent.settings.unitOfMeasurementResult.decimalPlaces)!=null?e:b.unitOfMeasurementResult.decimalPlaces}set decimalPlaces(e){this.parent.settings.unitOfMeasurementResult.decimalPlaces=e}get unitNames(){var e;return(e=this.parent.settings.unitOfMeasurementResult.unitNames)!=null?e:b.unitOfMeasurementResult.unitNames}set unitNames(e){this.parent.settings.unitOfMeasurementResult.unitNames=e}};var xn=class{constructor(e){this.parent=e}get renderResult(){var e;return(e=this.parent.settings.variable.renderResult)!=null?e:b.variable.renderResult}set renderResult(e){this.parent.settings.variable.renderResult=e}};var bn=class{constructor(e){this.parent=e}get enabled(){var e;return(e=this.parent.settings.vectorArithmeticProvider.enabled)!=null?e:b.vectorArithmeticProvider.enabled}set enabled(e){this.parent.settings.vectorArithmeticProvider.enabled=e}};var Vt=class Vt{constructor(){this.settings=b,this.engine=new cn(this),this.interface=new fn(this),this.inlineSolve=new hn(this),this.variable=new xn(this),this.arithmeticProvider=new sn(this),this.functionArithmeticProvider=new mn(this),this.vectorArithmeticProvider=new bn(this),this.percentageArithmeticProvider=new gn(this),this.datetimeProvider=new on(this),this.unitOfMeasurementProvider=new _n(this),this.diceProvider=new un(this),this.bigIntegerArithmeticProvider=new an(this),this.numberResult=new In(this),this.integerResult=new dn(this),this.floatResult=new pn(this),this.percentageResult=new yn(this),this.datetimeResult=new ln(this),this.hexResult=new vn(this),this.unitOfMeasurementResult=new Sn(this)}static getInstance(){return Vt.instance||(Vt.instance=new Vt),Vt.instance}updateSettings(e){this.settings=e}};Vt.instance=null;var F=Vt;var Ua=require("@codemirror/view"),wn=class extends Ua.WidgetType{constructor(t,n,a){super();this.userSettings=F.getInstance(),this.expression=n,this.result=a,this.lineNumber=t.lineNumber,this.isInlineSolve=t.isInlineSolve||!1}toDOM(t){let n=t.state.doc.lineAt(t.state.selection.main.head).number,a=document.createElement("div");return a.id=`osr-${this.lineNumber}`,a.title="Click to commit this result",a.addEventListener("click",()=>{it.emit(1,this.lineNumber,this.expression,this.result,this.isInlineSolve)}),this.userSettings.interface.animateResults&&a.style.setProperty("--animate-duration",this.userSettings.interface.animationDuration),a.classList.add("os-result"),this.userSettings.interface.animateResults&&this.lineNumber===n&&a.classList.add("animate__animated",this.userSettings.interface.animationClass),a.textContent=`${this.result}`,a}};var Rn=class i extends Error{constructor(e){super(e||"The executed pipeline has no stages."),this.name="EmptyPipelineError",Error.captureStackTrace(this,i)}};var Lt=class{constructor(){this.firstStage=null;this.lastStage=null}addStage(e){return this.firstStage?(this.lastStage&&this.lastStage.next(e),this.lastStage=e):this.firstStage=this.lastStage=e,this}process(e,t){if(!this.firstStage)throw new Rn;return this.firstStage.process(e,t)}};var X=class{constructor(){this.nextStage=null}next(e){return this.nextStage=e,e}process(e,t){return t=this.execute(e,t),this.nextStage?this.nextStage.process(e,t):t}};var Hs=class extends X{constructor(){super(...arguments);this.commentsRemovalRegex=new RegExp(/((?:#|\/\/).+)/)}execute(t,n){return n.replace(this.commentsRemovalRegex,"")}},Ba=new Hs;var Ws=class extends X{execute(e,t){return F.getInstance().engine.explicitMode&&t.trimEnd().endsWith("=")&&(t=t.substring(0,t.length-1).trimEnd(),e.isAllowedExplicitModeExpression=!0),t}},Ya=new Ws;var zs=class extends X{constructor(){super(...arguments);this.inlineSolveRegex=new RegExp(/s`([^`]*)`/g)}execute(t,n){let a=[],l=[];for(let c of t.originalLineText.matchAll(this.inlineSolveRegex))a.push(c[1]),l.push(c.index);return a.length>0?(t.isInlineSolve=!0,t.inlineSolveIndices=l,a):n}},Ga=new zs;var js=class extends X{constructor(){super(...arguments);this.markdownReplacementRegex=new RegExp(/^(?:(?:[-+*>]|(?:\[\s\])|(?:\d+\.))\s)+/m)}execute(t,n){return n.replace(this.markdownReplacementRegex,"")}},Ha=new js;var $s=class extends X{constructor(){super(...arguments);this.mathjaxFormatRegex=new RegExp(/^(?:\$\$(.+)\$\$)$/g);this.latexFormatRegex=new RegExp(/^(?:\$(.+)\$)$/g)}execute(t,n){let a=this.mathjaxFormatRegex.exec(n);if(a){let c=a[1],v=c.indexOf("=");return v>-1?c.substring(v+1).trim():c}let l=this.latexFormatRegex.exec(n);if(l){let c=l[1],v=c.indexOf("=");return v>-1?c.substring(v+1).trim():c}return n}},Wa=new $s;var T=class i extends Error{constructor(e){super(e||"Unsupported visitor operation"),this.name="UnsupportedVisitorOperationError",Error.captureStackTrace(this,i)}};var te=class{constructor(e,t){this.value=e,this.radix=t}accept(e){return e.visit(this)}};var ve=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var N=class{constructor(e){this.value=Math.trunc(e)}accept(e){return e.visit(this)}};var x=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var L=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var Ze=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var D=class{constructor(e,t){this.value=e,this.unit=t}accept(e){return e.visit(this)}};var U=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var k=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};var C=class{constructor(e){this.value=e}accept(e){return e.visit(this)}};function za(i,e,t){let n=i.toLocaleString(e,{maximumFractionDigits:t,minimumFractionDigits:t});switch(e){case"de-DE":n=n.replace(".","");break;default:n=n.replace(",","");break}return n}function wr(i,e=2,t=!1,n="en-US"){return Number.isInteger(i)?t?i.toLocaleString(n,{minimumFractionDigits:0,maximumFractionDigits:0}):za(Math.trunc(i),n,0):t?i.toLocaleString(n,{maximumFractionDigits:e,minimumFractionDigits:e}):za(i,n,e)}var cu=me(Pr()),pu=me(br()),Qt=class{constructor(){this.settings=F.getInstance()}visit(e){if(e instanceof x)return this.visitNumberResult(e);if(e instanceof N)return this.visitHexResult(e);if(e instanceof L)return this.visitPercentageResult(e);if(e instanceof ve)return this.visitDatetimeResult(e);if(e instanceof Ze)return this.visitStringResult(e);if(e instanceof U)return this.visitVector2Result(e);if(e instanceof k)return this.visitVector3Result(e);if(e instanceof C)return this.visitVector4Result(e);if(e instanceof D)return this.visitUnitOfMeasurementResult(e);if(e instanceof te)return this.visitBigIntResult(e);throw new T}visitNumberResult(e){return wr(e.value,this.settings.floatResult.decimalPlaces,!1,this.settings.numberResult.decimalSeparatorLocale).toString()}visitHexResult(e){let t=e.value<0,n=Math.abs(e.value).toString(16).toUpperCase().padStart(this.settings.hexResult.enablePadding?this.settings.hexResult.paddingZeros:0,"0");return t?`-0x${n}`:`0x${n}`}visitPercentageResult(e){return`${e.value.toFixed(this.settings.percentageResult.decimalPlaces)}%`}visitDatetimeResult(e){return e.value.format(pu.default.defaultFormat)}visitStringResult(e){return e.value}visitVector2Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n})`}visitVector3Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a})`}visitVector4Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces),l=e.value.w.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a}, ${l})`}visitUnitOfMeasurementResult(e){let t=this.settings.unitOfMeasurementResult.decimalPlaces,n=Number.isInteger(e.value)?e.value:e.value.toFixed(t),a=e.unit;if(this.settings.unitOfMeasurementResult.unitNames){let l=(0,cu.default)().describe(e.unit);a=Math.abs(e.value)>1?l.plural:l.singular}return`${n} ${a}`}visitBigIntResult(e){switch(e.radix){case 2:return`0b${e.value.toString(e.radix)}`;case 10:return e.value.toString(e.radix);case 16:return`0x${e.value.toString(e.radix)}`.toUpperCase();default:return e.value.toString(e.radix)}}};var An=class extends X{constructor(){super();this.previousResultSubstitutionRegex=new RegExp(/:prev/gi);this.resultSubstitutionVisitor=new Qt}execute(t,n){return this.previousResult===void 0||(n=n.replace(this.previousResultSubstitutionRegex,this.resultSubstitutionVisitor.visit(this.previousResult))),n}setPreviousResult(t){this.previousResult=t}};var W={log:(...i)=>{},error:(...i)=>{},warn:(...i)=>{},info:(...i)=>{},debug:(...i)=>{},assert:(i,...e)=>{}};var ri=class extends X{constructor(){super(...arguments);this.variableAssignReplacementRegex=new RegExp(/(?::\w+\s+=)/m)}execute(t,n){let a=F.getInstance();return a.engine.explicitMode&&this.variableAssignReplacementRegex.test(n)&&(t.isAllowedExplicitModeExpression=!0,W.debug("VariableAssignRemovalStage: Detected Variable Assignment Allowing Through Explicit Mode")),a.variable.renderResult&&(n=n.replace(this.variableAssignReplacementRegex,"")),n}},mu=new ri;var Di=me(Hu());var rr=class{constructor(e){this.name=e,this.cacheable=!0}enabled(){throw new Error("Method not implemented.")}provide(e){throw new Error("Method not implemented.")}};var Re=class extends rr{constructor(t){super(t)}};function Xe(i,e){return e*i}function Wu(i,e){return(e-i)/i}function zu(i,e){let t=i*e;return i+t}function ju(i,e){let t=i*e;return i-t}var $u=me(Pr());function Me(i,e){return new D((0,$u.default)(i.value).from(i.unit).to(e.unit),e.unit)}var Ge=class i extends Error{constructor(e){super(e||"Unsupported coercion operation"),this.name="UnsupportedCoercionOperationError",Error.captureStackTrace(this,i)}};var bi=class{visit(e){if(e instanceof N)return e;if(e instanceof x||e instanceof N||e instanceof L)return new N(e.value);throw new Ge}},Ee=new bi;var wi=class{visit(e){if(e instanceof x)return e;if(e instanceof N||e instanceof D||e instanceof L)return new x(e.value);throw new Ge}},G=new wi;var Rt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){if(t instanceof L)return new x(e.value+Xe(t.value,e.value));let n=G.visit(t);return new x(e.value+n.value)}hex(e,t){if(t instanceof L)return new N(e.value+Xe(t.value,e.value));let n=Ee.visit(t);return new N(e.value+n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value+n.value)}unitOfMeasurement(e,t){if(t instanceof L)return new D(e.value+Xe(t.value,e.value),e.unit);if(t instanceof D){let a=Me(t,e);return new D(e.value+a.value,e.unit)}let n=G.visit(t);return new D(e.value+n.value,e.unit)}};var Ri=class{visitPositive(e){return e.value=Math.abs(e.value),e}visitNegative(e){return e.value=-Math.abs(e.value),e}visitConstant(e){switch(e.toLowerCase()){case"pi":return new x(Math.PI);case"e":return new x(Math.E);default:return new x(0)}}visitHex(e){let t=parseInt(e.replace("h","").replace("0x",""),16);return new N(t)}visitNumber(e,t){switch(t){case"de-DE":e=e.replace(",","||").replace(".","").replace("||",".");break;default:e.indexOf(",")>-1&&(e=e.replace(",",""));break}return new x(parseFloat(e))}},et=new Ri;var Dt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value/n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value/n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value/n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value/a.value,e.unit)}let n=G.visit(t);return new D(e.value/n.value,e.unit)}};var Pt=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(Math.pow(e.value,n.value))}hex(e,t){let n=Ee.visit(t);return new N(Math.pow(e.value,n.value))}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(Math.pow(e.value,a.value),e.unit)}let n=G.visit(t);return new D(Math.pow(e.value,n.value),e.unit)}};var Bn=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value<>n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value>>n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value/100>>n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value>>a.value,e.unit)}let n=G.visit(t);return new D(e.value>>n.value,e.unit)}};var Gn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value%n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value%n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value%n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value%a.value,e.unit)}let n=G.visit(t);return new D(e.value%n.value,e.unit)}};var Mt=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){let n=G.visit(t);return new x(e.value*n.value)}hex(e,t){let n=Ee.visit(t);return new N(e.value*n.value)}percentage(e,t){let n=G.visit(t);return new x(e.value*n.value)}unitOfMeasurement(e,t){if(t instanceof D){let a=Me(t,e);return new D(e.value*a.value,e.unit)}let n=G.visit(t);return new D(e.value*n.value,e.unit)}};var Et=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return this.number(e,this.right);if(e instanceof N)return this.hex(e,this.right);if(e instanceof L)return this.percentage(e,this.right);if(e instanceof D)return this.unitOfMeasurement(e,this.right);throw new T}number(e,t){if(t instanceof L)return new x(e.value-Xe(t.value,e.value));let n=G.visit(t);return new x(e.value-n.value)}hex(e,t){if(t instanceof L)return new N(e.value-Xe(t.value,e.value));let n=Ee.visit(t);return new N(e.value-n.value)}percentage(e,t){if(t instanceof L)return new x(e.value-Xe(t.value,e.value));let n=G.visit(t);return new x(e.value-n.value)}unitOfMeasurement(e,t){if(t instanceof L)return new D(e.value-Xe(t.value,e.value),e.unit);if(t instanceof D){let a=Me(t,e);return new D(e.value-a.value,e.unit)}let n=G.visit(t);return new D(e.value-n.value,e.unit)}};var He={LogicalShift_left(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Bn(a))},LogicalShift_right(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Yn(a))},AS_addition(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Rt(a))},AS_subtraction(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Et(a))},MD_multiplication(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Mt(a))},MD_division(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Dt(a))},MD_modulo(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Gn(a))},E_exponent(i,e,t){let n=i.visit(),a=t.visit();return n.accept(new Pt(a))},P_parenthesis(i,e,t){return e.visit()},Primitive_positive(i,e){return et.visitPositive(e.visit())},Primitive_negative(i,e){return et.visitNegative(e.visit())},constant(i){return et.visitConstant(this.sourceString)},hex(i,e){return et.visitHex(this.sourceString)},number(i,e){let t=F.getInstance().numberResult.decimalSeparatorLocale;return et.visitNumber(this.sourceString,t)}};var Hn="BasicArithmeticProvider",Ku="BigIntegerArithmeticProvider",Zu="DatetimeProvider",Ju="DiceProvider",Qu="FunctionArithmeticProvider",Xu="PercentageArithmeticProvider",ec="UnitsOfMeasurementProvider",tc="VectorArithmeticProvider";var Wn=class extends Re{constructor(){super(Hn),this.semantics=Di.default.createSemantics(),this.semantics.addOperation("visit()",He)}enabled(){return F.getInstance().arithmeticProvider.enabled}provide(e){try{let t=Di.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Pi=me(nc());var zn=class extends Re{constructor(){super(Ku),this.semantics=Pi.default.createSemantics(),this.semantics.addOperation("visit()",{Bitwise_leftShift(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value<>l.value),a.radix)},Bitwise_unsignedRightShift(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value>>>l.value),a.radix)},Bitwise_AND(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value&l.value),a.radix)},Bitwise_XOR(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value^l.value),a.radix)},Bitwise_OR(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value|l.value),a.radix)},AS_addition(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value+l.value),a.radix)},AS_subtraction(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value-l.value),a.radix)},MD_multiplication(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value*l.value),a.radix)},MD_division(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value/l.value),a.radix)},MD_remainder(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value%l.value),a.radix)},E_exponent(e,t,n){let a=e.visit(),l=n.visit();return new te(BigInt(a.value**l.value),a.radix)},P_parenthesis(e,t,n){return t.visit()},hex(e,t){return new te(BigInt(this.sourceString),16)},binary(e,t){return new te(BigInt(this.sourceString),2)},bigInteger(e){return new te(BigInt(this.sourceString),10)}}),this.cacheable=!0}enabled(){return F.getInstance().arithmeticProvider.enabled}provide(e){try{let t=Pi.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ei=me(ic());var Nr=me(br()),Mi=i=>{switch(i){case"sunday":return 0;case"monday":return 1;case"tuesday":return 2;case"wednesday":return 3;case"thursday":return 4;case"friday":return 5;case"saturday":return 6}return 0},ac=i=>{let e=(0,Nr.default)().startOf("day"),t=(0,Nr.default)().isoWeekday(i);return t.isSame(e,"day")?t.add(1,"week"):t.isSameOrAfter(e)?t:t.add(1,"week")},oc=i=>{let e=(0,Nr.default)().startOf("day"),t=(0,Nr.default)().isoWeekday(i);return t.isSame(e,"day")?t.subtract(1,"week"):t.isBefore(e)?t:t.subtract(1,"week")};var lt=me(br()),jn=class extends Re{constructor(){super(Zu),this.cacheable=!1,this.semantics=Ei.default.createSemantics(),this.semantics.addOperation("visit()",{Addition(e,t,n){let a=e.visit(),l=parseInt(n.child(0).sourceString),c=n.child(1).sourceString;return new ve(a.value.add(l,c))},Subtraction(e,t,n){let a=e.visit(),l=parseInt(n.child(0).sourceString),c=n.child(1).sourceString;return new ve(a.value.subtract(l,c))},Primitive(e){return e.visit()},Now(e){return new ve((0,lt.default)())},Today(e){return new ve((0,lt.default)().startOf("day"))},Tomorrow(e){return new ve((0,lt.default)().add(1,"day").startOf("day"))},Yesterday(e){return new ve((0,lt.default)().subtract(1,"day").startOf("day"))},NextDayOfWeek(e,t){let n=t.sourceString.toLowerCase(),a=Mi(n);return new ve(ac(a))},LastDayOfWeek(e,t){let n=t.sourceString.toLowerCase(),a=Mi(n);return new ve(oc(a))},TimeUnitSinceDate(e,t,n){let a=n.visit(),l=(0,lt.default)().startOf("day").diff(a.value,e.sourceString);return new Ze(`${Math.max(l,0)} ${e.sourceString}`)},TimeUnitUntilDate(e,t,n){let l=n.visit().value.diff((0,lt.default)().startOf("day"),e.sourceString);return new Ze(`${Math.max(l,0)} ${e.sourceString}`)},datetimeIso8601(e,t,n,a,l,c,v,h){return new ve((0,lt.default)(this.sourceString))},datetimeFormatEuropeanOrUs(e,t,n,a,l,c){let v=`${e.sourceString}/${n.sourceString}/${l.sourceString} ${c.sourceString}`;switch(F.getInstance().datetimeProvider.parsingFormat){case 0:return new ve((0,lt.default)(v,["DD/MM/YYYY HH:mm:ss"]));case 1:return new ve((0,lt.default)(v,["MM/DD/YYYY HH:mm:ss"]))}},integer(e){return parseInt(this.sourceString)},number(e){return parseFloat(this.sourceString)}})}enabled(){return F.getInstance().datetimeProvider.enabled}provide(e){try{let t=Ei.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){return}}};var Ai=me(uc());var $n=class extends Re{constructor(){super(Ju);let e=F.getInstance();this.cacheable=!1,this.semantics=Ai.default.createSemantics();let t=(n,a)=>{if(n>a)throw new Error("'from' value must be less than or equal to 'to' value.");return Math.floor(Math.random()*(a-n+1))+n};this.semantics.addOperation("visit()",{Roll(n,a,l,c,v,h){let d=l.visit(),g=v.visit();return new x(t(d.value,g.value))},Primitive_positive(n,a){return et.visitPositive(a.visit())},Primitive_negative(n,a){return et.visitNegative(a.visit())},number_fract(n,a,l){return et.visitNumber(this.sourceString,e.numberResult.decimalSeparatorLocale)},number_whole(n){return et.visitNumber(this.sourceString,e.numberResult.decimalSeparatorLocale)}}).bind(this)}enabled(){return F.getInstance().diceProvider.enabled}provide(e){try{let t=Ai.default.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Oi=me(mc());var vc=i=>i*(Math.PI/180),hc=i=>i/(Math.PI/180);var dc=(i,e)=>Math.log(e)/Math.log(i);var Zn=class extends Re{constructor(){super(Qu),this.cacheable=!1,this.semantics=Oi.default.FunctionArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,DegreesToRadians(e,t,n,a){let l=n.visit();return new x(vc(l.value))},RadiansToDegrees(e,t,n,a){let l=n.visit();return new x(hc(l.value))},LogBase(e,t,n,a,l,c){let v=n.visit(),h=l.visit();return new x(dc(v.value,h.value))},JavascriptMathObjectFunction(e,t,n,a){let l=e.sourceString.toLowerCase(),c=n.asIteration().children.map(h=>h.visit().value),v=Math[l];return new x(v?v(...c):0)}})}enabled(){return F.getInstance().functionArithmeticProvider.enabled}provide(e){try{let t=Oi.default.FunctionArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ni=me(gc());var Qn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return e.value=ju(e.value,this.right.value),e;throw new T}};var Xn=class{constructor(e){this.right=e}visit(e){if(e instanceof x)return e.value=zu(e.value,this.right.value),e;throw new T}};var es=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof x){let t=G.visit(this.right);return new L(Wu(e.value,t.value))}throw new T}};var ts=class{constructor(e){this.right=e}visit(e){if(this.right instanceof L)throw new T;if(e instanceof L){let t=G.visit(this.right);return this.right.value=Xe(e.value,t.value),this.right}throw new T}};var rs=class extends Re{constructor(){super(Xu),this.semantics=Ni.default.PercentageArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,PercentageOf(e,t,n){let a=e.visit(),l=n.visit();return a.accept(new ts(l))},IncreaseBy(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new Xn(c))},DecreaseBy(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new Qn(c))},PercentageIncreaseOrDecrease(e,t,n,a){let l=t.visit(),c=a.visit();return l.accept(new es(c))},percentage(e,t){let n=e.visit();return new L(n.value/100)}})}enabled(){return F.getInstance().percentageArithmeticProvider.enabled}provide(e){try{let t=Ni.default.PercentageArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ti=me(Sc());var ss=me(Pr()),is=class extends Re{constructor(){super(ec),this.semantics=Ti.default.UnitsOfMeasurementArithmetic.createSemantics(),this.semantics.addOperation("visit()",{...He,Conversion_best(e,t,n,a){let l=t.visit(),c=(0,ss.default)(l.value).from(l.unit).toBest();return new D(c.val,c.unit)},Conversion_convert(e,t,n,a){let l=t.visit(),c=a.visit();return new D((0,ss.default)(l.value).from(l.unit).to(c.unit),c.unit)},ConversionPossiblities(e,t,n,a){let l=t.visit(),c=(0,ss.default)().from(l.unit).possibilities().join(", ");return new Ze(c)},uom(e,t,n,a){let l=e.visit(),c=a.visit();return new D(l.value,c.unit)},unit(e){return new D(0,this.sourceString)},percentage(e,t){return new L(parseFloat(e.sourceString)/100)}})}enabled(){return F.getInstance().unitOfMeasurementProvider.enabled}provide(e){try{let t=Ti.default.UnitsOfMeasurementArithmetic.match(e);return t.failed()?void 0:this.semantics(t).visit()}catch(t){W.error(t);return}}};var Ci=me(wc()),Fi=me(Pc()),qi=me(Ac());var We=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t}}static dot(e,t){return e.x*t.x+e.y*t.y}static distance(e,t){let n=t.x-e.x,a=t.y-e.y;return Math.sqrt(n*n+a*a)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y;return n*n+a*a}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static cross(e,t){return e.x*t.y-e.y*t.x}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n;return{x:a,y:l}}static zero(){return{x:0,y:0}}static one(){return{x:1,y:1}}};var ze=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y+e.z*e.z}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t,z:e.z/t}}static dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}static distance(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z;return Math.sqrt(n*n+a*a+l*l)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z;return n*n+a*a+l*l}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static cross(e,t){let n=e.y*t.z-e.z*t.y,a=e.z*t.x-e.x*t.z,l=e.x*t.y-e.y*t.x;return{x:n,y:a,z:l}}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n,c=e.z+(t.z-e.z)*n;return{x:a,y:l,z:c}}static zero(){return{x:0,y:0,z:0}}static one(){return{x:1,y:1,z:1}}};var tt=class i{static magnitudeSqrt(e){return e.x*e.x+e.y*e.y+e.z*e.z+e.w*e.w}static magnitude(e){return Math.sqrt(i.magnitudeSqrt(e))}static normalise(e){let t=i.magnitude(e);return t===0?i.zero():{x:e.x/t,y:e.y/t,z:e.z/t,w:e.w/t}}static dot(e,t){return e.x*t.x+e.y*t.y+e.z*t.z+e.w*t.w}static distance(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z,c=t.w-e.w;return Math.sqrt(n*n+a*a+l*l+c*c)}static distanceSq(e,t){let n=t.x-e.x,a=t.y-e.y,l=t.z-e.z,c=t.w-e.w;return n*n+a*a+l*l+c*c}static angleBetween(e,t){let n=i.dot(e,t),a=i.magnitude(e)*i.magnitude(t);return Math.acos(n/a)}static lerp(e,t,n){n=Math.max(0,Math.min(1,n));let a=e.x+(t.x-e.x)*n,l=e.y+(t.y-e.y)*n,c=e.z+(t.z-e.z)*n,v=e.w+(t.w-e.w)*n;return{x:a,y:l,z:c,w:v}}static zero(){return{x:0,y:0,z:0,w:0}}static one(){return{x:1,y:1,z:1,w:1}}};var Vi=class{visit(e){if(e instanceof U)return e;if(e instanceof x||e instanceof N)return new U({x:e.value,y:e.value});throw new Ge}},Ae=new Vi;var Li=class{visit(e){if(e instanceof k)return e;if(e instanceof x||e instanceof N)return new k({x:e.value,y:e.value,z:e.value});throw new Ge}},Oe=new Li;var ki=class{visit(e){if(e instanceof C)return e;if(e instanceof x||e instanceof N)return new C({x:e.value,y:e.value,z:e.value,w:e.value});throw new Ge}},Ne=new ki;var nr=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x+t.value.x,y:e.value.y+t.value.y})}vector3(e,t){return new k({x:e.value.x+t.value.x,y:e.value.y+t.value.y,z:e.value.z+t.value.z})}vector4(e,t){return new C({x:e.value.x+t.value.x,y:e.value.y+t.value.y,z:e.value.z+t.value.z,w:e.value.w+t.value.w})}};var sr=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x/t.value.x,y:e.value.y/t.value.y})}vector3(e,t){return new k({x:e.value.x/t.value.x,y:e.value.y/t.value.y,z:e.value.z/t.value.z})}vector4(e,t){return new C({x:e.value.x/t.value.x,y:e.value.y/t.value.y,z:e.value.z/t.value.z,w:e.value.w/t.value.w})}};var ir=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y)})}vector3(e,t){return new k({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y),z:Math.pow(e.value.z,t.value.z)})}vector4(e,t){return new C({x:Math.pow(e.value.x,t.value.x),y:Math.pow(e.value.y,t.value.y),z:Math.pow(e.value.z,t.value.z),w:Math.pow(e.value.w,t.value.w)})}};var ar=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x*t.value.x,y:e.value.y*t.value.y})}vector3(e,t){return new k({x:e.value.x*t.value.x,y:e.value.y*t.value.y,z:e.value.z*t.value.z})}vector4(e,t){return new C({x:e.value.x*t.value.x,y:e.value.y*t.value.y,z:e.value.z*t.value.z,w:e.value.w*t.value.w})}};var or=class{constructor(e){this.right=e}visit(e){if(e instanceof U){let t=Ae.visit(e),n=Ae.visit(this.right);return this.vector2(t,n)}if(e instanceof k){let t=Oe.visit(e),n=Oe.visit(this.right);return this.vector3(t,n)}if(e instanceof C){let t=Ne.visit(e),n=Ne.visit(this.right);return this.vector4(t,n)}throw new T}vector2(e,t){return new U({x:e.value.x-t.value.x,y:e.value.y-t.value.y})}vector3(e,t){return new k({x:e.value.x-t.value.x,y:e.value.y-t.value.y,z:e.value.z-t.value.z})}vector4(e,t){return new C({x:e.value.x-t.value.x,y:e.value.y-t.value.y,z:e.value.z-t.value.z,w:e.value.w-t.value.w})}};var us=class extends rr{constructor(){super(tc);this.setupVector2Arithmetic(),this.setupVector3Arithmetic(),this.setupVector4Arithmetic()}setupVector2Arithmetic(){this.vector2Semantics=Ci.default.Vector2Arithmetic.createSemantics(),this.vector2Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof U)&&!(c instanceof U)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector2_parse(t,n,a,l,c,v){let h=a.visit(),d=c.visit();if(h instanceof U||d instanceof U)throw new TypeError("Expected: Number");return new U({x:h.value,y:d.value})},LengthSq_function(t,n,a,l){var c;return new x(We.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(We.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(We.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(We.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new U(We.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(We.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(We.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Cross_function(t,n,a,l,c,v){var h,d;return new x(We.cross((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new U(We.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}setupVector3Arithmetic(){this.vector3Semantics=Fi.default.Vector3Arithmetic.createSemantics(),this.vector3Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof k)&&!(c instanceof k)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector3_parse(t,n,a,l,c,v,h,d){let g=a.visit(),f=c.visit(),y=h.visit();if(g instanceof k||f instanceof k||y instanceof k)throw new TypeError("Expected: Number");return new k({x:g.value,y:f.value,z:y.value})},LengthSq_function(t,n,a,l){var c;return new x(ze.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(ze.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(ze.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(ze.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new k(ze.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(ze.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(ze.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Cross_function(t,n,a,l,c,v){var h,d;return new k(ze.cross((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new k(ze.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}setupVector4Arithmetic(){this.vector4Semantics=qi.default.Vector4Arithmetic.createSemantics(),this.vector4Semantics.addOperation("visit()",{...He,AS_addition(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Rt(c)):l.accept(new nr(c))},AS_subtraction(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Et(c)):l.accept(new or(c))},MD_multiplication(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Mt(c)):l.accept(new ar(c))},MD_division(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Dt(c)):l.accept(new sr(c))},E_exponent(t,n,a){let l=t.visit(),c=a.visit();return!(l instanceof C)&&!(c instanceof C)?l.accept(new Pt(c)):l.accept(new ir(c))},P_parenthesis(t,n,a){return n.visit()},Vector4_parse(t,n,a,l,c,v,h,d,g,f){let y=a.visit(),R=c.visit(),_=h.visit(),O=g.visit();if(y instanceof C||R instanceof C||_ instanceof C||O instanceof C)throw new TypeError("Expected: Number");return new C({x:y.value,y:R.value,z:_.value,w:O.value})},LengthSq_function(t,n,a,l){var c;return new x(tt.magnitudeSqrt((c=a.visit())==null?void 0:c.value))},DistanceSq_function(t,n,a,l,c,v){var h,d;return new x(tt.distanceSq((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Length_function(t,n,a,l){var c;return new x(tt.magnitude((c=a.visit())==null?void 0:c.value))},Distance_function(t,n,a,l,c,v){var h,d;return new x(tt.distance((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Normalise_function(t,n,a,l){var c;return new C(tt.normalise((c=a.visit())==null?void 0:c.value))},Dot_function(t,n,a,l,c,v){var h,d;return new x(tt.dot((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},AngleBetween_function(t,n,a,l,c,v){var h,d;return new x(tt.angleBetween((h=a.visit())==null?void 0:h.value,(d=c.visit())==null?void 0:d.value))},Lerp_function(t,n,a,l,c,v,h,d){var g,f,y;return new C(tt.lerp((g=a.visit())==null?void 0:g.value,(f=c.visit())==null?void 0:f.value,(y=h.visit())==null?void 0:y.value))}})}tryParseVectorArithmetic(t){let n=qi.default.Vector4Arithmetic.match(t);if(n.succeeded())return this.vector4Semantics(n).visit();let a=Fi.default.Vector3Arithmetic.match(t);if(a.succeeded())return this.vector3Semantics(a).visit();let l=Ci.default.Vector2Arithmetic.match(t);if(l.succeeded())return this.vector2Semantics(l).visit()}enabled(){return F.getInstance().vectorArithmeticProvider.enabled}provide(t){try{return this.tryParseVectorArithmetic(t)}catch(n){W.error(n);return}}};var Ui=class{constructor(){this._debugMode=!1;this.providersMap=new Map,this.settings=F.getInstance(),this.registerCoreProviders()}registerProvider(e){this.providersMap.set(Sr(e.name),e)}provideFirst(e){let t=xr.get(e);if(t)return t;for(let[,n]of this.providersMap)try{if(!n.enabled())continue;let a=n.provide(e);if(a===void 0)continue;return n.cacheable?xr.set(e,[n,a]):[n,a]}catch(a){W.error(a);continue}}registerCoreProviders(){this.registerProvider(new jn),this.registerProvider(new Wn),this.registerProvider(new zn),this.registerProvider(new rs),this.registerProvider(new is),this.registerProvider(new Zn),this.registerProvider(new us),this.registerProvider(new $n)}},lr=new Ui;var cs=class extends X{constructor(){super(...arguments);this.variableAssignmentRegex=new RegExp(/^(:\w+)\s+=/);this.variableSubstitutionRegex=new RegExp(/(:\w+)/g);this.resultSubstitutionVisitor=new Qt;this.variableMap=new Map}execute(t,n){let a=n.match(this.variableAssignmentRegex);if(a){let l=a[1];n=this.assignVariable(l,n)}else n=this.substituteVariables(n);return n}assignVariable(t,n){let a=n.indexOf("=");if(a===-1)return n;let l=n.substring(a+1),c=this.substituteVariables(l);n=n.replace(l,c);let v=lr.provideFirst(c);if(v===void 0)return n;let[,h]=v;return this.variableMap.set(t,h),n}substituteVariables(t){return t.replace(this.variableSubstitutionRegex,n=>{let a=this.variableMap.get(n);return typeof a=="undefined"?n:this.resultSubstitutionVisitor.visit(a)})}reset(){this.variableMap.clear()}};var Bi=class extends X{execute(e,t){let n=F.getInstance(),[a]=e;return a.name!==Hn||n.arithmeticProvider.enabled===!1||n.engine.explicitMode===!1&&(t=`= ${t}`),t}},Oc=new Bi;var ur=class i extends Error{constructor(e){super(e||"The executed pipeline has a received an undefined value in the context."),this.name="UndefinedContextInPipelineError",Error.captureStackTrace(this,i)}};var Yi=class extends X{constructor(){super();this.debugMode=!0}execute(t,n){let[a,l]=t;if(a===void 0||l===void 0)throw new ur;return this.debugMode&&(n+=` [${a.name}]`),n}},Nc=new Yi;var Tc=me(Pr()),ps=class{constructor(){this.settings=F.getInstance()}visit(e){if(e instanceof x)return this.visitNumberResult(e);if(e instanceof N)return this.visitHexResult(e);if(e instanceof L)return this.visitPercentageResult(e);if(e instanceof ve)return this.visitDatetimeResult(e);if(e instanceof Ze)return this.visitStringResult(e);if(e instanceof te)return this.visitBigIntResult(e);if(e instanceof U)return this.visitVector2Result(e);if(e instanceof k)return this.visitVector3Result(e);if(e instanceof C)return this.visitVector4Result(e);if(e instanceof D)return this.visitUnitOfMeasurementResult(e);throw new T}visitNumberResult(e){let t=!1;return Number.isInteger(e.value)?t=this.settings.integerResult.enableSeperator:t=this.settings.floatResult.enableSeperator,wr(e.value,this.settings.floatResult.decimalPlaces,t,this.settings.numberResult.decimalSeparatorLocale).toString()}visitHexResult(e){let t=e.value<0,n=Math.abs(e.value).toString(16).toUpperCase().padStart(this.settings.hexResult.enablePadding?this.settings.hexResult.paddingZeros:0,"0");return t?`-0x${n}`:`0x${n}`}visitPercentageResult(e){return`${wr(e.value*100,this.settings.percentageResult.decimalPlaces,this.settings.percentageResult.enableSeperator,this.settings.numberResult.decimalSeparatorLocale)}%`}visitDatetimeResult(e){return e.value.format(this.settings.datetimeResult.format)}visitStringResult(e){return e.value}visitBigIntResult(e){switch(e.radix){case 2:return`0b${e.value.toString(e.radix)}`;case 10:return e.value.toString(e.radix);case 16:return`0x${e.value.toString(e.radix)}`.toUpperCase();default:return e.value.toString(e.radix)}}visitVector2Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n})`}visitVector3Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a})`}visitVector4Result(e){let t=e.value.x.toFixed(this.settings.floatResult.decimalPlaces),n=e.value.y.toFixed(this.settings.floatResult.decimalPlaces),a=e.value.z.toFixed(this.settings.floatResult.decimalPlaces),l=e.value.w.toFixed(this.settings.floatResult.decimalPlaces);return`(${t}, ${n}, ${a}, ${l})`}visitUnitOfMeasurementResult(e){let t=this.settings.unitOfMeasurementResult.decimalPlaces,n=Number.isInteger(e.value)?e.value:e.value.toFixed(t),a=e.unit;if(this.settings.unitOfMeasurementResult.unitNames){let l=(0,Tc.default)().describe(e.unit);a=Math.abs(e.value)>1?l.plural:l.singular}return`${n} ${a}`}};var Gi=class extends X{constructor(){super();this.formatVisitor=new ps}execute(t,n){let[,a]=t;if(a===void 0)throw new ur;return n=this.formatVisitor.visit(a),n}},Vc=new Gi;var Lc=require("@codemirror/language"),kc=require("@codemirror/state"),Cc=require("@codemirror/view");var Qf=!1,ms=class{constructor(e){this.ignoreNodeForMaskString=["Document","quote","list","HyperMD-list-line","math"];W.debug("[SolveViewPlugin] Constructer"),this.userSettings=F.getInstance(),this.previousResultSubstitutionStage=new An,this.variableProcessingStage=new cs,this.expressionProcesser=new Lt().addStage(Ha).addStage(Ba).addStage(Wa),this.expressionProcesserArray=new Lt().addStage(Ga),this.expressionProcesserFinal=new Lt().addStage(this.previousResultSubstitutionStage).addStage(this.variableProcessingStage).addStage(Ya).addStage(mu),this.resultProcessor=new Lt().addStage(Vc).addStage(Oc),this.decorations=this.buildDecorations(e)}update(e){(e.docChanged||e.viewportChanged)&&(it.emit(0,1),this.variableProcessingStage.reset(),this.decorations=this.buildDecorations(e.view),it.emit(0,0))}destroy(){W.debug("[SolveViewPlugin] Destroyed")}buildDecorations(e){let t=new kc.RangeSetBuilder,n=(0,Lc.syntaxTree)(e.state),a=e.visibleRanges,l=new Set,c=!0,v=0,h=0,d=!1;for(let{from:g,to:f}of a){let y=new Array;n.iterate({from:g,to:f,enter:O=>{if(this.isNodeIgnoredFromMask(O.type.name))return;c&&(c=!1,v=O.to,h=O.from);let K=O.from-v<=1;O.to<=v||K?(K&&(v=O.to),d=!0):(y.push([h,v]),h=O.from,v=O.to,d=!1)}}),d&&y.push([h,v]);let R=e.state.doc.iterRange(g,f),_=0;for(let O of R){let K=g+_,ee=e.state.doc.lineAt(K),ae=ee.text.trimStart(),At=ee.text.length-ae.length;if(ae=ae.trimEnd(),!ae||ae.length===0){_+=O.length;continue}if(l.has(ee.number)){_+=O.length;continue}if(this.isRangeInMask(y,ee.from,ee.to)){_+=O.length;continue}let je={lineNumber:ee.number,originalLineText:ae,isAllowedExplicitModeExpression:!1};ae=this.expressionProcesser.process(je,ae);let _t=this.expressionProcesserArray.process(je,[ae]);for(let _e=0;_e<_t.length;_e++){let cr=_t[_e];ae=this.expressionProcesserFinal.process(je,cr);let Se=this.provideDecoration(je,ae);if(Se)if(je.isInlineSolve&&je.inlineSolveIndices){let pr=ee.from+3+je.inlineSolveIndices[_e]+At+cr.length;t.add(pr,pr,Se)}else t.add(ee.to,ee.to,Se)}l.add(ee.number),_+=O.length}}return t.finish()}isNodeIgnoredFromMask(e){for(let t=0;t=l&&n<=c)return!0}return!1}provideDecoration(e,t){if(this.userSettings.engine.explicitMode&&!e.isAllowedExplicitModeExpression)return;let n=lr.provideFirst(t);if(n===void 0)return;let a=this.resultProcessor.process(n,""),l=t.trim(),c=a.startsWith("= ")?a.substring(2).trim():a.trim();if(l.toLowerCase()!==c.toLowerCase())return this.previousResultSubstitutionStage.setPreviousResult(n[1]),Qf&&(a=Nc.process(n,a)),Cc.Decoration.widget({widget:new wn(e,t,a),side:1})}};var Hi=(e=>(e.RegisterProvider="solve-register-provider",e))(Hi||{});var Fc={animate__bounce:"bounce",animate__flash:"flash",animate__pulse:"pulse",animate__rubberBand:"rubberBand",animate__shakeX:"shakeX",animate__shakeY:"shakeY",animate__headShake:"headShake",animate__swing:"swing",animate__tada:"tada",animate__wobble:"wobble",animate__jello:"jello",animate__heartBeat:"heartBeat",animate__backInDown:"backInDown",animate__backInLeft:"backInLeft",animate__backInRight:"backInRight",animate__backInUp:"backInUp",animate__bounceIn:"bounceIn",animate__bounceInDown:"bounceInDown",animate__bounceInLeft:"bounceInLeft",animate__bounceInRight:"bounceInRight",animate__bounceInUp:"bounceInUp",animate__fadeIn:"fadeIn",animate__fadeInDown:"fadeInDown",animate__fadeInDownBig:"fadeInDownBig",animate__fadeInLeft:"fadeInLeft",animate__fadeInLeftBig:"fadeInLeftBig",animate__fadeInRight:"fadeInRight",animate__fadeInRightBig:"fadeInRightBig",animate__fadeInUp:"fadeInUp",animate__fadeInUpBig:"fadeInUpBig",animate__fadeInTopLeft:"fadeInTopLeft",animate__fadeInTopRight:"fadeInTopRight",animate__fadeInBottomLeft:"fadeInBottomLeft",animate__fadeInBottomRight:"fadeInBottomRight",animate__flip:"flip",animate__flipInX:"flipInX",animate__flipInY:"flipInY",animate__lightSpeedInRight:"lightSpeedInRight",animate__lightSpeedInLeft:"lightSpeedInLeft",animate__rotateIn:"rotateIn",animate__rotateInDownLeft:"rotateInDownLeft",animate__rotateInDownRight:"rotateInDownRight",animate__rotateInUpLeft:"rotateInUpLeft",animate__rotateInUpRight:"rotateInUpRight",animate__jackInTheBox:"jackInTheBox",animate__rollIn:"rollIn",animate__zoomIn:"zoomIn",animate__zoomInDown:"zoomInDown",animate__zoomInLeft:"zoomInLeft",animate__zoomInRight:"zoomInRight",animate__zoomInUp:"zoomInUp",animate__slideInDown:"slideInDown",animate__slideInLeft:"slideInLeft",animate__slideInRight:"slideInRight",animate__slideInUp:"slideInUp"};var qc={"en-US":"English","de-DE":"Non English"};var A=require("obsidian"),vs=class extends A.PluginSettingTab{constructor(t,n){super(t,n);this.plugin=n}display(){this.containerEl.empty(),this.displayIntroduction(),this.displayEngineSettings(),this.displayInterfaceSettings(),this.displayInlineSolveSettings(),this.displayVariablesSettings(),this.displayProviderManagementSettings(),this.displayArithmeticProviderSettings(),this.displayDatetimeProviderSettings(),this.displayNumberSettings(),this.displayIntegerSettings(),this.displayFloatSettings(),this.displayPercentageSettings(),this.displayDatetimeSettings(),this.displayHexSettings(),this.displayUnitOfMeasurementSettings(),this.displayStyleSettings()}displayIntroduction(){new A.Setting(this.containerEl).setName("Introduction").setHeading(),new A.Setting(this.containerEl).setDesc("Solve is an unobtrusive Obsidian plugin that quietly processes equations and patterns in real time, inspired by NoteMaster's Smart Mode. With solid engineering at its core, Solve enhances note-taking without relying on ChatGPT. For instance, effortlessly calculates date and time expressions (e.g., 'Now + 20 days'), performs arithmetic (e.g., '10 + 5'), and more features are coming soon.")}displayEngineSettings(){new A.Setting(this.containerEl).setName("Engine").setHeading(),new A.Setting(this.containerEl).setName("Explicit mode").setDesc(`Solve will only display results for sentences ending with '=' sign. Default is ${b.engine.explicitMode}`).addToggle(t=>t.setValue(this.plugin.settings.engine.explicitMode).onChange(async n=>{this.plugin.settings.engine.explicitMode=n,await this.plugin.saveSettings()}))}displayInlineSolveSettings(){new A.Setting(this.containerEl).setName("Inline Solve").setHeading(),new A.Setting(this.containerEl).setName("Include expression when committing").setDesc(`Solve will include the expression in the format \`EXPRESSION = RESULT\` when committing e.g. '2 + 2 = 4'. Default is ${b.inlineSolve.includeExpressionOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeExpressionOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeExpressionOnCommit=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Include backticks when committing").setDesc(`Solve will enclose the committed expression in backticks when committing. Default is ${b.inlineSolve.includeBackticksOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeBackticksOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeBackticksOnCommit=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Include equals when committing").setDesc(`Solve will include the equals when committing. Has no effect if solve is set to include the expression. Default is ${b.inlineSolve.includeBackticksOnCommit}`).addToggle(t=>t.setValue(this.plugin.settings.inlineSolve.includeEqualsOnCommit).onChange(async n=>{this.plugin.settings.inlineSolve.includeEqualsOnCommit=n,await this.plugin.saveSettings()}))}displayVariablesSettings(){new A.Setting(this.containerEl).setName("Variable").setHeading(),new A.Setting(this.containerEl).setName("Show variable result").setDesc(`Solve will display results at the end of variables. Default is ${b.variable.renderResult}`).addToggle(t=>t.setValue(this.plugin.settings.variable.renderResult).onChange(async n=>{this.plugin.settings.variable.renderResult=n,await this.plugin.saveSettings()}))}displayProviderManagementSettings(){new A.Setting(this.containerEl).setName("Provider Management").setHeading(),new A.Setting(this.containerEl).setName("Arithmetic").setDesc(`Enable the arithmetic provider e.g. 10 + 2. Default is ${b.arithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.arithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.arithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Function Arithmetic").setDesc(`Enable the function arithmetic provider e.g. sin(), cos(). Default is ${b.functionArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.functionArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.functionArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Vector Arithmetic").setDesc(`Enable the vector arithmetic provider e.g. (10, 22.3), vec3(1.0, 23, 18.3). Default is ${b.vectorArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.vectorArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.vectorArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Percentage").setDesc(`Enable the percentage provider e.g. 10% of 200, increase 20 by 10%. Default is ${b.percentageArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.percentageArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.percentageArithmeticProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Datetime").setDesc(`Enable the datetime provider e.g. today + 20 days, last monday. Default is ${b.datetimeProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.datetimeProvider.enabled).onChange(async n=>{this.plugin.settings.datetimeProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Unit of Measurement").setDesc(`Enable the unit of measurement provider e.g. 10cm + 20, 200cm to m. Default is ${b.unitOfMeasurementProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.unitOfMeasurementProvider.enabled).onChange(async n=>{this.plugin.settings.unitOfMeasurementProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Dice").setDesc(`Enable the dice provider e.g. roll(1, 100), roll between 1 and 12. Default is ${b.diceProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.diceProvider.enabled).onChange(async n=>{this.plugin.settings.diceProvider.enabled=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Binary (BigInteger)").setDesc(`Enable the binary (BigInteger) provider e.g. 0b10101 >> 4, right shift. Default is ${b.bigIntegerArithmeticProvider.enabled}`).addToggle(t=>t.setValue(this.plugin.settings.bigIntegerArithmeticProvider.enabled).onChange(async n=>{this.plugin.settings.bigIntegerArithmeticProvider.enabled=n,await this.plugin.saveSettings()}))}displayInterfaceSettings(){new A.Setting(this.containerEl).setName("Interface").setHeading(),new A.Setting(this.containerEl).setName("Show result at end of line").setDesc(`Position results at the conclusion of lines, not text's termination. Be cautious when using this setting, as it may cause overlap between the displayed result and the text on the same line. Default is ${b.interface.renderResultEndOfLine}`).addToggle(t=>{let n=this.plugin.settings.interface.renderResultEndOfLine;t.setValue(n),n?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol"),t.onChange(async a=>{this.plugin.settings.interface.renderResultEndOfLine=a,a?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol"),await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Show status bar companion").setDesc(`Show the Solve companion in the status bar. Default is ${b.interface.showStatusBarCompanion}`).addToggle(t=>t.setValue(this.plugin.settings.interface.showStatusBarCompanion).onChange(async n=>{this.plugin.settings.interface.showStatusBarCompanion=n,n?this.plugin.setStatusBarCompanionVisibility(!0):this.plugin.setStatusBarCompanionVisibility(!1),await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Animate results").setDesc(`Enable animate results on the current active line that is being solved. Default is ${b.interface.animateResults}`).addToggle(t=>t.setValue(this.plugin.settings.interface.animateResults).onChange(async n=>{this.plugin.settings.interface.animateResults=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Animation transition").setDesc(`Specify the transition class name from Animate.css to use on animated results. Default is ${b.interface.animationClass.replace("animate__","")}`).addDropdown(t=>{let n=this.plugin.settings.interface.animationClass;t.addOptions(Fc),t.setValue(n),t.onChange(async a=>{this.plugin.settings.interface.animationClass=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Animation duration").setDesc(`Specify the animation duration (CSS format) to use for animated results. Default is ${b.interface.animationDuration}`).addText(t=>{let n=this.plugin.settings.interface.animationDuration;t.setValue(n),t.onChange(async a=>{this.plugin.settings.interface.animationDuration=a,await this.plugin.saveSettings()})})}displayArithmeticProviderSettings(){new A.Setting(this.containerEl).setName("Arithmetic Provider").setHeading(),new A.Setting(this.containerEl).setName("Show = before the result").setDesc(`Adds the equals sign before arithmetic results to improve the natural reading of expressions. Default is ${b.arithmeticProvider.renderEqualsBeforeResult}`).addToggle(t=>{let n=this.plugin.settings.arithmeticProvider.renderEqualsBeforeResult;t.setValue(n),t.onChange(async a=>{this.plugin.settings.arithmeticProvider.renderEqualsBeforeResult=a,await this.plugin.saveSettings()})})}displayDatetimeProviderSettings(){new A.Setting(this.containerEl).setName("Datetime Provider").setHeading(),new A.Setting(this.containerEl).setName("Parsing format").setDesc("Specify the format to be used for parsing datetime values.").addDropdown(t=>{let n=this.plugin.settings.datetimeProvider.parsingFormat;switch(t.addOptions({EU:"European DD/MM/YYYY",US:"American - MM/DD/YYYY"}),n){case 0:t.setValue("EU");break;case 1:t.setValue("US");break}t.onChange(async a=>{switch(a){case"EU":this.plugin.settings.datetimeProvider.parsingFormat=0;break;case"US":this.plugin.settings.datetimeProvider.parsingFormat=1;break}await this.plugin.saveSettings()})})}displayNumberSettings(){new A.Setting(this.containerEl).setName("Number Result (Shared)").setHeading(),new A.Setting(this.containerEl).setName("Decimal seperator").setDesc("Specify the seperator format to be used for decimals. Default is English").addDropdown(t=>{let n=this.plugin.settings.numberResult.decimalSeparatorLocale;t.addOptions(qc),t.setValue(n),t.onChange(async a=>{this.plugin.settings.numberResult.decimalSeparatorLocale=a,await this.plugin.saveSettings()})})}displayIntegerSettings(){new A.Setting(this.containerEl).setName("Integer Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to integer results. Default is ${b.integerResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.integerResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.integerResult.enableSeperator=a,await this.plugin.saveSettings()})})}displayFloatSettings(){new A.Setting(this.containerEl).setName("Float Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to float results. Default is ${b.floatResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.floatResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.floatResult.enableSeperator=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.floatResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.floatResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.floatResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayPercentageSettings(){new A.Setting(this.containerEl).setName("Percentage Result").setHeading(),new A.Setting(this.containerEl).setName("Display thousand separators").setDesc(`Adds thousand separators to percentage results. Default is ${b.percentageResult.enableSeperator}`).addToggle(t=>{let n=this.plugin.settings.percentageResult.enableSeperator;t.setValue(n),t.onChange(async a=>{this.plugin.settings.percentageResult.enableSeperator=a,await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.percentageResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.percentageResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.percentageResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayDatetimeSettings(){new A.Setting(this.containerEl).setName("Datetime Result").setHeading(),new A.Setting(this.containerEl).setName("Format").setDesc(`The format to use when displaying a date in the result. Default is ${b.datetimeResult.format}`).addMomentFormat(t=>t.setValue(this.plugin.settings.datetimeResult.format).onChange(async n=>{this.plugin.settings.datetimeResult.format=n,await this.plugin.saveSettings()}))}displayHexSettings(){new A.Setting(this.containerEl).setName("Hex Result").setHeading(),new A.Setting(this.containerEl).setName("Value padding").setDesc(`Enable or disable padding the start of hex values with zeros for consistency. Default is ${b.hexResult.enablePadding}`).addToggle(t=>t.setValue(this.plugin.settings.hexResult.enablePadding).onChange(async n=>{this.plugin.settings.hexResult.enablePadding=n,await this.plugin.saveSettings()})),new A.Setting(this.containerEl).setName("Padding zeros").setDesc(`Specify the number of leading zeros to pad hex values with for a uniform appearance. Default is ${b.hexResult.paddingZeros}`).addSlider(t=>{let n=this.plugin.settings.hexResult.paddingZeros;t.setLimits(0,32,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.hexResult.paddingZeros=a,t.showTooltip(),await this.plugin.saveSettings()})})}displayUnitOfMeasurementSettings(){new A.Setting(this.containerEl).setName("Unit of Measurement Result").setHeading(),new A.Setting(this.containerEl).setName("Decimal places").setDesc(`Adjust the number of decimal places, setting to reveal more digits for accuracy or fewer digits for simplicity in number displays. Default is ${b.unitOfMeasurementResult.decimalPlaces}`).addSlider(t=>{let n=this.plugin.settings.unitOfMeasurementResult.decimalPlaces;t.setLimits(0,17,1),t.setValue(n),t.sliderEl.addEventListener("mouseover",()=>{t.showTooltip()}),t.onChange(async a=>{this.plugin.settings.unitOfMeasurementResult.decimalPlaces=a,t.showTooltip(),await this.plugin.saveSettings()})}),new A.Setting(this.containerEl).setName("Show unit name").setDesc(`Show the unit name in the result instead of the unit abbreviation. Default is ${b.unitOfMeasurementResult.unitNames}`).addToggle(t=>t.setValue(this.plugin.settings.unitOfMeasurementResult.unitNames).onChange(async n=>{this.plugin.settings.unitOfMeasurementResult.unitNames=n,await this.plugin.saveSettings()}))}displayStyleSettings(){new A.Setting(this.containerEl).setName("Style").setHeading(),new A.Setting(this.containerEl).setDesc("The font family and font size settings are inherited from the Obsidian text font. For more advanced styling options, consider using the Style Settings plugin by @mgmeyers.")}};function Uc(i,e=-1){let t=i.filter(n=>n>e);return t.length===0?e:Math.min(...t)}function Bc(i,e,t,n=!0){return n?i.substring(0,e).trimEnd()+t+i.substring(e).trim():i.substring(0,e)+t+i.substring(e)}var Yc=require("@codemirror/view"),Tr=require("obsidian"),hs=class extends Tr.Plugin{async onload(){W.debug("[Solve] onload()"),await this.registerEvents(),await this.restoreUserSettings(),W.debug("[Solve] User Settings Restored"),await this.registerSettings(),W.debug("[Solve] Registered: Settings"),this.app.workspace.trigger("parse-style-settings"),W.debug("[Solve] Triggered Event: parse-style-setting"),this.registerEvent(this.app.workspace.on(Hi.SolveObsidianEvents,([t])=>{var n,a;W.debug("[Solve] Registered Custom Provider",t),t&&t.name&&t.name.length&&(lr.registerProvider(t),(a=(n=this.app.workspace.activeEditor)==null?void 0:n.editor)==null||a.refresh())})),W.debug("[Solve] Registered: Register Provider Event Listener"),await this.registerEditorExtensions(),W.debug("[Solve] Registered: Editor Extensions"),await this.addStatusBarCompanion(),W.debug("[Solve] Added: Status Bar Companion"),await this.registerCommands()}onunload(){W.debug("[Solve] onunload()"),it.removeAllListeners()}async saveSettings(){let t=this.settings.settings;W.debug("[Solve] Settings Saved",t),await this.saveData(t),xr.clear(),this.app.workspace.updateOptions()}async registerEvents(){it.on(0,this.onStatusBarUpdateEvent.bind(this)),it.on(1,this.onWriteResultEvent.bind(this))}async restoreUserSettings(){this.settings=F.getInstance();let t=await this.loadData();this.settings.updateSettings(Object.assign({},b,t)),await this.restoreFeatureFlags()}async registerSettings(){this.addSettingTab(new vs(this.app,this))}async registerEditorExtensions(){let t=await this.buildMarkdownEditorViewPlugin();this.registerEditorExtension(t)}async buildMarkdownEditorViewPlugin(){return Yc.ViewPlugin.fromClass(ms,{decorations:t=>t.decorations})}async restoreFeatureFlags(){this.settings.interface.renderResultEndOfLine?document.body.classList.add("osf--result-eol"):document.body.classList.remove("osf--result-eol")}async addStatusBarCompanion(){this.statusBarItemEl=this.addStatusBarItem(),this.settings.interface.showStatusBarCompanion||this.setStatusBarCompanionVisibility(!1),it.emit(0,0)}async registerCommands(){this.addCommand({id:"commit-result-current-line",name:"Commit result on current line",editorCallback(t,n){let a=t.getCursor("head").line+1,{containerEl:l}=t,c=l.querySelector(`#osr-${a}`);c?c.click():new Tr.Notice("Solve: Failed to commit, no result found on the current line.")}}),this.addCommand({id:"commit-result-all-visible",name:"Commit all visible results",editorCallback(t,n){let{containerEl:a}=t,l=a.querySelectorAll(".os-result");for(let c=0;cthis.statusBarItemEl.setText("Solve \u{1F634}"),700);break}}async onWriteResultEvent(t,n,a,l){var d,g,f,y;let c=Math.max(0,t-1),v=(g=(d=this.app.workspace.activeEditor)==null?void 0:d.editor)==null?void 0:g.getLine(c);if(typeof v=="undefined")return;let h=Uc([v.indexOf("#"),v.indexOf("//")]);if(h>-1)v=Bc(v,h,` ${a} `);else if(l){let R=this.settings.inlineSolve.includeEqualsOnCommit&&!this.settings.inlineSolve.includeExpressionOnCommit,_=a.toString();_=R?_:_.replace(/^= /,"");let O=this.settings.inlineSolve.includeExpressionOnCommit?`${n} = ${_}`:`${_}`;O=this.settings.inlineSolve.includeBackticksOnCommit?`\`${O}\``:O,v=v.replace(`s\`${n}\``,O)}else v=`${v==null?void 0:v.trimEnd()} ${a}`;(y=(f=this.app.workspace.activeEditor)==null?void 0:f.editor)==null||y.setLine(c,v)}}; +/*! Bundled license information: + +moment/moment.js: + (*! moment.js *) + (*! version : 2.29.4 *) + (*! authors : Tim Wood, Iskren Chernev, Moment.js contributors *) + (*! license : MIT *) + (*! momentjs.com *) +*/ + +/* nosourcemap */ \ No newline at end of file diff --git a/.obsidian/plugins/solve/manifest.json b/.obsidian/plugins/solve/manifest.json new file mode 100644 index 0000000..d466d2b --- /dev/null +++ b/.obsidian/plugins/solve/manifest.json @@ -0,0 +1,14 @@ +{ + "id": "solve", + "name": "Solve", + "version": "1.1.0", + "minAppVersion": "0.15.0", + "description": "Supercharge your notes with real-time calculations without AI fuss. From dates ('Now + 20 days'), percentages ('10% of 120'), units of measurement ('100cm + 2m'), arithmetic ('10 + 5') and more!", + "author": "Liam Riddell", + "authorUrl": "https://github.com/LiamRiddell", + "fundingUrl": { + "Buy Me a Coffee": "https://www.buymeacoffee.com/liamriddell", + "GitHub Sponser": "https://github.com/sponsors/LiamRiddell" + }, + "isDesktopOnly": false +} \ No newline at end of file diff --git a/.obsidian/plugins/solve/styles.css b/.obsidian/plugins/solve/styles.css new file mode 100644 index 0000000..8108a05 --- /dev/null +++ b/.obsidian/plugins/solve/styles.css @@ -0,0 +1,76 @@ +/* @settings +name: Solve +id: obsidian-solve +settings: + - + id: solve-result-margin + title: Margin + type: variable-text + default: 0 0 0 4px + - + id: solve-result-padding + title: Padding + type: variable-text + default: 0 0 0 4px + - + id: solve-result-text + title: Text Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#29ce99e8' + default-dark: '#29ce99e8' + - + id: solve-result-background + title: Background Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#22CE9900' + default-dark: '#22CE9900' + - + id: solve-result-border-color + title: Border Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#00000000' + default-dark: '#00000000' + - + id: solve-result-border-style + title: Border Style + type: variable-text + default: solid + - + id: solve-result-border-width + title: Border Width + type: variable-number + default: 0 + format: px + - + id: solve-result-border-radius + title: Border Radius + type: variable-number + default: 4 + format: px + - + id: solve-result-hover-underline-color + title: Text Underline Hover Color + type: variable-themed-color + opacity: true + format: hex + default-light: '#00000000' + default-dark: '#00000000' +*/ +@charset "UTF-8";:root{--animate-duration:1s;--animate-delay:1s;--animate-repeat:1}.animate__animated{-webkit-animation-duration:1s;animation-duration:1s;-webkit-animation-duration:var(--animate-duration);animation-duration:var(--animate-duration);-webkit-animation-fill-mode:both;animation-fill-mode:both}.animate__animated.animate__infinite{-webkit-animation-iteration-count:infinite;animation-iteration-count:infinite}.animate__animated.animate__repeat-1{-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-iteration-count:var(--animate-repeat);animation-iteration-count:var(--animate-repeat)}.animate__animated.animate__repeat-2{-webkit-animation-iteration-count:2;animation-iteration-count:2;-webkit-animation-iteration-count:calc(var(--animate-repeat)*2);animation-iteration-count:calc(var(--animate-repeat)*2)}.animate__animated.animate__repeat-3{-webkit-animation-iteration-count:3;animation-iteration-count:3;-webkit-animation-iteration-count:calc(var(--animate-repeat)*3);animation-iteration-count:calc(var(--animate-repeat)*3)}.animate__animated.animate__delay-1s{-webkit-animation-delay:1s;animation-delay:1s;-webkit-animation-delay:var(--animate-delay);animation-delay:var(--animate-delay)}.animate__animated.animate__delay-2s{-webkit-animation-delay:2s;animation-delay:2s;-webkit-animation-delay:calc(var(--animate-delay)*2);animation-delay:calc(var(--animate-delay)*2)}.animate__animated.animate__delay-3s{-webkit-animation-delay:3s;animation-delay:3s;-webkit-animation-delay:calc(var(--animate-delay)*3);animation-delay:calc(var(--animate-delay)*3)}.animate__animated.animate__delay-4s{-webkit-animation-delay:4s;animation-delay:4s;-webkit-animation-delay:calc(var(--animate-delay)*4);animation-delay:calc(var(--animate-delay)*4)}.animate__animated.animate__delay-5s{-webkit-animation-delay:5s;animation-delay:5s;-webkit-animation-delay:calc(var(--animate-delay)*5);animation-delay:calc(var(--animate-delay)*5)}.animate__animated.animate__faster{-webkit-animation-duration:.5s;animation-duration:.5s;-webkit-animation-duration:calc(var(--animate-duration)/2);animation-duration:calc(var(--animate-duration)/2)}.animate__animated.animate__fast{-webkit-animation-duration:.8s;animation-duration:.8s;-webkit-animation-duration:calc(var(--animate-duration)*.8);animation-duration:calc(var(--animate-duration)*.8)}.animate__animated.animate__slow{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2)}.animate__animated.animate__slower{-webkit-animation-duration:3s;animation-duration:3s;-webkit-animation-duration:calc(var(--animate-duration)*3);animation-duration:calc(var(--animate-duration)*3)}@media (prefers-reduced-motion:reduce),print{.animate__animated{-webkit-animation-duration:1ms!important;animation-duration:1ms!important;-webkit-transition-duration:1ms!important;transition-duration:1ms!important;-webkit-animation-iteration-count:1!important;animation-iteration-count:1!important}.animate__animated[class*=Out]{opacity:0}}@-webkit-keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}@keyframes bounce{0%,20%,53%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0);transform:translateZ(0)}40%,43%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-30px,0) scaleY(1.1);transform:translate3d(0,-30px,0) scaleY(1.1)}70%{-webkit-animation-timing-function:cubic-bezier(.755,.05,.855,.06);animation-timing-function:cubic-bezier(.755,.05,.855,.06);-webkit-transform:translate3d(0,-15px,0) scaleY(1.05);transform:translate3d(0,-15px,0) scaleY(1.05)}80%{-webkit-transition-timing-function:cubic-bezier(.215,.61,.355,1);transition-timing-function:cubic-bezier(.215,.61,.355,1);-webkit-transform:translateZ(0) scaleY(.95);transform:translateZ(0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-4px,0) scaleY(1.02);transform:translate3d(0,-4px,0) scaleY(1.02)}}.animate__bounce{-webkit-animation-name:bounce;animation-name:bounce;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}@keyframes flash{0%,50%,to{opacity:1}25%,75%{opacity:0}}.animate__flash{-webkit-animation-name:flash;animation-name:flash}@-webkit-keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes pulse{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}50%{-webkit-transform:scale3d(1.05,1.05,1.05);transform:scale3d(1.05,1.05,1.05)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__pulse{-webkit-animation-name:pulse;animation-name:pulse;-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes rubberBand{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}30%{-webkit-transform:scale3d(1.25,.75,1);transform:scale3d(1.25,.75,1)}40%{-webkit-transform:scale3d(.75,1.25,1);transform:scale3d(.75,1.25,1)}50%{-webkit-transform:scale3d(1.15,.85,1);transform:scale3d(1.15,.85,1)}65%{-webkit-transform:scale3d(.95,1.05,1);transform:scale3d(.95,1.05,1)}75%{-webkit-transform:scale3d(1.05,.95,1);transform:scale3d(1.05,.95,1)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__rubberBand{-webkit-animation-name:rubberBand;animation-name:rubberBand}@-webkit-keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}@keyframes shakeX{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(-10px,0,0);transform:translate3d(-10px,0,0)}20%,40%,60%,80%{-webkit-transform:translate3d(10px,0,0);transform:translate3d(10px,0,0)}}.animate__shakeX{-webkit-animation-name:shakeX;animation-name:shakeX}@-webkit-keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}@keyframes shakeY{0%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}10%,30%,50%,70%,90%{-webkit-transform:translate3d(0,-10px,0);transform:translate3d(0,-10px,0)}20%,40%,60%,80%{-webkit-transform:translate3d(0,10px,0);transform:translate3d(0,10px,0)}}.animate__shakeY{-webkit-animation-name:shakeY;animation-name:shakeY}@-webkit-keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}@keyframes headShake{0%{-webkit-transform:translateX(0);transform:translate(0)}6.5%{-webkit-transform:translateX(-6px) rotateY(-9deg);transform:translate(-6px) rotateY(-9deg)}18.5%{-webkit-transform:translateX(5px) rotateY(7deg);transform:translate(5px) rotateY(7deg)}31.5%{-webkit-transform:translateX(-3px) rotateY(-5deg);transform:translate(-3px) rotateY(-5deg)}43.5%{-webkit-transform:translateX(2px) rotateY(3deg);transform:translate(2px) rotateY(3deg)}50%{-webkit-transform:translateX(0);transform:translate(0)}}.animate__headShake{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;-webkit-animation-name:headShake;animation-name:headShake}@-webkit-keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}@keyframes swing{20%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}40%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}60%{-webkit-transform:rotate(5deg);transform:rotate(5deg)}80%{-webkit-transform:rotate(-5deg);transform:rotate(-5deg)}to{-webkit-transform:rotate(0deg);transform:rotate(0)}}.animate__swing{-webkit-transform-origin:top center;transform-origin:top center;-webkit-animation-name:swing;animation-name:swing}@-webkit-keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes tada{0%{-webkit-transform:scaleX(1);transform:scaleX(1)}10%,20%{-webkit-transform:scale3d(.9,.9,.9) rotate(-3deg);transform:scale3d(.9,.9,.9) rotate(-3deg)}30%,50%,70%,90%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(3deg);transform:scale3d(1.1,1.1,1.1) rotate(3deg)}40%,60%,80%{-webkit-transform:scale3d(1.1,1.1,1.1) rotate(-3deg);transform:scale3d(1.1,1.1,1.1) rotate(-3deg)}to{-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__tada{-webkit-animation-name:tada;animation-name:tada}@-webkit-keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes wobble{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}15%{-webkit-transform:translate3d(-25%,0,0) rotate(-5deg);transform:translate3d(-25%,0,0) rotate(-5deg)}30%{-webkit-transform:translate3d(20%,0,0) rotate(3deg);transform:translate3d(20%,0,0) rotate(3deg)}45%{-webkit-transform:translate3d(-15%,0,0) rotate(-3deg);transform:translate3d(-15%,0,0) rotate(-3deg)}60%{-webkit-transform:translate3d(10%,0,0) rotate(2deg);transform:translate3d(10%,0,0) rotate(2deg)}75%{-webkit-transform:translate3d(-5%,0,0) rotate(-1deg);transform:translate3d(-5%,0,0) rotate(-1deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__wobble{-webkit-animation-name:wobble;animation-name:wobble}@-webkit-keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}@keyframes jello{0%,11.1%,to{-webkit-transform:translateZ(0);transform:translateZ(0)}22.2%{-webkit-transform:skewX(-12.5deg) skewY(-12.5deg);transform:skew(-12.5deg) skewY(-12.5deg)}33.3%{-webkit-transform:skewX(6.25deg) skewY(6.25deg);transform:skew(6.25deg) skewY(6.25deg)}44.4%{-webkit-transform:skewX(-3.125deg) skewY(-3.125deg);transform:skew(-3.125deg) skewY(-3.125deg)}55.5%{-webkit-transform:skewX(1.5625deg) skewY(1.5625deg);transform:skew(1.5625deg) skewY(1.5625deg)}66.6%{-webkit-transform:skewX(-.78125deg) skewY(-.78125deg);transform:skew(-.78125deg) skewY(-.78125deg)}77.7%{-webkit-transform:skewX(.390625deg) skewY(.390625deg);transform:skew(.390625deg) skewY(.390625deg)}88.8%{-webkit-transform:skewX(-.1953125deg) skewY(-.1953125deg);transform:skew(-.1953125deg) skewY(-.1953125deg)}}.animate__jello{-webkit-animation-name:jello;animation-name:jello;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}@keyframes heartBeat{0%{-webkit-transform:scale(1);transform:scale(1)}14%{-webkit-transform:scale(1.3);transform:scale(1.3)}28%{-webkit-transform:scale(1);transform:scale(1)}42%{-webkit-transform:scale(1.3);transform:scale(1.3)}70%{-webkit-transform:scale(1);transform:scale(1)}}.animate__heartBeat{-webkit-animation-name:heartBeat;animation-name:heartBeat;-webkit-animation-duration:1.3s;animation-duration:1.3s;-webkit-animation-duration:calc(var(--animate-duration)*1.3);animation-duration:calc(var(--animate-duration)*1.3);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}@-webkit-keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInDown{0%{-webkit-transform:translateY(-1200px) scale(.7);transform:translateY(-1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInDown{-webkit-animation-name:backInDown;animation-name:backInDown}@-webkit-keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInLeft{0%{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInLeft{-webkit-animation-name:backInLeft;animation-name:backInLeft}@-webkit-keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInRight{0%{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}80%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInRight{-webkit-animation-name:backInRight;animation-name:backInRight}@-webkit-keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}@keyframes backInUp{0%{-webkit-transform:translateY(1200px) scale(.7);transform:translateY(1200px) scale(.7);opacity:.7}80%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}.animate__backInUp{-webkit-animation-name:backInUp;animation-name:backInUp}@-webkit-keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}@keyframes backOutDown{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(700px) scale(.7);transform:translateY(700px) scale(.7);opacity:.7}}.animate__backOutDown{-webkit-animation-name:backOutDown;animation-name:backOutDown}@-webkit-keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}@keyframes backOutLeft{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(-2000px) scale(.7);transform:translate(-2000px) scale(.7);opacity:.7}}.animate__backOutLeft{-webkit-animation-name:backOutLeft;animation-name:backOutLeft}@-webkit-keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}@keyframes backOutRight{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateX(0) scale(.7);transform:translate(0) scale(.7);opacity:.7}to{-webkit-transform:translateX(2000px) scale(.7);transform:translate(2000px) scale(.7);opacity:.7}}.animate__backOutRight{-webkit-animation-name:backOutRight;animation-name:backOutRight}@-webkit-keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}@keyframes backOutUp{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}20%{-webkit-transform:translateY(0) scale(.7);transform:translateY(0) scale(.7);opacity:.7}to{-webkit-transform:translateY(-700px) scale(.7);transform:translateY(-700px) scale(.7);opacity:.7}}.animate__backOutUp{-webkit-animation-name:backOutUp;animation-name:backOutUp}@-webkit-keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}@keyframes bounceIn{0%,20%,40%,60%,80%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}20%{-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}40%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}60%{opacity:1;-webkit-transform:scale3d(1.03,1.03,1.03);transform:scale3d(1.03,1.03,1.03)}80%{-webkit-transform:scale3d(.97,.97,.97);transform:scale3d(.97,.97,.97)}to{opacity:1;-webkit-transform:scaleX(1);transform:scaleX(1)}}.animate__bounceIn{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceIn;animation-name:bounceIn}@-webkit-keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInDown{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,-3000px,0) scaleY(3);transform:translate3d(0,-3000px,0) scaleY(3)}60%{opacity:1;-webkit-transform:translate3d(0,25px,0) scaleY(.9);transform:translate3d(0,25px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,-10px,0) scaleY(.95);transform:translate3d(0,-10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,5px,0) scaleY(.985);transform:translate3d(0,5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInDown{-webkit-animation-name:bounceInDown;animation-name:bounceInDown}@-webkit-keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInLeft{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(-3000px,0,0) scaleX(3);transform:translate3d(-3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(25px,0,0) scaleX(1);transform:translate3d(25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(-10px,0,0) scaleX(.98);transform:translate3d(-10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(5px,0,0) scaleX(.995);transform:translate3d(5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInLeft{-webkit-animation-name:bounceInLeft;animation-name:bounceInLeft}@-webkit-keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInRight{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(3000px,0,0) scaleX(3);transform:translate3d(3000px,0,0) scaleX(3)}60%{opacity:1;-webkit-transform:translate3d(-25px,0,0) scaleX(1);transform:translate3d(-25px,0,0) scaleX(1)}75%{-webkit-transform:translate3d(10px,0,0) scaleX(.98);transform:translate3d(10px,0,0) scaleX(.98)}90%{-webkit-transform:translate3d(-5px,0,0) scaleX(.995);transform:translate3d(-5px,0,0) scaleX(.995)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInRight{-webkit-animation-name:bounceInRight;animation-name:bounceInRight}@-webkit-keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes bounceInUp{0%,60%,75%,90%,to{-webkit-animation-timing-function:cubic-bezier(.215,.61,.355,1);animation-timing-function:cubic-bezier(.215,.61,.355,1)}0%{opacity:0;-webkit-transform:translate3d(0,3000px,0) scaleY(5);transform:translate3d(0,3000px,0) scaleY(5)}60%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}75%{-webkit-transform:translate3d(0,10px,0) scaleY(.95);transform:translate3d(0,10px,0) scaleY(.95)}90%{-webkit-transform:translate3d(0,-5px,0) scaleY(.985);transform:translate3d(0,-5px,0) scaleY(.985)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__bounceInUp{-webkit-animation-name:bounceInUp;animation-name:bounceInUp}@-webkit-keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}@keyframes bounceOut{20%{-webkit-transform:scale3d(.9,.9,.9);transform:scale3d(.9,.9,.9)}50%,55%{opacity:1;-webkit-transform:scale3d(1.1,1.1,1.1);transform:scale3d(1.1,1.1,1.1)}to{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}}.animate__bounceOut{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:bounceOut;animation-name:bounceOut}@-webkit-keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}@keyframes bounceOutDown{20%{-webkit-transform:translate3d(0,10px,0) scaleY(.985);transform:translate3d(0,10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,-20px,0) scaleY(.9);transform:translate3d(0,-20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,2000px,0) scaleY(3);transform:translate3d(0,2000px,0) scaleY(3)}}.animate__bounceOutDown{-webkit-animation-name:bounceOutDown;animation-name:bounceOutDown}@-webkit-keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}@keyframes bounceOutLeft{20%{opacity:1;-webkit-transform:translate3d(20px,0,0) scaleX(.9);transform:translate3d(20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0) scaleX(2);transform:translate3d(-2000px,0,0) scaleX(2)}}.animate__bounceOutLeft{-webkit-animation-name:bounceOutLeft;animation-name:bounceOutLeft}@-webkit-keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}@keyframes bounceOutRight{20%{opacity:1;-webkit-transform:translate3d(-20px,0,0) scaleX(.9);transform:translate3d(-20px,0,0) scaleX(.9)}to{opacity:0;-webkit-transform:translate3d(2000px,0,0) scaleX(2);transform:translate3d(2000px,0,0) scaleX(2)}}.animate__bounceOutRight{-webkit-animation-name:bounceOutRight;animation-name:bounceOutRight}@-webkit-keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}@keyframes bounceOutUp{20%{-webkit-transform:translate3d(0,-10px,0) scaleY(.985);transform:translate3d(0,-10px,0) scaleY(.985)}40%,45%{opacity:1;-webkit-transform:translate3d(0,20px,0) scaleY(.9);transform:translate3d(0,20px,0) scaleY(.9)}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0) scaleY(3);transform:translate3d(0,-2000px,0) scaleY(3)}}.animate__bounceOutUp{-webkit-animation-name:bounceOutUp;animation-name:bounceOutUp}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate__fadeIn{-webkit-animation-name:fadeIn;animation-name:fadeIn}@-webkit-keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDown{0%{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDown{-webkit-animation-name:fadeInDown;animation-name:fadeInDown}@-webkit-keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInDownBig{0%{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInDownBig{-webkit-animation-name:fadeInDownBig;animation-name:fadeInDownBig}@-webkit-keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeft{-webkit-animation-name:fadeInLeft;animation-name:fadeInLeft}@-webkit-keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInLeftBig{0%{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInLeftBig{-webkit-animation-name:fadeInLeftBig;animation-name:fadeInLeftBig}@-webkit-keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRight{0%{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRight{-webkit-animation-name:fadeInRight;animation-name:fadeInRight}@-webkit-keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInRightBig{0%{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInRightBig{-webkit-animation-name:fadeInRightBig;animation-name:fadeInRightBig}@-webkit-keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUp{0%{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUp{-webkit-animation-name:fadeInUp;animation-name:fadeInUp}@-webkit-keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInUpBig{0%{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInUpBig{-webkit-animation-name:fadeInUpBig;animation-name:fadeInUpBig}@-webkit-keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopLeft{-webkit-animation-name:fadeInTopLeft;animation-name:fadeInTopLeft}@-webkit-keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInTopRight{0%{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInTopRight{-webkit-animation-name:fadeInTopRight;animation-name:fadeInTopRight}@-webkit-keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomLeft{0%{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomLeft{-webkit-animation-name:fadeInBottomLeft;animation-name:fadeInBottomLeft}@-webkit-keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes fadeInBottomRight{0%{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__fadeInBottomRight{-webkit-animation-name:fadeInBottomRight;animation-name:fadeInBottomRight}@-webkit-keyframes fadeOut{0%{opacity:1}to{opacity:0}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.animate__fadeOut{-webkit-animation-name:fadeOut;animation-name:fadeOut}@-webkit-keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes fadeOutDown{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__fadeOutDown{-webkit-animation-name:fadeOutDown;animation-name:fadeOutDown}@-webkit-keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}@keyframes fadeOutDownBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,2000px,0);transform:translate3d(0,2000px,0)}}.animate__fadeOutDownBig{-webkit-animation-name:fadeOutDownBig;animation-name:fadeOutDownBig}@-webkit-keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes fadeOutLeft{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__fadeOutLeft{-webkit-animation-name:fadeOutLeft;animation-name:fadeOutLeft}@-webkit-keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}@keyframes fadeOutLeftBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(-2000px,0,0);transform:translate3d(-2000px,0,0)}}.animate__fadeOutLeftBig{-webkit-animation-name:fadeOutLeftBig;animation-name:fadeOutLeftBig}@-webkit-keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes fadeOutRight{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__fadeOutRight{-webkit-animation-name:fadeOutRight;animation-name:fadeOutRight}@-webkit-keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}@keyframes fadeOutRightBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(2000px,0,0);transform:translate3d(2000px,0,0)}}.animate__fadeOutRightBig{-webkit-animation-name:fadeOutRightBig;animation-name:fadeOutRightBig}@-webkit-keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes fadeOutUp{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__fadeOutUp{-webkit-animation-name:fadeOutUp;animation-name:fadeOutUp}@-webkit-keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}@keyframes fadeOutUpBig{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(0,-2000px,0);transform:translate3d(0,-2000px,0)}}.animate__fadeOutUpBig{-webkit-animation-name:fadeOutUpBig;animation-name:fadeOutUpBig}@-webkit-keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}@keyframes fadeOutTopLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,-100%,0);transform:translate3d(-100%,-100%,0)}}.animate__fadeOutTopLeft{-webkit-animation-name:fadeOutTopLeft;animation-name:fadeOutTopLeft}@-webkit-keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}@keyframes fadeOutTopRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,-100%,0);transform:translate3d(100%,-100%,0)}}.animate__fadeOutTopRight{-webkit-animation-name:fadeOutTopRight;animation-name:fadeOutTopRight}@-webkit-keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}@keyframes fadeOutBottomRight{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(100%,100%,0);transform:translate3d(100%,100%,0)}}.animate__fadeOutBottomRight{-webkit-animation-name:fadeOutBottomRight;animation-name:fadeOutBottomRight}@-webkit-keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}@keyframes fadeOutBottomLeft{0%{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}to{opacity:0;-webkit-transform:translate3d(-100%,100%,0);transform:translate3d(-100%,100%,0)}}.animate__fadeOutBottomLeft{-webkit-animation-name:fadeOutBottomLeft;animation-name:fadeOutBottomLeft}@-webkit-keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}@keyframes flip{0%{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(-1turn);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}40%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-190deg);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}50%{-webkit-transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);transform:perspective(400px) scaleX(1) translateZ(150px) rotateY(-170deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}80%{-webkit-transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0deg);transform:perspective(400px) scale3d(.95,.95,.95) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}to{-webkit-transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0deg);transform:perspective(400px) scaleX(1) translateZ(0) rotateY(0);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}}.animate__animated.animate__flip{-webkit-backface-visibility:visible;backface-visibility:visible;-webkit-animation-name:flip;animation-name:flip}@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInX{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInX;animation-name:flipInX}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}.animate__flipInY{-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipInY;animation-name:flipInY}@-webkit-keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}@keyframes flipOutX{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);opacity:1}to{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);opacity:0}}.animate__flipOutX{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-animation-name:flipOutX;animation-name:flipOutX;-webkit-backface-visibility:visible!important;backface-visibility:visible!important}@-webkit-keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}@keyframes flipOutY{0%{-webkit-transform:perspective(400px);transform:perspective(400px)}30%{-webkit-transform:perspective(400px) rotateY(-15deg);transform:perspective(400px) rotateY(-15deg);opacity:1}to{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);opacity:0}}.animate__flipOutY{-webkit-animation-duration:.75s;animation-duration:.75s;-webkit-animation-duration:calc(var(--animate-duration)*.75);animation-duration:calc(var(--animate-duration)*.75);-webkit-backface-visibility:visible!important;backface-visibility:visible!important;-webkit-animation-name:flipOutY;animation-name:flipOutY}@-webkit-keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInRight{0%{-webkit-transform:translate3d(100%,0,0) skewX(-30deg);transform:translate3d(100%,0,0) skew(-30deg);opacity:0}60%{-webkit-transform:skewX(20deg);transform:skew(20deg);opacity:1}80%{-webkit-transform:skewX(-5deg);transform:skew(-5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInRight{-webkit-animation-name:lightSpeedInRight;animation-name:lightSpeedInRight;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes lightSpeedInLeft{0%{-webkit-transform:translate3d(-100%,0,0) skewX(30deg);transform:translate3d(-100%,0,0) skew(30deg);opacity:0}60%{-webkit-transform:skewX(-20deg);transform:skew(-20deg);opacity:1}80%{-webkit-transform:skewX(5deg);transform:skew(5deg)}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__lightSpeedInLeft{-webkit-animation-name:lightSpeedInLeft;animation-name:lightSpeedInLeft;-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}@-webkit-keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}@keyframes lightSpeedOutRight{0%{opacity:1}to{-webkit-transform:translate3d(100%,0,0) skewX(30deg);transform:translate3d(100%,0,0) skew(30deg);opacity:0}}.animate__lightSpeedOutRight{-webkit-animation-name:lightSpeedOutRight;animation-name:lightSpeedOutRight;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}@keyframes lightSpeedOutLeft{0%{opacity:1}to{-webkit-transform:translate3d(-100%,0,0) skewX(-30deg);transform:translate3d(-100%,0,0) skew(-30deg);opacity:0}}.animate__lightSpeedOutLeft{-webkit-animation-name:lightSpeedOutLeft;animation-name:lightSpeedOutLeft;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}@-webkit-keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateIn{0%{-webkit-transform:rotate(-200deg);transform:rotate(-200deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateIn{-webkit-animation-name:rotateIn;animation-name:rotateIn;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownLeft{0%{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownLeft{-webkit-animation-name:rotateInDownLeft;animation-name:rotateInDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInDownRight{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInDownRight{-webkit-animation-name:rotateInDownRight;animation-name:rotateInDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpLeft{0%{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpLeft{-webkit-animation-name:rotateInUpLeft;animation-name:rotateInUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}@keyframes rotateInUpRight{0%{-webkit-transform:rotate(-90deg);transform:rotate(-90deg);opacity:0}to{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}}.animate__rotateInUpRight{-webkit-animation-name:rotateInUpRight;animation-name:rotateInUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}@keyframes rotateOut{0%{opacity:1}to{-webkit-transform:rotate(200deg);transform:rotate(200deg);opacity:0}}.animate__rotateOut{-webkit-animation-name:rotateOut;animation-name:rotateOut;-webkit-transform-origin:center;transform-origin:center}@-webkit-keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}@keyframes rotateOutDownLeft{0%{opacity:1}to{-webkit-transform:rotate(45deg);transform:rotate(45deg);opacity:0}}.animate__rotateOutDownLeft{-webkit-animation-name:rotateOutDownLeft;animation-name:rotateOutDownLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutDownRight{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutDownRight{-webkit-animation-name:rotateOutDownRight;animation-name:rotateOutDownRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}@keyframes rotateOutUpLeft{0%{opacity:1}to{-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:0}}.animate__rotateOutUpLeft{-webkit-animation-name:rotateOutUpLeft;animation-name:rotateOutUpLeft;-webkit-transform-origin:left bottom;transform-origin:left bottom}@-webkit-keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}@keyframes rotateOutUpRight{0%{opacity:1}to{-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:0}}.animate__rotateOutUpRight{-webkit-animation-name:rotateOutUpRight;animation-name:rotateOutUpRight;-webkit-transform-origin:right bottom;transform-origin:right bottom}@-webkit-keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}@keyframes hinge{0%{-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}20%,60%{-webkit-transform:rotate(80deg);transform:rotate(80deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}40%,80%{-webkit-transform:rotate(60deg);transform:rotate(60deg);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out;opacity:1}to{-webkit-transform:translate3d(0,700px,0);transform:translate3d(0,700px,0);opacity:0}}.animate__hinge{-webkit-animation-duration:2s;animation-duration:2s;-webkit-animation-duration:calc(var(--animate-duration)*2);animation-duration:calc(var(--animate-duration)*2);-webkit-animation-name:hinge;animation-name:hinge;-webkit-transform-origin:top left;transform-origin:top left}@-webkit-keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes jackInTheBox{0%{opacity:0;-webkit-transform:scale(.1) rotate(30deg);transform:scale(.1) rotate(30deg);-webkit-transform-origin:center bottom;transform-origin:center bottom}50%{-webkit-transform:rotate(-10deg);transform:rotate(-10deg)}70%{-webkit-transform:rotate(3deg);transform:rotate(3deg)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}.animate__jackInTheBox{-webkit-animation-name:jackInTheBox;animation-name:jackInTheBox}@-webkit-keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes rollIn{0%{opacity:0;-webkit-transform:translate3d(-100%,0,0) rotate(-120deg);transform:translate3d(-100%,0,0) rotate(-120deg)}to{opacity:1;-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__rollIn{-webkit-animation-name:rollIn;animation-name:rollIn}@-webkit-keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}@keyframes rollOut{0%{opacity:1}to{opacity:0;-webkit-transform:translate3d(100%,0,0) rotate(120deg);transform:translate3d(100%,0,0) rotate(120deg)}}.animate__rollOut{-webkit-animation-name:rollOut;animation-name:rollOut}@-webkit-keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}@keyframes zoomIn{0%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}50%{opacity:1}}.animate__zoomIn{-webkit-animation-name:zoomIn;animation-name:zoomIn}@-webkit-keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInDown{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInDown{-webkit-animation-name:zoomInDown;animation-name:zoomInDown}@-webkit-keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInLeft{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(-1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(10px,0,0);transform:scale3d(.475,.475,.475) translate3d(10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInLeft{-webkit-animation-name:zoomInLeft;animation-name:zoomInLeft}@-webkit-keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInRight{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);transform:scale3d(.1,.1,.1) translate3d(1000px,0,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);transform:scale3d(.475,.475,.475) translate3d(-10px,0,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInRight{-webkit-animation-name:zoomInRight;animation-name:zoomInRight}@-webkit-keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomInUp{0%{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);transform:scale3d(.1,.1,.1) translate3d(0,1000px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}60%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomInUp{-webkit-animation-name:zoomInUp;animation-name:zoomInUp}@-webkit-keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}@keyframes zoomOut{0%{opacity:1}50%{opacity:0;-webkit-transform:scale3d(.3,.3,.3);transform:scale3d(.3,.3,.3)}to{opacity:0}}.animate__zoomOut{-webkit-animation-name:zoomOut;animation-name:zoomOut}@-webkit-keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutDown{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);transform:scale3d(.475,.475,.475) translate3d(0,-60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutDown{-webkit-animation-name:zoomOutDown;animation-name:zoomOutDown;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}@keyframes zoomOutLeft{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(42px,0,0);transform:scale3d(.475,.475,.475) translate3d(42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(-2000px,0,0);transform:scale(.1) translate3d(-2000px,0,0)}}.animate__zoomOutLeft{-webkit-animation-name:zoomOutLeft;animation-name:zoomOutLeft;-webkit-transform-origin:left center;transform-origin:left center}@-webkit-keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}@keyframes zoomOutRight{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(-42px,0,0);transform:scale3d(.475,.475,.475) translate3d(-42px,0,0)}to{opacity:0;-webkit-transform:scale(.1) translate3d(2000px,0,0);transform:scale(.1) translate3d(2000px,0,0)}}.animate__zoomOutRight{-webkit-animation-name:zoomOutRight;animation-name:zoomOutRight;-webkit-transform-origin:right center;transform-origin:right center}@-webkit-keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}@keyframes zoomOutUp{40%{opacity:1;-webkit-transform:scale3d(.475,.475,.475) translate3d(0,60px,0);transform:scale3d(.475,.475,.475) translate3d(0,60px,0);-webkit-animation-timing-function:cubic-bezier(.55,.055,.675,.19);animation-timing-function:cubic-bezier(.55,.055,.675,.19)}to{opacity:0;-webkit-transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);transform:scale3d(.1,.1,.1) translate3d(0,-2000px,0);-webkit-animation-timing-function:cubic-bezier(.175,.885,.32,1);animation-timing-function:cubic-bezier(.175,.885,.32,1)}}.animate__zoomOutUp{-webkit-animation-name:zoomOutUp;animation-name:zoomOutUp;-webkit-transform-origin:center bottom;transform-origin:center bottom}@-webkit-keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInDown{0%{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInDown{-webkit-animation-name:slideInDown;animation-name:slideInDown}@-webkit-keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInLeft{0%{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInLeft{-webkit-animation-name:slideInLeft;animation-name:slideInLeft}@-webkit-keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInRight{0%{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInRight{-webkit-animation-name:slideInRight;animation-name:slideInRight}@-webkit-keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}@keyframes slideInUp{0%{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);visibility:visible}to{-webkit-transform:translateZ(0);transform:translateZ(0)}}.animate__slideInUp{-webkit-animation-name:slideInUp;animation-name:slideInUp}@-webkit-keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}@keyframes slideOutDown{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}}.animate__slideOutDown{-webkit-animation-name:slideOutDown;animation-name:slideOutDown}@-webkit-keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}@keyframes slideOutLeft{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.animate__slideOutLeft{-webkit-animation-name:slideOutLeft;animation-name:slideOutLeft}@-webkit-keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}@keyframes slideOutRight{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.animate__slideOutRight{-webkit-animation-name:slideOutRight;animation-name:slideOutRight}@-webkit-keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}@keyframes slideOutUp{0%{-webkit-transform:translateZ(0);transform:translateZ(0)}to{visibility:hidden;-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}}.animate__slideOutUp{-webkit-animation-name:slideOutUp;animation-name:slideOutUp}.os--beta-tag :after{content:"BETA";font-size:var(--font-ui-smaller);font-weight:var(--font-semibold);vertical-align:top;background-color:var(--interactive-accent);margin-left:8px;height:20px;width:34px;display:inline-flex;justify-content:center;align-items:center;border-radius:var(--radius-s)}.osf--result-eol .os-result{position:absolute;right:0}.os-result{display:inline-flex;margin:var(--solve-result-margin, 0 0 0 4px);padding:var(--solve-result-padding, 0 0 0 4px);line-height:var(--line-height-normal);color:var(--solve-result-text, #29ce99e8);background-color:var(--solve-result-background, #22ce9900);font-family:var(--font-text);font-size:var(--font-text-size, 16px);border-color:var(--solve-result-border-color, transparent);border-style:var(--solve-result-border-style, solid);border-width:var(--solve-result-border-width, 0);border-radius:var(--solve-result-border-radius, 4px);text-decoration:dotted;text-decoration-line:underline;text-underline-offset:2px;text-decoration-color:transparent;transition:all .15s;-webkit-font-smoothing:antialiased;backface-visibility:hidden;transform:translateZ(0)}.os-result:hover{cursor:pointer;text-decoration-color:var( --solve-result-hover-underline-color, currentColor )} +/*! Bundled license information: + +animate.css/animate.min.css: + (*! + * animate.css - https://animate.style/ + * Version - 4.1.1 + * Licensed under the MIT license - http://opensource.org/licenses/MIT + * + * Copyright (c) 2020 Animate.css + *) +*/ diff --git a/.obsidian/workspace.json b/.obsidian/workspace.json index 3cb4d20..bc4967a 100644 --- a/.obsidian/workspace.json +++ b/.obsidian/workspace.json @@ -4,67 +4,49 @@ "type": "split", "children": [ { - "id": "06a172e6fdedfbf5", + "id": "8d35ee3dbc1e7652", "type": "tabs", "children": [ { - "id": "46cbecdfd83b10e4", + "id": "db16746106a49cac", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md", + "file": "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md", "mode": "source", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "Test - Fatto su Maselli - 06-05-2025" + "title": "Mapping Divider" } }, { - "id": "5964c169ed489ae8", + "id": "5db613eb1ce999fb", "type": "leaf", "state": { - "type": "markdown", + "type": "excalidraw", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md", - "mode": "source", - "source": false, - "backlinks": false + "file": "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md" }, - "icon": "lucide-file", - "title": "Hardware used for 485-TCP" + "icon": "excalidraw-icon", + "title": "Layout - Anello-Ring" } }, { - "id": "e1a87a8e25c39351", + "id": "075404432f3ecddb", "type": "leaf", "state": { "type": "markdown", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "mode": "source", + "file": "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md", + "mode": "preview", "source": false, "backlinks": false }, "icon": "lucide-file", - "title": "FB2120 - MasseliTCP Read - v1.8" - } - }, - { - "id": "2bc2280b9c18e51a", - "type": "leaf", - "state": { - "type": "markdown", - "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "mode": "source", - "source": false, - "backlinks": false - }, - "icon": "lucide-file", - "title": "FB2120 - MasseliTCP Read - v1.8" + "title": "PLC IO Tags" } } ], @@ -135,7 +117,8 @@ } ], "direction": "horizontal", - "width": 286.5 + "width": 286.5, + "collapsed": true }, "right": { "id": "403186784ae0fd88", @@ -151,7 +134,7 @@ "state": { "type": "backlink", "state": { - "file": "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", + "file": "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", "collapseAll": false, "extraContext": false, "sortOrder": "alphabetical", @@ -161,7 +144,7 @@ "unlinkedCollapsed": true }, "icon": "links-coming-in", - "title": "Backlinks for FB2120 - MasseliTCP Read - v1.8" + "title": "Backlinks for Backups - Mikrotik" } }, { @@ -233,7 +216,8 @@ "title": "Copilot" } } - ] + ], + "currentTab": 4 } ], "direction": "horizontal", @@ -262,39 +246,44 @@ "obsidian-importer:Open Importer": false } }, - "active": "e1a87a8e25c39351", + "active": "075404432f3ecddb", "lastOpenFiles": [ - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - Descrizzione Software - v1.8.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Hardware used for 485-TCP.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/FB2120 - MasseliTCP Read - v1.8.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/Untitled.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled/doc1.3.md", + "01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md", + "01-Documentation/Dispositivos - Manuales/Mouse", + "03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md", + "03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md", + "01-Documentation/Windows/SysInternals Tools - WinInternals.md", + "03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md", + "01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md", + "03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md", + "03-VM/44 - 98050 - Fiera/IO", + "03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md", + "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md", + "03-VM/44 - 98050 - Fiera/98050_Hardware.md", + "01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md", + "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md", + "03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Export_Hardware_Tree.md", + "03-VM/44 - 98050 - Fiera/98050_PLC_01_CAx_Summary.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md", + "01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md", + "01-Documentation/Python/Scripts Python/Calc/Untitled 1.md", + "01-Documentation/Python/Scripts Python/Untitled.md", + "01-Documentation/Python/Scripts Python/Miniconda Como hacer un backup completo de un entorno creado con Miniconda.md", + "01-Documentation/Python/Scripts Python/Calc", + "01-Documentation/Python/Scripts Python/Group Scripts Manager.md", + "03-VM/41 - 94154 - Update Multilane Table/Notes - Update Multilane Table.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Backups - Mikrotik.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md", + "01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Setup Commands for Layer 2 Wi-Fi Bridge.md", + "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md", + "03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png", + "03-VM/44 - 98050 - Fiera/adjuntos", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095111.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250530095053.png", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Versiones.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled 1.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/Untitled.md", - "01-Documentation/Siemens/PLC Siemens/S7-300 - TCON - TRCV.md", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221344.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250529221334.png", - "01-Documentation/Dispositivos - Manuales/Maselli/Maselli - ADAM - Protocol.md", - "03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md", - "03-VM/44 - 98050 - Fiera/Untitled.md", - "01-Documentation/Dockers/Install Docker on Ubuntu.md", - "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time - FB1.md", - "04-SIDEL/03 - 5.007382-EXMU01UF - RVU008 - EQPT24731/5.007382-EXMU01UF - RVU008 - EQPT24731 - Initial Data.md", - "03-VM/9..... MASTER Transport/Standard Transport/OB30 Calculation.md", - "03-VM/9..... MASTER Transport/Standard Transport/FB Scan Time OB1 - FB4.md", - "01-Documentation/Dockers/Docker Basics - Essential Commands and Usage Guide.md", - "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/Waveshare RS232-485 Ethernet - Wifi - ADAM 4021 - Using Serial200.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/DAR Description - DIET AS REGULAR - SAE452 San Giorgio in Bosco.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Test - Fatto su Maselli - 06-05-2025.md", - "01-Documentation/GIT - GitHub/GIT commands HELP.md", - "01-Documentation/GIT - GitHub/Notes - Git - Gitea.md", - "01-Documentation/GIT - GitHub/Git - Start New Repository with Visual Studio Code - VS Code.md", - "01-Documentation/GIT - GitHub/GitHub Privacy.md", - "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/Documentation/Visit to Maselli 06-05-2025.md", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos/Pasted image 20250526165501.png", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP/adjuntos", "04-SIDEL/09 - SAE452 - Diet as Regular - San Giovanni in Bosco/FB2120 - MasseliTCP", @@ -304,12 +293,7 @@ "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi/adjuntos", "01-Documentation/Dispositivos - Manuales/Waveshare RS232-485 Ethernet - Wifi", "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos/Pasted image 20250523122236.png", - "01-Documentation/Dispositivos - Manuales/adjuntos/Pasted image 20250522183148.png", "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/adjuntos", - "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com/Untitled", - "01-Documentation/Dispositivos - Manuales/COM - Virtual COM com0com", - "01-Documentation/Python/Scripts Python/XML to SCL Siemens", - "04-SIDEL/13 - E5.007560 - Modifica O&U - SAE235", "03-Revised/93789 Sipa Italia - Tinny - HSCounters - Piattaforma/Divider/Untitled.canvas", "04-InLavoro/9..... MASTER Transport/Standard Transport/FB500 Logic.canvas", "04-InLavoro/HENKEL/93040 - HENKEL - BowlingGreen/TL22-L25/Synoptic Change/Q3.canvas", diff --git a/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md b/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md index 114dfb3..b31d806 100644 --- a/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md +++ b/01-Documentation/AI - IA - LLM - Artificial Intelligence/AI Prompts useful.md @@ -301,4 +301,14 @@ Al final del documento, crea una sección titulada "## Excepciones y Problemas" Quiero crer una aplicacion .net 8 en C# WPF que use modelo MVVM con los siguientes nugets si son necesarios CommunityToolkit.Mvvm, Ookii.Dialogs.Wpf, NewtonSoft.Json, Extended.Wpf.Toolkit. +``` + + +#### Para mapear IO de device sobre IO de PLC + +Hacer OCR desde el esquema eléctrico para las IO del PLC +Exportar tags dese Tia Portal y convertirlas con 3:Convertir Excel Tags a Markdown + +``` +Quisiera que me ayudes a adaptar los tags de Device IO Tags a los IO reales del PLC PLC IO Tags usando solo los comentarios ya que no tengo otra informacion. Por favor indicar el nivel de seguridad y si el nivel de seguridad es mas bajo de 70% no adaptar. La tabla resultante deberia ser Device IO Tags con las direcciones del PLC IO Tags. ``` \ No newline at end of file diff --git a/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md b/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md new file mode 100644 index 0000000..f3161be --- /dev/null +++ b/01-Documentation/Dispositivos - Manuales/Mouse/Problem with drag&drop or Left Click.md @@ -0,0 +1,20 @@ + +### Way 1. Run the SFC and DISM Scans + +Firstly, the problems with drag-and-drop can be due to corrupted system files. Hence, you can run the [System File Checker](https://en.wikipedia.org/wiki/System_File_Checker) (SFC) and Deployment Image Servicing Management (DISM) on your system. The SFC scan detects and replaces the corrupt files, while the DISM scan directly replaces these files from Microsoft. + +The quick steps to run SFC and DISM scans include the following: + +**Step 1:** Type "Powershell" in the search bar. + +**Step 2**. Select the "Run as Administrator" option from the right-side menu. + +**Step 3.** Type the command sfc / scannow and press enter. + +![powershell interface](https://www.easeus.com/images/en/wiki-news/how-to-fix-drag-and-drop-not-working-02.JPG) + +**Step 4.** Wait until the SFC scan is complete. + +**Step 5.** Now, type the command DISM /Online /Cleanup-Image /RestoreHealth and press enter. + +**Step 6.** Wait until the DISM scan is complete, then reboot your system to check if drag-and-drop is functioning properly. \ No newline at end of file diff --git a/01-Documentation/Inverters/Mitsubishi/MR-J4.md b/01-Documentation/Inverters/Mitsubishi/MR-J4.md new file mode 100644 index 0000000..581d919 --- /dev/null +++ b/01-Documentation/Inverters/Mitsubishi/MR-J4.md @@ -0,0 +1,5 @@ + +## MR-J4: + +[Search Results Global \| Mitsubishi Electric Americas](https://us.mitsubishielectric.com/fa/en/search/#q=MR-J4&sort=relevancy&f:@sysfiletype=[zip]&sir=siemens) + diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md new file mode 100644 index 0000000..2c2c252 --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.1.md @@ -0,0 +1,236 @@ +# Calculadora Algebraica Híbrida + + + + + +### Concepto Fundamental + +La calculadora mantiene **forma simbólica como representación primaria** y proporciona **evaluación numérica como información complementaria** cuando es posible y útil. + +**Principio de Evaluación Numérica**: El resultado siempre se intenta calcular numéricamente y se muestra cuando la representación string del resultado numérico difiere del resultado algebraico. + +## Sistema de Asignaciones y Ecuaciones + +### Principio: Separación clara entre asignaciones y ecuaciones + +```python +# Asignación de variable +x = 5 # → Se guarda el valor simbólico (NO se agrega como ecuación) +y = x + a # → Se guarda la expresión simbólica + +# Ecuación pura (detección automática) +x**2 + 2*x = 8 # → Se agrega como ecuación Eq(x**2 + 2*x, 8) +a + b = 10 # → Se agrega como ecuación Eq(a + b, 10) +a > b + 1 # → Se agrega como desigualdad +``` + +### Criterios de Detección de Ecuaciones + +**Se considera ecuación si:** + +- Contiene `=` Y NO es una asignación simple de variable +- Contiene operadores de comparación: `==`, `>`, `<`, `>=`, `<=` +- Tiene estructura algebraica en ambos lados del `=` + +**NO se considera ecuación:** + +- Asignaciones simples: `x = 5`, `y = expresión` +- Líneas con solo números o comentarios + +--- + +## Uso de `solve()` y el Atajo `=?` + +### Principio: `variable=?` es equivalente a `solve(variable)` + +```python +# Ambas formas son idénticas: +solve(a) # Resuelve 'a' usando el sistema de ecuaciones +a=? # Atajo sintáctico para solve(a) +``` + +El comando intenta resolver algebraicamente y numéricamente en paralelo cuando es posible. + +--- + +## Sistema de Tokenización con Prioridades + +### Principio: Las prioridades son números arbitrarios que determinan el orden de aplicación + +``` +Prioridad 5: IntBase → Patrón: 16#FF (muy específico) +Prioridad 6: Hex/Bin → Patrón: 0xFF, 0b1010 (específico) +Prioridad 10: FourBytes → Patrón: x.x.x.x (general) +``` + +**Regla**: Menor número = se aplica primero + +Esto garantiza que `16#10.10.10.10` se tokenice como IntBase antes de considerar FourBytes. + +--- + +## Conversión Perezosa y Tipos Especializados + +### Principio: Mantener el tipo especializado siempre que sea posible + +**Se evita convertir a SymPy al máximo**. Los objetos especializados mantienen su tipo cuando pueden resolver la operación internamente. + +```python +# Operaciones que mantienen el tipo especializado: +Hex(15) + 1 → Hex(16) # Hex maneja la suma +16#15 + 1 → 16#16 # IntBase maneja la suma +10.1.1.1 + 1 → 10.1.1.2 # FourBytes maneja la suma + +# Conversión a SymPy solo cuando es necesario: +sin(16#FF) → sin(255) # sin() requiere SymPy +solve(x + 16#10) → solve() # Álgebra compleja requiere SymPy +``` + +**Regla**: Solo se convierte a SymPy cuando el token no es atómico o la operación requiere capacidades algebraicas avanzadas. + +--- + +## Contexto Limpio por Evaluación + +### Principio: Cada evaluación comienza desde cero + +**Contexto Limpio** significa: + +- Se eliminan todas las ecuaciones previas +- Se eliminan todas las variables definidas +- Se re-evalúa todo el contenido línea por línea +- Comportamiento idéntico a iniciar una nueva sesión + +Esto garantiza resultados predecibles y sin efectos secundarios acumulados. + +--- + +## Resultados Interactivos + +### Principio: Activación mediante clicks en elementos con binding + +Los resultados interactivos se crean cuando el tipo de resultado requiere visualización expandida: + +```python +plot(sin(x)) → "📊 Ver Plot" # Click abre ventana matplotlib +Matrix([[1,2],[3,4]]) → "📋 Ver Matriz" # Click muestra matriz formateada +[1,2,3,4,5,6,7,8] → "📋 Ver Lista" # Click expande contenido +``` + +**Activación**: Click en el texto con binding dispara la ventana emergente correspondiente. + +--- + +## Sistema de Autocompletado + +### Principio: Sistema extensible con prioridades (por implementar) + +Se propone usar un sistema de prioridades numéricas similar al de tokenización: + +``` +Prioridad 1: Métodos del objeto específico +Prioridad 2: Métodos de la clase base +Prioridad 3: Funciones SymPy relevantes +Prioridad 4: Helpers contextuales +``` + +--- + +## Integración con SymPy + +### Principio: En casos de conflicto, siempre prevalece SymPy + +Cuando hay ambigüedad o conflicto entre tipos personalizados y SymPy: + +- Funciones SymPy tienen precedencia +- Símbolos SymPy (como `e`, `pi`) mantienen su significado matemático +- Las conversiones fallidas retornan a comportamiento SymPy estándar + +--- + +## Arquitectura de Tipos Personalizados + +### Clases Base Universales + +**IntBase**: Números en cualquier base + +- Aritmética nativa que preserva la base +- Conversión a SymPy solo cuando necesario +- Soporte para símbolos algebraicos + +**FourBytes**: Patrones x.x.x.x + +- Aritmética de 32-bit para IPs +- Soporte para elementos simbólicos +- Base para tipos como IP4 + +### Principio de Extensibilidad + +Cada tipo en `custom_types/` define: + +1. Su lógica de tokenización +2. Sus operaciones aritméticas +3. Sus métodos de conversión +4. Su ayuda contextual +5. Sus sugerencias de autocompletado + +--- + +## Flujo de Evaluación Completo + +``` +Entrada Usuario + ↓ +[Tokenización Universal] + ↓ +¿Asignación o Ecuación? + ├─ Asignación → Guardar valor simbólico + └─ Ecuación → Agregar al sistema + ↓ +[Evaluación] + ├─ Mantener tipo especializado si es posible + └─ Convertir a SymPy si es necesario + ↓ +[Resultado] + ├─ Forma simbólica (siempre) + └─ Evaluación numérica (si difiere como string) +``` + +--- + +## Ejemplos Integrales + +```python +# Tokenización y tipos especializados +16#FF + 2#1010 → 16#109 # IntBase preservado +192.168.1.1 + 5 → 192.168.1.6 # FourBytes preservado + +# Asignaciones vs ecuaciones +x = 10 # Asignación (solo guarda valor) +x + y = 15 # Ecuación (se agrega al sistema) +y=? # solve(y) → y = 5 + +# Evaluación numérica automática +4/5 → 4/5 ≈ 0.8 # Difiere como string +sqrt(2) → √2 ≈ 1.414 # Difiere como string +2 + 3 → 5 # NO se muestra ≈ (igual string) + +# Resultados interactivos +plot(sin(x)) → "📊 Ver Plot" [clickeable] +Matrix([[1,2]]) → "📋 Ver Matriz" [clickeable] +``` + +--- + +## Principios de Diseño Resumidos + +1. **Álgebra primero**: Mantener forma simbólica siempre +2. **Evaluación numérica inteligente**: Mostrar solo cuando agrega valor +3. **Tipos especializados preservados**: Conversión a SymPy solo cuando necesario +4. **Tokenización ordenada**: Sistema de prioridades simple y predecible +5. **Contexto limpio**: Cada evaluación desde cero +6. **Extensibilidad**: Nuevos tipos se integran automáticamente +7. **SymPy prevalece**: En conflictos, el comportamiento matemático estándar gana + +Este documento ahora refleja con precisión la arquitectura implementada y sirve como guía coherente para el desarrollo futuro. \ No newline at end of file diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md new file mode 100644 index 0000000..b823d7d --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.2.md @@ -0,0 +1,434 @@ +# Calculator MAV - Hybrid CAS Application Logic +*** +## Overview + +This document describes the operational logic of the Calculator MAV (Hybrid Computer Algebra System), focusing on the semantic flow from user input to result display. The application implements a distributed tokenization system with automatic type discovery, pure algebraic evaluation, and hybrid symbolic-numeric computation. + +## Architecture Components + +### 1. Application Entry Point (calc.py) +The launcher serves as the system bootstrap, handling: +- **Logging Infrastructure**: Establishes comprehensive error tracking with automatic log rotation +- **System Verification**: Validates dependencies and environment setup +- **Error Recovery**: Provides detailed error reporting with context-aware debugging information +- **Application Lifecycle**: Manages startup, execution, and graceful shutdown + +### 2. Main Application Interface (main_calc_app.py) +The GUI application provides: +- **Dual-Pane Interface**: Synchronized input and output panels with smart resizing +- **Real-time Evaluation**: Debounced input processing with automatic width adjustment +- **Interactive Results**: Clickable elements for plots, matrices, and complex data structures +- **Dynamic Help System**: Context-aware assistance using registered type helpers + +### 3. Type Discovery System (type_registry.py) +The core innovation implementing: +- **Automatic Class Detection**: Scans custom_types directory for *_type.py files +- **Dynamic Registration**: Loads classes and their capabilities without code modification +- **Tokenization Pattern Collection**: Aggregates parsing rules from individual types +- **Context Building**: Creates unified namespace for evaluation engine + +## Computation Flow + +### Phase 1: Input Processing + +When a user types in the input panel, the system triggers a processing cycle: + +**Input Capture**: The text widget captures keystrokes and triggers debounced evaluation after 300ms of inactivity. Special handling occurs for dot notation (triggering autocomplete) and real-time content analysis. + +**Content Parsing**: The entire input content is split into lines, with each line processed independently. Empty lines and comments (starting with #) are preserved but bypassed during evaluation. + +**Context Reset**: Before each full evaluation cycle, the algebraic engine clears its internal state, ensuring consistent results regardless of previous computations. + +### Phase 2: Distributed Tokenization + +The tokenization system operates on a priority-based pattern matching approach: + +**Pattern Discovery**: Each registered type contributes tokenization patterns with priority levels. Higher priority patterns (more specific) are applied first, preventing conflicts between similar syntaxes. + +**Expression Transformation**: The universal tokenizer applies transformations in priority order: +- Base number patterns (16#FF, 2#1010) are converted to IntBase constructor calls +- Four-element patterns (192.168.1.1, 10.x.y.z) become FourBytes instances +- Specialized prefixes (0x, 0b) are handled by specific type patterns + +**Bracket Parser Integration**: After tokenization, the bracket parser handles the simplified syntax transformation from Type[value] to Type("value") constructor calls. + +### Phase 3: Line Classification + +The pure algebraic engine analyzes each processed line to determine its semantic type: + +**Assignment Detection**: Lines matching "variable = expression" where the left side is a valid Python identifier are classified as assignments. These create symbol bindings and optionally add implicit equations if undefined symbols are present. + +**Equation Recognition**: Lines containing equals signs that aren't simple assignments become equations. The system distinguishes between algebraic equations (=) and SymPy comparisons (==, <=, >=, !=). + +**Solve Shortcuts**: The pattern "variable=?" is recognized as shorthand for solve(variable), providing quick variable resolution. + +**Expression Evaluation**: All other lines are treated as mathematical expressions for symbolic or numeric evaluation. + +### Phase 4: Symbolic Evaluation + +The evaluation engine operates in pure algebraic mode: + +**SymPy Integration**: All mathematical operations prioritize symbolic representation, maintaining exact forms (fractions, radicals, symbolic expressions) whenever possible. + +**Dynamic Context**: The evaluation context combines: +- Base mathematical functions (sin, cos, integrate, solve, etc.) +- Dynamically registered custom types from the type discovery system +- User-defined variables from previous assignments +- Automatic symbol creation for undefined variables + +**Hybrid Object Handling**: Custom types (IP4, IntBase, FourBytes, etc.) maintain their native operations while integrating seamlessly with SymPy algebra through the SympyClassBase inheritance pattern. + +### Phase 5: Smart Solving + +The equation system implements intelligent resolution: + +**System Building**: Each equation is added to a persistent equation list, with variable extraction and dependency tracking. + +**Variable Resolution**: The solve shortcut (variable=?) triggers sophisticated resolution logic: +- Single-variable equations are solved directly +- Multi-variable systems use SymPy's constraint solver +- Underdetermined systems provide parametric solutions +- Overdetermined systems report conflicts with context + +**Automatic Substitution**: Known variable values are automatically substituted into symbolic expressions, providing immediate numeric evaluation when all symbols are resolved. + +### Phase 6: Result Processing + +The evaluation results undergo format optimization: + +**Display Selection**: The system determines the most informative representation: +- Symbolic form is preserved for exact mathematical expressions +- Numeric approximations are provided when significantly different from symbolic form +- Custom type representations use their native display methods + +**Interactive Enhancement**: Complex results (plots, matrices, large lists) are converted to interactive placeholders that open detailed views when clicked. + +**Error Context**: Failed evaluations trigger contextual help suggestions from registered type helpers, providing guidance based on input patterns. + +### Phase 7: Output Synchronization + +The GUI updates reflect the complete evaluation state: + +**Parallel Display**: Input and output panels maintain line-by-line correspondence, with synchronized scrolling and visual alignment. + +**Color Coding**: Results are tagged with semantic colors: +- Symbolic expressions in blue +- Numeric results in green +- Equations in purple +- Errors in red +- Helper suggestions in gold + +**Layout Adaptation**: The input panel automatically resizes based on content width, maintaining optimal visibility for both mathematical expressions and code. + +## Key Semantic Principles + +### Pure Algebraic Approach +Unlike traditional calculators, this system treats every assignment as a potential equation. Variables maintain their symbolic nature until explicitly evaluated, enabling sophisticated algebraic manipulation. + +### Distributed Extensibility +The type system allows seamless addition of new mathematical objects without modifying core engine code. Each type contributes its own tokenization patterns, helper functions, and algebraic integration. + +### Context Preservation +The evaluation engine maintains a persistent mathematical context across all input lines, enabling complex multi-step calculations and equation system building. + +### Smart Automation +The system automatically: +- Creates symbols for undefined variables +- Applies substitutions when variables are resolved +- Provides numeric approximations when helpful +- Suggests corrections for invalid input patterns + +### Hybrid Integration +Custom types (networking, programming, engineering) integrate seamlessly with pure mathematical operations, enabling domain-specific calculations within a unified algebraic framework. + +This architecture enables the calculator to function as both a powerful symbolic mathematics tool and a specialized computational environment for technical domains, with the flexibility to expand into new areas through the distributed type system. + + +```plantuml +@startuml Calculator_MAV_Flow +!define RECTANGLE class + +title Calculator MAV - Hybrid CAS Processing Flow + +start + +:User types in input panel; +note right: GUI captures keystrokes\nwith 300ms debounce + +:Input Processing Phase; +partition "Input Capture" { + :Split content into lines; + :Preserve comments and empty lines; + :Clear engine context for fresh evaluation; +} + +:Distributed Tokenization Phase; +partition "Pattern Matching" { + :Discover tokenization patterns from registered types; + note left: Type registry auto-discovers\npatterns from custom_types/* + :Apply high-priority patterns first; + note right: 16#FF → IntBase("FF", 16)\n2#1010 → IntBase("1010", 2) + :Apply medium-priority patterns; + note right: 192.168.1.1 → FourBytes("192.168.1.1") + :Apply bracket parser transformations; + note right: Type[value] → Type("value") +} + +:Line Classification Phase; +partition "Semantic Analysis" { + if (Line contains "=?") then (yes) + :Classify as Solve Shortcut; + elseif (Simple assignment pattern?) then (yes) + :Classify as Assignment; + note right: variable = expression\nwhere left side is valid identifier + elseif (Contains = but not assignment?) then (yes) + :Classify as Equation; + note right: x**2 + 2*x = 8\na + b == 10 + else (no) + :Classify as Expression; + endif +} + +:Symbolic Evaluation Phase; +partition "Algebraic Processing" { + if (Assignment type?) then (yes) + :Create symbol binding; + :Check for undefined symbols; + if (Has undefined symbols?) then (yes) + :Add implicit equation to system; + endif + elseif (Equation type?) then (yes) + :Parse left and right sides; + :Create SymPy Eq object; + :Add to equation system; + elseif (Solve shortcut?) then (yes) + :Extract variable name; + :Trigger smart solving; + else (Expression) + :Evaluate with SymPy priority; + :Maintain symbolic form; + :Auto-create undefined symbols; + endif +} + +:Smart Solving Phase; +partition "Equation Resolution" { + if (Solve shortcut triggered?) then (yes) + :Find equations containing variable; + if (Single variable equations?) then (yes) + :Solve directly; + elseif (Multi-variable system?) then (yes) + :Use SymPy constraint solver; + :Handle parametric solutions; + else (no equations) + :Return current symbol value; + endif + endif + :Apply automatic substitutions; + note right: Substitute known values\ninto symbolic expressions +} + +:Result Processing Phase; +partition "Output Formatting" { + :Determine optimal representation; + if (Complex result?) then (yes) + :Create interactive placeholder; + note right: Plots, matrices, large lists\nbecome clickable elements + endif + :Generate numeric approximation if helpful; + :Apply semantic color coding; + note right: Symbolic: blue\nNumeric: green\nEquations: purple\nErrors: red +} + +:Output Synchronization Phase; +partition "GUI Updates" { + :Update output panel with line correspondence; + :Apply synchronized scrolling; + :Auto-resize input panel based on content; + :Enable interactive result clicking; +} + +if (Error occurred?) then (yes) + :Trigger contextual help from type helpers; + note right: Dynamic help based on\ninput patterns and registered types +endif + +stop + +@enduml +``` + + +```plantuml +@startuml Calculator_MAV_Flow_Corrected +!define RECTANGLE class + +title Calculator MAV - Pure Algebraic Engine Processing Flow + +start + +:User types in input panel; +note right: GUI captures keystrokes\nwith 300ms debounce + +:Input Processing Phase; +partition "Input Capture" { + :Split content into lines; + :Preserve comments and empty lines; + :Clear engine context for fresh evaluation; + note right: PureAlgebraicEngine.clear_context() +} + +:Distributed Tokenization Phase; +partition "Pattern Matching" { + :Apply dynamic tokenization patterns; + note left: From get_registered_tokenization_patterns() + :Transform expressions in priority order; + note right: 16#FF → IntBase("FF", 16)\n192.168.1.1 → FourBytes("192.168.1.1") + :Apply bracket parser processing; +} + +:Line Classification Phase; +partition "Pure Algebraic Analysis" { + if (Line ends with "=?") then (yes) + :Classify as Solve Shortcut; + note right: x=? becomes solve(x) + elseif (Contains "=" and not comparison?) then (yes) + :Classify as Equation; + note right: ALL assignments become equations\nin pure algebraic mode + else (no) + :Classify as Expression; + endif +} + +:Pure Algebraic Evaluation; +partition "SymPy-First Processing" { + if (Equation type?) then (yes) + :Split on "=" sign; + :Create SymPy Eq() object; + :Add to equations list; + :Extract and track variables; + elseif (Solve shortcut?) then (yes) + :Extract variable name; + :Call _solve_variable_in_system(); + else (Expression) + :Evaluate with sympify() first; + :Maintain symbolic form; + :Apply simplify if configured; + endif +} + +:Smart Variable Resolution; +partition "Equation System Solving" { + if (Solve triggered?) then (yes) + :Find relevant equations for variable; + if (Multi-variable system?) then (yes) + :Solve complete system with SymPy; + :Extract specific variable; + else (simple case) + :Solve single variable directly; + endif + :Update symbol_table with result; + endif +} + +:Result Processing Phase; +partition "Output Formatting" { + :Generate symbolic result; + :Create numeric approximation if different; + :Format as single-line output; + note right: Concise format:\n"x = 5 ≈ 5.000000" +} + +:Output Synchronization Phase; +partition "GUI Updates" { + :Update output panel; + :Apply color coding for result type; + :Auto-resize input panel; +} + +if (Error occurred?) then (yes) + :Get help from registered helpers; + :Display error with context; +endif + +stop + +note bottom : **Pure Algebraic Principle**\nAll assignments become equations\nSymbolic evaluation prioritized\nNumeric approximation secondary + +@enduml +``` + + +```plantuml +@startuml Calculator_MAV_Architecture_Corrected +!define RECTANGLE class + +title Calculator MAV - Architecture with Pure Algebraic Engine + +package "Application Layer" { + [calc.py] as launcher + [main_calc_app.py] as gui +} + +package "Core Processing" { + [main_evaluation_puro.py] as pure_engine + [tl_bracket_parser.py] as parser + [type_registry.py] as registry + + note top of pure_engine : **Pure Algebraic Engine**\n• All assignments → equations\n• SymPy-first evaluation\n• Persistent equation system\n• Smart variable resolution +} + +package "Unused Components" #lightgray { + [main_evaluation.py] as hybrid_engine + note bottom of hybrid_engine : Not currently used\nin main application +} + +package "Type System" { + folder "custom_types/" { + [intbase_type.py] + [fourbytes_type.py] + [ip4_type.py] + [... more types] + } +} + +package "Support Components" { + [sympy_Base.py] as base + [class_base.py] as classbase + [tl_popup.py] as popup + [sympy_helper.py] as helper +} + +package "External Dependencies" { + [SymPy Library] as sympy + [Tkinter GUI] as tkinter +} + +' Active connections +launcher --> gui : "Initialize" +gui --> pure_engine : "evaluate_line()" +pure_engine --> parser : "process_expression()" +parser --> registry : "get_registered_tokenization_patterns()" +pure_engine --> registry : "get_registered_base_context()" +pure_engine --> sympy : "sympify(), solve(), Eq()" + +' Type system integration +registry --> intbase_type.py : "Auto-discover" +registry --> fourbytes_type.py : "Load patterns" +registry --> "... more types" : "Dynamic loading" + +' Inheritance +intbase_type.py --> base +fourbytes_type.py --> classbase +base --> sympy + +' Support +gui --> helper : "Contextual help" +gui --> popup : "Interactive results" + +' Unused connection (grayed out) +hybrid_engine -.-> sympy : "Not used" + +@enduml +``` + diff --git a/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md b/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md new file mode 100644 index 0000000..8d85f43 --- /dev/null +++ b/01-Documentation/Python/Scripts Python/Calc/Calc v0.3 Pure.md @@ -0,0 +1,165 @@ + +# MAV Calculator Application Logic Documentation + +## Overview + +The MAV Calculator is a hybrid Computer Algebra System (CAS) built around a pure algebraic engine that treats all assignments as equations. The application follows a clean pipeline from user input to result display, with sophisticated tokenization and symbolic computation capabilities. + +### The application has this main components: + +* Algebraic components using sympy engine with sympify, solve, evalf. This includes all the mathematical functions and the functions of sympy. +* Special objects called Types or classes under custom_types folder. + * This classes are automatically discovered at startup. + * every class has functions that some are for the interaction with other clases o with sympy. Other functions can be used directly by the user with parameters and returning the same object or other object. + * special tokenization patterns & substitution using data collected from classes under custom_types folder. + * every class has the Helper function to assist the user when on the line it is detected an error and the line starts with some patter + * every class has a descriptor of functions that can be used for this object to permit the autocomplete popup help the user when they press "." + +### Concepts + +* Types : Special classes under custom_types folder. That are automatically discovered at startup. +* Cycle: every time the user change the input panel start a cycle that ends when all lines are evaluated and produced an output +* Input panel: tk text area where the user can write or modify text. +* Output panel: read only tk area text correlated 1:1 to every line on the input panel . Every input line must correspond to only 1 line on the output. The output lines can have colors and binds to click for opening the plots or to show matrix or lists. +* Persistence: The app maintain the state of all configurated setup and dimension of the window and all the text on the input panel. + +## Application Architecture + +### Entry Point and Initialization + +The application starts through `calc.py`, which serves as a launcher with comprehensive logging and error handling. It initializes the main GUI application (`HybridCalculatorApp`) which in turn creates a `PureAlgebraicEngine` instance as its computational core. + +During initialization, the system performs auto-discovery of custom types from the `custom_types/` directory. Each type module can define tokenization patterns, helper functions, and computational behaviors. This creates a registry of available types and their associated transformation rules. + +## Calculation Cycle Flow + +### 1. Input Capture and Triggering + +The calculation cycle begins when the user types in the input panel. The GUI uses a debounced key release handler that triggers evaluation after a 300ms delay, preventing excessive computation during active typing. + +### 2. Line Processing Pipeline + +The engine processes all input lines sequentially, maintaining a clean context for each evaluation cycle: + +**Context Reset**: Before each evaluation cycle, the engine clears its internal context completely. This ensures that each modification to the input re-evaluates everything from scratch, maintaining consistency. + +**Line Classification**: Each line is categorized as: +- Empty or comment (ignored) +- Equation (contains `=` but not as comparison operator) +- Solve shortcut (pattern `variable=?`) +- Expression (everything else) + +### 3. Tokenization System + +The tokenization system operates through a distributed pattern-matching architecture: + +**Pattern Discovery**: During initialization, the system discovers tokenization patterns from all registered type classes. Each type can define multiple patterns with priorities and replacement functions. + +**Pattern Application**: Tokenization applies patterns in priority order (higher priority first). Each pattern consists of: +- A regular expression to match +- A replacement function that transforms the match +- Priority level for ordering +- Description for debugging + +**Example Transformations**: +- `192.168.1.1` becomes `FourBytes("192.168.1.1")` +- `16#FF` becomes `IntBase("FF", 16)` +- `2#1010` becomes `IntBase("1010", 2)` + +**Bracket Parser Integration**: After tokenization, the bracket parser processes any remaining bracket syntax transformations for legacy compatibility. ==Must be removed== + +Also every constructor of every Type must be instantiated using eval. For example if a line has "a = IP4(10.1.1.1)" the tokeniser first will translate to "a = IP4(FourBytes("10.1.1.1"))" then eval needs to instantiate the IP4 object so the a will be equal to an object IP4. +### 4. Algebraic Engine Processing + +The `PureAlgebraicEngine` implements a pure algebraic approach where all assignments become equations: + +**Equation Detection**: The engine distinguishes between: +- Simple assignments (`x = 5`) - creates both a variable assignment and an implicit equation- +- Complex equations (`x**2 + 2*x = 8`) - added directly to the equation system +- Solve shortcuts (`x=?`) - equivalent to `solve(x)` using the current equation system + +**Symbol Management**: Variables are automatically and must maintain the type as long as possible. Also if there are aritmetic use with Types we need to cast the result to the Type involved. For example if we have "IP4(10.1.1.1)+1" the result must be IP4 object. The engine maintains a symbol table and equation list that increase every line that persist until the end of the cycle. + +**Context Building**: For each evaluation, the engine builds a complete context including: +- Base mathematical functions (sin, cos, solve, etc.) +- Dynamically registered custom types +- Current variable assignments +- Helper functions from type registry + +### 5. Expression Evaluation Strategy + +The engine uses a hybrid evaluation strategy: + +**Symbolic Priority**: Expressions are first attempted through SymPy's `sympify` to maintain symbolic forms. This preserves exact mathematical representations. + +**Automatic Substitution**: +* The engine automatically substitutes known numerical values into symbolic expressions when possible, while preserving symbolic forms for unknown variables. +* ==Funtions + + +**Numerical Approximation**: When beneficial, the engine provides numerical approximations alongside symbolic results. The decision is based on whether the numerical form differs meaningfully from the symbolic representation. + +### 6. Result Processing and Display + +**Result Classification**: Each evaluation produces an `EvaluationResult` with: +- The computed result (symbolic or numerical) +- Result type classification +- Success/error status +- Optional numerical approximation +- Metadata about the evaluation + +**Interactive Elements**: The display system identifies results that benefit from interactivity: +- Large matrices become expandable views +- Plot commands create interactive matplotlib windows +- Long lists become scrollable displays +- Complex objects get detailed inspection windows + +**Tag-Based Formatting**: Results are displayed with color-coded tags based on their type and semantic meaning. The GUI applies appropriate formatting for equations, errors, symbolic expressions, and custom type outputs. + +## Type System Integration + +### Dynamic Type Loading + +The type system loads custom classes from the `custom_types/` directory at startup. Each type module can define: +- Class behaviors and arithmetic operations +- Tokenization patterns for automatic recognition +- Helper functions for contextual assistance +- Display and conversion methods + +### Inheritance Patterns + +Types inherit from either: +- `ClassBase` - for basic custom types +- `SympyClassBase` - for types requiring full SymPy integration + +This allows seamless interaction between custom types and the symbolic algebra system. + +### Method Discovery + +The system automatically discovers and exposes methods from custom types for autocompletion and help systems. This includes both instance methods and static helper functions. + +## Error Handling and Recovery + +The application implements comprehensive error handling at each stage: + +**Tokenization Errors**: Failed tokenization patterns are logged but don't halt processing, allowing partial transformations to proceed. + +**Evaluation Errors**: Helper from classes first, then if there is no match SymPy evaluation errors trigger fallback strategies, including symbol creation for undefined variables and alternative parsing approaches. + +**Display Errors**: Rendering failures fall back to string representations, ensuring results are always visible even if formatting fails. + +## Performance Characteristics + +**Lazy Evaluation**: Complex computations are deferred until needed, with caching of intermediate results where appropriate. + +**Incremental Processing**: Only changed content triggers re-evaluation, though the current implementation re-evaluates everything for consistency. + +**Memory Management**: The system manages symbol tables and equation lists efficiently, with cleanup mechanisms for large sessions. + +## Session Persistence + +The application maintains session continuity through: + +**History Persistence**: Input content is automatically saved and restored between sessions. +**Context Preservation**: Variable assignments and equations persist during the scope of every cycle. The context is added on every line and cleared at the begining of ever cycle. This means that every time the user changes the input panel the context is cleared. +**Settings Management**: UI state and preferences are preserved across application restarts. diff --git a/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md b/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md index 854a576..5709e0d 100644 --- a/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md +++ b/01-Documentation/Python/Scripts Python/Conda - Anaconda - miniconda.md @@ -11,6 +11,13 @@ conda --version conda update conda ``` + +#### Instalar desde Requirements + +```bash +pip install -r requirements.txt +``` + ## Gestión de Entornos ### Crear un nuevo entorno diff --git a/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md b/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md new file mode 100644 index 0000000..d8148c9 --- /dev/null +++ b/01-Documentation/Routers/Mikrotik - Network Redes/Mikrotik - Comandos WIFI - Clientes de wlan y CAP.md @@ -0,0 +1,51 @@ + +### ===== CLIENTES LOCALES (interfaces wlan1/wlan2) ===== +#### Ver clientes conectados a wlan1 (2.4 GHz) +/interface wireless registration-table print where interface=wlan1 + +#### Ver clientes conectados a wlan2 (5 GHz) +/interface wireless registration-table print where interface=wlan2 + +#### Ver todos los clientes WiFi locales +/interface wireless registration-table print + +### ===== CLIENTES DE CAPSMAN ===== +#### Ver todos los clientes conectados a través de CAPsMAN +/caps-man registration-table print + +#### Ver clientes de CAP por configuración específica (2Ghz en tu caso) +/caps-man registration-table print where configuration=2Ghz + +#### Ver información detallada de clientes CAP +/caps-man registration-table print detail + +#### Ver solo información específica de clientes CAP +/caps-man registration-table print brief + +#### ===== VISTA COMPLETA (LOCALES + CAP) ===== + +```bash +# Script para ver todo junto +:put "=== CLIENTES LOCALES WLAN1 (2.4 GHz) ===" +/interface wireless registration-table print where interface=wlan1 +:put "" +:put "=== CLIENTES LOCALES WLAN2 (5 GHz) ===" +/interface wireless registration-table print where interface=wlan2 +:put "" +:put "=== CLIENTES CAPSMAN ===" +/caps-man registration-table print + +``` +#### ===== INFORMACIÓN DE LOS CAPS ===== +#### Ver los CAPs conectados al manager +/caps-man remote-cap print + +#### Ver estado de los CAPs +/caps-man remote-cap print detail + +#### ===== MONITOREO ===== +#### Monitorear clientes CAP en tiempo real +/caps-man registration-table print interval=5 + +#### Para ver información del DHCP y relacionar IPs con MACs +/ip dhcp-server lease print where active=yes \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/98050_Hardware.md b/03-VM/44 - 98050 - Fiera/98050_Hardware.md new file mode 100644 index 0000000..944796f --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/98050_Hardware.md @@ -0,0 +1,36 @@ + +| Device Name | Device Address | Device Type | Order Number | Firmware Version | Module Name | Module Type | IO Input Start Address | IO Output Start Address | Total Input Bits | Total Output Bits | +|----------------|----------------|-----------------------|---------------------|------------------|------------------------------------|----------------------------------|------------------------|-------------------------|------------------|-------------------| +| BA 2xRJ45 | 10.1.30.11 | BA 2xRJ45 | 6ES7 193-6AR00-0AA0 | V0.0 | | | | | | | +| U30110-AxisX | 10.1.30.31 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1100 | 1100 | 160 | 160 | +| U30210-AxisY | 10.1.30.32 | C1250xMIPD 1S V3.0 | | | DO SERVO_1 | DO SERVO | 1124 | 1124 | 160 | 160 | +| U30310 | 10.1.30.33 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1148 | 1148 | 384 | 384 | +| U30410 | 10.1.30.34 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1200 | 1200 | 384 | 384 | +| U30510 | 10.1.30.35 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1252 | 1252 | 384 | 384 | +| U30610 | 10.1.30.36 | MELSERVO MR-J4-TM | | | DO with manufacturer telegr. 102_1 | DO with manufacturer telegr. 102 | 1304 | 1304 | 384 | 384 | +| M30710 | 10.1.30.37 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1356 | 1356 | 176 | 352 | +| M31010 | 10.1.30.40 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1404 | 1404 | 128 | 128 | +| M31110 | 10.1.30.41 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1424 | 1424 | 176 | 352 | +| M31210 | 10.1.30.42 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1472 | 1472 | 176 | 352 | +| M31310 | 10.1.30.43 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1520 | 1520 | 176 | 352 | +| M31410 | 10.1.30.44 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1568 | 1568 | 128 | 128 | +| M31510 | 10.1.30.45 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 1588 | 1588 | 128 | 128 | +| M31610 | 10.1.30.46 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1608 | 1608 | 176 | 352 | +| M31710 | 10.1.30.47 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1656 | 1656 | 176 | 352 | +| M31810 | 10.1.30.48 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1704 | 1704 | 176 | 352 | +| M31910 | 10.1.30.49 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 1752 | 1752 | 176 | 352 | +| U32810 | 10.1.30.58 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1800 | 1800 | 0 | 0 | +| U32910 | 10.1.30.59 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1824 | 1824 | 0 | 0 | +| U33010 | 10.1.30.60 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1848 | 1848 | 0 | 0 | +| U33110 | 10.1.30.61 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1872 | 1872 | 0 | 0 | +| U33210 | 10.1.30.62 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1896 | 1896 | 0 | 0 | +| U33310 | 10.1.30.63 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1920 | 1920 | 0 | 0 | +| U33410 | 10.1.30.64 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1944 | 1944 | 0 | 0 | +| U33510 | 10.1.30.65 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1968 | 1968 | 0 | 0 | +| U33610 | 10.1.30.66 | G120C PN | 6SL3210-1KE13-2AF2 | 4.7.13 | | | 1992 | 1992 | 0 | 0 | +| M34010 | 10.1.30.70 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2016 | 2016 | 176 | 352 | +| M34110 | 10.1.30.71 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2064 | 2064 | 176 | 352 | +| M34210 | 10.1.30.72 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2112 | 2112 | 176 | 352 | +| M34310 | 10.1.30.73 | DBS55-XXX Extend-A | | | DS402_Extend-A | | 2160 | 2160 | 176 | 352 | +| M34410 | 10.1.30.74 | DFC2xA V1.0 | | | Module I/O (08 words) | Module I/O (08 words) | 2208 | 2208 | 128 | 128 | +| E44010-Encoder | 10.1.30.170 | Multiturn 30 Bit V2.x | | | EO Encoder Multiturn V2.x_1 | | 2228 | 2228 | 128 | 32 | diff --git a/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md b/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md new file mode 100644 index 0000000..45a6049 --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO - Ips Nodes.md @@ -0,0 +1,113 @@ + *** + + = 139 = 139 = 139 = 170 + +### IP network: 10.1.30.0/20 + +| | | | IP | Mask | Page | | | | | | +| ------------ | ------ | ----------------------------------- | :-: | ---- | ---- | -------------------------- | ----------- | ---------- | ---------- | --------------------------- | +| PLC | | CPU 1514SP T-2 PN | 11 | /12 | 405 | 6ES7 514-2VN03-0AB0 | | | | | +| HMI | | | 10 | /12 | | | | | | | +| | | | | | | | | | | | +| Divider | E44010 | Encoder Divider | 170 | /12 | 440 | | | | | | +| Divider | U30110 | Axis-X | 31 | | 301 | LinMot C1250-MI-XC-0S-000 | Isochronous | E100..E119 | A100..A119 | | +| Divider | U30210 | Axis-Y | 32 | | 302 | LinMot C1250-MI-XC-0S-000 | Isochronous | E120..E139 | A120..A139 | | +| Divider | U30310 | Timing Belt DX 1 | 33 | | 303 | Mitsubishi MR-J4-60TM4-PNT | | E256.. | | | +| Divider | U30410 | Timing Belt DX 2 | 34 | | 304 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | U30510 | Timing Belt SX 1 | 35 | | 305 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | U30610 | Timing Belt SX 2 | 36 | | 306 | Mitsubishi MR-J4-60TM4-PNT | | | | | +| Divider | M30710 | Dosser Format | 37 | | 307 | Minimotor | | | | | +| Divider | M31010 | Transport Inside | 40 | | 310 | SEW MGFAS-2 | | | | S31040,S31050,S31051,B31060 | +| Divider | M31110 | Combiner 1 DX | 41 | | 311 | Minimotor | | | | | +| Divider | M31210 | Combiner 2 SX | 42 | | 312 | Minimotor | | | | | +| Divider | M31310 | Format Change Outfeed | 43 | | 313 | Minimotor | | | | | +| Divider/Ring | M31410 | Transport Outfeed | 44 | | 314 | SEW MGFAS-2 | | | | B31440 | +| | | | | | | | | | | | +| | | | | | | | | | | | +| Table | M31510 | Infeed | 45 | | 315 | SEW MGFAS-2 | | | | B31540,B31550,S31550,S31560 | +| Table | M31610 | Dosser SX Infeed | 46 | | 316 | Minimotor | | | | | +| Table | M31610 | Dosser DX Infeed | 47 | | 317 | Minimotor | | | | | +| Table | M31810 | Dosser Format Infeed | 48 | | 318 | Minimotor | | | | | +| Table | M31910 | Channel Selection Infeed | 49 | | 319 | Minimotor | | | | | +| Table | U32810 | Canale 1 | 58 | | 328 | Siemens G120C | | | | | +| Table | U32910 | Canale 2 | 59 | | 329 | Siemens G120C | | | | | +| Table | U33010 | Canale 3 | 60 | | 330 | Siemens G120C | | | | | +| Table | U33110 | Canale 4 | 61 | | 331 | Siemens G120C | | | | | +| Table | U33210 | Canale 5 | 62 | | 332 | Siemens G120C | | | | | +| Table | U33310 | Canale 6 | 63 | | 333 | Siemens G120C | | | | | +| Table | U33410 | Canale 7 | 64 | | 334 | Siemens G120C | | | | | +| Table | U33510 | Canale 8 | 65 | | 335 | Siemens G120C | | | | | +| Table | U33610 | Canale 9 | 66 | | 336 | Siemens G120C | | | | | +| Table | M34010 | Channel Selection Outfeed | 70 | | 340 | Minimotor | | | | | +| Table | M34110 | Motore 1 Dosser Outfeed | 71 | | 341 | Minimotor | | | | | +| Table | M34210 | Motore 1 Dosser Outfeed | 72 | | 342 | Minimotor | | | | | +| Table | M34310 | Regolazione Largheza Dosser Outfeed | 73 | | 343 | Minimotor | | | | | +| Table/Ring | M34410 | Transport outfeed | 74 | | 344 | SEW MGFAS-2 | | | | | +| | | | | | | | | | | | +| Ring | E44520 | Gateway Outfeed Divider | 175 | | 445 | | | | | | +| Ring | E44620 | Gateway Infeed Divider | 176 | | 446 | | | | | | + + + + + + +### Photocells / Sensors +*** + +| | Tag | Description | Connected to | +| --- | ------ | ----------------------------------------- | ------------ | +| | S31040 | Sensore Di Asse Longitudinale | M31010 | +| | S31050 | Sensore de Asse Transversale | M31010 | +| | S31051 | Sensore de Reg Spaziatore Uscita Divisore | M31010 | +| | B31060 | Sicurezza uscita spaziatore | M31010 | +| | B31440 | Minimo Polmone Ingresso Tavolor | M31410 | +| | | | | +| | B31540 | Conteggio Ingresso Tavolo | M31510 | +| | B31550 | Sicurezza Tranlazione Ingresso | M31510 | +| | S31550 | Homing Dosser Infeed Table | M31510 | +| | S31560 | Sensore de homing Trasl. Dosser Infeed | M31510 | + + +### Emergency circuit +*** +* K14010 - p140 +* K15010 - p150 <- 20740/20750 - Divider doors - 8 doors +* K16010 - p160 - Table Infeed Doors - 2 doors +* K17010 - p170 - Table Outfeed Doors - 2 doors +* + + +### Motors: +*** + +| | | | | Inverter | | | +| ------- | ------ | -------------------------------------- | --- | -------- | ----- | ---- | +| Divider | M30160 | Axis-X | | U30110 | | | +| Divider | M30260 | Axis-Y | | | | | +| Divider | M30320 | Dosser 1 DX | 303 | U30310 | | | +| Divider | M30420 | Dosser 2 DX | 304 | U30410 | | | +| Divider | M30520 | Dosser 1 SX | 305 | U30510 | | | +| Divider | M30620 | Dosser 2 SX | 306 | U30610 | | | +| | | | | | | | +| Table | M30710 | Dosser Format | | 307 | | | +| Table | M31510 | Infeed | | 315 | | | +| Table | M31610 | Dosser SX Infeed | | 316 | | | +| Table | M31610 | Dosser DX Infeed | | 317 | | | +| Table | M31810 | Dosser Format Infeed | | 318 | | | +| Table | M31910 | Traslazione Smistatore Ingresso Tavolo | | 319 | | | +| Table | M32860 | Canale 1 | | 328 | .75kw | 1.9A | +| Table | M32960 | Canale 2 | | 329 | .75kw | 1.9A | +| Table | M33060 | Canale 3 | | 330 | .75kw | 1.9A | +| Table | M33160 | Canale 4 | | 331 | .75kw | 1.9A | +| Table | M33260 | Canale 5 | | 332 | .75kw | 1.9A | +| Table | M33360 | Canale 6 | | 333 | .75kw | 1.9A | +| Table | M33460 | Canale 7 | | 334 | .75kw | 1.9A | +| Table | M33560 | Canale 8 | | 335 | .75kw | 1.9A | +| Table | M33660 | Canale 9 | | 336 | .75kw | 1.9A | +| | | | | | | | + + + + + diff --git a/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md b/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md new file mode 100644 index 0000000..9fd3dde --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/Device IO Tags.md @@ -0,0 +1,55 @@ +## Inputs (Inputs) + +| Master Tag | Type | Data Type | +| -------------------------------- | ----- | --------- | +| zoneA24VDC | Input | Bool | +| zoneD24VDC | Input | Bool | +| thermicTrip | Input | Bool | +| safetyRelay | Input | Bool | +| eStop_ElectricalCabinet | Input | Bool | +| Divider_gateRight1 | Input | Bool | +| Divider_gateRight2 | Input | Bool | +| Divider_gateRight3 | Input | Bool | +| Divider_gateRight4 | Input | Bool | +| Divider_gateLeft1 | Input | Bool | +| Divider_gateLeft2 | Input | Bool | +| Divider_gateLeft3 | Input | Bool | +| Divider_gateLeft4 | Input | Bool | +| Divider_startButton | Input | Bool | +| Divider_stopButton | Input | Bool | +| Divider_automaticSelector | Input | Bool | +| Divider_manualForwardButton | Input | Bool | +| Divider_manualBackwardButton | Input | Bool | +| Divider_resetButton | Input | Bool | +| Divider_CountPhotocell | Input | Bool | +| Divider_TranslationSafetyHighPho | Input | Bool | +| Divider_TooFull1Line1 | Input | Bool | +| Divider_TooFull1Line2 | Input | Bool | +| eStop_PB1 | Input | Bool | +| Divider_TooFull1Line3 | Input | Bool | +| Divider_TooFull1Line4 | Input | Bool | +| Divider_TooFull1Line5 | Input | Bool | +| Divider_TooFull1Line6 | Input | Bool | +| Divider_encoderReferenceXAxis | Input | Bool | +| Divider_encoderReferenceYAxis | Input | Bool | +| Divider_TooFull2Line1 | Input | Bool | +| Divider_TooFull2Line2 | Input | Bool | +| Divider_TooFull2Line3 | Input | Bool | +| Divider_TooFull2Line4 | Input | Bool | +| Divider_TooFull2Line5 | Input | Bool | +| Divider_TooFull2Line6 | Input | Bool | + + +## Outputs (Outputs) + +| Master Tag | Type | Data Type | +| -------------------------- | ------ | --------- | +| Divider_runLamp | Output | Bool | +| Divider_resetLamp | Output | Bool | +| Divider_towerLampAutomatic | Output | Bool | +| Divider_towerLampManual | Output | Bool | +| Divider_towerLampAlarm | Output | Bool | +| Divider_acousticAlarm | Output | Bool | +| Divider_enableX | Output | Bool | +| Divider_enableY | Output | Bool | + diff --git a/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md b/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md new file mode 100644 index 0000000..e322c0c --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/Mapping Divider.md @@ -0,0 +1,57 @@ +# Mapeo Device IO Tags a PLC IO Tags - Sistema Divisor + +## Inputs Mapeados + +| Device Tag | Type | PLC Address | PLC Description | Confianza | +| -------------------------------- | ----- | ----------- | ----------------------------------- | --------- | +| Divider_automaticSelector | Input | E5.2 | MANUALE/AUTOMATICO | 95% | +| Divider_CountPhotocell | Input | E6.0 | CONTEGGIO DIVSORE FORMATO 1 | 80% | +| Divider_gateLeft1 | Input | E3.5 | DIVISORE MICRO PORTA 5 | 75% | +| Divider_gateLeft2 | Input | E3.6 | MICRO PORTA 6 DIVISORE | 75% | +| Divider_gateLeft3 | Input | E3.7 | DIVISORE MICRO 0PORTA7 | 75% | +| Divider_gateLeft4 | Input | E4.0 | PORTA 8 MICRO DIVSORE | 75% | +| Divider_gateRight1 | Input | E3.1 | DIVISORE MICRO 0PORTA1 | 80% | +| Divider_gateRight2 | Input | E3.2 | MICRO PORTA 2 DIVISORE | 80% | +| Divider_gateRight3 | Input | E3.3 | MICRO PORTA 3 DIVISORE | 80% | +| Divider_gateRight4 | Input | E3.4 | DIVISORE MICRO PORTA 4 | 80% | +| Divider_manualBackwardButton | Input | E5.4 | INDIETRO COMANDI MANUAL | 90% | +| Divider_manualForwardButton | Input | E5.3 | AVANTI MANUAL COMANDI | 90% | +| Divider_resetButton | Input | E5.6 | RESET ALLARMI | 90% | +| Divider_startButton | Input | E5.0 | MARCIA | 95% | +| Divider_stopButton | Input | E5.1 | ARRESTO | 95% | +| Divider_TranslationSafetyHighPho | Input | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA | 90% | +| eStop_ElectricalCabinet | Input | E2.0 | EMERGENZA GENERALE RELEE | 90% | +| eStop_PB1 | Input | E2.1 | PB1 PULSANTE EM. PUI SANTIERA | 95% | +| safetyRelay | Input | E3.0 | EMERGENZA CARTER DIVISORE RELE E | 85% | +| zoneA24VDC | Input | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO | 75% | + +## Outputs Mapeados + +| Device Tag | Type | PLC Address | PLC Description | Confianza | +| -------------------------- | ------ | ----------- | --------------------------------------- | --------- | +| Divider_acousticAlarm | Output | A0.3 | COL. LUMINOSA SIRENA | 90% | +| Divider_enableX | Output | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE | 90% | +| Divider_enableY | Output | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE | 90% | +| Divider_resetLamp | Output | A0.7 | SEGN. RESET LUMINOSA ALLARMI | 90% | +| Divider_runLamp | Output | A0.5 | MARCIA SEGN. LUMINOSA | 90% | +| Divider_towerLampAlarm | Output | A0.2 | ALLARME COL. LUMINOSA | 95% | +| Divider_towerLampAutomatic | Output | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA | 95% | +| Divider_towerLampManual | Output | A0.1 | SEGNALAZIONE COL. LUMINOSA | 75% | + +## Tags No Mapeados (Confianza <70%) + +**Inputs no encontrados:** + +- zoneD24VDC +- thermicTrip +- Divider_TooFull1Line1-6 +- Divider_TooFull2Line1-6 +- Divider_encoderReferenceXAxis +- Divider_encoderReferenceYAxis + +**Notas:** + +- Mapeo basado únicamente en descripciones disponibles +- Algunas puertas pueden estar intercambiadas entre Right/Left +- Se requiere verificación en campo para confirmar correspondencias exactas +- Tags con confianza <70% requieren información adicional para mapeo seguro \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md b/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md new file mode 100644 index 0000000..d95b02c --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/IO/PLC IO Tags.md @@ -0,0 +1,140 @@ + +| Tag | IO | Description Italian | +| --------- | ---- | ----------------------------------------------------- | +| QF10410 | E0.0 | LINEA ALIMENTAZIONE MOVIGEAR | +| SERIETTAV | E0.7 | TERMICI TAVOLO ALIMENTAZIONE INVERTER | +| SERIETDIV | E0.1 | TERMICI AZIONAMENT ALIMENTAZIONE DIVISORE | +| QF31110 | E0.2 | ALIMENTAZIONE SPAZIATORE USCITA DIVISORE | +| QF27110 | E0.3 | ALIMENT. REG. LARGHEZZA USCITA SPAZIATORE DIVSORF | +| QF31610 | E0.4 | ALIMENTAZIONE TAVOLO SPAZIATORE INGRESSO | +| QF27130 | E0.5 | TAVOLO ALIMENT.REG. LARGHEZZA INGRESSO SPAZIATORE | +| QF31910 | E0.6 | ALIMENTAZIONE SMISTATORE TRASLAZIONE FINGRESSO TAVOLO | +| QF27170 | E1.0 | ALIMENTAZIONE CINGHIOLI REG. DIVISORE | +| QF34010 | E1.1 | SMISTATORE TRASLAZIONE ALIMENTAZIONE ATAVOLO USCITA | +| QF34110 | E1.2 | TAVOLO ALIMENTAZIONE SPAZIATORE USCITA | +| QF27150 | E1.3 | ALIMENT. REG. LARGHEZZA SPAZIATORE USCITA LTAVOLO | +| FA10910 | E1.4 | 24VDC QUADRO ALIMENTAZIONE INTERNO | +| FA10970 | E1.5 | ALIMENTAZIONE MICROMECCANICA MOTORIN | +| QF11030 | E1.6 | ALIMENTAZIONE ILLUMINAZIONE DIVISORE | +| AIRQE | E1.7 | CONDIZIONATORE ALLARME | +| K14010 | E2.0 | EMERGENZA GENERALE RELEE | +| SPARE1 | E2.3 | PULSANTE SCORTA EM. | +| EMSB14110 | E2.1 | PB1 PULSANTE EM. PUI SANTIERA | +| SPARE2 | E2.2 | PULSANTE SCORTA EM. | +| SPARE3 | E2.4 | PULSANTE SCORTA EM. | +| K15010 | E3.0 | EMERGENZA CARTER DIVISORE RELE E | +| S20010 | E3.1 | DIVISORE MICRO 0PORTA1 | +| S20110 | E3.2 | MICRO PORTA 2 DIVISORE | +| S20210 | E3.3 | MICRO PORTA 3 DIVISORE | +| S20310 | E3.4 | DIVISORE MICRO PORTA 4 | +| S20410 | E3.5 | DIVISORE MICRO PORTA 5 | +| S20510 | E3.6 | MICRO PORTA 6 DIVISORE | +| S20610 | E3.7 | DIVISORE MICRO 0PORTA7 | +| S20710 | E4.0 | PORTA 8 MICRO DIVSORE | +| S21010 | E4.6 | TAVOLO SMISTATORE MICRO USCITA PORTA 1 | +| S21110 | E4.7 | TAVOLO SMISTATORE MICRO PORTA 2 USCITA | +| K16010 | E4.2 | RELE CARTER SMISTATORE TAVOLO N INGRESSO MULTIMA | +| S20810 | E4.3 | TAVOLO SMISTATORE INGRESSO MICRO PORTA 1 | +| S20910 | E4.4 | SMISTATORE TAVOLO MICRO INGRESSO PORTA 2 | +| K17010 | E4.5 | USCITA RELE CARTER SMISTATORE TAVOLO MULTIMA | +| SB50510 | E5.0 | MARCIA | +| SB50520 | E5.1 | ARRESTO | +| SA50530 | E5.2 | MANUALE/AUTOMATICO | +| SB50560 | E5.5 | RICHIESTA ACCESSO | +| SB50570 | E5.6 | RESET ALLARMI | +| SA50540 | E5.3 | AVANTI MANUAL COMANDI | +| SA50540 | E5.4 | INDIETRO COMANDI MANUAL | +| B50610 | E6.0 | CONTEGGIO DIVSORE FORMATO 1 | +| B50620 | E6.1 | CONTEGGIO DIVISORE FORMATO 2 | +| B50630 | E6.2 | TRASLAZIONE SICUREZZA DIVISORE ALTA | +| B50640 | E6.3 | TRASLAZIONE BASSA DIVISORE SICURE77A | +| HL53010 | A0.0 | COL. LUMINOSA MARCIAAUTOMATICA | +| HL53020 | A0.1 | SEGNALAZIONE COL. LUMINOSA | +| HL53030 | A0.2 | ALLARME COL. LUMINOSA | +| HA53040 | A0.3 | COL. LUMINOSA SIRENA | +| SH50510 | A0.5 | MARCIA SEGN. LUMINOSA | +| SH50560 | A0.6 | SEGN. LUMINOSA RICHIESTAACCESSO | +| SH50570 | A0.7 | SEGN. RESET LUMINOSA ALLARMI | +| S20010 | A1.0 | PORTA1DIVISORE MICRO ABILITAZIONE | +| S20110 | A1.1 | MICRO ABILITAZIONE PORTA 2 DIVISORE | +| S20210 | A1.2 | MICRO ABILITAZIONE PORTA 3 DIVSORE | +| S20310 | A1.3 | MICRO ABILITAZIONE PORTA 4 DIVISORE | +| S20410 | A1.4 | MICRO ABILITAZIONE PORTA 5 DIVSORE | +| S20510 | A1.5 | MICRO ABILITAZIONE PORTA 6 DIMSORE | +| S20610 | A1.6 | MICRO ABILITAZIONE PORTA 7 DIVSORE | +| S20710 | A1.7 | MICRO ABILITAZIONE PORTA 8 DIVISORE | +| KA53210 | A2.0 | RELE EMERGENZA GENERALE RESET R | +| KA53220 | A2.1 | CARTER DIVISORE RESET RELE | +| KA53230 | A2.2 | TAVOLO SMISTATORE CARTER INGRESSO RESET RELE | +| KA53240 | A2.3 | TAVOLO RELE CARTER SMISTATORE USCITA RESETF | +| KA53250 | A2.4 | ABILTAZIONE DIVISORE GATEWAY USCITA E 1GRUPPO | +| KA53260 | A2.5 | GATEWAY USCITA ABILTAZIONE DIVISORE E 2GRUPPO | +| KA53270 | A2.6 | GATEWAYUSCITA ADIMSORE ABILITAZIONE 3GRUPPO | +| KA53280 | A2.7 | DIVSORE GATEWAY USCITA E 4GRUPPO ABILITAZIONE | +| KA53310 | A3.0 | GATEWAY INGRESSO DIVISORE ABILITAZIONE E 1 GRUPPO | +| KA53320 | A3.1 | GATEWAY INGRESSO ABILITAZIONE DIVISORE E 2 GRUPPO | +| KA53330 | A3.2 | GATEWAY INGRESSO DIVISORE ABILITAZIONE 3 GRUPPO | +| KA53340 | A3.3 | DIVISORE GATEWAY INGRESSO ABILITAZIONE 4GRUPPO | +| KA53350 | A3.4 | DIVISORE ABILTAZIONE LLUMINAZIONE | +| U30110EN | A3.5 | ASSE ABILITAZIONE LONGITUDINALE DIVSORE | +| U30210EN | A3.6 | TRASVERSALE ASSE ABILITAZIONE DIVISORE | +| M31910HOM | A3.7 | TAVOLO AZZERAMENTO EINGRESSO SMISTATORE TRASLAZIONE | +| M34010HOM | A4.0 | AZZERAMENTOTRASLAZIONE SMISTATORE USCITA TAVOLO | + + + +| Network | Type | Address | Device Name | Sub-Device | OrderNo | Type | IO Type | IO Address | Number of Bits | +| ----------------- | ----------------- | ----------- | -------------- | ---------------------------------- | ------------------- | -------------------------------- | ------- | --------------- | -------------- | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41110 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 0..0` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41111 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 1..1` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41120 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 2..2` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41121 | 6ES7 131-6BF01-0BA0 | DI 8x24VDC ST | Input | `EW 3..3` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41130 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 0..0` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41131 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 1..1` | 8 | +| PLC Local Modules | Local I/O | Local | PLC A40510 | A41140 | 6ES7 132-6BF01-0BA0 | DQ 8x24VDC/0.5A ST | Output | `AW 2..2` | 8 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1100..1119` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.31 | U30110-AxisX | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1100..1119` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Input | `EW 1124..1143` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.32 | U30210-AxisY | DO SERVO_1 | N/A | DO SERVO | Output | `AW 1124..1143` | 160 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1148..1195` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.33 | U30310 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1148..1195` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1200..1247` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.34 | U30410 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1200..1247` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1252..1299` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.35 | U30510 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1252..1299` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Input | `EW 1304..1351` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.36 | U30610 | DO with manufacturer telegr. 102_1 | N/A | DO with manufacturer telegr. 102 | Output | `AW 1304..1351` | 384 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Input | `EW 1356..1377` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.37 | M30710 | DS402_Extend-A | N/A | N/A | Output | `AW 1356..1399` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1404..1419` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.40 | M31010 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1404..1419` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Input | `EW 1424..1445` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.41 | M31110 | DS402_Extend-A | N/A | N/A | Output | `AW 1424..1467` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Input | `EW 1472..1493` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.42 | M31210 | DS402_Extend-A | N/A | N/A | Output | `AW 1472..1515` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Input | `EW 1520..1541` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.43 | M31310 | DS402_Extend-A | N/A | N/A | Output | `AW 1520..1563` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1568..1583` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.44 | M31410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1568..1583` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 1588..1603` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.45 | M31510 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 1588..1603` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Input | `EW 1608..1629` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.46 | M31610 | DS402_Extend-A | N/A | N/A | Output | `AW 1608..1651` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Input | `EW 1656..1677` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.47 | M31710 | DS402_Extend-A | N/A | N/A | Output | `AW 1656..1699` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Input | `EW 1704..1725` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.48 | M31810 | DS402_Extend-A | N/A | N/A | Output | `AW 1704..1747` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Input | `EW 1752..1773` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.49 | M31910 | DS402_Extend-A | N/A | N/A | Output | `AW 1752..1795` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Input | `EW 2016..2037` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.70 | M34010 | DS402_Extend-A | N/A | N/A | Output | `AW 2016..2059` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Input | `EW 2064..2085` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.71 | M34110 | DS402_Extend-A | N/A | N/A | Output | `AW 2064..2107` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Input | `EW 2112..2133` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.72 | M34210 | DS402_Extend-A | N/A | N/A | Output | `AW 2112..2155` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Input | `EW 2160..2181` | 176 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.73 | M34310 | DS402_Extend-A | N/A | N/A | Output | `AW 2160..2203` | 352 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Input | `EW 2208..2223` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.74 | M34410 | Module I/O (08 words) | N/A | Module I/O (08 words) | Output | `AW 2208..2223` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Input | `EW 2228..2243` | 128 | +| PN/IE_1 | Ethernet/Profinet | 10.1.30.170 | E44010-Encoder | EO Encoder Multiturn V2.x_1 | N/A | N/A | Output | `AW 2228..2231` | 32 | \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md b/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md new file mode 100644 index 0000000..eaaa0f9 --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/Layout - Anello-Ring.md @@ -0,0 +1,441 @@ +--- + +excalidraw-plugin: parsed +tags: [excalidraw] + +--- +==⚠ Switch to EXCALIDRAW VIEW in the MORE OPTIONS menu of this document. ⚠== You can decompress Drawing data with the command palette: 'Decompress current Excalidraw file'. For more info check in plugin settings under 'Saving' + + +# Excalidraw Data + +## Text Elements +M316 ^QGpBOsPR + +M317 ^XwY6YBxg + +M315 ^5uw93rn8 + +M318 ^R1xTprpX + +B31540 ^1yPovzco + +B31550 ^orOOU9K9 + +S31550 ^LL1ixc09 + +M328 ^Wu6lcYjc + +M329 ^udjVHVza + +M330 ^bTQ5oKGd + +M331 ^I8y1IZ0k + +M336 ^ZJVjURen + +M335 ^vqG6Eh7e + +M334 ^RLFXNXj2 + +M333 ^oXfahoxt + +M332 ^xITnc4cQ + +B34440 ^A6MjGh8q + +S34460 ^jqFuZsCh + +M340 ^AQXPJwvv + +M341 ^3KyRdxVs + +M342 ^RYTbgj1D + +B34450 ^qliZ1nIA + +M343 ^wBu9Je9J + +B34451 ^RzrQ6N17 + +M344 ^yOPtEZnu + +M311 ^7VW2eTrq + +M312 ^E1cDenf1 + +M310 ^LXZs5H0T + +M313 ^4IL2QVlN + +B31060 ^Zx5y3RpD + +M314 ^z962gh5J + +B31440 ^iZOsgyG1 + +M319 ^6AK1KY2Z + +M307 ^KP4NXEjV + +M304 ^W93X5RUo + +M306 ^dsWbRb1W + +C1 ^M1uAvTX8 + +C9 ^Jg2LBtOi + +C5 ^rlSM1POS + +S34470 ^SpmLp1Cq + +S31051 ^eoUd3YsC + +S34461 ^heswS0PC + +S34460 ^bwPm9Dz6 + +## Embedded Files +cc2e866f5ab74b824891b9e6e5d79ed0c73485aa: [[Layout-Model.png]] + +%% +## Drawing +```compressed-json +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 +``` +%% \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md similarity index 99% rename from 03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md rename to 03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md index 95009ff..bebf39f 100644 --- a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo.md +++ b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.0 - Ita.md @@ -10,7 +10,7 @@ Il progetto coinvolge un trasporto di bottiglie ad anello con i seguenti element * Per effettuare il cambio di formato, il tavolo ha 2 motori di cambio formato delle guide che aprono o chiudono le sponde e i dosatori. * Per selezionare il canale di carico o scarico si utilizzano 2 motori minimotori, uno all'ingresso e l'altro all'uscita che permettono di modificare l'angolo delle sponde. Questo angolo deve essere caricato come parametro e ci sono 9 canali possibili. - + ### Tavolo di accumulo *** L'obiettivo del tavolo di accumulo è di immagazzinare il formato che non si sta usando. diff --git a/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md new file mode 100644 index 0000000..13f7a3d --- /dev/null +++ b/03-VM/44 - 98050 - Fiera/Progetto 98050 Fiera - Tavolo di accumulo - Logica - v 0.1 - Esp.md @@ -0,0 +1,68 @@ +*** + +El proyecto involucra un transporte de botellas en anillo con los siguientes elementos: +* Anillo compuesto M314, M315 y M344 + * Transporte con guías motorizadas para cambio de formato +* Divider de alta velocidad + * Cambio formato Guías M307 - Homing S34470 +* Combinador para unificar los canales a la salida del divider. + * Cambio formato Combinador M313 - S31051 + * Logica de salida B31060 +* Mesa de acumulación que permite almacenar el formato no utilizado. + * La mesa de acumulación cuenta con 4 filas a la derecha y 4 a la izquierda además de la fila central usada solo como bypass. + * Las guias de traslacion que permiten mover las botellas desde los canales exteriores a el canal central necesita no tiene traccion propia y como pasa por los canales centrales esto obliga a que para cargar o descargar los canales exteriores los transportes de los canales interiores tengan que estar en marcha. Tambien restringe por este motivo a que los canales exteriores se cargan primero y se descargan ultimo ya que necesitamos mover libremente los canales internos a medida que cargamos o descargamos los canales mas exteriores. + * Si definimos como canal(centro) , centro + n es formato derecho, contro - n es formato izquierdo y centro es el canal de bypass, luego para cargar el formato derecho debemos y tenienedo como Max(n) la cantidad maxima de canales a la derecha o izquierda entonces primero debemos cargar canal n=centro+Max(n) y vamos decrementando n mientras sea mayor a centro. Mientras cargamos el canal n los canales desde centro hasta n se ponen en marcha. + * Para la descarga se hace el procedimiento inverso descargando desde los canales mas cercanos a centro hacia el canal Max(n) + * Para el formato izquierdo se invierte el signo al usar n=centro-Max(n). + * Para la mesa de acumulacion que estamos trabajando Max(n) = 4, los canales estan definidos desde 1 a 9 y el canal central = 5. + * La mesa puede almacenar 2 formatos, uno a la derecha y el otro a la izquierda. Cuando se requiere un cambio de formato se carga el formato en curso y se descarga el nuevo formato. Una vez descargado el formato en curso se activa el modo bypass. + * Cambio formato: + * Dosadores de Ingreso: M318 - Homing S31550 + * Dosadores de Salida: M343 - Homing S34461 + * Para seleccionar el canal de carga o descarga se utilizan 2 motores minimotores, uno a la entrada y el otro a la salida que permiten modificar el ángulo de las bordes. Este ángulo debe ser cargado como parámetro y hay 9 canales posibles. + +La secuencia partiendo de la mesa de acumulacion es: +* Mesa de acumulacion: + * Dosadores de ingreso M316 y M317. Cambio de formato con M318 + +### Mesa de acumulación +*** +El objetivo de la mesa de acumulación es almacenar el formato que no se está usando. + +El trabajo tendrá los siguientes objetivos: +- Lógica de la mesa de carga, descarga y bypass: gestión del cambio de formato para el minimotor. Por simplicidad, la mesa está dividida en derecha/izquierda y los formatos pueden estar solo en un lado. +- Lógica de los motores en anillo y lógica estándar VM. +- El HMI no será desarrollado en esta fase, me has dicho que se hace por separado, pero se creará un simulador para nosotros. +- Gestión de las recetas en el HMI: inicialmente, se seguirá el plan acordado. Se crearán filas en el recetario para cada motor en anillo y para los datos de la mesa. El cambio de formato de la mesa comenzará solo después de verificar que no haya más botellas en el anillo y que el modo carga esté activo, con el divider y el anillo en automático. +- Velocidad: + - Velocidad de bypass: depende del divider y del anillo, no limitada por la mesa. + - Velocidad de carga/descarga: debe ser lenta para cerrar los huecos entre los cambios de canal de la mesa. Durante la carga, la descarga está detenida y viceversa. + +Por ahora, preveo la mesa como un Dispositivo con los siguientes señales de entrada/salida: + +#### Señales de Entrada (Input) +*** + +| Señal | Descripción | Función | +| ------- | ----------------------------------------------- | ---------------------------------------------------------- | +| i1 | Salida anillo solicitada producto | Salida libre | +| i2 | Solicitud de carga | Para cambio de formato | +| i3 | Anillo vacío + divider en auto + anillo en auto | Para generar consentimiento a cambio de formato | +| i4 | Velocidad motor bypass solicitada | Velocidad deseada para bypass | +| i5 | Cambio de formato ejecutado desde el HMI | Comando de ejecución | +| i6 | Habilitación de descarga | Inhibe descarga automática una vez completada la carga | + +#### Señales de Salida (Output) +*** + +| Señal | Descripción | Función | +| ------- | -------------------------- | ---------------------------------------------------- | +| o1 | Entrada solicita producto | Mesa lista y en marcha | +| o2 | Cambio de formato permitido | Finalizado el carga y anillo vacío | +| o3 | Velocidad motor salida | Para interfaz con 1 motor de salida de la mesa en el anillo | +| o4 | Mesa en Bypass | Estado de bypass activo | + +Cambio de estados en la mesa: +- La carga comienza por solicitud externa i2 (de operador o temporizador). +- La descarga ocurre automáticamente después de un cambio de formato (i5). La mesa se descarga completamente antes de iniciar el modo bypass. +- Una vez descargada, se activa el modo bypass. (o4) \ No newline at end of file diff --git a/03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png b/03-VM/44 - 98050 - Fiera/adjuntos/Layout-Model.png new file mode 100644 index 0000000000000000000000000000000000000000..195cf58b7ac8be80fe335bdaf8663ccfd038442f GIT binary patch literal 185145 zcmeFY_g9nM@;)2|DUTEp6_BPPBGN^Avx10#g3^1W6FQ-WA_^i+={+I>B28(b1|lU& z3q3%90HFs6H31UH8_sh+-?iTV;pC^iSRwbmXZFloGuO3aUg&AD{&V#o006+M{q(T` z0Kgay0MIKkG0^_9GK_cx09*rTKYs8kAZLAgHTlhGpvbJ@>*>B*H+%k(u>I@$j(P?e zlF6R;t7GV%iXGRr8lJfO56OSb%0{^p>4CgFrd6LbFPbadi+B2RCgO@#uW?wN&^i+) z>BgHHZhC`9{>Gyn!5(l0eFsNBW53sa#?wK0A3m0K_jaqMk{rg=NdEo7MbAWc&(U^6 z`-J;>Ox~jZcfG=RM*82?eSN0zGyg7w9s*eYT@7%awfT1yo_7I2_wRD=9f14a)fW-^ zwtrUuwd;V>m!*AHnE&^a|Fb3Fe}@S0zvuz{FKqw-|I3$v{}l?r|0?AFpaBgX{SRgV z06})itjsi9v<1n^$&Jvgyp2anoJ z#{i_?Vt#@!fs1p|g16JHf?iM5I1fLq&z>Cc{Bi!8N5kUM&Iu{3p7~Pi)_ZF8jj)r? zb)xREmD%n`uMStVG)zy(VN{RBOvgOYR-$Wbox|kbA&S~rg{exz&;tfUyzUkDp8|gX zUh`cz#})U9szO!Ll#gyTaBO9!B{%d#eM6JIx)qw~Q_9{uX^WRUwN6~PX7oS5@4)61SG&4+pg;^GMw;De^C zATv?dU#CBF?QKs2lCF=a&tV z#7wjxi%#E-L+j;k-L3!l<4MIi-nk7_*vW2topLvemM8ahyA**0Y$DV;WV>^zF1?kq z*mKfT>%0y6nAtQ~1U=a+cK!PQvvaS@G|a;qy-wb2sd+ zI$6sN$HYpOF-P@A&{@C==f4dTerOk^fxQ=uAM@$PB@!gfVR@DUVU)RBTa*BJu-pc-oc@f zIjkDQ0T3(&F#-m-hU;$rYngYU+n1}&2rZAqc zC_kl*jy**x?C|_zze=mwX2Wuxd+vm5WlO&5@!qi3-W{jmp~=19=cQ6MFfauK!5ka3 z_!LvodXkvvk_`YH{kht9`m8eEmsb?wH!g{fmW_ch{jQ-2v(oJyW@S9t_^vwHXO3BN z_Bb*V7jFATO7qIs*ev|KQs^-{4DwPcR$c{FqG^Bj*gZ34P@meZmIL%%Se6{3hmwpHKD2TrxJ zvM7MERzv+m;Sx_Q7!V5^FzV~W8PbV0=ZzW9c5=5hb$|KFe$wfCrBs6pC_e96dq9S& zGsbZ5;J}@~1cm&)eRQk;;Hk^R{_8T$egLcg)OP&R&M&0EonX=?$RS2knmb}Hl6})@ zlehXAFwM!_p#J!osf*%oWJYQbzC3JVO2IKrGEH8hMc4YU8=Z|*OOo$Ao)>eE?YYg! z|DH|O!s^+n1)u(>3vX+bR*mN1NBVIiKxfVba-EDLl`}cxWSh_U~<- z=91uETE=?gW62*b@KK&WR=##4W&*LT5_Yl-z0GCe`GE5UvTTk50ffi9Or|l?3}(~v zrxw&MTAVXz(cjkxc10|e4a}iE8Sv}tE5?+W2)gP>o`PN70B-E^`f#Ti88kUoDsLY= zxtu2@NIfX-VbnMnbO3v+!fDfh@s-~H=9KS_pB)akZEZeoNqHoCN;|{~JeyK*NOw@= zY1Q!Cx-|aCtQ6Gk-NTWQ_T!$n>PV1>AttI}i9}1>Q1IBb7W%tQ@#%jc&Zl=mkd0iLl8e2tIe+aAuqU+c_GUB^i8@T(5WI~%+ z*c5R7XI$~q{f+kQRto{r)ZkX>+WIWhe57~8A{ksWwe`8>A6i!Bc{c{?2Jh$VZf7Bl zd+7!GpPp{Pgzj|05$;#OW^ULEkmv*XM85C@Z^;=$YF+!5+@^xcCl<|~WmmCQS2JqD zjjDAk!;V)cemn?QQ7|!vh3c*m`AzoG&iV2Zei#Xb6b8VG(EmFyCoIJ|-kLs2vYhy# zI`pF3kgd~1sQrOSbY8*rc?+Lb;;-~N_{Q913JQu!Ml7wbI|Un6>DCfLNij>sPACK@ zi?>G98s>(HD3~eQ1{sHykJZu99w7YXbbMo?V8=h1nVI={smo7ay}@xX>|wupU(Qxr z1YI9cPal>JQkw5Hj|E+2FN6lI{aW&>p_N?ff4yfJ<5`=wmmYNLpChA;3SE0Xxoh(0`+7*cwu z{;1F3eLT;@I#*dEoqk5WmHRkcFPsxGowcQ8RqU_vfn=Fl5)F8$uz z=1<+>$eq#BL0SO{^}I(9Xp?!3I;%7lW2neS=ESXYmfa)||4Mg7X#U~)`fdwCnnu4b z*$8UgsQZ}tg)|fF5lGpdwruj@4P91AlsbStzIN4`7Mi9bSYFV_WwUzS!>M6ij8xNl zl>^w7K7FvRvrbeXY^zd(0WYUMel(!hw?L$R5r}S`Cxxq2Y|4SSh%P z6?qapd0$*R?`fhAnX}W8MXdM4cYV~>mHq>lb%@t!5i#sOeTIyyFPX@gwc$JZ+L*P% z!z0lYu^&`(-GN1mmbHc0|f87QUOm*gb1QI_4(2EfE#DP%#H9C4jC;~tnPa3XAbej3z;d53!cSCGN^yO(sQvEXBe_F6UiH^YY~GH#W}?sS zhOl@7P-gVfjC_6lY=?=CLR}xHzUovTG5)9Y(b?r(e}@KI zIq7LwwlV>4Hp9fu@LzYJ@7Qj=5vq`INUOK~ch%H}ExI5u59|y-tQN|fePybDzp?s! zZ3#;PqhRPk%u*ebgzL7?y76E|K-ocDBMmKN2X`!1SgJHmR7Y2*phY)1!+dzZ=An=E zC?^Gp>f_~=O_Qgg!k5mj>gmyNFfYb{uBBr92{RL_juu>nc|ZrxmJNXbn_$`9;GsG) zf<1IV6^p0gu^3QU;_1}2E$9}2;Y<43=UuP2*L#vXjVU=If%9)Hqv!+8d3w1&REo(z<1%@X=IJYMa)UJ$w5Gkz7~W!apEwx-T3EzIbL?j$cA8N+u{ ziCVY1Bj|Z3T`c*kf#w8#uZst(#ZdQ6*RZw9BiUP|7;UJG!qgUgQ})&-`J-{OT|ukw zb7|+W{{%TI8057z0o-5{fZRW~+=2h44R9LU$g!VY_^of6n_ zJ}W0=g2(T1CPPBAkJfNey~O0D>NK2;?Ct(GpI=vYmF=5^;^I*qQ)ryuNBK^C3bML% zx=3Y{mMi9C1}`Z7#lo}}|SH)jpL+N-=!(~i7VL1^5gOC-nkuj~fZn4Uo z`VIHyZ94niC5c5XjiZ;l!8E*H%I*SGQ`|OgJ$fBTgG5<9PLGnNKKm~rYM zoNN**GD%w9&u;THFVC(7{dBP${37r@3+g{8SeJJfcV!Z`)1u~l&3DF#rH)b2g~G`A z#kh)&mw%Kcd7v394*84_zkM4DtQ9)0@e>c0^c)zE-0rp7Iw6>p8u}Pe+3%ee z7fs8JTlog{9g68A(Hab7Hn}V2-O6n1g0P5OZi?dJMG+;tTS%If3_^+3(9D(xjs^p- zD&w!9k=kFi$)>*ExTE^sWN|MZkstC&jWt$ke{NVIGxm4(E2$74o=V_Hw78yLUdWD4 zx1$D`S>+~U%(1Bc&D@~1%)aHI6yrqB-@l|r$%Y|gNallsDe8iV##-lk$-#PgV%BG~C>|v}>nYX5yrRBuI=Dm0jAct%Q^~4-2PTOjuwm z0(oT@ZoE@_(XT-*TMB#K>tw0-v?>EFI(aE5ZLd7YWW^~d>5b|1Ued;ZNLRC zH`(09Mz-4wjMk=6ej3lFEX3+++cnTCo>Ftf(BpI94X8Ow*DYh-)7{2b-IO5q2?D}B!Ck* z&Afig=qWBTr^hP}t2(|wi!4kgpUKYVjM$#xvldj+<4ZxT_fZcLskdAA&0GDRPxeo~ zV!s`*^H(dIN99-8lZmdQn~pAG>NSf<>M@quLLquk>m)Ej4H^r~6hr;#v9e=ss3=Nx z_xWxnA6ctK|M82x82yks$|^MUiz(J8fB*VK#v0XhyH))p49W7F&qh(;L#Mh!n3*Nd zUZ*3a$BJ0Bbj&B5i9P62kVj?DJ>>OdORTk90;dQ_M#?$$TpLJ4#VWGJY>5eoIh@rh znN^gGS^jX%Eku6d+eS#ey!~hfi$b+-gTuyRy7det(X3>`D>^uL@`c~Ymy6|tMYmym z3E=D;lIi%P&W!Q8%?8IKdNm@WQ@yxuE9sg`jtzf?UNx2|- zyttdz{e*!FzxX)J>xUf;?`Tk$ODyF|4g_W7Z2%)%9Bb$xOI|#PB?;-$1#x22Gj~gFA?R9p|9Q+DS=R<+S3CC@Sh`;WBkJ?fQ+dXthgHYH2r9hmdGUNTq z(E@F2>QQ;$VgwzTu`q_{FCy*z%|+#ESRD^UFgMe`1%IrIRB&(@6M1+op8f6z&wO85 z6{3Qy@I09%0K@rYjX<^2Yj zpFQpgDpN&>AbI)(MNDlx{TdQ zzh8Zc0v}^qk4taS_nYlSIb~9|& zc?WR$;tjvQL~z&smf{zIYcDEwvdB-!Dn8S_UP-SA{68%~Nv_fbvT5(77;?u4GK;W$ zR?w~2C&ykp;(BZgvvIH%P<@^m!@Ae}HMCXK4HNn;x}qvK051xln{iunxn#9x7g`qVT-n5d_PTcH_)sOtU*a9SyKyw%RS zTlk{)1>e2>uVxPgd`4aM=zc2atOCCHYxeBsDeWvjSq5U^T-nJ0Q{o-{nVM=vtCemI z$5k-|pjH);F7nz=Ft*CLP$mB!*4G{Q29hKGcc*|yv(wMZT&>!s;9T3jcEi}u$G~O< zAgDh;FmyNDn*Xo`d~4KgcXCu@?Mqy)ctTSAuf)z^iSF*s6JJ6L_B*Kv!BP&Hc2qyU z8+sS6)-WB#yUoK172>!V7b@9#?HAWNr}(pVpy{33S2{5%pC3dMi$_x;|9VSXvh19W zkF^|R>RgZOdbB#gf8_L}>Sy0B`R4_>=yO`sP&p@gKJx&&HaI?Y`YhlQjYKln63*kl zXo#`sx)}1T3wlAn(^oqiVv1IxbA0-hbhnPAs5?@923%r`o|VI9E{6Sg;tV=@>>S#x z7zowkocz~4-CD&vbLc{#- zax10BJiCXMg{5wV6rKG!l%quV#kflgn~vy3fKv`eY`%emldeZL@Ihvx^n-g&XPoGU z#AJrIx4K3b`7jV+M&9RsA~D|dzMC2wq4GJ~+j*o8=DN&^ky*`T;Z-}emW=(EKQb@L z82X$}J%fET_0)j3W|}G?8?GDazTQj6J=P~X5B_4oEgJz)_@V^*o_~)i!^X)g29X?+ zoU1>ah6uOqh|d{3D}zQ$yNC5PrpplmR4T?^pr}WUG!l7shX~QVpX2)Ap#;^jGrV$j zHPd^--oyPwQeVlbG!< znxmZ!o0n))bGL-zYJDzbWMK`oFWoxSPvL_!n!X>095)(V0%K}1J9L5v!%KngG$N#8 z4e80?!DG>%Smu>Y)nF*+S4D?h)`L-{cHp3cW-xsNxC# z+|^p%PZH9h09T?|Ngqforyb`?his2Yfs;9tVe4k)|>$ z*VOgB`8@$fiL#RbaWlRzXrUNm12rN4hBc0veWztY7!@;38a({-iA2VRc`xwDJ{AD4 zC|DKW?8bF!U%8T2xKOpXTd&HIDpCn2walHQFW$hp*1J!1afqONmbCicN$RftB-ZwF z%x?!8qW*k9OE~0r;IBsLrCshJcf{7PQj9t9M#gxhsF9k+^BRB8Zs#_x)m z|J>Oz(Rc*Y#)~^DVa6GLN!al|dHq4$5o2`7;|?ohO1W<9PCBsofKlIyNc466fZSa? zo>$-Be$FqMXspn8_xmB_-AxYlE}u8r^Ys=b|2&Qj%pEhx)@+}cE5jb-f-x=Qsl*Db z&wgDG7WM4fHq6q0I=(OTg$K+679 zw#Lq__e?mnEQB;n8jNiuF|}i3LcMssHAqvtefLMl*(VVLcen?Bpr1)aqQ<%D`DKYd ztvv`Xuk^X)`JWe!_7>GCa~iHQva+(--P98-bbsw^*$o=RaaDRkb2dmYmb z4K4-`uaMi%(%=7E+MX)hGoYd~-ihbTtq#J-UJ`j_*BWyyME7T%C6S=gAc$lxnnLXy z**Z5J?j%DgZ{FzEsP{a$+)!lFEZ?AqKM4LglZZQMNF0M+J`6ghg%3tL*!eiGT)(R< z8dZ{d1^Rm5E&aeEk+gU~P2NUzPEmI{d?*&JV3|MR`(ln6o$4I6x{~+{7!_DB+s;SG zEn+;a5#UY7FH%ojek8Wb@5HU}y)me?wC+J=P_RbqH~->_DLLK8e*wvoZ?Nf z?eb58mo(LNyiGr4KzP!(6>41H=*dAJD7hZ2wCK53>Ta;i+G3)FzeJNvd+WqT+pqy} zmJj%iEAz4%i9+*r)&0t0(y=m(SM}EPSsfXWcOS|a%AYMacR!519Gsi*iqdx&I0^@E zE4}t0RL!bih<>7EbAz~_@g1anv)e{6hSa+iW=j^x$jftuqevi?YSMiY_2)FIsL`A7 zQU*64Tj_M?eAyU19l*?R`jax?`$9~Gs!U$Bi)`CRIw})L_LJ!k<>o&ZZ8l<}Z0`qu zLwG}y!VJC`Mfc!HJ$Ss0eM>niD=e(JLSg0r@uVf8{Zq4qGqF%=dMpLm!?_}JwmI+m z1I$D@33pU09+_+)bG5Mr6hIwJHZq((9@5NaRXs6F`$ckvSX$&(`*mTfdHW7R_Zm>g zhaDFWc(v8W9Tn-E=Fq_M3JkJ4vqpa;^11hYZ8hFrb(vSKMm%wGs1)q&wOUIpoj?6j z^%|p*FH8b?{%B={(m1>H9;w#mzyv<0bh;jcsBrAj7_6JtgbrC`A7|GSXxy)cV!u;j zu!dyI_Z}iC7(71|lKDIbi=t9YG=jUZwl`A z(!;af_bZh!ZGs8ShltgInz_6$Jna2YNp)NbO&`5nWoH!JZ@a;7J+d6Xqj(!D<&{~u zerD{>X&~EcN$6NUK`M^{KjQ0X1VDr8+&f&)QlEME=jRDA31BdNLGp#UPAKJXQ#QtX zdO9`BS9S)*7dG|&C~yCGOlSO_y5Z_Blp4F~r#>QHbkO8&iK!3E+53|;HK^T_{NQYkU)Bz>qtE5WL5JB#X9uRpdtyw3R9!6Y?OW#?$Bvd2Vp{;07z zbm-ckSA&%s#8mT0)= zOi^l|V+q=k`y=;Gh|(QuAi0`!S$J*noKf}1j(i3~^jv`D#t(tp8DSpo_-6g%ah|hi zoiTBuhglzDhED}|+5gstc>^}i*rHU!e=YOC)H1&eamQre@li#z0D)S@av`0=ldjDE z*?qd7UxMfzz)?ERXyuQQb6nPCXp~tN_}hNSZslzO73KF{cKIx0q91F4DOt(}N~OL( znh6l9>ws6L#zID={3j0;>Pxc?B8K|IBEXi`D+c^FuA+CXi?LNA&)6nARI5UXmHm0;5St?-NM@*UBvQnmz3Cb z|C4rP3HF4D|A7`IZ}?2BYfP4DV}hD<4Yis#*s<_b-u1pgxs#dP8jpB*dey_OR|+Qk zw6T;VEpbF_sI4@Sw5n-IdukIpJKdIMh3UufR~4^a_8*0~{&s196D zV2774{pUj~lc}UTK7Cgk+b+b7~z~~0|E~=U8{xHMXOJUp4H$^^_us?-E zfH7rSbf3S<8XisRj@%QM@w=G|n^SfMm6VG!k0vbSDbFJdN7Ed|W7#5iYTaS@5M!6} zJl1^rdu76b^VIE|4QsLJtc_1mCykc$SVW45%97syP_6(U`Wm>JpGCAUQk?(Z7! zK$@=Z@M-sduS8b~oUj61vjN=UPp+zY{hHcW#1Brkv&|xeClv4MY{ZQS&&>PNDEYMV z9=R{RL$(_`fy`w!;<@KtpQJHLzCK*8yE`~#!ZSq7?p%i-5`02#ZF`o_@(|t^I7zTw z94ji69naPt!?b0nvM0S}`ns^If;|*i?1}JuLL=GLYDU;zS8Vf%49(*QwFJeBbHPSF zm;h5%fDLeq3a$Oh%2p+Q=zG{oCG{+ROV+z{O7x{(IT;kpl{XQQ%R`Z8olIjR-_<&= zvJjU%$8-RyQ;C=dtTc9iqc3O-)G4Pe{gcQXekQ!%Nkp@l4-j5^U9TR=Ql^_NpHAya z(k)|VnIdpUL7KMxQy(8BY>3Yte$H(6(_RIGCNh^~G?lI}n26$K_E5t@4Gf-E|Aa^E z(v>M$uRlB4FDMX$l~T>Im6^v*?OY3Sch?!IF%$+#G0Bm^gBsL zCn4)zDk}>Dn_unG#3|-JJoYX$hVn<1BkED4bl@{4mY;}Ps%+5@zp`>$)-pjFkDkz= z2)?2y5Zs<@HyoMlpcixo@Duzv{d$7oDe>pPKZvgg_Rq|8cBE>4;=S(P%LJ$Fls56S z{aSKL@v3lioAyJa8*BM1TZmEa#4Rr*Ki0wwdMSJ;S45P?h_?mNZVk+4l(6STFZ#MA z0__#EMu`A`jl{>He#Wf*Fw!Qi7+TZAIVf4abJjN|)*?=1AyU1XJ>qa~}Yh%;G0ig4Iz7XM)^DQ%*mmzUn z005BIHlGQEGy4lMB|I9J-^&HPo$}r8G`=VM4p)a12>yO}LfMt#>1FCSwb<2d%a)B0 zdJ6Uy{8z8!`Mi@kM{&@*Ux_OV)W~r9b7g)qyrpXHx%h{3CU}Lj(;0K*a*t_rYKZ!7 z?{4-)3u)RPZBs-js-n>y(*)S4$5NwTWUQ$bO&}ajJNH0Iy`Sq7yXD@K&W>`rGP`@@ zRcbUkKXx*y&(NMG5YuhL7*#k&PSJScRWm-}Ji{~}_})-y7Fj@1+Wb@|v`IA7SF8Rf zth#sk=Yj}rKU$~$D;eYz)0`A^t)odkTqpMSo=-ISd&p+{lQyFpacC1fjPG86my7hH z0C#Dj`g_$81(UjIk)gENaZ@lf^k`xl_$TZPzyw8O9Qil{zuuB8u*kmaicH%$186h5 zj4V35j4YLE-g?-8OOQ%)%nK|MUFE}5)emM9ZY@Ye0w-1Beb`vPP}#jczi=FW!VwAz z)euI38V(S#L(Mx?5**(zh?c<~%Haumb>W>Y;Az*MM#FQx+=0{*=0-gPlJt zk3^A$dwl`gd!s+LUKxQrx3^k0j+p_mLI8$vKO0Ji5jYQD8{A~B<#1no!y~po;Mih= zkf`xzM|sN7a5r+9r@!pNSvr8{?Z7x?72b4*mEU%wkTMovqVMdMUD?R&yf$5Q_3{4x z6OD_2TNeRzZCB+*4FwA~WQP1YIO4ELK!sEE18JftAt4n=efsbQ=gN{9k1NWiAkpOQIjD#4tY#rlXVmXx1}(ZaO&URM^VtY|<+hHD#+Z`S;x8mvA)O{_Q>zdC!R(1rC&ybl28i-w z>j_1=vNWxl;V!ue43eUKV>m=mQM3Ys18|oGlX%&Dk1)nA6nCthz=kNf> zo=(%Pft2efwEH=xb<`f*qsamM27JnkLQag#?OX%ix;n1`l(gJ=pVCBVK{YQ-r#eIOaVs#eLBmcuBWnYSHQ$b<4zNki++)gF z?rtH4R`Y)6L)B(1^9m~FKrjbE>%XG2$T_q??3)dr+j+Vzkh4kTmwkI?e1#T~;-;AG zoyPKS+Xkq>s+G@LU_aQCVkMQHg2KGw#sMOnyy@c3YstI1<(&fd{fSd@aCGdU2@3@d zTWD`&KBoL~FlS<-!9ZaePLsa`$?=UV@?BH1Sgv^`Yh3)JQd`)68Tp$wIOwwVgUY{3 zc#vI)%r}~j{(C{6tyz^Prw;OWE_}}S8(j!jQe<*8A#yIOwH*>Xw_F;DStr#Is^uwa zxHz9|JWaAWx9NX_C1Kf#@oqZe+FD5@gA1TdlO{toX)`!m(^ze7t!I`f_qO&DY#CKh zeFH5}P-#5&yK;H!C}W#f7NVsiB}n0wxuN`fPOKupRUy*91S6*N_6g6*%DvNB^qu9r z;Fo@w=Z065wcG?_oDA0q+XsGH>N;RrmI_Kj(nwmG*udJOd(C~OIq>z#TZLv@*UW6! zp6etvO8l&}Lvh-Z-YkdhO4kZHKG|^08K&J)kQnJ<9bK4XQz-5yRk7^0-}mKGMmBaa z%f44I7%1UP_u)7PgO>CZ18R2~YlPyH7vm0(*95Tq3@@a2+P^)R! z`Q@%U4nYWDBzaC=sFRRTQ15~92ey=0cy*dLR)H6p7|xC4(q@?pZa9PZXN)vC%~y$1 zmEn}q_)trhKh4W|mHxQPqC9kiYr;nQ>6#7}8jpgn8o+ zWBYZ!=WzY6K}Kx%`gsrqcm^(8X#np>0Qb1`&KLORcr#5@V;Mb5tBX?9F5(t* zMfS^qS3IT&y|SoEO>x1H)^Xz-l=z;Eee<5X=2}%1o0O2=_4tGXw_WZ*uL>P-EyyhM zqS;~42>vo1&HZ=9OI75&b3zUmjTJ_H=1oWyP4F>#<3Tiy_lRY``qY&4QZU3*YZw|g zi`VrC(ouM^Q;(|?$BzfMd_>W3vPj(IjETzY~7B634304C7Oj#!#BCroyXy zeb@|UV1&-9urOYRh(})@%c>tAjio|Hf5C! zrDU6-6W?!D!&6ahAV7{i+MAvDMWwyA+vg1>UR_Px{d?SQhm;)@QM+l zYvjyoQOa%tzklj3s`Xow8Y*9W`(=+Gx+U1NfAN0c!5m{2X}Auw40ffaxnN@oQ|1XD zCw86jW7Uj={JEpa2ELc(&aOYqs<{DU8fT<`UT0CcCTq#Ow334?o2iexK*XMGV6*VD zCb6|SddjQc9z?fnh<6&l>!R-IQ(svf4W-NHoA~ba%qmGXuITnT5&E(*FK43H6dspM z*LzSxYw%sX*oH2J_j&_%x@;$y{a~TJzL(vDq7vt)G|pm!QoMVK{8GuPGp5%4D;u`V z<#RxGcT;dZ?J6wf3Y|!SHQH#{nQm@kqR&!k(sS;8Iy-|PN=}v=N6z?_vFKU-&x<`? z2gl+p^_4UUG4m|{@={0JI@_Erf8hl@H`$_0sAUpD<86I-yBbn${YspWcIj>1a*-Hv zmpvs^b;ds3a=ghusJRMbBNhD(fm(f`XA@rRJ(|ZlxznMku@l!O&)$9t1nbk5v zKV5Zh+rN+x`=h6;s?QMM)fzylU7rn2>_4cd6_JTw3AG;#eDC8;&-ne!%J;C~a^)V) z?VC#PLOYuMWph5RZ}*E9!Lk7WEVZdcONfEc>i}iT)ebCP!U1i)yu1r%=-a;_2@#=-9JAK#}JGD8vmd9MOD6a)^OdVE5Bcp^D z19sOYzfpPmby{Td$LkGJwt~I_-rZ3!2wkyZxw^WdpZ*KdTG99##nQk37AI3>hW>^? z1Afk&2GQzY5mE}e^d8Bl>klf>gQbSYzVvjdDb(wOiJ%DK*3H^Cc?7iEDDb?37 zFV;J`NU1c*(tz)cc_K@AG?Hp6>HkBt()T-0Tf>!CX%st%VtutTHnpldSvHucIx?Ll z64cdm4{6`a(w_;R@X`&O|DF=*xKvRD9z#&RB)b*U1H#)g^YTPbyU3&HCV!0)e)6(e zYeC@PD=vfDGe*u1bjWRgA}cgxXK-_7W4+@pcUj0v)N?b*TZshx#o>JjJ1L`G9T5Tx zUE5MBDt%`5P{v4Wnz7$UWP|MZqqIz3fWg{t6w`F9{(F{&+bYC3aud@@@e$*L3aF$F zC7}QlfuMst4qC3vJ9V?YLBN>62ucnwzK8;8*=&9pda|M1=3}X)pv<%ZWYe;D)Vi+2 z#Q!Wox?JT#ncDgHaGV_kTkp}*Kj1n270j!JybJU5y)SaEJ(;g>r)S$@8%C?hrhO%e3Nve0pD5T?Hm^!GgpJg%Bs)2fWgL^nJm5 z9(T>P4IO?~@A70FTQ`3G+PZ+w%zPI(=MlF$dhFS%EzFe zT3UI6+exjQnn5x~{QN&HK(ipQe6t=d(V&jrX#FMN&!ZaJ%OnZJ(=UU5+W^LB7es#M zzgZ@SQ4$TadT8=y%X+ywNJ2(g|Wi8HL`uQqNbVP+JS~LFHMu4mHB&c8#P!| z#*cG78q-)}PGWjyXgLNN36T|3tn;aOGNQJ2Hu7Q`P|1}(aRz(IhSq65-CO+{;zO@5 zcr<`)^a}Gbw6v0SPpqCT67zt0w{OQvR(5zX%e8_qQ%Ra3#}_RG^$ws&W+g|zl?>~x zL=?~B=EB2hzyTk5n%LG7b~GsMhKuafE!Id4h>P2|T?5_tUO@lnQP8r@95TN4ZNV)<=JCZ~l_Eb zdjzdFW8(+XMkJ*y&KT2o!;!enNXAQoYZ(fOzkHZ8woe|Ke_q=fEi^Ft@o@m($z|;} z_N3($L?!NbDOkzhE&b&VoVMoi*riFqM=h4JesCnzl4P7xfUe##D*>pQ)aj)q2Zrjm z#XU<@)QrF8-`AF=&>!y1%zwkVX2a=v;~dAbpt7y4JnSEC(w}|z?(FUGKL{I^-!^f5 z895veZl7nq8S(aW+f8QMuoI14w17x+6l&sD%(arHHFGizVW<(tf=6FZzb@Y#n{Z8i zX1V{Hwvivo%j-Twp5@?kLJZYF%mqMzcp#a!QL~ErD(lTf61xV5r(jl z=4P3G$I-?RIrr&-ORuY4shrc>a;v8qGUnNdnmpy20myGlRW+=Pg7G&Ug@qvg@9xLk z@_|Hov2=af>!fRWH}rgVZe^}i+ol2$k)sb~o#yHii+Hsp<7(+`gO`X$oj!me5@Exw z{iTnEchVSPRPa9gHZ!aGoC#*XT-dKF%LFs-vn=TgiJEJosT|BiB4g!WiZ{Qo?tnj6 zj+Fh4po45upS;`HoUU9taR=)u@~m*~(>lMuG*RIENho;(7WsyY&s%Xxm7Skc`Gu$6 zE#0g)=L0_6Zq)D{7^pO^0-3DptlVe58_k>q|9TTyc<+p@=hM>YUspW!tRdGL;1)qm z4xu71{)oSw&(m&s zO}aFd*>ybrXhi8sVd@gP*cPfb%+*Qv8WGpvhN%-R{YvmUfvlP1+^eY*J_JE`QIfF79$xl=o-m?>@hu+AQy6wsYAY}v}AKTlk`i`Ye0){~I& zyac}3rp=?gDeoQ<-x>eqT&%0-MW?;b3)OjuNG+W5_vJfv+v#! zbCZJl3D|LersXGN-gkr(;ugRk%*(bz*ll^fJ`R#mE#X4}Z~pwxnP!Nzz4sOKk4EIV z^`HxME79FXPmYgq-k}SD%YA+kVa?G$G$~<6dztwzcYiospQxD+;!PCPsPAxTM?Csr zrFpT=d}sQ(E#Hacz(k;+Mm<3D z5UUkZ>vmU<=@ZZL{G*9KHjkQS8!zoQ*joqWnjp9@T;%*|#8KMeS}raX!tjMH0{ag| z-ok(SH5kegCBq;T&dLy(&uqhjsNcyf-7hj;;?Jo00nn#kJ#7ZXbw-CK-bC&dUQg(reKpgNJPJ3sPkDBRqwnUKH=Da2sx_*k_wTncUOsD4?Eyb@(IK;* z6Up^$e04{i$%gI!?1>mq3J}Z}U=pQ3cLshQ=D&HIbmk&#>&YOVYvIg?ceE=(vg?H8 z0@ntjf+l^Uz>BL>u!C)qG`6^LH+?8(VLn4K$9Q5$-TP&5#XNBJhmCbD0jPFd_(u9p zq>MEN<^hH>tA=>Yj;CkC73}C%;w2?mLc{}A_QV<`{>FTfJ1XpS9u8aRUmQfc6Zew8{P}xSS&_Kse z6QfZ0QIJP3b z@zy;mk}ZwS7QS0^UVsrlkvx1w@$SEgP?}qrS<1_t`EPC+@f~VwtyJS5$06;?6rVh` zU^wQAHi|Z;_YR;gB%@xa-{!Q5ufHlW@MdVNoY#_)pS|Miy`3Uz$jkJ4x&X#+AXolR z{|Wj&!=qbSmy;UraK~_F=wNSs?6%JP+3q^783w+_Dxv+m{xc#f0`N6`w8g~G#3u#Z zwG3-*l`4DGVN{>?GEhpQLMT){U+>Q@pGjC_njy(mBTcj@lew9LY?D_y^AdJ!K~C|m9Af!crqF3yug zIAYyew)rV*^Wd8;xr>cudzVKscZ6?fv+W90O)8Wh=u$PlbFf|0k(ft5)Z*g#V&eEm zy6fONvP&j7u-pz=#dFOv!S4w&?ZKC?d0mm`f+Y$khE7Y#e^O<>PdJE5%gl-zyM^gr z?_3BzUeeuqwsoc%dM9D;;k=l=k3S()*iH9gEGW70{K0u430vQr2_;J0$orS2?O2y{ zd_oiMZ`@S=Y%!Ig$fs>Zk!Z+kicB|m*JD6?Ln05U4L)2;3;CG=eYUbGS?yz z(sefUr!m9=aF~Sb4Qe5-z2#&zxMJ#0(Z~dR#$^O zN4&(}WD6(`q^lI?ds*#%fAeND;f2>mwcqYd(Fb2IW4u*f>H&-I7-2pa-dZi?KT{^f z3XN};Q)G5N`%o4rfU)g+xx+^`fdA7LoO`Xo^fGFJnZAhOYW9Dvhp=(#n;Cnuf{XE!dEi2;x4LIgx}7!)_$v2J~$T-zc~pe*S*x-sEWPr?~Uf z^Kkwspi#8xO8MQEYfA}~0mccoN6G7J~C|y$XtMhx$*lWf0MkX8Q zlm#^e&WX0n`TrivMM#7Hwd1`rPc69bOMiE7Ts1mGu)F(fj zB!yTTZ>=dIWsgb*{)|B&eu?>d`$W(!9ZRG9oZl+>>P?(zMaa=}G`l9WfWII&$;R`I zSFfCFS`%F#c+O?M-m(%p3*-+Rw_?;qg9W<6_;HEO~kGdmzGw0X2U{Umb|MA27|z_iG~#@5O2U7YvM zPu8j@H1GSyS#Ns9aZhho6>&`<74Ja~HY7K{J5E~$JHAy3;26f*Dli@~R|@eih4AkD zZUcFoU%PfsupG>q{DYS8_+Y?wRr~FBpW_z_IWu!oh)ELS4pXe{R=-asWn_qhjwzIU zs#b#Ic?!D7sNq$B>1a2Ex%k++xrfHp%yW&!CfRE^SFTNGo+VgnsI9hO#J}S8-Q?`^ zcCvQy+qvU*`=VfE7MDXf8Qh{Kz!^R1&Y(S8o; zveoU8WU1A)kK`l@<7DyD)7HjtMYXitr=q#y=CpF4pHzK^BkMlO%jaTyumKFredzz2 z`|IlgZ&o{B{Z;6Fx-*W?3b8KwJ;XH+S`H3N`*UIF$!hUUK6X<3*jdy)x_lv2@!RzzP8ml0dev%t zCp2HLQ{cB32-8AS%Uki!;TEI$$spjvpVM}VuSA+S9!Fe!*dXv^A2mbmpZ#u&J1 ziU0Jzp@thE!wl8_NCS?%ZXnYpr)zgVPpUEOIhcr$Q=g8Y2x_*=L}3Ol-6RdB%C{#h zpdc@=Nf!42xvPG6jGpuGRW^^n7hyefs#=&YA_M zi-w=?3@e~CpCwas_Y45XomzpemS4>nR+2gHGe+#|P!TE=Q|A z_5*8X;K6Sv38kghl+x&4mZsqHDXOVP3;j%%q zP080;6`}MuW0=4b>z~m@7^Z5F`IDghm&-3V{+&e2led!4{al#+GjFGQ{ksxg%QGv# z4EAM~LC&SC^c)9OH}C*_^ezvdA?n&89$lgPJ<@Dcvxsd9h%sSsx@60>H1G@ikEsdw zKM@9Zcd3Xs;+3(u8(c(+So1`s@m zJdd4Ggu_F-{caf5bhRJFznY}2Y^7IKnU11@XM#$Qr6P~S*34ND z=7Qx9@D8yRFrX)$^T_*lwEnP-nW&Z=brl zv_W7mD1Ebgf7Yn*b-w%;pk>`~+bT{iv9fnPD((ocSrN1SdMRN0h~AhOF=xdMH=x_g z80jx-OfqjI1mCj|^uJH&Kx)6=91*zz$F&-zyrSHQ3nfdoHb+Ib{L;_kKiM{>IfeBKDS5fW8-i-GM5r5k3XeCp_ zWo!ba55vLfl$XXPjd9*M&-xP&>$eET^0$1^IjCZOd zpFZ}?imBRZjsqSBJqBXB0UeVKOA8NuLFV*+Io{djddonba(e8Y-e2SdjP5#q?e`r* zrqaZP7xZe+nQJ%o^R6NHRBW<^ilkBr9a`+o7D6ErPYwh!`rz4bZp+S{j7amL4qHo8 zL+c9aw1od*BL2>f9%)JWmwUX)QD;8HT1dNAlJP}M8 zE6@*)F(~NYvHbcv22&H!w6YZ}k=5%iH+_9qN@gjy)kzB|dl?caIzg7!5pRRq3d1N5 z0?|)~-Sw?m_KXw5;0}xr#)FISa#zvDEx635#)0z{0-UcN#8B!gi>tpNlKk>;fHGFV z#4h`Ti8fc8^ouNYy^iFYN0N5c@0JI#r1`1B&(2wCUPFZzye6mLSjFn8Svu|lIqDX2 z;ZF@a1GZDY)To&ge03z~-wtAzljxU`v9Z1dLfs#z0-7O15Ztv>LNeqJFT(9OBw|<{ zOLU-fewTwQ9eom?&iIw#EiOu*R^y2em@UPOE|U*4Nh3KWK9QINBj~{8@qb4%^lc7H z8CKTuO|06P&^v4i<>6G63NiGYzc3P-Nv1Y29^|j zR!Vtmo2Vwgg2)26wGoQ9p=Tw6WKp=Uc6gVE$|OfU)TR=71jjf_%cOzG_5b%@jc z>sC`@%*%Av3y9S3$zlGq1^WX&3If{Si!b-h-N!vNVc$IA`)#aSZWMpFRgeC5c*=Dk zM0`N*#-D;8F8^T!22l^s9QJY4djnY?@j?g)_?2*M3qUP@vG{gAr~~ z9GfUI=VSZT)*271_BhTkRIe968`H$3AetzbPcb!as4^qwS-O<9=K6mc08>wGy3bA7 z^0im4qRI2atmDf)ZqrLo+`I1TxQ~41W6-y+f8YB67fD{KCWsvcVK-pD(kW0DRM>vaz-T6kL#yj>5B zaJ@c(blppy^hTTH@a%s8Aktf)kAKP7s=q zy(I6h(Pl5w#d^@~0GO(gH|SOP^|JNC&F|JN#$Dq2s`K?RF^+3~dOEE%m1!tBNT3oP zg(_~8XI>-(^8|M+$Vm~ff8pD#J+78lI1*M`hT{&V;}WH*wjZI%7pJ`ET&-gAKdut` z!B$lJMl(3-_?$aN3Pz1+e+4%$&qJ>*)Il`H zP^tCC&wZ~XTm37y)`3$})8a{vu>N^a9SD{a#ruWyo%Vr+OKK4bBkNkzxKM8WZcTK` zwT>E--M>f~B?I~i^^WpPcpZ!Ue&w;nMaq^4CCdc#AVaz0w&g& z|B|=3x#zRLh^*wl^?%TcXT14fD_}n9-XGDauckX}uDdUYj!xNgi@xa`B@7;zsTqqJ z-v2?-&~wvd4l>0rlneh%O`V51x{%2}bC+hk&Qr&i<@@JUdGLhk1`a8DZ!m$zlx;|_ z`5a=`(BmmhY)?I)_IuL8F8Z`Lxp$vM#01s}WSKqI* zQm7B@8o+@WA5l52c7>Azn#qxnx1cWHP$IxbpZZN5q97@OeQSlCNT>q^&>eQWhy=y&P4`bhQmNx3V?JG^II{iV z7r63WfWPFnoC3L((;&_C2&F7o4 z%)X$MW>a?djLNGdosRbq`NiFw=Q>8N^g%WH#PWyve<*ZTJb`u6fDyjGh|z9Xg4pNH zedHrzR@3hj=4VUdSCMNohphDy9s4ec00Cf*e+g^8tKLnR80X!4sFis{a( z+9gpl2O5?!8_()o=u<$qGY~*9siG!w!RGKHlp_ne6t`#v&r#xg1h+`S@qu;=!x0#Z zCbn%n{m{|Gh~jM4rOVh~AQbN~(^9|nJ*qgF)WAnFE4%RHIOHAJFRQ6M#a3E%YvB4+ zsk34caW+S}1dAR0ZWMkW^rt(KJy0uX56buTaV@kPGiswKH->&W6pj|$H=wcLyq~YW z_ZIke#r6yV!i2RuTZR%zxNh|fDES)~tb-lNh8;sK{qiwp{%iXfS@)9&q`9$ibsh08 zlZExGXJWQaJd^f^;3ys?>`bs~-b2KK1G{0jc;oZMj$+gE;vP0URR&x-vSzRzeF61n zS-)3t^97)Fk85nb+m#GUiB4zS^Rk8_84Z2$aIQSjX*`3N-p#U2#!Nc?4#;OT zC-}})TJ`skt`P>XE~u5cPuaj|g3J&$m*U|5Bp}l}-ma{lSdW|K zUp=NoefC}Hp0bc{;r7jh-*p-p~{Cj$o5*i}?~Ta|1_+KxFB4 z-uJx~?<>_jIA(UwqlUl=olVTzY0XF2ejJDbB=Prqowo0Vof*dps*RcoO1;rGOz2{5 zWBt!pJYZfFKokj&iuzqlHMPFFqz0!%`<@$$5>|Pl^M2HBnV|!>ireIaov)hNXzE@R zIc6ef@;P@jaog$MviY-;qXalgOm=9U3G-)`?*Wy<#H-sD#5_F!(HO%Y=3^+W+NE0U zmdpU-%;^^r+8dVQy@$BG*@4OXvqOuWA)1V?V7*@FZ$Ga8#BvDD>%-1h?1Vnua7oo{ zC0Z6xdBwf?BiJ1!HDI4`1mTFXHzVn|H#2_K&yYzo6MKh!zxDo>efN1jrS6_gyqd8d zZy#W%{{cx%lv!;$Wj7{xf;>OOeHmu!qfP83cE>vxsMaYZbFn(B(RPwGT_O>}XBBQ% zKgn3%aL)lBZ{I=8sg#2V#CX!gRK%BeD47`S}ZtJPVNK0$tEdYGBc9X2K( zGmyuq*x%OfJw0l6*#JyM0v`f!+`BXMaf|IqA)m5s!+eAu7srPRvrdrDzo5@V!EMF~ zy;~yP&Fdu1Yf{{8y5Bu*G0w(=bK-N_6;P+W=ofxb5_-KK@1HbHnl=jl1m9EDgJ=+B zIFn7{yB)dxDTL4zv#BTi2~Rvevi_{m1eSGh?e)@6VMKb&lZ+z(=&2$nlDk#NRzmAB zJ6&!6n2P^qQF|Qp-O%D7;uy&LsoPSozfbpj3Eo&(xZO@D90DY~p$c8$x0i@8Nto;c znH3?kQ|w0wQ`Y=4+cx&?tYZs@@G@}M6R~;1Du><8{!biXMyF@eu4OO4rA%1p$_Q$u zNlXg}h?W;NA&%e(T=e4QV;W9oLe)$t%;bxfa)75AxEUgQ*sqI`eyZ72U-Qb~N`qGI zYCEwVQvQF>jBI~tQB~{|vqoP|!#s?8nD{QTHgB$?%C9z}qQJ7yvlaN6aT)xT<+Y?#4d+W+GP=#~?ULRYPn-@O$KqLhhPh@!6Yk+4ssB4Kn8 zT$Vl!HaTvxKNa!c(mS|I=)`eQEd=iWcX?(YGs=y@64j?qgXWM*=c8c;3`j@&g72%Z zen6zgl3T~6572)km42ZwQLle^WiBeG1>@G;2*i>v=H+Pea8PEmWk>tB=+2kIGvA#%ypzRb2uO#rp*T6cU>P6(O2{zcS{E2}Y zG{Q?@{Te4T5XC1;oqLN=5-5DP9wgEf2n#RrqFke?4v!lkX-Wh`6stvc=OR(d{rQkN zvbwV~)p~y6yIReGn!Zb^)`Fi%P)yqR~O9Wv&^ZP=&MA5u8@%Zwkh z4qVS$C3VtKoIc%K3v&ws&lR`Ug?Zk+5ir1^B+z{+*nLZ&(dPfyb4u)EP5R}~?QpYS zcr~eAElIak4{0yPsu)viX5Z@1l{edJ=qCF6@bw4u;c3{a?`;*Z-TE~^vPTC?C?vdo zI!lfqtPj6K-_Eb|yF~wWHYOgM(#^wl`JRz{x%_HM|NKx?P^+&Mz5#1u*Wc^>{m&z* zDB;A%n`5+ZTlQjvrE%1CLS@zGR(D=M=ZkbWcP5%-D2>(a9tsH_ zofNT4A|+1sDCx@?!uLLSFD=&Y?rpdQ<~>G_U5EFJHp0+gjapU?1BN5na%=A-2Qdl}G59#qDE zo-|=qO%dVysa08dDnh0!UEr=?l{2t)M-;1%`jQ&|D@5&MmR{qysJtjv9bGY>-^-@X z>B`M^@?mgwhO6|f+JFJ(Oi@UmJI3KhpmVN#arno)x>}zOwdD$PfS?8^r7wol^q%}y zP&)1i6f(s`BaYLzx9Ug$dAV>num7F1EvtR%XD{MrQXcDkgd)x#w{u1u=P=n1e~yUm z-Lp)Fg2_y>N5bwvi8mr&w=&tyhE8QhNWm~ozEJN+yq^zgTJcC@f?oPw_<4PW>}{my z3=f-tmcHfZ*Hte+vPfKgy5aA_%s@qO0?>!Zf3d^j*Uak5AlpLFZyviI@N-bF-B+_J z$OuP=|3wHWy5i>pcq|LRY80XrY6d(07wh@*RE@Ir6LC=6+6r2Ji?!yGg%{I;g=~eO zmO5cKt%Q7#WD|P&6#-_)F(*?&KkkuhRzV#;6Fn zieU{5fx7?j+;fGm-s`oWM?ry?HFIPy?o6~{69#SKsnS|O8m279W1}L*HV?)0VWWA{ z;cM&{+=9&5?~!Dw<-%+r$A4dr1@qktsZ9-b<|Z;w?T$dbp`5s!^h)s_o0GcSXJGLLM?l)0_kIQ*^y%@m++;`#({H+ke7;8e^1ifr3<%WkPU&XYTiy%$9{Rz6ZKD_T|fn{E1YO_}*pQE{~dre=@{2MV*viAPGBw6xQhvpzbW@2WvTZ-eUu zLxmLLo+4KHk_e5==y|VD&$avmGJH{ICOgG~-wi(J*nLv|6Hx_Xew=C9@;!| ze?hJEa5@^L&%b0{kfA}GbwFgj!xjhgd5dN}?vs1Y2pTi=(~Q<=LhTBf-(uq|YeW3% zmckHI?SUFYo=eTGt*lXPCmTb6&vNhUCmAa>wgf!!zM`1heQ{s(swhDZ=(LOWYgQV* zlj(!KDrq_qW7b}~hmKeqB>+lPut9vC4aM^Fk_ZRYg!{SX)uNTBmt$eA+U)K%mJK?k zQjhnxqU%L=jegV45+%JZ1pVlv3%iYHom(4Dl4nkxuQDG$Y`zQtNp>0>okoIem9;ZbaNg4)lm3bKZ37T+(dYDCCfqK~(v_P6&y=-cggHagO8 zB8Og#pwwH}$*~7cycSeI`^$ajOeF0os$jYWaoJ$E?R-Y4F&X6UABp~i`tHd9C{oG|3B^Saz_80a{cyI-2`_^@4V zK`9EppMWSlY?U$?Q{i1Do%x}MXZ|YtMsG&cbBlcg9^kyILM`#A?09%E_#8eAo4)%J zdk7IsV>5Ogi0QTBfoI<~@Hg@^36Id)N{s1hCZFz+AO2$^J;1r`ikFq#MzF9D6T(X0 z?2`XsRZJ8vT5Q=IZv{+gcc^)jbGkUp8`_5cf_8tXQLV$&jK-x(Me?X!Tapsm`wkTP02eyfbqDptcb8Elx?H!9 z-zcmn)kkb<>H}RxL%xpSr9YM+cNGtXu6EVAF-(3(s+!Fg$yv=;j>j2g<1A{6-PY4{$)^(eDFO!u%(SNwa_XK4gDjJ^ zj=cKq&8&`b_8STIP7|A6c)6#8PML?A@8zD{>hFTcLo zk#^`6cUi_T?s3(4>{#NZzp-4jDB&&;XOFN(-y)%H7`^1si&&tXgM$RE!SreXlgT(c zE_81jFBHb|JT*BVBA~%lW7q`XS3{Kmh+w{#A>QPVRDQRBQpu|t5(G$ZbpE-R5w;|D z1;%{r+u^@92;mtlYWYNJG@;pT;Y(E3;1ikd!I+@Tl2`}R^tsy;Z?9wlVQ|4@3S|*Jd|df zzv;n;z>NibHQ*^IBD&eOR6J>^+X$2YP$uU$_QN!E%OV%=hL{*3!$BIFFQz>i|J7sb z%kWQ5F$Yt7(DeDgGJ(}RGumR%eRIT~q$)G2;|S8ObRe6?Fnz>fup}qPdx^ncd6!aw z8smc_DVNLXCrj56zu!47x4J&l9w8%?-U;;|Dbd-3hCpBcAuRxzV1gtE4cDs#`mb>p zX_D+`98VNaKVYpKePTUDhM3&_Da~%d?6?AqyP_9dnB)1w&r&{{j(W*U_J0hk9EbnP z+2QE4CghwLjGwlXeHimIRZ~8wA)(dzQVnQvmm1x~27t;vh=I507d>x>$jHH;7wq(H zs0vf5=Ze;irjf4-JkMAAOjw=Kzuz;gW7BQr_wQa8e6!ab6qfr;CeB!%vt8vA$-DOG zX3v(Nb07XZK^Pl8DyZ4I=A-y2Q(#fG3z|V)hz{8NQJ;o3!ou+FV+EyatLd;4uj)r= zD-3b^O37`l{0N8$712Eg69BKp zdf?CU*>{q%7D>OX)=YOjFV1`{{m_>u)7vrlY2NSo``@;v!=lcv2T#qxh~(BgHiZ2@ zgeSM0PoLee9uPjUcdOh=2ggUqi=Y>g?WPnD-x|JuKUjnU?@8qA>n+KKsGd$L`FV2L z0_Fk;k0ms&dahs$V6xwR{-hn>?j@Y~@*)Ima6sVLCt})Y6V`cDRo6XbKdMtgX|_d` zRsToRgexsJrs@ds70$oLEN4H)9^(su3(!t9f3bnP= zB5B-=M95*9T}Se$I@5RTgMRSM%>;hrbvn$i`$Pkky=dDCFWvp<5mEFLPG-Y5%6#yZ zhX9?RZ5zP%I=#;=X=jFRzFEHWVE}BA@r>V-D=V zq}R#)IMg1@Ucc7U@3oiR2$6}s+vdHw-4o<_)`-A~Ky=3$y#7zzE2)Hvjd9=^T7{1~ zNxhHdjlSc8Ku4LdoA?9JrZ9iahX2k6AY<^7CWM)1zv|yP!c|L8l_g*oAP_#qgYLsf zJ!Ku@SjD&w>;ppLNN}Nylf6qxDNzQsnE8?CC(72w4L0@)$MHXc{55^Fzgbvcj4q_% zz*jY`in)B}l7bO^Ke&GyoQ0eo=@WyX<<&A@$sP5m5^STZ=QXPS`AYN^Wu^>I&tgbj%Sm~5^f7QGDLEP-yg|s4e4rFINjm{g zBqBBD{?!f_btL)qANIa+y!7PLtzc92>1+)3V|mK?O7g2CpDrKxxabI{9uaI)ysc$^ zS8Jp_ihYJ=dB?-!|96IZpzeYYS07C*kdFPO1%A^1@Xyj1H!%~$*#77jod<^)x^b~_ zkOE@zQ7nc1Af4toOr}bXQSNoBJcVOY5_6pQ9OxoppQ^JKv+T%VV$UICMMM~mo{AWw zI&!Up?Ua(|lKCqJ#4<))YGakXqOOS{qjg=nN9e#Y^yP8X9;N7fXD`x$1~ck&)0SI| z+M8cqe-{l^bmRKiQ+>%Zo1#M}*Tn7m8Rom5>z@e7Y5*aLqg$LP-3%EYr zk+_{sxW=s2MwvqzTxS8Ng9mY>I!OA;>fU_Ns1p>-M)RZ>l0#wKskJiIPx+{Wfohax zoiQ()4bZWB34m%PhYwRhM-cByt@;sF=to!o z_UyMyfMWI^WNonse-$f1x(KYVcwemcXu4GAq{E`vnoG)i`p&hi7c%-A--Sc3#54ca|F}-vvZJS=FIN%BmEi1K7z^ zHIkx0a6`NBkG_C#9w+>?fi@BrVJI3O**8xqBMb3!88r^h{P{J1`A3?QzVbhiOOQPHi6T z2Uz_ihr`r0*UkN^WnLFi@_BrWIY~D5Kt_ipu{5AIw||JtpSqs+7Hr}xmn>7bH)gjx z4wXx+5S|>p>$=Yqb;b2BPakp;gw(B4TQYykPfGAYu!(S$u{WX_cU_zwe+iTQAWpZt zadmjn(Rv>nBAJKX1*5tES#8y`#UBbOYLdrZT@Y((qHwo&92UpGUyjIg(dr{o8hmi| zN|ez$d~5g~%^*x=Fkxb~j3k1C)@LP5wxTGg-Q8m}?DA6zJJ)-~bsnLRWENX;hfoA# zZBTH}Bm=f)t7|YN_Vg)%G&xpV|Glgc()`FFixibrE_L&x+%?P~y<0WB^w6fyjoh3` zD{ZqWIA31bU^4(DfeDVBoE3B7-pm5|et|YLkG@ryY8eC6nbw71jD^JM4x_D6`6mfQe3st;ehy;SnKm_ zBb`=y?=a|+#&!WVQp1^mZ?sg#hA35b{wAQAzhc4ck6hv=67(OVMEE+7BEpFourfM4 zmT{$b0PWW^IXUtQ6zRA@4BJn3jL6K(pb9InV5^Gm1C-8zdVgHo9^X0wXL{oX)m*AU z`Hm}ZKJ6Ix0W!JUla<3TgAwFM^NP?X&tpF?@olf;sF1|qF{cNpOG|xOU-&4HgRlviSUg2uJUNxM<0(%wFDT zK9dQFps8E38%U>{*;&W8YbdG0-3OIia}*BEX+74Fvl#qu@vxFfmE33E4K&dTG0pKP zm4lgrmBF2CQW6(q#_@Mdav%$YC65vH#73GgoHNz`KJY`T5l+?B(#Pc;LjxSB?Klh+ z*@MAjM=V?n9pK_E$=L{@D)ab1v>4PRkQEQsQ%qh%zzPS;>{4T)m z0uSyNfcrAYf)K!U3Z*|}MyiwWD$^YB1wQu;@s!h4$qYT1_^L!bWY#3XW47s?s-F`- z-zT2k#~wIr=EZ*e;doM0-ou7rCFUI|>y?hv7P_FO*^N;7sek6_`Ox8ZIE$rWpE6*y zy8hvMdt4u>1cq$<+0B9rSJ*fTeXHwXA_A$!9^rhDp|VXutx}H~sN7E}({5xRK_!)t zjc#f%Nh&gm#$z!lQxTJsbwb(Pgs|E6i>9l+O;hHQ)yq;d@_xR~IO)h0Da))UTdpxR zp7X4zWEEPb%L|A7inF5O{ko%d*H&<8%<7EXFolx)_9;H3=S}mH-$S7v`1L;Pb9ta_C}hlZd861!00RMl+McMcn3-Gk(h(ld+((kPyjq45VR`j}9E-5*HhZ%@k{hv)Iq#F6o@{DWawf#!D%na1rb+BG% zgWgCv2<4~tIGUJp{Y`wYkY%V>jYGeQ!Z`bFleUQ~H#m|%{>q#6bE1FD2g{ri3YjV+ zAM)@_2?Xf^Des`(9QabeB?S&yZM_x=`I_=a?PvH02>iq2mnl9>e`FlSch9bi{n}Uy z0wix?c;G=k>l%6rf)&`kAZc3V>I&_%?PlSotW_cPu%GiZkRA;ZnG@*Sr~FH*m2N+j`jD#BHsC zHN#aO#hsr9^*;Tq?Fps!O^88Myn_Y_+AXn_dP2E7u|s!VSeQk9Rd}2Kx6_m#v?3|a zYI2tkn)&kK2eyG$-)^H1i9te;Uf9szwylc}1n@ofzYq<2ieUUE&R~K_d5~t)>nHL^ z^zVwGeV@)lrF>Wnn7mf3(}LIvJlosQ5PVIP_T^GASmFgb5)FtCG=_Eyt!*thtH4jS zSlmY+nL?P9|iHPDv2&xvqhPTX1#d8s5P9((gyMjTKwh$ilwIFD`aBACx z2HS)8Ii!S0`;%&j%Xs~NV!9KYnVQ}I$c!TpT6#xB*v0FVg+$1WECP=`R0)_e9Fso! zfKCq`rpBl{3TbkL1GWd$^hkMZ$!Sbrve#3gY5^E*K0KAG0oFSH4 zi=Wut3b;-pC%nh1+RnPs$|FfpuyfT+uYTU<#I6hOxYNBp1M2Qy8d@@o=kGnB;-h}h zHpKdbF_gGy-wRGC_kTW5U{nh=ru2n;{aQ)#XQxocQB-ny++!4@mk}H&z)|AsfC{SC zT+ac%V{X=%aUNqOfmqd^h0Nn^kqhJYg4^g@Ct5)}7ouA^{Ri+<=j-h&yT@tMP4zqb zPk0EvEY97~CsN!D{t_##f8Bq5v_6bU<#%LV#EootA;^GBP?Fdgo0UBpP&Q#b06jui zaY}>k9_;n{*GM)FEEdSxb^`W>6tyodHHE<{K0O-5B8ig^x;t#2I!lp_r8N%VS1mXL zL=|sJqHQ!)MwS^YYlhq#$e@xG@lN_@%uY_S98fJtGF8ZR%Vz@I??BW+pB(=7o&;~X zGC9r*`r8D3=P$g;n89r5#rveUBa}}`yE}U_hlmHA%zyJKCnz1oN@{9F7o3O-T z%$T+;iV;zV9ZG*14fQ!+X^x@1(Blz-8;e1i5tC(38mus?*(aQ@d%@t9BIuhbefFP* zf~f)bJIhjZ*`CEjQwF~(zuyT?r!;RbSR%?Pz%NT1{3CZ5GIn7FuHI_bY&S3}Ezw*Q zBCY6I4$Fz>`e16&gkLWDuyc58vh)#Y^T%sUsH$gNFyz46FoA|*biU`SI(~oAaMMs3 z6U6QWNwwU69d?x-Scv4J7L28$vt4_|$%@~EhK*sVxf>v{I6=ATaQhjiP@wZ?f^(`THqxwub_A?Hm{sD2ghLo+_ zs~BSKw=!P3Z9To{(P~Ia7f{QYw`n45m?aayy>@JrO3T^REFcw7PGiNKHQf z^#p6WYQ%Ej&_c;mnoQ-%P~H&y;5y0}{95sy6>-irUrQ3kLY{Oa6DzT}OKTFsRtn*Q zO25I%Cf|9)zU2eAq;&Blr;8z(_M8jl+`Z@*Xs7h zi@?+9zX)a$6~0&I$dj}HOi6xkfSq>>)7~k45$wyK`DKR*Q$j*$>+?oZX%0P(G@PRB ztXR^9{Ud8x8=xwI=z;Y_!Lh` z=FaQ_M626Pb|_!9F((4`=bfbcPGe5@x6}l={-^#qx%fCn#bgT~y{#Y9)l$kzSo2ZD z?D1lxFd(WMF?nuTlf&xm*ikMhP2;%q&&^hIt2V3#>9A{1WB~{i4EWkzcyz@AYT2sq z(~89lCI(@q;Gsr_EJgs&u;25ceyz|*M+-qG=}YT5t7gLyTO;viFzBRpR+O!TD8^|I zsDx7*if(V;(g~OWV&W@F4tOZRhtt4#v4HEmIuGsyR(FMz`p@(LE8ReUsX}1kRLoP4 z@KeyrAv4tNo6Ar41_QC{QfR6fQUIA<)Pi%&*ky2tBkg$MjQ|6}2;D4GhUC-2DC?6( zm0t-YI+(wjl%@R5BmJ(_x>m72qy6*+gxzCfF|&bJD-JP&dB1Z>A61A6!>oCbyh5rd#QC=GnqJ2=qS6Ffbm|7N%U7f?XRa!f3!RAOYr z0xbotv}d-wVea_Gg*(ZwFqkeGWX$$uyA?#Se(@lfSoy3?jXlU5i(vgC^WnDfgwR!c zkaiMCSBDAEA>1!)yxH;Q$GChm7_{}CN|01`;?O(qalFOmhr%)~OeGW5zVmFQ!o!4* zwTpo9&+CFMRSB8X>I2~hG7~7c@cx>uhs>^*E+2l=`UNEE@@%&^dVa0U$C~H2(gF$1Y5JB z;L1ZUv3||2e|5p~F!RjtIK-d-Wl{HW2w9`n ztoir5MSJJ>dt8hOt!!_RyPlytqr!INt^0Gl?@t*efXPQAUl^J=oEHe++{q?HD zo(We)B)^V{OYaw^GifC62>tn9BsqzTvzJ6B zyq4Qg-t_Iga7PKF?!!<1({7O4x$*yZn(MGP{Je8j`i#<4Yn zN@jf2rOT>%fR{AZ; zEv6*$Nh!7Gbt?Lxx%vU4SO&TXC7rH%;zdFAFtEjC%34SfQ>`|Ww%)*k<1%&ovc^=d zc4Yf}tVr_JP$`6QP9_lw%iKHHO@`e*V5ltdr9`KMz+tVbjM+#85Y?sPFN(La3;)N!(W5>A!V$UL>#-QTOd8Z6~7a7 zteyHlm-a_x?w^pkuK1*uqhQ$@H}LR`lggyUZz&bFI$(UH@=sp@BN6c(#7uhYhh<+K zb;sk1lhn4qI^vFVhMY}^ z6Z@&0H32=Vs;^6W>e1mgr0(m?nr(NoZaTKV%h!a}2x{D7!%UL0`;_T(@hwC2_-QHJ zpVMa@@xw=sVCjau+M@Xt|kPVuk-TF{)A2bF~8<{{8N*K z6s>XslN&tSxmnVFnc@P*cOybTF~Q?masZsPxCHD34)3mF=Ok~&GPIo*Ba4+Zzj?b_ zu7(p^VgFi+pGbOb^2Pi0V=w3Hd4Nbzx}d*<_c8jx+so`2;{FX!!yyhJQ?UO$WthT?docjJAT`beQG}#-o zu_e6WDEOLnqE1xmZ;V~1P-DJR)#>Kad{}WhTtC0M4ypHjrcV*{^1VAUIu;{XlbgI9 z2DX4wAmiv@CSpcxc0|vPCryA$3H9aVWjDBz`U=}eI@fj!(kjr-`*V2MV;mlj-G=Od z-9J^rTj}m(nHoy$^9v-^ZbVj19&dc%f%Vig6Ne;@i?yPaWH)Qs zP;boxwsO97jYvG>=U+;Oj+^%q@4f()jQuOT7I$bnPW*Gy`q6a<+B5C?ZFdnmz}4TM z|0Tfqr+UP9IAb+4J2_=tn2extdC_&Z>CfBw|4b;L6f{GC=7VNpNom4 z3$=S(^FaaZL=yPo8KN9H-!&~kHA9HH(G-rj!u}mOyjfg@3?lWM40=*jg|CJ?u?9@$ zb$H6oSvyInTm9$>GG99%o!`P~Y|Bflig9@bNw))yHqyBI=deHDUjDQ{XAQ zAN;|tnc7QVx-F0mg?T4J=8I=_{!Kz6zWc$ke6bbYlRmYteV|v6O@k}07uYS+<{8}D(gkSh(5@qET z-+^olIia^t)$pb%LRE!=f;qT8XdyOh{H2O`P;$9-n7NfYE~;46u;fC`m8A*|(ZV`1 zLRu~G;l~$25Dgh~fYYWoE%SPH=XtbUuoeD+&)(7|7lu%WHkt#gqMEuB+jkXwbSKGX zPt4uEJ!@+S~oeXJJUFHP*|2S-jh(?idDd2Ta;I}27> zePh1RlwI9&eDM7#^SX;C+vAsrT7OGQVpyXPUE<*3*!!deJM{ zWK=cDKVK8$TO}OnB^Gs7&q{(bs~-^5*mHZyf*pr5bSO-x^J8EZU&I-g_gNPLnyDp(Ym50!AOg>I#BlS1p~@`iy#(0_K_}Y)ZJL zG@DPWwf)y&8$wv^$#`t2i43Y(gCw+hTr&-3PHRMed){ggVus0TwaCg2#H@m)TXnvELfh!$8WGiq52hDUFWc*PbNKE5YHq9-${N@Nhym-Ak)j%hAawD>v1D2 znj~HF&z9KyY_=3+_P+cLKrPHNh>oyL%wPg1bAx zD!2r9cc*Z-yK?T``@Gj$HGV^5tyyFC(fikf%Z#$SR>{UnWN)tKr!{Lu1tVr#vpu9T z<0aiHHB~Myd{X&x=V4Ruy}TY>-lLV`bji^6Zt&>D{PpFO?~F>9cl}8ace$?d0IY%6 z=Xj2{xP3s~xYiWkq6o^Ac-aZU{sppuhd@f<5AqJ)8yO??Gq6*E-@-H6q1aB}oI{#q zBCO@X$Sqf)n^kG5VTkj=+1jV#Y^KPcCXS0yl|0_YPN~L-iM3$fCv(;GM$tp z@QCZD{I2uKhf9mI2@QcNYXTT9>9Ca!rKqPK94;1@jBc5Z^A1ebmrwPGcBi_8&c z00JCs(6m3Cs{Ec>_6|x~8M({XXiRk5$FzNPj#=T`Ih?+-W1XIpF6u79k^Usd9Zk(D z`hT=000Se&ub%VkMNu||6=q8eHt3;p3)mXD^ukAMj3sxy{z&auGEnesmR-1UH+UbL znweVRZ>yVIQK*-ZUoSTvF5nu?TKU~$H+9`{hspbWzIMQ?f8`vpSId?|!<+c%VZ-#; zFeIG2q8Ko?4he4)l-$xHRxWQ|+($%mWJhKc4FWkSW#BZTnB$=RPAt8i*7WvqI_!N*%f@s@|HOV*`&$U)<@ALh- zV_RUl*X}3x1WKotn~?-lUH{R#XN zU%Dkn%YxUV1Caty!t4R#bx*pe0gv}Se#dt_yL}ndx-pu;1(8(qYDnQE(PVjH;1abG zoJ7Mt`NyHbv#)!`A@0kdHSPC%v~1%kX_FARc4l>Mq)qFs%mdF6zfKBgw{<<)kezyX zVX(5&4MGwqe_beTUB&$p_jmkEUEk83p5rV9l^a> z-5YOzHk~m}<)PO>*38f8uLpZXmCG;xeScBHVbfQ}U-R(w9TRPru48_?wxexDIlb%E zl0^%y335=B(_jfi#%0D5kc|jCQ|dZ0rp9tuC0A%pivCMZN@PmwRxxoS#gbZKkRBh} zdB25hk4kMQH7n8YbKcthO@K9&FX@#yggSCFB^?$+D=)K_K4RK$C03G|DIA?w74e|I zwz*UKLdV!hZwNtLpC0GB$!>YaeA+G5K__M+Ii6z8%oe?m^4ZXIQ`MFlzwlTP^;Wq^ zzh!5uGM01pFGjW7M%fWn9beNH6MYy^1OF;oW5)U~8}S(&{d5VW!-rS#Z@cY*B^ch5 zjA@^&PFI-3zZb6`mWZptlum=`9#~G{p?rRp1)ooLaMC1;Oui5-(R%&1E4ds%5;1Lo z!*U9_S&W&G{D3mM2{-pH2Hp;80=y&83j^11_H;at<^_?rypH5#U2rI9Ka)4hF$UG3 zGX^Y5yx%v!gekBnpb>NjV0)y9nL!%Ec`+k(@;)Og|GUNpMhEK0p43dLg_Txh19G_p z1R&V!9{6-MmT|mhcIkf|OML-T2ggB;@sY-5B1%p=eO*u=wu}}(Uh&{Qrg}^=)l#|Y z7nHg19LL&vo157|Vbr^KDmkPyVgN5a$M1(H^^^t1mPbSOR*mf@nyZ#;k#aLmvi6m;CJ2kO*tLA1-+a; zjXARabMPtV&a$b0y5CZG_}5TI;nP^*oRV=UavU}kZ;RejKJL$)< z=9i#xMJ$w8rXgb$&gM1x?ChJ|6GTwMAm8rOk{wSB$^jor8Q9lZsh)LQ9NYjl z9tbqcQuqdBoe3id>vf}CrUitwDMVoGENsMnjak0{9M|e4&nrBEVE127tC2225yiGM z$;zOkOc_n+?N^|=x$osuFtM|sp=ALTF>i&_C7TDSuog{nIJm2=u5%~m{xb~XtDW0;B2$M`ob>}f%3JU2$*0{QWW1rVtmTzE!*AYA)iQLwio9cO zKhLXhZrp<)?jiRPL`-i!AFPfVHiGcdsxNPxnjv^d7e7C%|2dmZoPsx?Hn{qUaceHJ zSHf0`6qgDHN-~X=7$3uktK34^*FJJCuuuK-yePgiYU4IdD8#d{*5m4zNeWyW*7o?s z-gKTHN=~@y0Mj3I0~IG*t`dHgneAHD=Kb$x-Uj=g$a-A3nU}s5#*7H|gONl(8H9T7 zBduuw0L=-j5VfUdtj8)oJ&vA73QphyFf*Zun5ptz)Zt>P{>OUj-=84Ar(@mwV-{Jl zF&F9w6hwO_`#=dwlaf4-DePQ7MVm~XpJ#)E+x_1HjYA%H$(lKgT6qeNJ=oVxzKAOd zS-PKvW4`@YD%>>g#@0`b@hA=Bi?Uzb*|qb|dQ4@Ivq~_$w$MH-8LC{MUhpC784QB_ zKF0L*)!fNjXT~NM<#ZOrRHY}>Qvmt*ur*<;+gpJB|@(;gplSu1^&B}tooMa{# zz@KIEZ9BHP?FoiDom1sdc&@|qqk|#2xyw0`oEeK%?Di%J%@<*gVy{ulUw((_(@1t<)s9~fubL^7_ zW254dmiQBAf9zb90R(|9p&vAddv_Q5t}%g~a?>SmUMd@bE^$Ft*BuR}kLv#0>&j24 zxU**L`R=0Z>zgOzR{)ZixE$srK$6iB@X(Qu%u3*}Lx4G*A4T3AjkS{0=PvNp*K4yC zyq+U4Hm_76KnEjRbx>fttR%K>v$ib@hc72}2g`ZC8BRVvXCJTceY#r}vA-|!)|!0U zZ`D&4gxd2z2@bN7Uo)vm2jk8)&6`jw7^wDXz;LAIA>cdm3k#mfo~MSX2unrn-jx^m+`srji0P-z-{g6qil#A&cL+fqpbzJ6su zbIjJJ$g7r9w_U&wKX+O0AmCssBn;AEvw9-fa02?a<=q^C!kQE{XUS*|%JN54_jeljyuP&%bCtYabL}EA3`&tht zSQf}rOdb8GwflZCDB3r~WP>%AfAD&*D091mn^>Xjuu2GEqh^*>4RyDHd)zpw5pkS= zpyzN(Y3oaipK-&dpWGjgnX-)bmz;VDtY?m+%n&)X6D#_gQhs4-5k4n9{@$u$yJalp zzWzc+km^`bJ4WCCE7bhX(7*YB-+|OsRPwUdd4C}L&5#Rg;lD2y3cirs;@NWvt%5zW z+>LIb0_R(A@*iPHW224MppI46{+a|k`Os7+n>p=$?Rh@t$pF_H_HML0er3|{o6Pn3 zFXsXr@R(ZVCTn% z6u=sSWy7QPTAe1u}YLK)o_8}d^*5wVX*%R{ID%9mu zF5S|v7(NaQ(mY8+41fw**K%hWVMI(+L(@cYc}_8!HNVW=1@Zn~@ao~^kS5$mN7pRA zsxM4_()m=j8`_xZDfDgI(@aqfhwz8iFYlXKZ7Id~0=~8tCO-B+;nJtqm-S-Uyo#io zHP+~2`Kl$u>MW{IS(PEIM80cSPg)tyt(DJx8Niq%biX0&JjyZ9QVJ9&683WY%r(bV@ zeAr&9Uui4b9aP7C(shdlHAa@WrDhrZV{|z!4R9t5a#E7YFWPV3Z85EDX*})syvOj8 z2-IScm_3?E%0|VE>A(@w`uH`p864omNJqv__lwCd`rQBREaMVzd!O8TU;WLk%(1+G zoL3$KZO@95ML)IAtlq&e1&BR6pZGv<7WOKq2S|~-1+3qf5V1wE^eq_ke^@~j=Sz*c zjTG%LU;Vz$7sUysjkw^e*lRg+kmP`}T?OQd47z_mv-d+NOBH zf*7K&TLYrbBAUAalz9UgSiGw=+6!FaxWSGA40=i83Pmxn1y{p2(lTh$1UcaX;Q}TB zmmD<9l7tJ~QHQdeTt9^U7NfPsY4fMw{J z6!H4#S0!xfJn-}x7LFqdN%YjT5cXSL5tXvNz>B)Yi^W0Jmv5oN_1%!p>VlpSn zW!PIMg_0k`hquWnIE6>Sdkh7a-RmN&lyaRs=2zUN(DDg?8Q%Lb++A`Wg9CR0A1)SD>Urr$B2y^~i(g`I)Z`!>JLP4~qOY zRoKRvSbT;}FG}0T+r&UuIUbvFb@jvOrx;LsOyjRX$!6+p-|nV=0gDS6^{1qgqynfS z(t@eJLtm?R@4XhWTB;BH%eT!%9)=*_$D_0{Ztc=)UV+eWYG*hB@(jbpk4daiKKTCe z1)W-3A5dH|GKU8_A=kEdZFe5lmRI}7N1wJl!C|HW?`pGXl6s~4w39W}Qqekse7_td zr}W_K*W%QcoQF{>qCKT@-UjTPx%ohNulnX7^0$@?P@b1IJr{6yka#X94q>lOw8{G+ z$qmX^2DMK4LaJI!YcqiE>F5181l}*!674wl_dChTE5|)7S1U2svpShD z7G=1UN&2zUdMUXjI}uzj5`9*$d8g`-A*=`vv-r zs^HL>`yjDCZ?t0T=_0G3M4oiF0XGHCAB6D$=7+99KcyV0MjwtI~ffdTV_7lji!Z-I5xp2B98Z7Gr+uYN5Dc_UeYQGV()FH(dVm7*glCWcNT z*G>W)Y5Le6{d~2&ALuo92>yHP4Xcf;lV@Rp?r=MnmeKc2EzeF+)D5%0$LgU~ScRmg zkH)I88NG)5%htBqHLwlx!JF}^*dWy(oWU~Qf1bHEsZ#%#4+RBgQ+J~n^29N4`asZK4<_EN9ve9Wi= z=CO|=)5YVik}p7!s=>`cnZ}6uWZsDRKN_IpW?`LaAGUKJ?s|eodA9R@KYxzDU-0OU zdeLm(Z=b4KLQ+R#*f@*AU#{KX8Nxrr9#7}!kPgVaT?3e4!HVQ@|JSQfmsQBpBqEZ) zx6w1Rgg*%wR-4FMP0YrG*0G;e1q9VTLr&-@GadXzrKa_-w4WI@liOZ& zx%lm~#Fhju6dYrdLx3%GqcgCHUiqzWB=J%;xo!C_K;wU@2xi1zG9?CdxP4N~=2~Cbk8Z-Or0xR%#ddRL zH)6QP5X&4pqj2QbU-;jAtV_ZfjYyYwmV^PS@+IK!hkr*fAI`z1cbo1_&cUGn(G;7; z*bJqVUW;fx#$&q0y#B)~Br2P!OkyA#fPnUfbD}x;*Zya}hY=&R>TO+iBN!8gkn_(&8_rY&vrPPV0bpy1^}I6%}aC z(cm)xK*?mkSHvU4i~;!4_djqz=lLHv-Pz5lS_zr-FC>&bjreSn2tf%0VgQTOP~=1y=r5(y z8ajzoBd~jcIL&Iz3&NZMo2oUtW|w_U{;N^KMUuHXmtJ`bKA11K0{uIv;QQ9xT3G&y zsHCjT;C|L|wd$UdRxp3%)jr$zMw_(oQF9XVkeY1en9}BXtya*(4s~ER=;gXzTrjDM_{ zJ7xkoJm(LKv-O$aUOTBin=Kb1zx^^?83EUm;XB$nkY*zd=8}W|vYk5vdB@cSE!Kk~ z>%VA%`C7XaM3}DMCa4XiWnYo%E<~+QgG806jo6GFad4pF`3=)(+8k43rD2MAi(YmK z9~T|WrLp$;uUs95Q(i;3Te%z_k;QD|qjpU2<_{XW{yzlxU01EYX z(Qx+R(k23sRb4(fEE&}U?OdgZ^L4pLf%_MnXsLAOYHa)oY<+QZC*^FeZ(;ktA#LlV z+rT0*1xPuk!ocTUJ4{-sC1>%ak?YO+eyb5iu+p5Sri%#i#Z&4tk1G?pnK7%PBG~>T zWNg$6a{-#eFk^4)BSy5!`dsUMSMIzOS-hKs>Z-xI?>m%q*5U-ZU4S7p@eF>xi1%l% zfVFS3kDAjrXdK#J*T34L=~8yz@8=W!s+{ha{=E0G%jpUli^xferO$xwL)I<9Z3z1q zEezHlfg+yt@mNi$zWm~1Hg&MsO1$uGiawwbu{Qagb)XOZ2lX&_>4^fz0jNYPB{+k^ z$+F_Ni^iSY@Gy1^%@U8Czsq8bZ9_Lm5iCT4d<^bFNryedf>H`BHH-aTQnkJf!jt%$-;xfU5x7ALqvc-ZXO z#_XRhL#4?PHna>qIc&q3#fK2S5cH+2LUY7kZS!=9G!=8B?g#9A7=Pb`{#IOo)_;at zfEXugc}q0pkO{PyShkKz0hA)atc{8F^?eZ6Bvb|8K#bY!kBJ3zNtd5Dm9Zr6cGzgG ztrx(Uzc4?+kj{%e(95oD5VRPTyy7;pn#JROS@JLX5wkET1+rNaqzLXp!x%iU3AKX5 zY?xkHT+?(q0Y>Tnh_+_LsS};W*~okK4j+6K&f?YIi7}U%R&!kF{&{uMBVRUoo015G z?bin@$GPY**D8v%7Z)3S@W9nFMaOMVqk09^B&j*?7&Fb|<8BM5R>i&;i(x0^ zsqe~ya=nsmd{^6W#SDo#c*(sJ^-bUJ*&ok+`X2}~tXBerSsY5|aERwag{dtMbUTCJ zkO2^Qb>bk^tjs$I$GxFouFZ;Hz8B8`BCgcE%^1lZkk&?4xUhTl!cm^UvTbF7TiK}} z90Ez1F*=l;uzg%ztS@f&e+s@Tc)(h*HH762LE|F-^0wR|E%_NSbZEjMTfKtzN~QeO-Vd7->_CHRS$qa&KFQ~dS1SY&7)bl3WQUWw~K(=#Q%Uwhr>isw!s z%3a&Xb%dq)_xvl+#?z)5()O2-Jf#(aLRo=L${3ncY{@_!bU}E73;rzZ@#il`Szw~j z1rS9VHRwU4&zt}r;qZScUKHf0&S&k52sS=-(r?5c_%k#o8YLdl@DIxnFTCdBgJ83( zoOjTd9fL$1U74+WBa#Bbz%Z9LfV~ej3<0&(el#AEQN9k3S^2bST}rTGM37waEJe$_ zm)2iGr_p%gD0Nfc$5Xq`u{Llco?U4D_g_oJr)u~YrW&*#i!xuZpUGj%=)W?F;dx%| z-LN`|*L^i6N=z}m==WX44EB)zPSKAVi8p+*k-m0*x4iAq`PfYLuLA0CLUQpU zaZ=95!_|pin);62eII?$FBtGqxA1U#7+_5l)dqA3mjxVu(c=i>^u;|3Q;X@jtczT9 zUh{o1zrM2QW05++{~zbCW$Fb!iFm$NZ^$ErkZZ5yCP*9?5^jn?f_w)2 zy4Vn&6PWk%cwIZll9#iir&xd9ZXM|53ROq^Y@WR&Vy4S4QL7mFXoD^c!k-qGqpjGG zI{?DT$4;B7R($}1prVBu!{7Yc9To_zPjZiCV~JJ=usLzCIJ4T+UNVSi1NvA{e;q@=p_ldxV)b?#;{sXr#IBC?xNR0$oQNHyMU8w+Wn>SNz#VcA<50>&JfP z_D?43i5y78Y_l2q6uKaNcyEOMV(XP9gnNeW^*&#j^NH9b)-%6k-r(a{{EIaSfM%wZ zeUKf@s|@j$Z#|MAOze*5ocf~K_^)~5Kg}Wry&GP$50Ha>q;<7AQDGkkO&Y2IC2}0U zY9I)ylOQ}?ocAYor~9A6`Ksff&ArKYOY|$sGW@#u@f(34 z!V3k)Atz#n?T2BVxGojMq*^gNuU}TI$r?(a2NZlWAenq&;S*n5wm{#LlAP@qlYQOe zv&C1g#pW^(z9%2l???S$)nU@}RqF%De#OIcBk=c1?PrwyvrkAk=DF3L0@(l)aTwU) z6Cr8PL|1ZzNgrBVJ4-X8*M8Pqy8JoKW1zm$J1^FT*N7A|B*DQNFTg-l2Xd&+GVttv=Jkck>v+W(kD1>tgReZ*QmTO0F(JjE;Ei?61R;A>Yb^wyp4T z);qg%JR&cg2r-`)d*t=Lf~+AMU7pw<%mWSVSixj8cXW>xwGqk z6YnN(K7>H+i)iqk@rPnlb%>CnW|hydg*sUD&l3PxsO%BoC1Ochowt^i#KMLf2MioR zFaUAIavT-+@L4hATU5p`V6l56@nD$OprzslL+k&3~{`fY&=IV z!uxzugxPBpZJS{ZzYQs&B1~857qrOl_A`A3hbh#sIYou=yb%urpixbRyi~EZGrVF9 z`wNNc443~-{eSlK68wy1b_r-9-Z#Z$`(3%Fn0^f2x~dwC{e-51lr)4rR$=6_Mnp6r z4^A*R+)oyg$`d3n;mUt^G&pEzG|qE=xhfGDJWHhdy!DgOeSs_#jiVo@I#>2mJ7}0x z4t&Wk$22Ln(0^wNjnhBkQJ>voxvs%{M3EcSLRa9A32(k4&m>V75jtCPZx}k2YhG)Q zQD}jP4>JHhii4f=e;RkKD3NNv8xuTp0p1a>AzH20`>l^%t&(e=`=k#*5S^r7e6~Mt zE9)Ou;}STwRQ{ULUI+Qzt-6yg3Yz@sts%p>lW0fRSOMC$YRicRyzg1SH+d5~fF4m# z;(bzEIG??i9Ef0|57RIHd|m9&`WA?AyFK+%ov-LBr~!_h?QSH&jCt@o$Ss7Bd|dO$ ziWW0_trV%rMUjSzH$6u-qaphA;h`Lnl<1w*G8%5*Z0GCSPuMMVefhc}giPf(v$J}m z7xZ?Z(CUe~2=FDlNvrMQu&}M2({q z8M25wm9_!F7GyXqbMU@CH7X%&=!?13rs*a z1n#0I%_wdimI`#{J88;+s$>zL#=5TfFY(5I-XZ+=kOfZ=cHad#M0Sh#Ry%Eb?Mx|D zf9u==3K}Jth?2l>IURQaN%;cPuj`OWSt=`Hc7pm5XTIYA{3nN;ab6XK_o5Lc%$OD# z4I2R+aKzZ5Lt^Hz3|6^N2$Ycr=ZgdV$W8Nb^*M5M>BgK4qt|ajcXMhtbEikyki+aB zkRNyMO64-Evl`7)mEP<7s92-h&(B==f=J#2t`6A7(#$>9>QlS}H1F_#Y$Kc$=>|;k z&OV(P5xsr7Q0KJm)xq4D#cJZwf6t33sO0QGmZ+;_<$bO4^J=AYV{I;vIGFYG9l%z! z)Ztp%YoM01uDrT!Pz=r-=@Z3+tEBA zNo_p>N1D+GULs%ct9U)ad5w&^yv)kzxW+N_{AJMSl0uI-Q}RItx@72=G843?ADAYofjOGH|NpUSa|LdXf7Y)ZKwF0^Tz=VpqNb zI6@I0Tf%vSlG>urTS5oOZ}1)4oiaDGqPb~xnfG9R8`7Mfqf05F9jeStHqBM}b{E>@ z4v-xWTPG5e4S5V&1zxk3Oh&6SZ5o$h%z`NhP__)EP|=G7FEE>5X5E;oq~#y|E^)1QJRqo`G*~HTmyWa@x+=DF8kFl_}2HQV$Wd&yk--U!`VL ztgQ+oJV$jI4Bl#TX2)sde$9sYM9!0~9J&7Z(VDo|PtyL1ER7*Gb__0HyVozmH#iPq zPgD~f!pyk9j?(i#pL`I_)kM=^ZJY2I39X7cdmur~1HqmLh_sxZJIV~SI-f5W+h2Iy z_`?Sc6YVy7rg^w2vP373i*brh6+u;eKFw4NpO?a3VOhJbyHlkhPff;JVdhPSJn$tb z3%kqW$eisL-R^Js)XO~C5Hsai>Y*y zG*8WA`{ktG9|N|qV5Ac_4`&f&t@}+!>xW8h4RN>_tz(H!t*M-fw=w&?4FRf)LhHw5pMU%cI$N|@0HEwV-H-UVkkr6 zfF1qq#TNI>>}PolOHG;f2|pItv#vL=(_do)ChhslA_o00UI*fl4HGOZ#90_IX8wP9 z)OJtmmECWb0dQB5y#;>kS|DQgr>MB@Ucp}UDEV>WJNyT=ur+P(0&No9vd4g;fbjRpD6RQgC&DuW}-HNiLv=+l4Zw! z_%BdTHIZ4fb%vAars`6|6-LzDBzE`BD>3LFrwq%Y#@M`5>4=DuDzi?YeK$Q48(gtt z0^r!y`<*VxhC4ywccxeGj-zm+w;TB7SWJDD3!4bM12q*WWyeRwxI18cKc!}R3+ek@ z>_W0F)Y;+I+k|bCvjapoECuj|J(Z2v1m1HAbzadv!K|i596dSO?u}(_g2J_x;-w?H z_3_&kI0mKOf&**UU~h3@q_1)HL6HbbOGV9JOlwRC!v5zYZO2{~Uuu9HdgDY$!5#Sgj=bir=7!>hEtsmkCQW(Kqai&5 z*H_oie>xB$_l5qcS*}|gWWO7= zHYKkSsrZC~NuY!!dl&mSz2Ls0mSL|;{=0sy6ZV@1(jPs$#?<9IAdbT2<`WT*6qeO0 zT(?iBa$w>a;=GKeCeFo3z*Z0{oiO&p%5OQc+aC~G&8s_Z%Z@op!kDuL4+s^Z?8O_3 z@dbnJ~{^o?OpJmALApM}$AE(>xMPUaKdq%sI#KEImSP%6h# z5cd8>)o*(@yNPd~vjUT-=;GfuZJy>G+8wwM!<~sDgsrxypQG7rEucvmwLej0WO^G? zT##LvA2fabJYR^0nH4i$V-N)vVB}LoKONUmWoyx;Oi$e4yREETSPue( zP8R3K!{pVA=bX0(a{Pcs;1QU=;d7Nt*TLLRBLV|s=t`v>2k_MCGPrK^Co*8+z?iy1 z068)XSO8(yjf0+CA0Te-GY(DX88g8qKdn$u>Qpbj6TyD|>ULSWEI zSEIpbWF--0S=@)_cTk|WXL2_iRAZHaiWyOCabhZNO7pr-bh3~Z&EwODo@1naa+t(r z`;4Qw0l>vt)X+o~boV^Ee(nxW#@CDZQ+AiR7A9Dd>Its(c8SZfk2sT$Jfcnwu=Wot@+^mU_!oT54&MZAs&xnaR8=N;ITKioZ{K&54cnuD!LO zoFP9s9NH`w9wQIt3*9E$#ASMqiK7?r89(&&%^w{#J{C9^@59Ldd-VPLsX{c<-`h^q ze}T*Ny?F03GyjR9R8n>_4@s@!@u2!Cde6?U%96hOK(0=W4%-e!Ud?eby`{;ddcu6s z?}+@6N$N{!V?stFTF%heTjeokTC^%_<7vajBAMWw1VOOcV2R3h)-U)Bwv+WyiUeF# z5-bRe!t~_aPf08K0qC5`xRlv3^Q=&H>37*KSs&Ot)`C);(FO(R{Deu_Mh+a=WE~uD zwa9l=9JknDA_!>S=Qdzr-j8y1?c0_Ku?g90i)1=dbkZ$iEU!G8z-M!8qv7}Y_Ti@W zKjj5yP#|o*p`iVF>)9Y(BG7?cRyME6`;Ko=3!s_sM`Tsxp#1h^*~OBmC9jEf{XFqa zoyCijkznBAX5PrXORS+m37usMPv+f|+u`-Z?rBVDOv41|U~oC5SgC`jE;@%<%g9%v zxhQ1pJx{VHdY0={bC&PJ53B4%;k%W3y(Lo*;Q8eAxMF8i4kjkaS{)#-PR_7zGw^#_ zULOX?UAwG{U`X5}YN(N4(KM7C4ea!jbUt}o8}-y5jH%hY`)38Vj-9z$prqcdt>cCU z2mDMCZm4kzxz9Uz0>qHHO1r560(3u*OLnRm<t90t2TTQ5QNfB1W2}o<6+f{pHaH*h8jrdYtE8G!~E|Mv-zOImr_#f#eG@<>>HF zSu2sUsH_>fZAQ~0A@@|N1R@f@Z+LQrod|K66IG~Ke$iv2MkDb4ztOLUfzDMt41vRL z>F*eH4i7aYjngZ_Z#*tj6Tj-|kRuc$hH1%Vf;4bDZzdO!wAN=`$x2oWPSRD{vSQ*Q z1-hHq%hZL=B^BMHb9ZZEdH+q91yx2&UxiceQeMuQ5^aRB-vWOQ*o?JCqu^NG&Ze^= zrym#k`x(3gB>%V@lHN`5YOLJ$z9zdvqa!4BJC|!!yWVz+XIAl5&&hdz%{7%tl^++B zl7Uc%OxzsLw|1FKKOHKwCAy3Y52Owy4}xSd`Hovm{4qY)oAh}7&yZW zQoGUSWah2EO}c!ogRZxI>qJ}=NTrMKE3BZG{cTCdc{f!p>NfhFV{2VF!&}&BiZ&YC zoIn-r?iLL$1yF4iJ_Mm*X8VFC82gm!G z%jNrc3i<67)g_b@3DwS_6dOClG=CuWe2{OG`4Mj}*c){o zK~l+s$;Cg7)c`}LBM8apaWV->R?YN1LD9J@lByFq@(<|M( zhd0RG?zr|LeNrPt3AF){9kmYD)L#30Twe8!N4btUjc@ZiWVi?_Hf2RHduRDs1z9Bh#p(8 z`W@Vn@U3dU@k*$h1?p64KMt-VH^;M3s0YmaMJfy zkj?QugMG8$-h=vQ_S*7mdZEb-7vzxL3lHqRzc*JBPP8kzlGT@TPu+PR~nTpeYx|R#uzBQ}G+% zBs;X#{Ys8I`oyS+Xuvl4G5Rxtr9U)udQ+oW9N}@@B-l{uNwKYfU^xZk5J{T&qMQ_l z&vva5S(Ee0gS6(BWj^;bMIZmM5>j&)d4z4Uy=)rIqF=KR@8{a7_`^9Do7<#3*p6fX z?Y2ui6=Fb{94EQ^{ zcv9}(4u_S4P`ikF_jO-yW}mOIxw;22l9NPt%yHA7J{l0in{B?3zukxXY+>gN+BQr6 zU~0(1V9UlPIr|^MMuzhK*hqu|FaCnWoI*iH+>rqFWLnIdo{0?IS`s60-T%$^;a?GN z&dZ6Fpl2#>exFehVfZIPFjqVNuMUb-!My3}u2;+E=lXFF6QFO(tOEZO;9yNo!sGXW zj~s&v+UvMmqn07_%=EcVRHpS_w9xw9(0`y!G2s?A5zHvZ_Bp3yy#hLgj3E`v@8(j+ z-zt}yXtOVb*JT3Af$q%0%Lc}Xz{`mCGW{cjPG4K zWN(F8dQ)whXdDrQyUzbK_Li6kEhPLw3T8aDODzyzWY`|aIare6 zc+U3TE1s)5-uZ?rME^+khbLvcnSZ>3YwTW$CgwI7neF;eYh(4hMs$xL#m*{6;NXa> z9>Fib^s57T`Dw$N_Jixpbs!_J8YE+ga%UIVY|HQ(g;lEKop$3pGP{QQ1g%7rp7hgh z)|6e7=gZUwCv*0^_IM#@_2Db^yjOVaoRf%+>znxsQ}$_H;{Ob(GeNu|&CUB;gZx7g zN;n_aFZ*pqN80%&$Yh@C&@6~p>~&_URmcU9SSR0=F<|nbD1ilSNh=b|g9+-WtZcHv zt=>9azLefLtM0uX$u9@S*i?Zm&F*Y23A4 zn&+1I_F@hcoqT-NHn-|Ee{pVrKfd|aEeTbWUSady9k=05&e4vehkWU#oPNG;OAU!&6%m3}p-vY=?#z>)f6#mL5752(ImIQ=H z>3K25Y#&{@@f2t4i!@Tyrt$F18I@;Lc+h4*nYyq>scAPDzFrcup)<^iRbH)jRCt48 zE47?$qTYN~&K9yqmH%yw1O| zHy95jNthTFjt2+V878d+_#mz9&k><9Gh}|6Ka(Gebx?bao3Q`&l8T^H3K`N5{}L|< z(@_g0^qJhtI#pru6rKyKm@YSs_}IyuRKy>Jec?-VyeF&D$my|qj_2OpihI4)dMXj~ zk&9?x{y<0Ma_Z{L^;{Y6lMn2BURjPt9zEIJ4{qgiNu7-0_WM?9 zyE*Yzc$!^PxS<>JiNaNMLx?DkZU0HYS#ud_*x~p0Ci)-KU*!~72pfHmC+EH*_SJ7$ zZ}^SD#hq;ok|V`7I2|HrKm`sb$DiocDDSH7r%YyJ>@XxmA#rv)9L(gYEneMI9jOGN zxEt7=_3#>x1XU)MR_Lq~zJ-$lgcDYGUd4ust>|(0F0fk}*Rn-qlh>Q%Vrz}CEivz` zenOBS3L}%`?u>_h`feSLz&*k~%-cW{hL2=yNaOaguMp)Z)fB-#!E*Ro&^D~o)AJSE zw}C3^I*424*{@aE)L6I9%V8!Z*zZI~FlkY6d&oa;8@_Pu^kUPu_&$ypy;6CfHfkBf z5!%o^nSEEdA!f!t7@rqtJt`Y92f$I4Bi~{#0f9T@Gj||98kzCna@_N2iOw+E&4SrL z>&nx~^F_w8L)Vbh2jDh-RR=(DH5#_tk}Z*tS4J_c#i8>xH?@MnI8wYX#-;FbN0jI` z+>TUY$|OQUM40{yNn&Z_5v~SNyYds+7T5MnZuY;wK4GCyISTn0ti?(N3$c#CqgSzI zNlQ|3+-`-{odeuk&6{mmlJl@tyCjX>60MbH%9R);cnD z$1I-ocnp3HeO%G&x5+P;;Sa@aOEd%}Jx^H2=CKIv?3kPUit}rgpw+t0|HIT*MrGA? zT}yW(-3<~K-5}i{q0-&m-Q9?EONY|kAPv&p-Q5k};kor4-yi-k27`0X-Ye#uYc8U= z0eN*qdB|5!IzReD_y@$bUw^xLBa+-1}C;)T#_Qo?yovl|eEFdqTG<6Bq=b73&9r^rrT*`DQC zt6$&Oay5}?vjFGZ9B1DSTqH45O9A?%ue1*Er?kEE$Ry)^WH+i&h|6hic z{Q74cpCK)FT$N44nf7>!xNf*mR$DusMGc%czGzPkF2|B`lWVH5^_*H-^=i=|uW*W) z!HIuCo9VZy?t&X_s9T{&m~_Z?hU!fK@zWfGpwS@I8(3QQLU&{z0FCsylc?wM=$NCC z3yS3^vSyP~zYOc*;v`|TPzKkzur+3bX4THp@t$Q4+)0$d(yJoqVQ;r?&)s|!7P?=o zZ-&?e(mAx`8sVI?_&hB`v6{7$cm1@P(&YXzHjt_RP&3=3#xbH$%y-y3i#o4@Q+@IKtjK@`{#RqmZ+mamvcG7vlZa%O!=dnJY6-RG=r7I7;-(6h%n< z)Lugk89e`nRZU0TRQABFzA$k-wjxr=nBl!EY7Wzyuet=xVcnP=WY%yRC;1J$;RE5R z=EP{eoX{~MfrBeWxJ(Z#U(sS(%p{}3S&7)^SbfskYJJeecOl5>TK|2;g>sz;*>qQX z&y4I*-Nk4gbH@_?Uops4hfwu>7;(Qax%uH1LUu!A`s*Zh{{|~ltO+v?gp`dh{4_-> z*}>UnWk*W;Y@-#~7b|eeREIS6zv2fLUOp*wvbB~SJ#tq<#Hb8m>w74d!AvN*P^!;; zpR zxhBsX5%n4+3<(QRlfPZ`V*>cmapA-21FS=DQ8?~KW@vVt^8$YSQ1^GKn)z(bTPy5A zc?)-oA-yo1&Mo)00Tfs81yZfSHkw|IrQPy*)f|@Gk2X&UR=fin{9ctf`M0->3~53^ zGkTiI_vae^aKxLe(PZX&bF^eNlaw1=Fc#E=lpDTQtM-if>Qm=!*{BoBuea$C;`N=# z0$Ltyrw32LwjceCtXr?4Z_|$J78$FHo4VFSAaXvFz3eEXOiK@_ClV6$=vc-OiD(6_ zAh)`aq;4j!1@-@d!;rThpICi9NqLi9RQ55Ni|cGY9fVGy!e^k4J)m<5xPlDYogQ{j z3DWE#!alK4cqXr_zuA93PF0p-x)%mP5Fe}cUIx-brn{~+iC>-ifPpkJ^53}3wSQ_! z%o+H&J9+4Wl}UXBVUgyVt&?6zbi4eQ!;S2v0Q|0z+o6mChx5sxdGR(1ch%fql=uWo z-s7#F3pXo%{qDfeVCqOcQ*f}p^j)ok1hvBXXPb3Xob5@e7=^gShU&r8uzEurO+J$l zsuY*WX-WV5Sgc54K2_umlK1|Lk-B+CC;d{rdtE&>>}|j^x=bbMUB@DCi>mXun4sNn zJgfbDQD9kQgZDY|BE5NSB0P&38x6%qQ?Oi3F6^Q?T&{wQShE2)0dMFDz;dM?)vx~8 zYq@d|BB_Y!M25;O9dD?2x=B)gmWT-Jb~*LX$Y|5jMkb^I(8Hu4!QP& z3)CeN(VVQAmkPR(U%?k(f9TlLHcf!T=;gxqkRSuaykEEhn2ZL4pgMj2`elx3Le8me zabl=psG;1fSVC(81uJ4S8!9(tQo7+9B zB8OBj2QXb5Jr0|GI$y<~&8sF-?i?Eg@GvssZ)@gBIG1dH{vR(QvnXAQecTnGlopu#koYYg#-qQIwld(}J1B!27c7hPrTg?yv`g%xU-`! z{`{DFK~BkpVK$~0SAG8EhB4lRoDUN}b#d!xvGX)$YF%i{?EO{tM31$+yhUP^h%US5 z)+Z77-8+j+Jhx(VH&*Sv?vVJbs>%H=WX!Zam}LW-^=SX)E=R$zO-r7Q!K9{G$-tqW zVkKsY34dF>7wwHz>ffY#C}_RMr*aRP(~TN!vbH$i)FjZVxp3UiEcDaO<02KH_=y61j$Oz* zYqJ17l;A;CB9@X_&*Zh=mAQMQ%^$r4Ky|loRT9=(u z5kK`DgXx(>hY`up_}~ohk@V&a2G`?-1j4$3J#~PXuy=$N?9p;u*uz|L-9&PMsOsl{ z(w~8vagy%pXJvT#$d$9FQF`|?38D4)8+xLTOVZuXMStv=Ng$*qLZA?AOi-`k+^fSK zYDq_C5+Lqhp{QRSM+MZ5bZmA#VC6#}OrtVpIX%h5*2-xv=0h`E%nE$68xpo_N?nyE z`KI(Vo!Oax@_7ao<=m{!!ERL<`IX<|h2r!VZ>62V3NAXRf1_!PLljZw>M>siyEnj8 zCyj%DZfd2BfKM8x)8cwJ__ou26OPKXVG?@R=t2L;epaDolmY~Y9a$HL38l*>b*{Z1q-6qBJF3QW>{XIF*jj?+ zvWpHi%YWJ}Bwz}g~BKEY+8yKspVp3c90|rTt5DM`C)F8}*4eP?W?AZMDuk_}h zP~w+lZhF1L^jGOkcnP-ckg!)=a7Of0z5SsgYS&n^isw#XE*#SW%FpjG{HF!r;ki;8 z9(;!?eqE5Ozer|to;cT-*F7G37$3Mu+wCOisYSx@&Vm%D9Kh&fMxj_?)*Qk+AMS(^ zjXgkM8|MnMD{>F5(qhxUiq<|M7Dz@VMZ=1h6e%4WQB-3At3lu%M$B`Qc}48`L*2`! zoG|_`dXT1n5UTK%gD`Riq$4LBp`&PxSR;bhPm-g|cbsI)rV78)q2=ov)43z?<{e#} zi>3W39KCc3+;49D?vm`9^(0^?g_6`=7#_bo)DP^MB6KhPT3y#F%rDscK*w)0a+uTE@81Wace#W>(jV#O@i5x&t2E)Ad$z>ID-{@uAduytT$fj;OnE$>nKBE zkgoC09t|Fs3}o=L{aOc@eIMcE@~HxknSKG4(x>Y&+L!QZKO5V{*S*}9=ABAw3?C1m z74kq^sD{g+gQRkV1=hiqJQ8rSiV-f)=Ne4@22HdId-kJ?(xKr?^NS)Vmg+Dno7vr# z{rI6o;|Z(_Nd&~4op9{*Ing)k>vuq7xPe!}FQpTGQ5txXD(h&>n++Pakl~TE@wZY$ z9Y${$5*tps6h{hL9XZh;l@wDNIF(`OV$UE zP*;!s-J%oWVq$o|@gH|s6xH1*n9+)KiIxY}^8`6R2MXaiC>pPH0Ko-?Qp)T!y5SPo zn_&`zIu<494`yjXfURqP*qblDy_c|8x}r>W=##;oaL^9#3ZkjCr`0R_@~C`%iV*8i z-;LJZH2lXo@x9klhFNhMp%rU+yl{MzYLfe=9it21Wb{+xlnp!Ky#0Y5wk%oVBr@2t z7eAZ3t+ISRn>c9s<&l^GW};NJa*q4!nkGoHta+S_r(A|Ft=P*l9i{2AP{72^JMIlC8{NufAn9v!?uY2}jDLZGx219P)+gH~O|CV)H9@eR5?xj239*2`s(wLBikh zvdofFh?+9@6R+FI#n>KDwLaiv-u@zFwc8l5Qvr4B)*6ODN)kgWmWtH z4)WJV1!}8#|Hw=-4{dc#^7>Cg8Jc0DER58+9K-6gln=o_j#a<#hOi;VPBsSG6 z4xj6?88P%#=KhE%t3fb+u4A<-!jAH0U;$TElE*w2^Y__D4Anwd>|hC!UDUFWHe~>( z_7ezGjcMvoBLj)9(Bq(4*0uF^Lau3t-h9%h?wP{iF%mO7Pg<2~v7`*7)$T^hp}^v{ z=l^tAPrxU?SMjZBecmK10RkE4sGCaGn*zJ{h&F747-g3d^MSek;w;bQ2>&R^ zab~HMj5^bmHKe8*1VWdkyM_YFBjQL#o{N6PNKk&>{71kP#2 z=P+1$A#Ncni*#;>vPfb<9!hX!He{%ChPpYj&tK>E++^RK1nq$(%9nnlL^q6Rzt3?L zB8yBH{}J87ikSO24zZ9YP@&+LK5Fo;H+9F& z%xbv#;fw8@YMWr%bAlo<{`0}vDWhfw6HxZ>C^iHBV_ zpp@z7?=jBC2WE=kwq*xb!*hb6GyBg9(QX3e)C;w-1Y}Gv&hd%8|N5JQbLVV-x`1i{ zV6hRb?m{5QL_d%zU73_%^Hc z9ZSFRYd!vU>`A+iS{PpA0CaLJs-x53*2dnt{yMfkV^Cr=S-ewXMVYjW6^>Via_!~ObZ!W zav#(tR4L59_v-)NZja%zq5HS4uV2I3f!$FNkG~WrsjCA5-#r2DS52ct00Q;I-)ex^ zWr{d~R%cZSlX)^aMp#>S{v@lZZN}9#nw*!Fi-nTRINfc z5u<`RbR+QFV+nPAGFR0oA)9IPqV|SolFT$(N&J<-_R>e@`yv7GQo+O^Rb8xYJ1eq( z+RUk7m%CAJkB}@MR|wD!rY%jv6d#QgbHq9K0n{d8tOAOFYnBE$2f2-{b;K?tA$Koc zRDgg2+u&vD9(;=fvuGgFpx?(0i$6X(a&#-2Tgk_>T^6eTc#UebHj3>SYIRkjIs+9M zGjyt$uL4qXa*O_04z%Af!rOR+)g%>I{o;I6N2(H81r2YhcFZ^qfNzJ41t7Q^d!BW|IAQuY(4J!x zb^wdu=f_}hGSGOWL)Rn~NfePij`#J6J_L`e1`30eqd!TCshiFegNMS;thAh&npmNP zcJgR|Q^g#8U=}jS!kSqr&6l_RqHeMJO2tHo7AZuvaA0vk^^7hca;$r$Cg~QmTB_}( zGjEjyF{EePho^TZ*h0u#U1lH1Ua>AGMed9H?f;b2BnvQg$XtnKs@c`Bgqd`Y+d-Pd z`JwkP1s~f2RUd{-lZujhG^v)?aRWEo?fBI;b(3tSVt9rTldC7$Cqz z9z)j(uw*UYHY_`sl_9PDdAOAb-xf>5&Ym>R9^6%@JEBlEp)}h(9ITh8C(3Z7_ea-P zauskY)*|wD{oF!d8z7#oB5hi+o9QvgI?AW)ptU9~s{72Fdk#QvF+%6q7`_05J1Z8+ z>}77!qZ8J%U31rbJ)^<-)M$n@#udW>cL!3I;|4A-u#K5oaPa3B(GVhV331*SA*7lE&DC?=fcx^lTe=jp~LCOR) z*y#4V#*A|aU@iz_uF=qNXO1w85Twir-Ay#kfHt3t7sY$@yIQ(V3WkZpM-P$_)}2JX zlsfm30h&AzIN_mobpg+={zw8h3L%GOAR-~pZ?V@2zqv)`{qAphUlM7ISWW|eSxtYv zV(7NgW#jK&tIV>)e4p1BMK+L_LOVT`vFdKgXQ>R`te0QT%ndcZ z%bBSp)uq6kPk5T;iuYsG#js5#DFefEI;`hzM!h)1l=F1vpuCm-)Vbma!5&p#_Jvcz zBJ@nT%r6USvVYu;d4MoO@A=9;OHyied`UtoQ9bqsqRg+|!ByMLvDj~xY{+Jcf?2qb ziVDrDr6WBrsr23QU8u|_jV5hrh2&aQj9!6~I*i!jqcZ_l?%`rO;zSrsPgpFI7UT@< z(K0x=ny0WvT_BzqEdR99f>JEMuBMJ6v!@{)ffCU*;i=KYas*2<+e<*Xz$6jT+>oO9 zDyBKyqZeB=hAx)&nfm1bwiXy%XTU;8ReWLxUJp9*2v12Xg3aC=E*XF)%a~$~8z+nG zdgfE`9b6JgP8Hz;1GJ1KTlTJJ?S6JEY#eMBIHIH+f><-w-DE{eO~t?Y|-a*!0Q>vT&)hIdRX`#MvShoq^XewF`YNKz+E zboH0Yq@KFD_+v0y`}%6I-WA`lyFzd@hvVEJmLDbZ7>!9aJrnq75*&v3P}a*8_5G2F z;Nmr}sY(=FM{6?ZB58#HhM140NU^7+W&eB>u|7;s*w;^mM0uO(G_*)7V22w zxTadOiF1ad9J;2kwl*t*s+Z&2wBH72UC3z-STXCK3EX6#nSux_8Sa0Dw73<;_3INs z&iz2+y^6tjs1;pI)~desE+OP67}vE9Kicye?WqGz**-lc71kUaE2f4?Ujc({%x5Gw6bfuzp=ZS}TR?=8R&DU%CEL zEMb;0tqs+6<7j)UjW+AfDc(HAiyHVmUg`PKtbZf%!vsDgm8=1tl^|ZFT*7b1A9Ep- z3WCj((On5YG9s82fLOO!V$X=2Yd9}2=pxHvJolkPO8uBSI_zdTx4RqNr1 z*T!S`0h>Y~ws!@68lcf!TM=@EbOcRCz;QXP;{mtQxGErIF1neMyjAFd&1cj}Sqel59=dt>63gn=;MpH2vXS`de|Q zz9-C2p5i)A%~S3+8&5i6AZw^ubajt0hy#hz4Q6;HYUe!fB!Hk2sZM% zR6St|PTbs-k(xcUQ?J=#-sKgYyvY9D|s7Xp1UH`wL@Q?F{^dK@OGC!A6A3BQ@=;RC&`z4o$}CE~-WB)Rm`-)UZFoCrLTKlaP3(o?@4&e9Tl|TSl{Y+x1eG?u z6tRb5=B67xYggT9TIE?F4~cZ80LFj$(LI>rg6Vi}K#8uAU>B47I%hB5xlS&keStep zF+^JhScdrE3mf?yJjVg(&`(~YDw?C_3e5Kyg}#F`t*Vhp=`1eG*cl3pEDt6ODO<(= z_`)>Gl(@N@J{hwABP^^fSdWb^%(R(wCe|FyPfQHVLKf1R9{9qPfo55>FGQZ8o>hu# z2Z^)bf(pOaRkvLR7V9NA7M~Z{d4QW=zTKmzK~1C4!)c9k)JiwRHjCW*U>Md3>TvBs zMg-j#y;|9MQNnxuX<=cJRD+P;`mGK7GGIl37?xF$9UOQ%;~&jpmzH20*l=w_N)A?r2NUg+ z?Z9w-e#%hLZ6@5?GhxVfDWKsvet|?j{NE!H0FPvR6_o=6N9=v4M_;f3ElTrJw`i^L zc~khDGwexjwv=9i=H+3bJ@ZY0xxq96wRf$jW1DLrICcYo36)YKp?Ww8206KgQwZX8 zAlRBn$X+{r;_zQ^R~*3*Q91=;(R}vthk~?JB8bLW;Zn59&7>^JXpl|Bk& zVES&8VLGtDO~x7>3Y(ADdAaz|om<{= z5$^eP-d6?a0FtZ>ah^ZKnwZi&eNn#s%H(las=VC9v1nO+$9f`i_XrR%pUYYaf-hapI@3I-1lteby6s${TQ-{!rDLK2b^Kxao+g$wUZD zqR@|_YtHY{mKu3F|KZeAG2K{k5oCzZssuNLhS0w~b#IQE^MLA;k?t;(Jer~8eM!av zpoL#M5=qvGB=qpKbioDv@X5kEq~`e5!lOM?V4TA%dO2|@D{*e$mhrh9J8Qj-d|Olp zg97O4v3|c3g+vfe@4#5_vsTxcn7^%h?Njz zCYPOThy-JeMb+rrJk_SDQFI~4ydg$2*3S;eHEZ#Rng&;9u#TXJho(DZCrXNNXx{6o zYD1vX zu=|6sUsScdu0KaWaztv2*{?o&cZ`%7ib94s`A_Os__#4QXe}%(7~NlpRWj2^F&!rb zgs`+c_v8l)(6gV@f2M9oe3mTC+=1KSXr?-@51aXWm8t_O`4Qt*&Qj*gs1yYFw{OfD^y z^}z!zahfFbIm1bg7jV*-eTl(O8R|7p87=w0eT4s%l`6UgNcCcYR$5-*GG#Om4`2L+ zELBzWU^jbQZY9V3HBmgGy{X{zxZdNOvjw<6Ja9{aX7E*Zo6u_QZCTB@m4Y^H_XU=~ ziIwxdLF__JJ93o#lCgH74|+IhiNs^?oQ4-~-*1iMp1&H}Q1ksSP01^XI4Gq$IE7k_ zD^()7Lu}ZHV;fv+r!zXn?&(O1$^Ok(;?;hYEWMXFw~yzn>HHd-m=SAxxqS`i9Bm$J ze%mKDp$Y%W zs4Al6YC@*!v<+qufX$9Xb>aNMd9nOvc}+NK^ngtcK=h_@1H9{vfZ3=KKIy6Y3cj50 z*=dSrt?R)*w<1~F4%yh~LrCyUl~GGbRq?k0%wFz$=f| zk9q-UR(oi(UjZMuerkd9FqHt_l1B}*;gLM+DC{TzqU-g-3U9|`vb_Wbt%-=-3U-Wo z!YQpUSl%XKs7x3P0EuZ*h4JWGXO|H`9UezIf27n0J(^!-V^F1UK}+5)v94b4-x278 zU=;2Isj4)YltkiyzqB)g#L;!-ka7Mic#Xb{uM^s&1D##*2IKZ&nm`6wfwU}z9t+9x zzmLMkEMQKF)_TU-w~KQM_y~dOrgbf2*v5;lhu9+f@48kER3mQ<8TEwY74g;gjs_7G zHg-C!s`LW77XwO}=Z#67xym3%!X|0uo_PsqU3EYUoZS+z*jq1;NsY%j1$9)1ZB-t_ zph#mf*?Ytv!@7UKco{9fjYU@w^y2SkxMXYEb~YBTD%KbQwt*wOL%?7KfltUwnmR_% zHUOn*6X*JxjB1l?_QlY-smya2)(2%^ScwzIIFam~KOB}v&LS-%dfnf)zmmJ%%$pbi zCV3TywTM*jTreVEdV(U0R7Lm65>O6aglPapvp>C76DZo>|66$2JMA-g{`J6tGOTiO z2~3%i6B~hOwx0zjOsy<{@|flJ)e4YfTyg^I>NOU{U2rRr2U~9$?N+<00UOpvU^3NY z2tcaHJ%Ap&I)kMP1b&vTRo&aYYCeD-zzlXBoQ;Luc=$Mth0A#o=vom}q>C5&CXF)x z842H8Wij*1afE9hjxX0dUti(}{T-}SCgnAnY2_=MH5$g>-Zs*>dr{fGvT~YN`JwV; zFyXexBM*vBT!ak&+i1Z|;^1Atxfj`sQbToR)j0Q+Q`b98?LsX-7or<7P#wEr|2iFP z!Sb-*&v}k&11ZdX831ZL$^6J;YMnIRrq^wAR}U2StY`%lA<Xl~8?)y(R6S2`glYAipw=Nn#v zA|9{sGAxuvEJY6d#&IZ`L^BvaG&xSc?z@2PAvRYC^At{igOX+oRXl z0R``>ty3-#zO;13Q#V@nQ#U|c+=(XXe28;iBr0$SN-j8j9U%*Lh^v?#uCVx zxgYD{8}=qMpOGykW)aUvQHk{|p&9;S4!A;ajH0t0z18|X7p|H^>h1e_){Gp{4|bJY zCZ9yB$M#AHZS>x4^H?@mI$|-Qy7oaVU~{+roVIJg#MJp(s*Wb+xPPqD)Jnn5n$t-_ zbttQ}PJkY(m%TScqt9G93yRc+4Y(c~B^^UmpY#Q5JECDhwwJZ*Ck>Hq_b$B%AWo+S zUVss$*qY2a~=@9#Dp`PV*C|8^$XQQA~*z5%;M#;1PpJX!=M zu#JFvhOw)Aqvuld%lpvzIqW^<^)?(h;IgnT1jL!C*s=26>2ACar%}hO%H%pXY&@~ewNOLa1N%64IS=n zGgqNqAm1wYe}k?&T#CVZhPpGs?y*?@i)11SjMeg>rd_Ex`7jtAoGaAOZV($O6tV+k z&Oa@Hpt-K3A<0E=w&zY@1Ey!$8kCUpN=u6UoSp`RT-1@Ei{gkxqN|`xzL)&sI!z^lASQNOX!2uQb6i zsiFEL48+^wUNpxhaV$y=#?aZ$hdxC zq+*NtoNREijkip}4nZLd~%MiicB)ER*Xq1xVKm}s^^;nKB@r~9$IoQIPxL@yqQmk6}0t9&ijw@+}muNuD`b)G*)@Krti*1!P?&itx0RUFJ2+jV|};q zxZjoVD7h)et@sOd8B?N}%{F6quTgyGoG-4>{Q89rG~08|)%UCpsyU0cF5(564MC(y!I0IhcEQbl$RhTaXQmH=pJ5yp#^M)mzl1Vc@Sc*BJ88% z9wR!`_Pxq06erO=VB{mi*mh^aXp1s0MFB5L4`9A+@x>|G`yca+QjJ18Rlud(U*}F z*5y(Zv<}S?nkX?KYrETag{tMz3&qp7;-WG{U?1#)i$ayFZzDMBc;EK`;7fDE=rvN% zLYOzpn9}D16L*szaSaa#Lz;BE(&MzzSGwVuB#$Q^pK797nuSgQYmrDCyU0gG!r#CG zU3y?7YSp1Q_vd^Wko|N%-kuM1w{WqjZU|*{kAfi%?(xNoUVYJqz=5DC01WJqM`@nD zO0}JMh6%}WRB!)4TmC)ptl8v-sv|*peQQB@RV$b(8DH?3@G}Bt$sr^?ZKWBpOetA6 zzwSzr%{_av4K+3_-Bi$cr;SoyD$Knf_s)CS(o70|{l#7W)`eevX(`*R?ju7LO&4dA zH43@Lg-{T3W+0k;Sn(QveWj5QCJ%7(K%~?g&;a@j~0r?B^`2u7729*Hk0_j^w~Mpl zR`V_NRRTs3M)zv?Z{|cYy>8Sf!6RhMqP+0AFSs~;MI2c#{+Mh#zJ+6S>99_B-5#S) zGMiVEqt4pi1hAhWW`giYRZ;4Kct|Bnzaths{6nr;zvXdWZEFID z@Z66!dC|>4K*=}9nrt`z8dKH+2+Nxw?>-t%D}`yrD;`h}a9HcR+EAL{dsZP(_$X%F zI^L=@dDhUY>uWy^O=7t7`h^!3OuyRbEkds!aBkEMgGxf>E<+pDAIe+g8C$QwvEN6& z=6W+%@sg;b^Pq!ke%lB8DAHAjMi}|r+cd&+_-KDUEqGW{H~kf8yzs|4XQ>76rQD8d zXEh<275)3QN|GW;Zn)cfIz*YIL%@@-XH7(d=wM*I5Z`+RTY!raqH4zpIwj6anZ`sM$_DpN*sB3e@_3!O#ns%-K)e-mTkS5$^Tx_A;YBr zr!QYCV$+rqK>7&^BtwQ3<3W~h;nWKkzC-u*8K#-VqUM#fhn3|Ii*Zpf2JXNoiE(Dj%uU@vaCX;iht0eqY!X?WNg}F;Rb9{1_0DT-w$sd zWpM$0m*STKFPdDkZO+xHV8_0hYe90a3ZN}(#wBEE1{^H76~E>NS<=6NW9~qQ z{t)Y?=etC$Q>ZfUix-)F?pXyy$_W-CrMB;SbJkGff%|Sm4gThFReS|;hu^rsz_to} z@5{j7<;0Rs>2Ns&LBcEfbH6_#1W53Gcp_n8#+m|DX2nN;gX00L#m)hrMG!m~+1l~zwB)?JhG{_2OmP5;PCx|O3sHxpA;42vfUttkpY4)3}>XjHtq z=^&tS(qNDp*8UyzQIGzPCE&1L(4Rfy2n}?#T-rg_8A`qUU=X)E&$B#@s_Y6Bt ze@>d_{~n=D@~+lPar1UuVz%Lx+%apB72u8#bG`E>N1TY<4Lr~qmiZk#GmvDP9JF=_ zt^YRFgxSYLn7=?@fN|OkQVe{_`vfWx4fp}|yum{01RO7Xev}-Nd0FM$3T-C_fCI5A z*9IuU6~v@kx8m`Py`iW&FAqi>ez-D`t6j-LS<;)zzL}{ z(3bn;Sr*7s3elPJ>ClV?-@;{OX%jEf0B&PT?$%BF&MAENkpHkQhg#p1l~e-HGms0D zz9qCG&Z7;UvJpVA4(~Zqx|*;tGFoaj+!5T*qn$tY;@dRzA`$T|c~Mo~eUQhwQLLSw zex8nPkQC8k0?y)NF!Bxneb{G}tJnS}iUvZkmMA|}2V3Sn97h&$P|iT~-y3iR=@@ux zFhv1HACyl)X(QiC18LzQN{Z@p&DDVV+#4}i(Ha`o;g!0jZV^LZ$m`5#DtfRDoP-@s z%d0OmzN92WWqP^PYwWN{(89lnvM3C4`~l9tOKfrmKLd_K7HYWZ7*Y7BhzR6Q!D+d- z8@OaPSujLfn7-Eb2rO4wGC|CN47H{j8@O^2f72=%e-9HAnqHN(PmQ1pZC!R=Y&@lb zjKCB9{QW^KqTPM|u&lX?u{cX)f+(nse1ZsnN#P%y4V>Rdb6+b6VRTviH<2=BRTJIA z=8u5j21zN{PO2BY4YKr><&(3n80(Tf9XXfztv`)(dsd(eP^aaR_-J02%huQ>OX zM(;|xAlHb55jsg5zEQ$w^+B}(jtBj3<8JwZBND}-bl5(2)pu!()W8^9#^uN!ovmY;tjF}(5MHJ-z!XiLM_&`^31zTy zwE>Qqtrh7tg*m-+oH#gsup&1-if@rLp9vrzSbT$DdHuy>FlM&4=S+?lV3hV#n&Dwv zQ7xIZb6}q$boj`CZ2wK>b#-M0cp_0q?NfpWV*oH{zaO^Q`k-?!{lw3@bFiBHPLmK| zCP8YyX_%}FIQ{QF&@IQdoAD4CQN`tAQNPG%xXURn>l9>{ai%*4nZf=SL;m|&;s?%X ziC+;iHUl#LL$Nonr2<`20HLf1!_-PUT99`9@zsO^r)IP3e z!z&Nfs>orf%5*qe&$G@WdmQPcMtHXXBp)HEi+m3|to;zxzWRwhofo3GY@iYN;}snL zZVm7eaEK#Y=|9U9oAc&J2#8qz7Cb%#`$&j?^p`gX9&aTa@|wqwqWK!QQs%_iU){5po=bs$?{IwtZGt*Co4bKd(dQt&9?qpLRL%u8A5x@WvBg z6;4~NWksvj#uHcQvO~$$moZ8&g??U|Jbc&{eBEcGFfJ8a*q7s&?~W=BM&y?LQrh&D z$iuSqZGuMi-3iTmM-BWOU(UgYYkUB?j$&~+A$waB&H(I{`5JM;pX&fb30>25?6~(! zs-u~%f1JMQ{dJqg%b03(>DQ=rcocFhS))_rI-N zdRQ9=*yY{*`GMAdltL7ed8P0>@o*s>1I$>e(&8gy31WUKY5X}x6uye3XMX)|X1jxr zHnQ{$_Ywf^h)eQ#TfS^+K82E8kGJhfVb*;a8@sF&_%&wuI?9-`@%9*3j}7m7lD9#WicuZ}|siX~AVYI!HeceeCW zu|xItFWeiWW#a^(<X+6~aHg9Z*hQwR$2K1*))4AT*PMGT2jQ2VVztfL%vTG|!C!`x)i@?;@-*po#% z2Rj1CET=m}OZ2fi2VR1^cG^_I4`P5pdQ?2qU4cTctHas~|G*gQ2LZ!l(gLU&|L|id zszVrYhY~Bl*WWF+Fa8lnv*u)-&S5el44`0K%`*pqa2-g2(JwuRQJgEE#@idil?AJB zm{tIrb37N;Xkwq7h$H@;F7)%wxS+`LtCgJ&8WiuMfI~XDs?nhGdft*#!!h6ih|{e6?)V04}+S zfF@1ypH+q;L%-|IxCC({O)OyN*5`mV^B^}$Yp)n+>tU#YhK=NTw=U7Q|6}%-)DCB; z;X03{^@PLS-jP4ALR3yYn|>PJ`?SM1s*HFldm_c`xjF{d5NO#)jAAl)uJH;A+Rq>qhU~E8D0Je^eZz+>ZA`uURS1H$xU|t zm|1J}uOr*d@ueYlk?bMY*yU+E&Wftvn(PeQ{4IZmA;`;dq(aplCkvL31~r-GNGDKO zq{Wg(H%@gof9wsZN4s{OXN=sj0h&qwp*eOF041b+ahfRK+Ttt5zA#;nJVT&3 zaW30JQR2yKoP$-!7zhs=zxu6tY9-X^Eg7Dd1Ynq!25TnszJ19qrA_Yz?G`&$?68)V z@dRjT9HQ3jD#~m8To1T^JaLDp1CXzGNCrd?c@JtWh-u6@du1GU<&yx@g55-s0i>&Q z9A2RYBVBTq!QY)HKvN*w_HzBadxm3;+So@6hIOaCnCfi&n_FDOV7Kxz;W0cX(mXMKA5YJ<9GOjn5*709C52wDe`ST zK5_+COxMnc896EdPSH3(O$kJ#(c)TGT}|ZhNA=eG^;t%%4#qGSSj@?Kk}I9#>s5y( z3TER70DrfudpW+;vN%?=>PSF->pENSTsi=}ftmN+Z2%bY(pOla@%T|He!@Lqyr00wX-e(+~e!UV{^;36>wz4 z%L7L_#rK^FgH#bYnuxuYFsSvIOdnodUbza#7pFo;nk}g;oYI}f2EWdK>br%d|8{hL*Z&s(!`@~A{smL>Rp z2?>D-3HCSad|wn2T0?$*7C-PkP$pxs`Nh^oeoN8uwO{eX^>3(C|LT!v698AufvYsU zsmyl%E&$m&iyH4GuyE)q;Lf^$z}1?TZ=LNZeLcl=q$-95a_ei_FU6HeHdWPzG;+XI6g`>QD&{7{mM4Fl`bk_Hd`-8NSKsqstm(mZM&=G zz{ueafk<@+6ychJ6$4ah4QmWxJGwQS_~JGJ?%%M1`EXbg(F~o$#WhwmWc0(?@|Yll z73@3jW+)_9yhDrh5P?2upj7Z8%F4Ok0>55L$V?%j7=A>cySf_z$TViZL*+(XIYz%H|Lv^UWcF*XPF?X#S zpEGqGk3}=wnfFL@a(jKw__>)qgQNbA`%}uA=E!>ai&aTf8Mpkk1xC8O%sq~W5Hm4% z!HoCGm7C1SXT`&Vxq=79j7w{$k&$V=HsR~&v3#=@3xDwc$JbkjMb&lT!-Ggm zC=!w?3Q8jql8Oi_t@MzNba$7ON~s_v-Q7bs0s_)8bc)2#Fbp-!xAA#jpZAO3#~;si zJzi(d*?aAC_Fn5=_qx~43Ceo~02}+&jw}+{w3YzUJsfle5U%y!*?xbWecJQQdH{cb z9vI8kN(AIgTko!d(C{KLm5MF^sosNo5^|+vgl(c*)#>#o>-p4p)BeDvzob{7n|PRA zeOMemyE<;rUePb2jb6|9`7O2afo!I;SN19`r+#D3y?5lN^>(mtS7>=tlIqN9Whh_C z1=yswj*Q-9C|Polywyw9a3%d(y@|&I(~f3+MON|jIv2|6bIP_NL35#p6& z;eg(9vC)PDnd?#8x{>!*=8k{fg!mipl|(lA19&;83=U)r99mF)p=GweQ@w(2@HqMo zeE-1q0(*|DV{p51${ks_WK>F)5zGpvz<*$=@*Y2shDqG3Ht%V+3hi3-oI8?h!UyZm z@}ycIZy7py^QT~$Gw&=<)7hJ2P+Q3fNb_GeO4`VF%Z`}L*p&n5-4Fz%badIFL6Fcl zGdqjTA{ZApU`DFw?pEH=C_?tZ6dE!PL#(QtWUddrvBc_6_qBs}G|1$Tmy&xIP67_$ zSlBs@)6gJuEB|I2xuoL_ir7TI(+@6J-W<8vPzNBrB-~kqSv?h5>Vl-v_(iv_81J^i zgRrn0UWp41IwqQWF~0Mz&7w{yZ@bsomxx<-7sNlF)`w0}FYI^vw7}J@^((tFA2z(J zdGsll!_D-wrcu(tybjvy?$kVboU+Vb6;os#n!;No)SRDompVI_2*MkpIkj$6vdX^? z`$BsPEAT7TzE6K8xlqgDCfzf+L=(?`yWX^CA=8zQc~3cggDj^`wQ@)3jiuCh_EH zX%&T?1kT+&(Fkcu6XV|bZ}!$Mnf!)*Y$$_U0?38moSmJ7lYid?)YM?+^6MTB z-;FgAB4+U;NJzbCue6oEl$^3lH1z#wB4WP3FVf}$%4g#E)$P(k3+OMrw6VYLwpHOXjwVO1Yat!HXceX$*|cS|2zu+L~P!UD5v`6?szzlF(04(?v1jg%5m zoxhOgdkTu2eiw1+@K?`jetWO-%abW(F8RT-l+gXJKkSB18h;ZY{HV!R3;b&s6Wa!4 z(`{I*xl0&M7|z1ILUk#V8j~3FMo^dOaT?oD84*`c7~X3+YL_8%&sQzYFSsub#=&;i zk{85)PpT9|#(0&U`4nyA1oH^3Arn9N@#BRJC3*&QtDNsJaHS4_5sPf|&9GGlTPgD{ z3*#m4yGgfL9_@VIvhkJx)Ysk0hDhkKpk2LckJIZjPlok(WJjK$!cF@roG5t?6jENG z1=bj_hTr7l9Y2bmgPgQu=R-@%I9fb|~t};ZZ?$+KpS+ZRSz?_tsRqd|oD0SRv5Us1K5oHRWtORWWI4MO_}uQDG## zXNr{9uW#C<6Le?sq#kgy0%R|jesj_xsinP6FHm-2@6vCQDP47Mz5_(ESA=Vp0z*V< zXg8YM=GU^5ooVL5!LPRO>^KtieQL8>U90x6*k?!2c_OgrkmngODU)Kg-Q5#K7M6zkM3)2m7p+*AopCIZD%J+=p+uLE1mc329%}#frPsNQ3c!(hnV1NZ*bu z*5G$q7ub4a3q-Z3NoCw&<{O+Fk3NM7ZhYX+si?ESN6>}JCXBeZ#p?$l;-qo)&dys& zd^Vz6TvGWmiWyFotG|~Xd=|y4IX~fe8^Tp-yTtR3@5YvXsD+*@kof|t3!9B=9O$>y z!rlyZD5GlZbpvJooQ4_nK6nqq=$D2bU%5$f8cKdVj`QR;OLV5uw)kod^@+(r)v5-s z%cbkSTAjq$;7GC)lQ)QfCuPOiy~`kK4tpjctTlWyD>3@Lt`h30$+JjP&QCqJDCM~O z&YE}q`Ui%tg;YDX`m0=h#~ckCAqGzb+?XO8U*0vm(0VA7jC^!t3ko88yI?8a!u$8o zP5Xo@*WGDTeUj3YAd}BFuT#?mKWi6#8<fabwRei*Cb$1y1CXu5kU6qa*u@Tjpdy zzgg%0N>TC^hUyQL&I`6LWO+Yykl^AU#6WEl*Uyc)^g#szly2K(at^z<+Vks$kkB@#?#_RekASTTNI4q0}A!{BRaujn83ncemm@t1!EB1;KkK~`V!K29$=?_>g+c6cjo+y4o~fmVK!fb6;nZI(%G<`)0U z&tmx`rRg}cSKA@7xRQRonQ5d3)2$Hok>*++Nf)~-DCt(_Z&Es`cOF8H-mirT>Zt_8 z(Vei@v#utBR<-0J{%jW34)tLDUpRC+^ zN)}N};H6L!PL))q+!>HP%12K9;7f`9}==`WC=W0EHQuSGdw0qpZ zcoTN&RA&RXd%Sa(hUJw3{Vh$N@A@BxUYypn%EXDFPHvmr7QSR~-aNz?Len34l_lI6 zU%{Bi@PMTKp-9q4)mhfuh1wQDlC$Bi^xkeZ}yn#L@i1uJCZ=d-V0pyMoR(@)H9u;knUEs$3#Q<%(K; z=R|1S&LQ5)C6UbW{-w=lXepijt9@}?T$|7CE{c>Zd3hB~($5Phoj(6^SR=m0bGKI3 zzUB?sk;sFuyl*;pX%ELa41E}yBpYGn7BN&5xPtRwzF8&NNT~ZW6<(-Bn}zD8+A|z- z+5rHxMM!$aHFA>fibO2dHN|Iq5X5aZ9Kn)&uGn%kJsB$SZFf2_9D-1d`=~G^NKH2$yjg6 zu-0>HO86mekaF5Gw87|?a6c6DGc!VLOm%Erz4e_&jh-#4&atj^JX{!;ev@5asrvA} z;VSa!5;Jb#$Ypg=s-si8r($se?#v4b0Jd0oBngDWKr83`rIEnjM@DZ|JjLCzrLtVb z0c&}=@pS7$Q)le8IVg6>X(vhMfV%^FA!x+lIG~I`OCAj59VIN(8)!+VF6f9K8QdNz z-?E~P6}{O?x}u%UdH3E8|GDx$v01~M@0$3SuGYZvCDl&t=F8~0rV*~!R^Rdhm+pT| z2hMS&De3v~_>i*I-aC~hVFA8yaZ7tsmebV|1>wFUc^d*AeEsI4D)UidG-FSO-3=QS ziwJDQNS{1k-+uTuv*(V4)6YF?=5BcI)q%dNppn8I>iio0Q2Fd7{=-v%1$<tDdVMP5k=AZmoTZ76PQ1j`{I>GVe0YTG4qhW_8Z+}{ z5H$WSjV4dN!CP(uH%KIbtJ9lL@3m`an_-WutYia^x#gT7z*=oun5`N|g`R06{9Nk^sTAVc*&(vt7Ee;H|ZX-M!oB-govGb|Gy z=@-0olkw`8tog0ip~Ge7KWV*U3it|`UcDYCDMjX@zc?uj;4-c-?DKh(?`lN7hFEyg z1vNUC6|w2?6lA*hi|@alYx51**3uu&;c?t*aV7aYvE6uD1jRlj7r&XEC^&&pu=C3e z+!aC|Dke+Jc!lq0_b9xLY3fqE@w|=ggevhP9nVNfyV#{T#ZRwnx29`y1ydQnR_0O< z7#C1(KHhm3ZlG81YBwR6I%7&%yuW1`DLIB`lx<60T|E$PEC|j@1 zRHrpXYPQo;Eq*ZkkpF;0x|kC7`xSDx$4!*t-Tk9)*-7qszYc|+2~TOpS~^7;&Vb{W zT1H#Zeu_%mPS~1F_BlV+vvZ1nChEJ$DOLYDdcxy&MIFhT3$b7{#XFOqvA^rZA2s`T zGT=)eVbP6f7MEK_ADRtMR(|aRh&On!>G_SY)j5a0M^$+(v5jsD8=z8BD2@4mVud1( z$j0PD`>eCjeZ$Ko-(?JKq~ihk4lPCe2?!}y5EXxx5>^?+=)&z8Ip>eV&5H0v+In9zoVsSozvN7&~o?HL!VYPFap{ea=0Aje_ zjUTpDlw>=J8gY3Zf_odlZ6ENkJMo|Hv0ot*aaN$!3TP#}EoWCa?}i8Ub=GM`1(o`u z_)zIlPa!Y+XPZASs^Y(;Ji9Vse15N@NlL=BI4x z-0Sy=xVGY+NT^9SxT-rxC4IW8AVy2!Ti#uyu-zF^shF4|@Ih)zf*GAPb&KZAr@ous zl)0($LlSea{Ua5`*CVW){(?4On|_w;52VDQBdnIpXttpza*qA(CJM~Fehw~YyV*Zf zWEs_>o&{`jA+nNgC*;4kca(yBEb6NEZit8t+KgOe?76Fu=hX)vkY`aZly9#uT4GC@afIRNmm%3fK^+>$-CR=$FRIWf#BV{c%Z~VT{k? z@ZC?hgq&S`6#u~s+YzZS{d0W5H>vxJyCFPH&l}>5&oC}_ zvT8m7SOvRX9UmkCemtE*;p7YAGI_^{IG9#FbrP>7J*4r}5u zv>pzO)b(RcpmCc-IBnzMB!@`oIVdw<&0md@&iwIGl-1lGCL_uc5DAs$G~oTA+Wi813Pjm&$4UBlt9%po{#E05)9J@8y{L8srbq~lXnNMf) z?!Wipj&T;=GfSCzV^VLw$O#t;6=<%u>+EUv`}X6aexqZ}b(X~y23Y<}&X4!^wfvyE zb58A4i0q|(kU+q7#W73?^IIa}sh_8QTzfs>+o@k^zk>H(S9a|OCT3IGRanY< zl3hTN`?Br161>&g+K&HOQ`MYNN12vE%HYt6oLvbUIwEw`n;CPi+K9zC%t*I@oc;3@ z+YkcLP)uT=3~}3lY4J%xRN1Jn#g(AkM)$EuRhkwe9L+R7yuMBl#J(wY0raUEdqCsoU>osSqSv?6 znpZ|D$X2OP+>yVlV90XD11?!QBdU``LJA>9*=kDWPM4$q2zXxPuyv^ z6mQ2BVHe?GF_&^Z3FIs&hex!x3I@aTD$MAD9!b#$ z4c-`c83?MpC_uSrcoBksNM>p)ZQiBBKm7RAUfi~J9|p&sZ)2l@%zH?#(Idr-qY%}8 z!tw7mruwbp4EHw{np-y<3N*qEFDLZvxY@WJ#z6`UR%;LOLGfYY3@C#O;mL{?|MjVD z8uI1p{cD*w+VAWD;+Y-INUxAS4I(DZgpHv7;Cf-jp$%|CB1Kj;AJ}1fc)es} z(+bODA(m0C+3)ieAcAKNAEV*{39Io`5`V$H9+!pjJmS<1XbHk_Qw-mxh9zDL>%Sr1 zN63A~+|!#VI#ZM_0qGO?ZAo$C&Vx(5BCpYW&I)JPjTyI3(9yW_-QidHQ!|x*kWx}2 zIbX=@$e*fr`PE+E3EvGWB{kM>yY@q{IRZj<%kVj&+_=I++{w0opLoL&!xAC( zz3OnZz7K<*+qTg#43Z++hg&SOwOxUG2U=NpT* zZkWj8`x3)nS3=Lo`9G9nf8){YB1V-FgB&lX_H_2kTz#7z1^C167g(_kA-mgnp|{mO6r z^97TMM`BPayaseg{qnQd%%dz12BlQSA`XpuBF8bY0!WG`aZQpnbJ%2b&}8Efnd;pX z|Aoh<5NO-1%eS*Wh3vY(z#r#+KA zJjI_3M$9pBE&NU+qdnBi<};stq5o}pn-a&CXo?nft6A{n=IZ^o@I)Ca3XwFPEYg?s zYYC5nkH73a3$fl6{h4a?vewcU`Q_uhABRukoa@vVBF?E#o6Zo(v%?nY?4hQ}WvPXs zrj|@f^2arpKv#t_^C@MnDXsi6L>?S6ayciu-!|~(xLzm7cSJN5z)`r}AEt)P7WJkg zH_JIPN{Kk&PS-25f794d5??+r)K~K^`ek!v>aw{?t@xTv=oqC#;AWS1-=V60WwH@h zWtf^ve5Tw}wJf*~+2j{<1(o)a-)0ATDbbC9l$e0MDEL`LWa?D!82daD?~ErI^7wFW z{k^|j0%|Isw^O;IV-@1m=yc-~rJ`_4^7lzP4Z27*!esmI``&ApFp7muBC+d{L!B?? zI0DpZtSSsRN%`T}hVF14tF&6|F8oz~_>;Ol;Gg7XTKw{$L*JSd5$6>V{Y(_z7 zX1+-S{Rr;Yw=9LGU3QneLf%N2{K6#~})7xa>k_}Dp~@1Etmoaj$sH_4zO zo0hAKEKi=D3Qo?IvPdz0J)#Y$hDTM>SF%NU7rllmdNIMiHIEs1(CO`7(|%ymx6rtF zSke~0dn?IX!sD<$Lqr1$r1eiR-;-E(IjhSm8!FXzz;`*{kH7-Z!I@cX)*TsfQZUNU z6cgo&xQ*8kmwKxcE3G+H%ec8K zq<_{-*28u9kyPFSv3$JcJ?Nn>dR~KKA zz^vuIpkLiNhn|beZI_$l6!y_4CTh(+`Q?zz!IYtviwt}qT)3G(uSIYselXCm%f&|E zCxDa?!?DG)qp%c>*zH>FRYZPY&G82Wz2W5iFa^Y*qEY>l*+MZl@=V4^RywQOdYrG$ zn?YtO{2>I=Y)a)rVH@~CbaTnHSM=0YdGZ=XP9=H&VF2ya<@FDnW=C52&Kj=uR7JV` z@3mQicQ%vWl66pNUjfRJ2MLL^7Q7tE+{n6bg2|4T1qIs!=+xe{(vsBD1Sf==Dt;yD6q72l| zjSWjKJ|=^9E$H;Kn_G)HeN~e@xtYY8+uL@l7Ciz{U|`vv@a^BdP)~f5m_d=|wD4QK z)1$tZ?I4*prn?<9J~mb#Ai>Nj$&(kUF0w|miwQhO0 zO}6ci1Az=c>_k(J+8&EfAyS=6#8a>T$Hw0iM|2E_lnR}x>L-S@^KO$`)SH|=IW%vw zpnP|7T-urRtL;&5`}Mkf`0>itcS^~XDT)4XLjB@9&A47kO)vY)3nSuYUIS z?j$?WFf}FE)c3&%a7PlgWU;?=^2l=xgOXa9QrG6)g?D5)`C6FW)!DN9Vh%fLAur;P zFQeWr=5os_8Dq*Hz&|;7D-W*}WZH;zoY?k8f6S2TWPQI~y#$)hmv$b;3DKL%L$TAD zB(UxSx2*~*Gmn#Yo-GF;8kb#%o(=YdyNE?p!6PUkkiv`ugYK@#>{>wY(-LyqtH>a( zE-dsU`E9Ga$$W6~a=x#Rf)3k{J&QQa_BqM^g{ht%!aMYUE3Fd8C6bAhW5SFjlmi19 z@b4F02}h8Oh1b8EvnP>`sr2Da(r-XHcYjVd)eR}c@)`z+u|pt`r!di9f-2dO z64wLBaTo-`TMRvZ7n1XI5$= z++oaVBOfjzv64_+1IV3e`o8*GZewWmQf(2|x&kW#L#FJRh-bj0epJ`;hSWwYokb0= zRTNTaXP;RmxXdDEKFcy`?H{VH*|AGzRWOIJ>$NhdcUQerFJbC;smXX*DV)_}Ip=>P zvemS=@V@2fbUYK=j8E8TtEb17`HkT*ahF?X++JJPUs=e5G-sN}PKzw2K8Z;ZufzWa zFeu^npgT4}*e>mKnJ4+hY-HQ1Ey~Nx0&ixD{;(m2v!+;|FKZL&=;U8ENXsk@d zKAeM%ro$aWLPjOBlm{950UwG{Sh^{|iF?8RO z^6$!dFEaCZjV?KMGFFkA%cESkRPhSta#3kkOvO zNw}r@4NX1=4z>!vKGswJ<*{@4KFV9%`^?oxZ|xPA`j3f?)BVfMPP_v$*NP`jL2Yqe zzo)VLf@#3|X7Z*dBas=-4(Ruq+LU-v!?9ts`9p?r0T>MY4ah%ykz*FC!@bM~nVNKu zeDoQVpURzmH!#~VDGbxK_w_bKTSP`wS|Y~s9}*;=%4P|bI0l1s|eM(%7cKyd!};)YuC-XbT6sZNsc)?HBXS$BjF=g zexcNTXl#b{&sYe=RDD+)V2;bE-xuxw9uRQ^R3YU4FE^7d%!nv2 z%{%+luBMTkDQ1R;+ERtz8?j1qUCeE~bQDD2xY9p-^1%ISj#Xc<#6hYGY8-6C;7|3< zC}WLI4t1`&*EO;N8#xiU*`A92(m*-WM_6}wGanUm_DjmtsXaTojo5pyG!BMHK zGbOn^#bc36Wb|4@-(p)ambaxzV^X_eW@ZKmdA!&HNI$fRecoJG+1w0wQ?sa@1!7%N zjoAn75r0ofBC+ZiXd$LtSA(jV`cV6QL0IjylS!}0chIHOJ6K0FAu%!W962bPyxI}L zyaGbN^M33GjQMmt$4mats2?NQ)q?`o$$BG3zQ|4LgecHe#z;Wi( zcUShY7=F+fLLce;WC| zSZ%j-hGt}BRD+U^-7X-QI)l-%cYyU@HQWxdLy&0IITw=KSS4>1l=q?B#<;4^nn3|q z=~iwwlMBB|pA*<027=q%eMVkrMcLoqTv~PSE*+se0f@xM$;agNdNzetDNsfnTmL}R z^?_^K1>AWIHjh z2@BK*fck>V#qL}8>kG#;sPf)I&lR*;{mA>M)?DFN#B*sL|04qHg&NhsoHR|kMIa#D z*_w~0qdiMXr|xHld37?n9AJhuiadvUWBI0x%B{RjUN00&8Di)Hn~e`Q+D;greD10s zKhAmeXBxgT?(=>GCqHd0xh$qU`o+=Jptp{?3(%se1F=_X7IfJ2rJds4pU488nu4{? zgW=>^>cH*L`&rJ>d190CVB6>YGU47peXf}7U9zod;r6QZsI-@$nb^@u3mIfsn8H)@ z>!r)_^4wlk_TzC)DqEE~!GT=WM$2$xtCaGIStbdoR*b=_;6CDTR<8 zR>&Hw({s{v>mHeCSZ$avq>|;sp@3%2rVL@{WHUdg|1xc4n15XGlf;>-?{XeCW+0z@RmG^t}p&Q5*5>}V-y zv1KLD%9y)Chuit*fX6R?^4X=QdU#DH$r!aceC@AIpdR(T&m0`(GkPBewm8geGIAJy z^6qA?iZo>Uu{s=DP(&&k1TVr`$SVCz_Ni=29HI&4V0e;B^GWYYZ9#a_02(<~xG(8* zIFaqST)J7ZzIsIsk}syO)=EO{=@KOt|HmdNYMPoRYPa%6RPlBqe9kCcfc(ly?4cAbej!lshTfWpEGK7i;MfRN~;sGq`L2;PW{UV4>T^xI>r zZd;=2P5V%7c<$Jg`ADpy@Peu&Q}102C`xAFgO$At0e$7{n!6Tc!d_ItB05bZJ+z0; z_kb)}4k+M)gi<^6MmM0j^v~b!UF62{N}|jro0yaAyJC6PZBFtWzYgoU*yC4V~@f%GItH$e7CDyKAGK0c+J1TbPm;0%$xF$ zKLOpESptu|>*}_-HP;v~7cUndU|I;2&}td+lq&DDr$8Eor!J7hCU?zl^elw+zQA@G z-+f_;-?1>y_ofG!*1!-elKBTzyJ#-7a3hBAz*t!;;>=urjPOqm?Mk1lf_n?G@J=n^jx4rTwcoA8^JqFVR8< zI15S!$Wq+TkFzlv@ONY0A&2k^Y-TdD;nu`HUrYE{KXJ00F2>1NmS9E$3@qD(JCi%>WLO#he~%M5N|VnOHp&zPb7Not!;sC-#>|X+QaQ2XGcrqchN)9FG|p+fpufO=?uDh$6se9tvgpO=cDE>sZr(xjVE1?|9q=wUlcta=(KlVvv2wl0{(pO5lqD&pe5<4Z z(p~B-IjPwhy0(Wn?htBR$DOz5O5vE1(eW#wdE#0ckaz@I+zZqcxR)c_|2ZvrhrT;7 z2==EIUnsC(o~s>OP{kM)j_pz1*7i_jQwuir{sl64d!vabS~W!$qvNrbuSUoYH9p~4%DjNy2(r5a!p6#V}+PP z6=v3B`*@#B*x=&tI=Z)gsi&Do$dMMl} z(r=oL7-ctcsu_AALvkV_(pvu$lrSx@U1yVz<;^(NDw5K|YJh%HNAqr7dwO)?cpq8Z znTgE{^f}_d7`aRs#oP)5 zuKwqHTf+IDoKWkdUNUBcOZ~<=5u3=$O-K_i*-_}6Br%R{)*BV0)$daawRN4f zc1s;6kRxAQG6PZen}Bz3<*0tG_^>~cO-W9hTf+joLCh1nBSp7l13Nz}_gXtm0;)!% zxLo4eW6we?pyV!p=IZ;o;NYf9;gY%P=iI}0#6G%R-_r}ZvT+xLtfyCb@}~x+moE0( z3=bVE`9o2zPnE}UpT$_AE{}>XkBN;c|IQ2&$pYx;fv{CR--P!2OxTdvtn!6V{am$H zHNdn* zHI}WaCz|@y@K$kPBVVijKMO+louG6op$GVa80~^Qvcby+ITUL?CJ%Yid(5t>MEcjB zgK{~6Umm(<^6lND;VMF`Y7OfT#+>cmiYq31d-k481LxtIR%HfmI%nMw+IfCPd18}8 zS+IR<@Psi}O5DPyMrRClXiS0^QN-=%Sbkwn5+5)s=DWfaBtC`NHK3M)JfPvvXbdXK z*{^mPw+*QaM!Yhc;8N&0ILy-JjzK%{#AoNOTsEAR81Kl~fB5;)WJlD?iC8JNn$Kuq zr-v8^0$`Rm1PT+c=(F_VA_E(|VmNzgq<+_vG_mSe!YjOs&;}$qNUE1YxR>TdLZ&(| zDDjOL2SWcTbK-X>zjo)6(Q~aTezTzrm80i>#sV2h{;j@Y;6^g@aON7jbY5>mfO??d z2eVuD;;Sy^q~jpf*6ca2j zT>Ck&v$mieC_Cbj@+{9U#;Tw5{^IZHYuU zI)&LKCc>r>jn3gsiC%{j!E6M7hIKREV^Aj~kGm?GmB?vm^9mL0jXa9s0#AE+V=|Tx zHhqFZVpwdOagy!U9P1F?!Ns)--HdnDS2?OrhDMr$E78&yjeAQ{&hWN7pmYB#;n1P?Z6E3lG(C z#0*<6qsO2&HGe>b^MjE*s%9CRwnKG!l2u-!om&+9y6 zJF!UD{Ev+ZIp304)Ca<6@#7szk>9y4BR~9k1wi9wo^Zry@iL~;HBM*3DF8}^W1Dz? zCk(L(Pwen(owKzM>{-TauKt5R_@)W_hODUL5B*39|MPp^ht$8U6?`oa!#KKf(bLEa z#xDAUl4n|GGH}^N%5EawO)ZAcH;aZ%7GI%ivhv1Nd;hcc)<1*7d=0W;xfKeNhZ_Q4 zFXfsAu9f+tdp*aM{aP`-zlm?z&P|!B9ncn)S5H=TY?j$hsHW;VcJ~7RmfV+3A^suV z)`Nd;1pce+g3B07#U89{_=sR^SqQwm*Q(sZIeZArv6iiL&F0LBhxGT6*h~NYL5kW} zXkKapFwmp1Ri2wh1?d!vSznrkJSBIYS|a2!C%^PiLU8|H{q=y<~yHe7UPI6udp=xrbbA1=#%cg^IbGT3DLDPcQubZnmY; zmJC5+fn~pJjoLw6g&^h(aOdAF+vZ#{PXFhn0GB`JC=(pW8k;Vx#<$fZaJ3*7{6>Vc zLr78CLUH+j%m^9RzTC_r9m4$n?;{{7WQ4x|d<7T(mhyrEf`~i$_&);|DXVH>fiT?~ zcm8{suRT6Z#j}<+$hPv*Fj3y=httQaHmC24p|=3d#Ik zl?qml5>93adBH#HSyH3RpE_L;UTOT4ScB*ZFU~($$HnE^U*R6C{Pc8}=C7s%l0W`? z2Z*xl<>r6?Z{W`VYn2Cq{Lj!s^gof-#g(+ZdY-%O(VpjozOu2vTnEKzpAbNoC+&fUKo*K(~eLVNM zXIV#Z3hD0Qp)2^!Y0c67V9xHpmqJn$@6|JiflaFmJvF&^m;SBKvFA7BX733^Q(sg> zL}p3%pM&Az2Xw|3Bs{Nk$8<=4t>3%FoDRf>a8tqpX;rURuZ}*{|?_bTD`cnN1dzj&c%ant+~Qp9YJ%O zT-kwm`r3{IqhHDw$G;atT9k=-I0D;y!@=;SCfxWSV;vcRIaHS|KCiu$rTMi_?BmeY z4|QVs_nnpp)A%|JPm3n=9SKAyB{9uy*VoleMZCZwj$Up@ z=qjO2fLt$QwB5f?3ge9eb{TwyQzE4t2l`r(`=fjUbEwPmcw9X^I`j|g<}l&dy!NyU z>@DmDe@AekhOSet2S7$=2qceMf+DnFWwrA-Ok zzHuAzcO7$hIAlUeZj9!RiLA57ltpql=E3{wx+_L@)g@m$SAi@$*;F}fp}3=vyOz$s zBR{eu(@y)AF@tSPUD)RWBX(aamZ+~B$?|=3WkzyCBs%opCZ&*KZmX#t7=%#|6NrB)LhIo{v;YQ4Nx{q1^eURqOvdo~G)fSD-@=Ef$!V-C*Q? zBvE_l+{u`bXGtEC!DYH@3zVB4)FiYnfp!J`Uh}xjw3Q}5TJ=i>{QE_aV(5l#-L?J@ z(XDWGE-J_rrPI70zpltklIp-@{{fZ{CW1kLs7!=N)1)t9Nkl~C0&&{ruG{!Fm2t=O zwd7;&%fp~Rovanf1Ta8 zCl~qgk{XHc{xO+PoQ)UK-sK_*7Alvz9cPlX6rn}11xB%D6C!r)a;$2!`& zYUU{8w&oJu=BvVk_;QG*k~OzU=1Rjk(P&2&3+V+kUun6vyRbH0BYP(XVdQipac(uN zIKfjwgI12VGp5PYdB|NPln1eWo^weP-L>^kJbN)VUez%-m)>}R^XMp8AQ^li-$+ed zyy4stNH){~q4bA74WDXICr0vI{^e<%GSr6Ab(^1Vm`^XPh!pBKd5_pIbG^o~REj4e z@+t0F;lizQ^4<4NSFJ5}?%^i(rOH|N49s1BZB2KTFu3d}RMPAzw8lP8QnEmQ8rhlK zJ-g`DbAs}b+wKSMJ%;2S6VG3B@m{wJ`DK#qmDkUuWtjPZd)Z=d-XDEb3li zmkWhsyJ1ka&b!NYFKSoq*G~(>R9BEEm3CwV$frdtWCsl$+;kyaidJf^bTH2VX$JRB zSa&b8wq=({~A>;W=m;oa9CySguta~T-Ac4HQU+_RY7p)A9-(O#n%J*zu-_3Y=WB<3-1?YugNu4tQ+8i=N)yi(da z&-LLmol$@JbnTUYjpX0kG%J%jACJazxrj{571x?hn@ctr_r|~7d_y1dKxl>yul?&@ z)#v)dVzW5N_*d1AaKX_I`GJ4JK5!4;1=XIt{Mt}<-@>QG?3Sp}BGCl7;&|6->Lcs? z(uXhQ@S6WV2@+&%5v@PEY`HdMReF%e!M|noC|c$=rbB_`ew(GMqugYLvcuJXPj1MSrf5Rn zyI)@dV&A5q&FluY$*>K-3M@KeY6|JEmS|s-fXy3#r>D0$IXl-L9y5N;9I{UCAYoL_mgYf_QRcF9ieu* zy0B?LmtQaDXRwqfcIgFG1jx=WKvMR<2b`_XBQNH;WJi(d6;<|4Ak&y;b+r1|b}3q+ zV_S8*)kMCsk4RooeR>J}DR=LuCGlv#Vl~3-SM9u-qvaw>`c8~i1Sfgj+G-1VQo;cp zC?8sshvU@m6#w6~%RS6!`gHFsyEXK>1?@MhjP}#?Y@wJQ;Ehi+{apuTayzuHkqHoQ zP^ul*uF~!qEy&*lNmR`7SguA@Daam>BKNOGKw-KdA;=ujhd6quNTu1)Q_;bmDEXyA z9-$k%=9_$UtrfmYtC37s<-ScRu&|QE>!32RVU}@ zCZzu;$W#o4-56f(2%}$V#B7qx0Hr7)Apiv#x+z*tSH9i270j?uTU$GGw7Z1Se0b5h z!|r0+rh-6k`+zeKBV$TcambHpDt~R2%74LJVnrlAatKGRt~vrq#0KC9*;q$@*;yMl zsmo5*TQ}|%8L9GZ1brJK?c~1+=G#_C&7G!)saoZu-qihnoq6mj6-V-ONE4A|`x|pL z>Wr3OHSUK1U-$67X~nwXvVM0BU2X-eD6GA9Q&8@SQC?8bLsAl7)URcGE$mz4@&@mx zsvoL`&U?RA9c{yL%&m0m>bdjxsq#AL_0zlS<%D+r52u`2PjpfSM&PeGc~!fAjEEzi zO?+FnX=o6a$S3Y8IIIOicdT7`QEpm?#(`m3D$inXrEK|38BQB+WWsLrYG+*B%urWn-hz%X zi>tW%2wIM>B5;_(cmICfDJU`Y^ha;B)^U6x3Q0`W*2iO2I}+SR9HI6jXTM5q=LDQr zo_$$@Bi%RxWcf0cyXp_Vv@L=UzVI!SK2i*OHjJw$;XRb(W?X~Kn=*A=bCYjUGORcW z=hzq}X?ZuVSwo{HkDl5R{h!&}Ei8i*&C4K9zz2S4Q-796%tXUg+s^1b&S$+g6pR_l z*A7=ZMxYS-4GOphT;+L21_IH*1?rB-yz!A8nsrI@Yq`kB$H=3O!bq#7icjN{Y#~-r zldF!6T!iAE-oWh|mA^vIi5FacNA|>6Pmh^QpQKo96e(vFMdnBeb7swqWp_U!YjDC? zm0I)t9ans0S$3lHWYgGFxQd&9R{yz^b;)^6kt$|dWL)~sJN0(%;V&> z46EEQOTW*eI&b+bdHs@@!*3lxrEoc>9w7Gp+NlO5cYRnuIsM84G9}gbH7V9Uw+XKh zKJDH0=9qr7V}QeeLMU@*rKtH? z3XFmqa& zs*vgDyZ9$P`b8W2-`K5qMf8_{Ss;o)q*%!E<8P$VoWmQtRd-VJPQ7mWahxXb{CE3X zd*M{k4!ws^cesu~aZzz{XHTIZR7Msu4FM&c!)U_(w<0>M!&{S+-7z06V5(XkE-o>W zB8v$QeGJQJhQGEbOauG7`e$g*GQoO%e(^$QyYqnaX{KCpG_ny|BozyxHBy^=e*Ij1 zohs=i92|IOI`k=AQKWxw@G!C^pa9seV_~yED>%Bw+HP&MP}ke30tCYTwj)pYAY{v1 z#~A_jL-G{*Aw)jV_Ge*v|Ss@FRVRd2iRnkI%H)(b;S(@ z5#Ejv8(7x-AG|7O)=gs~z7PYbsM)N~;%dX+ExN9a{)vg1@JBBhp#FpHUOa^tCrXaCq5r6u3qk$M4-1RO=k(Tc6loF)78M;dv zhJo)H&+j|u{m1K4xtKlA-usSqueI)Ca1ZHqNY*wSg#WiDDV7Ge_TKFzG4k#Mk?QK| ztE1Z5TG#P~|GIGqBMLY-wmmNNmaDb937Msp_YSv~AYqG(i)U`>|C`exj2MN*#E_{V zwED@GnHG(*UGzNEnk9_{gNikM1Ed=;FOU2VL%g4{9kKu`qK7Cvl~zT3T`;I;`VD=X zKN&6!@VGW)gP>Z_KBwta?_7On_e(Lj5ZtYp(PcozugyICw_5U3|G})X|L%8+M!}_H z%CUr_rLC>)jCBa4PLXt$9a6*ZWoe7FkDXy#qJ;KeY#O#8UF)7`ylyGBUV5%_Wy?+` zV@PKB;c;U8f(tn8wg7z`e~iq(uvOjc$iL+)M5?ml=x%8o`_H!me;V46u5??NgA0jk&sPPFM{Z10iQ4~GtkWAW z0vA^*@+UeB8udkJ3jDDC_c1}8p5<;_wqU?yfpmXT5&Qn{*M~@PX=d<);Z=GumV+}5 zvf;lU3DF6J)Jb!87W4O4hi)IwSh+YYX#MxUjL1lKG-t(&1FUy+Y^eB>-00l^+{;|& z{_jRoNQ0y34A9q6ooyM~487y|#SH-Uue;oucA1`FdE&E^j{mM>ya<7xCOT}Yb+8vA zfhR>Xs&Hokem*x;tbKMv&+g~EP-F{lG8-{=ozyaT(f;3srjr4ugzPVWvRiB|sdSU` z=eb(K)t^FipJCg9N(N_h7G){9)h3UkWMAap%a^Jw`@j3}`tN->V_#Ysn!Wj2_zx6Y zd+H($(Ph0itBq-8k$*cOSM{iSndg6seQgEvb(>s#6yL&OVz& zZ>aKiUb>+If^#kbBuzn4MjJ3BW9$L7}|0;jHJXGsNtQ@z-uWdnQZXw?{J%ZUB zTTWhj3ITR@yL)vhQjz*dwK}e#C_p1s)=S!TaO^Cx{J4Y$KZNdL@cjRqxXk$PuYlkx zZeO=nSNU<@HVu$#Z#Y~@sC5>9K}?3WstKpZD^hJS{VQ)9Lho_8n5LXDzZn1b{turP zA=kC~7rMvY6};6vHVNNutGy_kC>Mr2qaBzuC@-R_+2w zNika0UF}BvNHLh7A(1Y!LneEfmuxglD$mn^rfY~+Vw$I>pl#}4UC=yjRtUl4` zJwzpR1EQ(5kAgaxNj!Ql;-m*xunjGjsY{V`i?M|gRP2(^z~CWwZo0|+B+u)=yz1xA zcC+7lYik|X)bLGPjssPF5OLtQe_T-8!j0mZ)RCwoM0&_3k-6!Rb&|}ilL7M6yKav1 zZ({ZP@Fe!kH>K4_6Q+^--?6g-B=^zpVianOwz!W=np3-frqrm+&;U2^zh;q-^7nPC zx_Gi8iF>!(6UwJ#Z5Bv0wf^`>c7qzI8ZuO7|DMv5Mh`F#dSTS)<0V=g@$3iE3igsQ z&ZaSyS+z$F-jjcSPJ2dq@($1XhsrGz0IIECB3LfQ6OH#4N6{(454D*+`9=W!`_tnE zw7Yi&XO-MQ#J_p@UJEg~evauNOSJ`%{=PfnSt-P;MDcpBLxABg;FC^N^8pU6bFL~e zn3bm-e1o$LLe(ZpHPihj*Vch!@QQ3O>vknKWP1_}UP#$>V1=I!-V>#-4{0+6CRXV6{_1h(vAbSo~d zuJx~SI@GRT(azds1B$+cgTB)U+O2GJQ2TYVEF^6C9BeuL^UY*>+MoM+PVhrNg)d|P z(C+p?Ou9WZWr@kZ7F10b`^k5$<1r{~dfbTw@ykIx9-;ebV=eF#AS>*XCuRUSrVj5E zaB=o;fvF0)1Voc+>-YNBnFWg8K~RPH7>jQsYwD%2;D=YaY5gOiVT6c5i&VZ4WKz1| z`ct{PO$&1vuq7tyO6Wy;;S?K1iLL6PD)?KY6;G0&m8@`T0?W!(&o4>9OAwn#hQSy2c7`HI=hECWRm^7|@dHI#U32|BJr)yQEuY6U?~KTL@5T zi@UnIvRbFDI&&eVYi-*mZSP4+=X4jzLFjknVzaM9wenfjUE{jM<+vOMKO4ZlG0F}YK$}tWs*z{D9q&8Ns)vGF+@4Z$rY?ac3GjJ@|I$Ui63w?F6y4W=%KXxR ztzjMn;6oHW?@|Klv0OUcI$bm7(@qis*xUpWmBD5E{gO(@FrFBVB#Y`oL`?9z9-l?!m#AcriQ}Cmnq28HTv}uD)fB4IC=adRuxdcq#`G!?mJWs>5@_ z^s}Z}nw^!>G1Q5ub`v<+pjn^V23vW5-BQCPn(fq!GX2SpglRm@g(0;DH-j?osL#sBZegccI5fR+=lUt3DTv(E5@R zZr|@h_A7oDL&y1GzIJ`*yTLbxvwN3Qfd12-x417sohb7Yr0yq(X)BbCS9#9bi?snI z*?6bGzv>X||3SUTm4xR*M@avm1N%6ugkGmhFt}EdJn471a|Tm}TQu_+9?HOg_bGt( zlH&uPMC4LK%a21sMtUqXMGan8Cf+tdH93&)iLaxyVW!}yM>+#05E`8~N=YtdI`zj2 zcW}g5pij%m=_B)Vu+mi9bv-Vjp>j}U3dn8dTE5wXrh&sVlB+ZPBo9azq}1B3!|sQ4 zt!b|lK?qPRp;ky>{pt`w1)dYw#5?ka^m?fbP|SQ1LUm+!A8$KNE_m#Q-!>REFUN`= zwI$x7WzAK!YRp$$dh6NlO_yixjUXCH-qCHxp}m<9W-|N4SDwd-sF3f`x0Blt zuifeMVcCo8Kx6bVEF-^%pw{pUE<4hIJqG@ccEBqq{?JU+q?_6|^)a(|jVO3kv0Ejm zfy{1R2-u)K0Du;2W4TG=0%8@M?-k(H>)HKuw*g)>?`7En zA#M~OUn~xzdjMjj15eAPahkyJmDiPAaWS$cS9-10wml6^vrX?;*gPPl?b*uKu4DV# z_7`}ct>{#3-Sf?ob9JpCT)h(l=0WbmXOA+9-CPwB(o3S z+i*#8x7+6t-k-GtF^x*{2Cu$0GnegPRpCpxeB6bpp2eQv*~FRT-Zk}`BVE|NIw-ZMn& z+E!zjHk0aU6LeSL?6J?6itix0S7zch=(L$q3mfu6ym5dL&!mNI(ie|^hw#qpKrGVk z72h&|?_wL-ShT^JW+kU0Aa37)A{{Krnn3sXLg4CHUj;Smv!1pmI|5iWT)vom6!0TA z^?`x-7ZO$u4Q@vS=GMfj3~I)Mx^M`E)L7+`I*6gS z^IGp;&Z9^F1`&^Uo^x#0D1^oAe?0@%kZ*PvXiTS#n6{$f zwCp0*88#%@H2ky%V`2?Vol8qg9Lw#uIKGxMhZ%6keN4X)(7LJ9H-e?B*W_PVq}n~2 zuX&@+c|N(V){sZF6s%0?Q$X)-Bj=}DC7`XBU<@e=UD4W1XyFA6e)~JMgi0VJm|*|9 z3Pl_}B(4cCTXoK+r+?ukK|V?P9BH9S@r^<2>?m(i#?xLULBv4B|vo`c`6q!!lqeU zxVsC})O?WVarqLq`4iAwSnMH1Yoa&dPU~h+ftsG ze;xWhK0Cu{aQiJuVBgRn#j}Uu+4a1|$PXPa`Ro{g`fY>^pc-u7iCbZ(lGn^M$^{wllO;k3LFVNrEFGL_ zpq^PJoEC7v0T9zint^mfjpEER--SVd!NcbLg_I+P5Fx=&d&czZD8W+IG_qfJg)sF1 z+{}hG36CTfAoM}1NGK3L>mRy=R$Ph25PPs0^&G}2VmLq+&!VqE}8~=-cur^Bi_(LzxNXboAYbEDtZ!WFI|okfbgW1eq&Jl$C_O1$^MVZ8RhlD zK1AOJJ4w6S1K#Y1YY~K(h&x8X4zr^%NnwVVHLWmNe#5|ydt_~Mdt+NSQK$jKQU@2j zd=KNNJd8~}HqSdAg!rqQmuO+#?0#wwtzIT60w(~Cli(fb&hA}<3~cl0e)aSV%85Ui z6AHzayR+JDNrJX6z|A|!6Kun}iN<4h6?EL7UNjA?C6B!=Wt1eN->tG+PC4i^kXV3% zR}umlKRF4P(48|4Hy`^@AIFh!HN?GKiA}%{dGfu$kDrc|-LG}E<)WEGcnkDpR*u;) z#@|gV?-f_G6;^i^+y?Y@E(E=b_2E?9w#8X<^MbAJ{&QepJWYr$1-km#sA{C$!pWY| z2b0+5qN1V;AF)Wj8Wk~+WPFlL zAk}dp5(9->FN{z#CPly>lnA_EJJG_{<5{YYG~6cvA#(vS^sNr)xMD!1eU2IFOtt;4 zUKJO?aU&gUkU={H^OnC;uOUxxb9F)10KBcUxQNIzT=o<};6#MoV!g&m=y2HmO7C@qs(l_9*=`4FpFPo# zDqNbp*E>0azZ28~Q2y)PAj8@zjGx)!<1f3^+FX(l0nCf+Z+nCr=WTNzOw3!e!Ki$> z75`KV4Wg`M9TejT_%CsyyG19OhXASzW4{OCkWCUfqnC7AZ?4HH-QSHJtMzs&*zvb> z(GtlaC4y+Yu?~EL2DUx6><&tJw!mhmZaeM_NEpC&!q=0R%{v8sH}A>D!E}+=D*I@1 zP;0Zd)aT6V?E+OoZ$iaqz>1ih(y@hOskI@FXy-+m=-$Z}h8r}$hFO_@6aS1a>_dB@fbL|1pM*i!td z<&oNS`?$rj6~2Usm3sn>t9+Uw0jO>5ZON}T0Clt2Y;C&Hf9jPxt)hT$9~$Pwf}@!=z5KC)AqWX8L92&vAk zz+Yt!_=3l^jsVnT9qI8oj`c)xi4LJ z#J-E~We45O*>`aiFw1zbC{(Fc3{7G`uA;5?%e__t-02^Cj!loc+RVQy2^vX zgE3H<*K_H3AOxSAh(*2)k=}bI9d~Wu`AyHCp_Ib5)63|KIM--wYy?xCW%hw)3(1;h z@%;;LXZXn=%-4#oLn_S^D47o*Cx&Pc9U{~O*udBm_hMW{>GCcFubFFB`6MXw9DgC0WMzW{Ji!?nNV{T|Gd0FtZ|~0jk5S+X?$^G79f6o#t)v0N5fDMe zz3N6(bm4>;ZD7KDi?XmWU<9onr3|TQ1p?xl(vm>7GwJd3V)HpoI)VJ+QW0YhAO#AV zV@5*vlgF`rf3+qaz5`u0iM#^7N-*y@3yjOnM&hSI$;%HUWtF-^9QpyJCJ^JU>7N1n4zB;@`D1nA@?bczjL=4ZCA7!E;w z0vBelAa!nmZ!6ip-k^z{8Tjt}X=wG-2kcW@MOc@Bspa3+_Nsix<$J#P6C^t_7t*wd z3NIjN@WK=W_1bNZU)i#SY14o$*jVDVnSukCr?3sXZkc6@rBTa+)V)z_`-2e#BGDzD z-tr-s$6dqzgc{6m1{!)Ih5WH{0{XIM*jU=_n#A=;B>os9$Q*v^hR?`!aPsYrOxW|& z^G}V2Bc4u56jeK1?`ZIxLPH3G_f_*IKfkuvbqr5Upt99nD)i$BIsu`EEx6@7)o7FI zq*Bw4ly6eonqThqX9Bm;Rm2L)tGOEX48$3t)|3>cX>cGTK@6EfIb5upb=RMH*fw2l zP~CWDlQA^NFf4->`SOsbZs~ymUK3b4`}8n+xu%HM-m<{g8E%(S1(eXC^T64hf5|!7 z*LH|`RV{rN`(@M4V{pz7D(mxP8oIl`a^C9$Mmn(Pp(3|j7IQy-(n`d( zhqqgvbu$IB%CIdP;KV4{aB>UNZCyMmz`g{@jkD>N}spZ+1cFp4k3pD-+(? z#0YRK+>oJ+gSyO&b>CM5`@ZaD(lJ@bj8zf=lXI-C*|Ti^&km@u&c-pbA|-JO)({GP zkJieoAE~KaVD-q!Q0p*8JN1#O!5<_gk0#r?Wlx_9q5kY@HF2SVbKxq2mAr9uNSH$n zlSTQcz~NsRJ?;+hyEuSu#!{Kn$t6yA5I_&1tV%-5<37S~&Cg2JPVif<1=mdeSjSax zDp?Y@f>d=dW10qb%=X&@jj6IjZ`5}7e1D=N-1;HPn749{%gX08$9&bup_Kx)`;qdf zZEBs%dm)lHMqqPCX#?=wXn=mJDlgLflh^8yy)*ywCe=e73FlsjY*x!9 zdE?$Q6~At-8uWDTGbMr-51YUe@`(x9{l)>!q^WpOv6nF`N+RW&*DzlwQX4>eH0cmXvi{j%0KV zcwuS5ExhNM#M`szYHFnvF()b@vOYL*3~JY2QTye(4Tq%%;wvEAhC{#bP2klff@Y#E zKy40^>U+DrhVA0Cq^wqmT$A!@?uesV2qZ2YlKojr@>7mx!P%cF;-0B#ZSDxqqw3eR z?rZ)`ukg97l5P1AjOnl^M#N$&-|Plh)kI!>ntCRdFFqXN1d%ei#V=&eIDU@rW|2IK zl6p=1QT?W6{-^n}m^L6Rf0s3%D2XR>ZuxdJ%+`i?n53i!dVEe9hm4nxB zAG>I5c^_coI296WB9*B@LL+81E7n+hoex@IxkV2_{*fn}D>b6aX&AW`nknmm_cUJG z9L-NXvwth9G{FP0lBGTx*Q7o|g-E^mbK(T$cTV#wgR5>2nhQ^$>%h47ycgX z_tiy+t`ER&)>DiU^DFGel%rd1*leqP_0jtTZ_BnF1C3)JS{46HMT<9Zp!2^>%cIoH zQ55fqRN957c^;r0bW^oLopg|qjv!VY<$jZL{+7)shM+KwCIN3kDQuPQZVO*%iH|#J zqC1rEfC^?Y2}(m~)y&TcQxJYF3oap(h&fZiew^e=h(-Y}&g<{$RdA zpV%Mg!YTrfzfpqovZJ?!iZFBD%f@<&`&+irbIqP8i4gf@D7a+yRg)Y|Mu#QX|ec`}&u{y!IhE9pBR*n95e|AO7Ph_byFj%_z2dwqU>UZ=~w zU)pHD%5pJnBFUp$Q#a|eUz|23fjW6HrF%kC3vLs^&SJuWyhhr9OMzAQw)XeHK%Ncm=;gx=5qymapSzHcX2EY}U*!h5$9yj`)QoJ68LG3ze*k+2ORl{R%~^viGWsVEmrhsr7qoT#U){&gaIvOI>jf&s|kd z1O)_TF+rsq9Jn8or*@2(DC8(fPW#rVh?;S6S!9$718sst;HX5{xt3M$$d8(K(~j8! zUw);L#nkiKeD5p|SEkTV(c%Zw{8tr}K95 zpCE)R;+VvA5t_M1)<<!ae_-LHWImXceKRpB`?kjw9uEvqhoOPIPK!T?#6w|bjJ+1ys;QX1hl4W_vZX?HiK zz&~%iU0XYUt>bC6`tWr+kwiirPSVQy~l7{jm z#X2=$(0SjAxax5JjYJ{_0I1ARcNHxStbL!RU2qZDsT*fIY(<4Xh> z6_{dvE6wKvlZy{jF6K)OF8i}t)se50&C0E{DnGn-dg`rXB)+6O@%Xxq%t{Cj z0CqpRip`5TzMLzlX5^u)I=w3>_MZEV?vX4aax3WxMY7gVD{dZa79?b%r;#R9ep4o% zW-GKvb&%%2fSDMk7!@@t$mFN(t7 zHwqLwH~q0s=2z*PwtJ!(#S@FRO-WPy`rRX18qG!mZwqGcNcT}UrTdd&CH>?=X^%C6 zGQ>uGmR$#9j29Tw<}Vb)1@u&(NEt%i|Zqj=&BCe0`IfT z&!Z(b>)M6Eb4i&vpA{00>6%2|-BwKIBSnT)YG+dfT?RIxE8zi2HYM0VUx0N9!c<|cF6Uu>!; z&NqN~jpWJ?<1sC@dwRvmY9zT%MPl0BpGe=Ty$$C2a9H3oNRh<+2hX-eC>ATVNhvI$ z^(K3cF6N(;6ZoMzZA-J|Y&ObU#dbIH?65YC4)~jKNcuy30FvBrPE=dz{prTVqs@m! z7`MxDbMEtGch_mQJ3a>8L84(KGJ(G7C(3gM@UuA!DDxh>XDc(k%DLh$vPutx2<;gN z%34k*1``xcG(+s1nitch4X!PwIM$L5%25v$SiP0jP6kR2$Fp@k_pKa3fPx9f%HKrL zPmbd*VAjV!1Sco+h$5XD$u9;eVf@AONJGX`(x^9f;#YcH?!H%4xa+#jdV@w!rG)`3 zJb(yeCx~1OLrOzkK>M-Q0!Cf4zji))KwJqQNjD4#nCt~Zen0m>hB}Su>SSQh-9%TH z{Av?9?pf^*7t}Wqg{?-0*hvpQXt$;n>RJ8S^%^^qmA_%hOtKtHhx})Zyyr}o4ZLb_A^Q37(h?8A z3%4lH(UToWROmK_qg-2~++>iWT_nC_3eDW7|SwM}_c-G@{JcjaX`c|2x@&vUi+ z_tMQ+*F0o9`1TF~>)e3Pq+V}yDtuU4#1|1l{gL@>BWZKCnc0aJ@aS_A zh5i`7L|sjd@}y{>?s?;O_e=72WJg?J!AWJ`gkK74313=Uo;QsLwd)yO^N>~Tg5t(< z$YEt_8--X|>a!4F!c3<_O!1pEx$kU8x}&em zFJBu#f1OY3*y;^eC=d4+lCs`>$lKi>V@*_16zTj}NB_f1YzI`PxA z4@|EJ_oH0}qdaE<)gs|jdNISL=1@m4-kYxAk2MPXCP{Go3j_o+Sq>SN9kFsP(P;@> zusiph;hku`*(18Si&rWEE<0Hd#(Mj@r+x;}DDHJfMNR(Fvd!!4>)Ht#qZE=wx?m^$ zVoab?)rr=9?*ZW(F=G^F&kBGGIQS3W;&8NfJUIWnCePgQiw)$#z zs%7#R7B^xYzT{^y0OQzIBrts1rDqgG)?YJs@UFFWHNt&kDKN6^8VtEuu3+sFq}R!n zLoLHaW$iujLIU_0Y)JFccFOH~G)xD;Bg%{i|CszKj{wTnsdCs}-Ri*xz@z^#9f2h! z?|Pv?sxc9~8TcMeM%uP!MtvJS;2y=5k$+b1ua&N52|98K0ATytHV`S>er*lA!Ve{I z6I`XtyX%SWn+qQR7)^=HKS`s5`YYt%(7+-t<%sRcgS0TzlOA63haKbzwB$YSdvv_L z89Adp;Af8g(a(IQY*eF4PXS!#q#+4WfYeraxBtoB|9I3grOVex?b!eML+2-nlMXt4 zt4S@>l$v=uqL64~C+Zk&;y||85u2^`SBYBeh6NSW>vs~j#^qB~L%i2PqAWJ_{B9Qf z73fM@tB-Sg25SVH)69y3oe6gtei%K!QvaI`UHpkUvTPvK#OGGSbU>ZdcLPXhwdgCr zj#wk9L~aib1KKlza(YI z+QSBH?6M$C1>VDE!P_)_TZkT&-2)3nvIEY)vp@a5?QbnbiaDf7V$c$8Z2?z@3N29L z?77nWgFjL(+^-)myWgyDW17leF$82^JuopnyI;2vDMm!vcSO4*SJ0$%5aAl1S z5lLNj4S|5d%LMK}Ml5|9RVlQJ3KKp_Dk1M2MCU$Zt9nR`?2z-UUHJbrDSIH0uVL#V zt0gSvEN$?*^;0Kt`#LUbR=XbJ@Xw?vA1Sc<5k45X9M|41;@HsRcd@AcN%DN&t+}tJ zR`&$^J_=jYp$nrdB872MeZt!*NB1{DZvEIS_Q}XjveMMR($^P22$T)B3I|^y0*S*z zXX|k0+>a+Ebt?{qQ~vnK&}QHhHCaeefq#Gkm7S8-L#lhybVQZR7QI92kqS=erKdAm z-n&uh^vr;|pwJr-vbOZ5GUjDAyABD&%7%djf_^-zJO+jl?mCr7jY0>~C?o1`;kvqx z3Ahe)R%}3U)D}C4i2q|iw|yua(y|_Z^2 z6m`tByk|1Zzn^N zeYByD7ILp{zT!}ddxR<7X(=rl5V!U0i@yJj3UjZXQ12t`6N)!ii6)@{<`E~U@q8WP z3yzVF?>fC11~lwGsm2Bpx6uTgCiCaZ1f{kf?Vus`D@$IsLVYk2*W+~-`%}di*z2S& z+p|*^DTVN{?|UrX0$cp=w!WS?jSQFywSAuQ!#JAAOh?kd{yh#={wl8zgU-tkLu@h4 zu08+5&iLo^+o&p7e(t@*0YSPHZ50+!H&OM!;3$4VN|*9a!O23{$E51;!XY~Ny>zd- zIZE{O0FIzAssLYXEqzkDS1h6-QUA~`-<3UJw@hXL$XEqNU)VEJ!&Mli#2G9n#w30Q z<~3p1309N*X2oirP@mIrPtgCxU2FA-#69>-%4da$F}~7aBUzZQ*q>Q2#6~t>Ct1C% zy1EZ9+&<(;H|m585drJnr`Lb-Ogq1k58<;o8h<>zgvG#hUytCjSBZ8&H{e=G-sGog zQB0JiokX&@v3Szoi!YXcZoq3OFmES|C^HiW1m=G0qwU<=3uoX1PjBi&|HkoP&F=4K zz^hJsw3>1yxs}Pcb_URzT2hCHFt7UIB8=X}fEB)N+sypSaiPn5nBwM_WJ@3Lz4xh+ zaNN{4j}$(iCK(93uTmAM=4bIt1oi$syg&WRqY+3bU@><|JSsY2DNQ>((x+-TL|x)) zjn8UpO-)^^iRIYyEcz5eO zzQVQkcHCr^b&I3fXjCsK*JYNv41igAAcZmValwBBFI%t#+g3+jcoto(rE(QR z5rGW(oPE6ZXc%w5^H`emu?Vi5+-VGzZBw^=oPSvVaKht?uw5nb98JzkFR7o? z6}b=FwTb*{HslwwvYHUbj*g)zSkC=64aJ0wO_^*!mQu`UKS}KBu}%(-Ef#zV6S^47 zPuTD^`uR6jI)^#n9h0H-6!Ah?W1ON+pP29{5mQVXhg$FX?nRSx>n_Q%nWO~ZmfziC zfFk^A=tCf$K%TbT*H$6&WF<`4UX!n0R?V!8q{+g^%~Bmxo`JOkx#mT{hlHgrwjRJy z;`@UmAi@`}v*rZ06cLX{&^41xHX(BNUVt8>sy{t0=LC6iCd3t;*89}wjuwR&nGIc= z_VY_QHXnkF^i~rr!+g}f6XMSbh8{6Xja0VDrXVlTpX^l*eFqCvs@BA`6TdyFT?A{o zP07lY$7!6$?I(AT4;gOSlb*^h{mtHwyrc;fJzQkYe{QbFQyB$0Cnyc@D+#YC%D=Tw z3f89^#7zCnf}OUth>pxxIzP==Kex2jZTzAK|1#?1x`5^l-u~)ys6GdjfjHC(=d)r} z4Chd9bhqTQdB&y}!R0jpt%|czc)o<+iE_T z9SvhtS%Vkp2MMNSrjBUkE^xMg^8|xZY~&Ls+gB2z^ZI8LnP-~9=!c~Z7Qu0H;7hXU zDAwlQe*?Zk*Dyx?eUWpc1#OT``wi}{HK>}6LC4SEWn4PrI0PR^aUHCLSs(Lh<_?OT zH0dsed}{WUzI`BAdU{i)y9?&YO=Ci%$4pF8|ATAz#Wfc3U@ z?;#4l(6l_d%Ie{7W#l?p%zD>^S&bv)#Su{D+H8OdV?Y&EIAG*w0;iUh-Yjs%ndm>P z5Cf&>{3XxJA5rFw z5yaizPUCy?P(3lELK=COUKMeVjNLkjS_a!ITYd9ccen0yI<|bne#j|xDP5}0hI^S@ zy-s)%C#yhhv|!(=7~e-ZruM);#cLX*x7z~icOsLDoa01Qd7D6%XqqM*j-6t)+XDsW zA1njTTRW_u7lv)o_go{ya(+2TcNoiIx^zP>ra2glc0P4(2e9uo}IHg)% zO2_1jRZ*;VHy^Q7te$E;jgR|ua{Is{sdufbl=gh)Q?=>_!G_0Yj~7S!#=}$;L||!s z@3AQ;w`$kRN}3$LUXABUWP6t&$3hP1hZ7%d@$w>lY(f|h@satxM|r16SdNJkK4`!l znOJo$CDaL2;Ls+Z!hAqy*ZRCWrIa(4iI>zmlw34&xv->R64>j!5m0cmA_}m4P-Tew zF;Ks0TFb&vIq-%*$5Y($Z&FvTqWj4=(aWcpC=lgQb^7kpl0_2c0hV#;=(2wn_fVgW zIph5}bZo1h_EWR=4HXZHOxq<_N|d_ccrAiM!f+M}qR!gf3R6o$vAx}0&%fy#?u9GN z{`8CuG)*$^@KUk$@uP{3n2@aA-p{TTd;}b~zrtS~vhzPx0e4)El|IwZzPLTqYb-NT z!q8G$9QOn{@Of9NXZy#{Js(|}uZ@~Gi5?sueGUffUa!;l8We?d%Wx&*v3`(|B#AYR z%B7$tzkC$y?Nl?2&=v#Xp57MyvjdCqsP_a_$Nc7>x^usyTi+u)PQAj@W@92QBeq^$nmlgPsRu4fL-8zx+Cg^0e0NhO<2BS zS6SbMx}IGYI&vHmH*LA>;+gGbWN}xx zMHV^wdobe+Q!ljPCdF~}H|w_U`V^nyr3vJU&NS%~Tk*OLHD4MfDoBe5<3@63x-ao@ zGKR1lKb~G&`=Q1uYUh1#Xy)wwsb?6~#tdWfSN@)?*w2XK0wkXXw6CZ+O^=PAMluIf zULF7a*Dc(YYOEW=i`gEGey`@EoMza;m4vHZDhBT)|JPPb#(~2fJa|8wVNaqYDCl(L znU6I*9x+NDf#hx83bkoW*{jFB!&Uka)t)0CXdeVhIgGfb@?$>r+lr2<03kZw6C6G| zI}b8gEisnW-cx@|^imUQ45cOD`#k$9S!lq69I?UgLz?$_`Bczjs;6bAW^Vz~pe`MZ zuEs_wmkGzTq!K48_j&v6LkUj|rD1e`+-?nSSD=HT-si_zLCiyOYmcU!VuE*miu5_U z;YtMR((;2RXOE;V5-cB(z$?{IUU9vTk-9&c{W9Y|2d(JVZatgEW&~YzQT+mEm;EuQvNC zJkXFyzL?5(a!8v3aCe1i#X-M$SVL*eti?H43gpS-$l0zb+p5lGQSt!5PSP^e^5`f` zJn`-$Zv(iRM@*qPpK0Yt5$0pwTh*G*F4cVYy)*K55AiD1LnppT^GgpHODh$m23EysS z%aF4E7*6hJa=HEUs5wa*6T7iVg%^Uq8oT+8y#Gn!@8-Q4F4+G=jzC*)9L#O2S|6<> zk7JD>1qi#npWgK7G1z{H3s>WE_fUZJeKKT2*;Y}&<)gH&XY=^t1)?3ZnOyGrl02JP z`hDU$&8J#Nb~_hqPtbQ==B!NtOTqXAlzvHIx#UUWiPI9|paPMx?s;gs{@jgrOjh{J zL><_Jfi1_(8;ON#Ncob%0)2AeFZkIng!@FIvAWz$K7twmREFCor1-%z_V9bCHfaP` zVf>`RN`S0uqZ9lH#e8ea=OsktsN0>J|7j@~Ic?ipAwj&SSPxnATrC#x%~{YNr(x9! zN5yBeBw(T{;9hmQfBud4{30s2$m9ssyd*Vz-m$hO2Io-sR9<|K;BodRc{}j1|BdT( zv8d_@gpF#vHj1&m#dAVUqZ-P`%8OUQY==)xN9%L>OaIxb{#kVExV3aGpXa$#A*&}f z-Pixm1qc+hT=8nl!Nqztr0>D5@XoQkz8CqHc&W_@)@<0{{K49sZOvFG>9b6ryrGG0xxwVg<3Lo3iIX%N|JD^q?aq;fFC2Q z)B(uleENosv%*qq1urXXz^EegqBDq@LCns;>yKPx3qx2~ze0cm;h&Wb0?AWhd0IEa z3|1aG_cb4?-xRw{`rJ>d{wy{#$}@eqK2@lpj%~GDM)suT^4Q>@c(?Xw9 zGs>R=|G*F04ts;5n=??!>n+B)i-&E3p^8EM3^Tu!Wx!>*O{}g)Ocrt28-N4(~+8G2# zO?3LPpkv9*sW)kIrc_ZaLbO-@pt$>0!sKHaPWeplQ>d8+FQ2JmapFx}&&#y$u3Ey{zc&qTwD1Ju16Ds zJu5j#zX(VZx8WKD)c0ul{CrR}WUEhxjit@^V<^f>#uqs{)J}kfS<2|C-9bIM7V*7z zTtqmr^bv_23HAQc=rL6ezgXWW>eP1Ay3RlRFqq8IukT4?c+jvb0CGwR0?d9X&ahsM z{g5Hdi)-+~i62V$+|UuRi~Gg1Z#djSjbL^iWa=itcgVXqh1^3T_ALH>J2iO$_8IQX zNw1R6XpE1U(#HqLHPgmPPF9g+Yl4nl!-nAu<+fn)L{epUwRI#<$g;l()R^$;ipN^n{F?_Zohvp zP@>GHjr*0RpUhvm9y33*ejunT=;9k=2Jf$j!RQn3s9_(lVdrEY$NiSfLl z?r7q$iUGvkA>vRVZU}FcYAFz>_aQoDt;bQ@kyF`HO^}CY_sY>1+#=^Yz8oMz6q_-z zCOdY@aSinJLR2p4)g>2K{`1>oJ}!AF$m*S%hMpx_yDa{F%T)J``zI5nKFpf=}U zA9DWy<3a*d4j;zz$o9PfvCe)2XhcPfEP@ULs>1sgDYS_>m#eD zd=K+QLTlZxMQD~nLM-7{1vl;;)iDzW@+>_5(r$zS^~r4J)@RkP834*P*f9z{p+EdK zKYnljBU6gKq)M)0Ro1yQ1`W%>OmzF7laibHdGS?A#f*zeB6Rd@hV&W5ZV5VhIXl`z z6R%r~Cs&4UFMjQRymcIZ^UHK?OqnZX?EeDZcR4Fkz(c`sUlr{!md~>I=_CCWmJeIC+he6qOjEC#Us1eoI;c1G zFNXb{tS^h7^odvw8ee;bTMLS*+~5!WKc3DiEUtzL(ztsdXmEFTcL+fOA0C`Qg1fuJ z3=rH279hC0yGwBQ!QFKa|3167a5;14baz#~1)YFd@gpI^UJ|F;NAaIBe^7MF2AYRU zyoM$+#33(Gs^(;lF!+n|)Uax)P@DcDpUKx2BFTmC$$Duh81rN(=13dVG@Y3%q0N&u zRM!RhBTL1F`Jz83^8W8Ho?4`A_nP1X``|t84V-IehL5XQ@Oo8)KlXM(a+cj4hQzG~ zeKYDxLvDx31aeH@FDkjTUsTBrvVYz)vONC%q*@{ic#%*FuO_c{cn_Z;@Z}uxKJ|NP zRzFAF2os#70#%5~K2@w-G)dHz_6FCUP&cb6?X1g3y-gFC=7u)IDl0C^HE z!t_th)3}V4Czr+D5I|QCAV^VoLQljTV>^g|x;_)`{bE=6sUW8#-c)5n!dU7$wrmwMqT`kn=Bm{l)PmS( z8qX{+tKW_FMkFs>0hZtWKV}{wx!=fvgwFbZ@P`w<-+&zjJd{jV?}azt<|`coiO?_!fFm+NwRG$iRHzwb;`KDM`CBW|h?N8JNz<++o!8=6H8>5Z|ANT|fwSA|RY}LW5-F4u`qx6Dm2y z*!xHW>8K623{W|G;6^t`T9K#&-apihjatYg#wubDkUHnBnNh8rqfzC)VV{<~U*Ks&rFJ zD9Yi13J9u`#Pct81v>DJkTE^cqmQW1E&8Nb-9YyK2O$sy_lAnMeAQuKwX77e=X+@o z`#uQW8t}jiT=lW}PK_88$X3a`t(+4+!3$ete9qHO71Pey|2Sx0!|f~M*O$`i*C6)a zHoVLc$4qWy{|?)A9@O>M%LdOmM-S#}4{bWu4)4Gh5cki>)Awf|F0Pga8Dw@}(ec{s z@pwRY3_0_*IGXXyW83b|Mnrki*3X&Y(}dQo)zox?tXa|}0Zn^vJn!D0mfQdjHe6R| z_s?LWy4)KSZeCnt!_QK&fD2>~3!+xQ_bJ3fmbbJ2E(lZf{Aw21!M~SBt+0pt`kOWZ z2AP+;F~*Y8IK2+-`v`d9;7ORKkfwzEn(iH2dCThHzThsDr>KQ^!O2gx$O*7lt9?a?=oKQ#4j4LcF6Y$Tyq!J+R>VqBYepZ_`=LuLbv$n^{TV#bOv3aHaL|0pF{9DA1B^bn_yt9Tsy!M zeBYN|Vw$(S+({87T4HemV11pUCXgz??U6@;jhSL^e{ha`@;$U2`qbvsq3)1P1a4~~ zTtR$o9I%A&Oa?I`AG63n1NsJ=F*Y7?!r&3G+GD!L&ewzeN4%^r?62~z$$m8UH9hTe zD%SDa3>Zw>avRN%|Jab36^b`3qTfN^Y@{s~;)d1}4Gf@8yHqVJ~TdD$1Xp)t<-_xVu*8xZvq|X9A@5kUHIVhm* zRJ zI!bJdgdc=xX>5q;{LB|ElL4cfUR!$Z|GsFjd{X-Eznu+%t-zX8A~@)Eu7MXH{p;XP z)kqL^z(EF)!4E~USt?kvNK)eF;sOUamT`+hER z5*ly`TZKLt`tel?4~dOre%ih-q})*;fXwfiLTH?Z!)b^H;sJAV-V?(E>|4<~Ku3%d z1P!MZYu^$NeM0si0OV-j21s@RW&dg>M6Cel-#_C;CzDNV8{F=Z;~kbM3d=R8iIb#z z?jJkwp$tNA&o#Q5WVat~(G{jCSD^z;D>34@L(Y{;+>7bW#NdWJx{(VP(P_GYAz@b+ zsai5rJzn7IOByQB?)Xs`=VMkAxoZ<495QIzc+g+4Gksn=uMFC5r_&MGnsp83WRLB0 zas~B;8J+f9Wr2{cj?kP0j~ai#X(o>^2rx*rzH@S1TC z+0tj5S*|Ny2Cc~V9nhH!o_BTiG;^AXuD#!RLr1twK&9qt!lNqnDsdSW+&XG z{1s26xTlrDfuSz$(Et@Fo+s_yao9SFw=@rCA@Bu}iu8{}Nueh`#$UCcfluqa9>2O# zmdO9wpISDUg-QdZx)=AsHr=2>QRZf zsV&h2$_QyT&hAMN=>#e%^C*7feT(A9fxFvCFs%$5|LiiuI!Llg%QM`EI@PS7&srGM z{|3a2F#j89&lMsUF(}9gcn$SI$?eYcdrkdzQ(GNcCxZQuKFh!@`8w>gm?5AwlW_W( z<6afUJtYu^t}SEko7=Z5K)gu zgZB%jXs|U6Oki)Q0)!VU*=@~3FLVVpc%#^r72wa9jseLt)1mtJJ5EnIabG&A=cc4X z@Ei5%MRr!Dr5HWcZ-TD7j;GZ#Yr>RdF~Ez(t$}F^b%3l8g6MBQg9g9L+xOf% zj@yuZ8EgZ^2IoG{b;jZpl_PrD=r|GS{&+AjLOS3mMQQHYc~p zW5OlY>4O;%w{?;A`1sR?N;(J9ZiPJ}sV1;cNUJFGJnD7?S;OA%7YP_s7Jqzp1y`Hx zVWfT~_!^@wmY?*~CfwiM^KJAoLz^#FjKmMyfjx#{ATQ?YS*V9Nj>N)~_rYhw;WC$F z8<{*y{Puq$bblI~j>?xuQ#e`{@5VcCKk$B?1r9$(9YJbbhY<;E+{^{7;V)dbX4FML zG{7Qpl2c`-tW2mM|7mcoU{VM_nsijy@#Vt?DBNgjp9vTu2#nnG90I4yvWLs$j+KKy z>fBI-pHzv4CeMKkeDU791^xjzlZft*5m$66EfNkI%H92?hBVA z61{zuX*^AM!ezfH2Q=-`yfiLITIiFrBrR=MXHC6)e;x_SJ0WNyNw{J8!e;rX&kBjWla z<@){XycZ#BX^NFJ9>44^Nkm!~SIHUJ$y=OkMY=CA@}~M%RRC57q#zYP;yHxQR35S2 zNUI)UI;}dk!ru=`RWfABhXbP`j(KMLKI-fZGZiLdanWx_GX2s1ia(Hpah=7{t(OMb z6ukcEI^hsp#^w}T6-~PeXRN;^nsU}OoyK@(aW&SU@buYE!NA=1tEwmn(K11eK31GL z(anU7obCzDoeIO&*KAFH8(kEIH<%QC^QVN8d=sa9G~U0W4WmYnEuR9=i&pa=d z$OOjCRP&ziY0Zy1g%VOYt#SE$+X~pNES`s+nqBIq;=vFmq(FX!`GbHN@;tgsD#YVw zsG#`L>dbyY#bb@Y;~w`I4{m+#a6ilig?ef!1IDq%ui&~bH~j`YkNt0G`w`Yc}8^~;IY5++y*L1qy11H<34CX-7_nly1b4GS}rTOElm$AM)@I~Ut& zZB}cdHfK#>?Vy0Z>%o7AO;VaGnVolkG)CGS3BF`Q=0LvcUGD+r<}OcYs@8Vw;GN>a z*G{4g;68*bRh^t@TM09Xkzui2xyotBf-DVlG%;PUz<%?@Ypv;@6v@d5r=@4Zqt^js zkK1*=J7{s}+HMr8G7I5sy<)oWq^b06!dD5O{Exeq8;*n~D*RXuH=KGtu zbPNS@6nK6*l7Bzqdbb4g?g$$bF{1kXLcnc>oO`VafNOy-zm2Tar^R-1<0-$zeiGti zu6?)IFC1$@eZFNj>%;Zsc!^K(RP<3(Z68ItJ_qI0*0-1Uj})vb8Z>+6ut^Fi^~8v8 zZM{And1_knjXRWM;dfe_kehbR-XIjF7(7b7aBJA5Zp2 z)H{p~?zOw+Q==227#Opl%d9-hQ6)_mAw@zp_~JgNNq7hkQsrQ}sS~TOcRwOXrHBh^ zD*8?BH-Tqe#PzAL`@co-beoqO62$OdP7ghO4UGf3n(>>P{Qg;CvF*3z=h#~wP2cW` zOc&w2s1P|L1kF^gYqzF&4VmmM5OCXWWCcHXelru2n``!@-2hl(nL#MXRt2@NiRPEf2!+PVREJ96qx)1LHJ?EG?mDtB6>YFy)HAn z?fP4D*NM+C!|91J7U^v!MO+`i*Dx2u{BL#AUSdw6a}4YZwcs+}HacDKc@!v^G4*{p zGE4_roUK0DC8j(VSOIL>f&ftYhBsgZ=5vKBcWG=wf0VJ}M zQ=-^J=hy6Wun^cn+Ed_O4^$*z>?nAlA~0Vp8IjHvLRve6uyN8*j{%RQG4Hx}Z39tg zHOUFAdC~_EA|uKM;M}U&c|dW3Ld2B57Tky@82+1$pPNsydLT8v0g7VWD|QA#S3_P8Yx?=6(7!?@iZ!a8bY3R@8j<=v8y^wM zuo=c8{4w+Es*d_0dUP+TQ^D+##f*8!ygISFwBRv_Gb8u^yZ~nd1D3?|k z?v&)}ufAkjSmizl%*9!W4GZm{@qgcJM)jZNskV^5HnD1zt8+nk4dw%Ia572T$pbQl z7vnvj5Mm7J?9AHC9+W`mjHj9#Yf}vw)^Q00CuglM$Bu3Vu+m?%kP9`xL|M%GNWpBfPm&^yws^dvnH z+L&e6@lroAGWK#KOKih^oc&}J5N)!7o1)Am?Mm+n`&(JABm731){gXn$tCFL;6mHvw|-6pM&~M3{s|rnjz%DlmkRK1CY9l^Ua?GI)>Ne>f)zu% z35?SUl5xY01)xyPC9xEH^SKWZ0&vdM){MizR#x(sYhsdq{}ZFG>B@qt*r{+~ zmS9huHbWpOV7|4+BSC4Jm=;@Rx5k{`50gs>D4J+;GGFUS*s~N+g2bJiVy?6wd+9VQ zo$z^UQr^zLwQla|hnyL6L<%I#*`g_o;7eL7$UsFLR+(bnJV<2Vxpz#AMV_g}sO4!^ z8+3+|`BuL7*H8U&kaJUGyAgbrY#Ark+n{h;k`}2tTzmaAgtO6l%^) zsR`-(p(Z9i6?ZDk!ETwN}e{XFt4*C`hpYRXA!otOII1gZjQpxnm@w68(>9y&dk z6B|VS@F6~VHM!KTU13);Yr7K)HYN*l}=O z8xYyLa_jIi8=$mgRLthu!I0*WQUpek@@_ZxQ1;$1XpFfifU2^1SR&ZP)N6(9!m4vQ zZ#K80yAvV|fo(vzO#uww>6^clq+fBI*?Y5e=6{_A;B-onRF!mKZ}LJXpViN^hGT7w z^KX+ly*^mz!awT*1$<2pk_l}1AMknq^8>J~$7h46qxM`kahyC(EUX6h`?%QrFPbqt$85%U?nqtZmzCHRWwSLjQeX4cYkq-4fzzQ4uu3=B>GLKMSeq`M9nb`wX=^Dk zR=4jiMVUtDQ-Y;H?ADfb#+qwfn>=QIoF-JvkfH@`YRx#e5(>frL_9rrO-?%UEIjr0 z9f~uZmX#XVQ~}s)H(jlxBC_ z_H4aTYlZI?)EEX#DT}9zChYlK^G>IqCk@z5`h4RZ$#*^s2P9w$V2aCzQm}|T2ga=q zsZ9U=C!huzy?EkXrY>k3iIYay z-1r_dleHbl7ZQ&FqQKRoHIZp8>~sK1Gxq*kfpXUn)M+>8(iAM_^WaD;K^S>S4qX?= z=!a2Dmr24+(M|rFv$xl?Z?9%aU(N+gMSIf#==$5D^?TBEiLW~}V9n>wr%d^{^=iC! zpgtWcNsu_%wzq5mq+vmM*G<;Pk^2$HkBR49)vfb=PQL%_2M2=yoJ z4#yjGH{SFB6c-VXr*~L9aj=OG;41M!+97z3jud9hH#abf?ZlbwmPi+rl9aMvHH-g} z=1c!IC+3aXj|02Q@#BpwzmB$Au5#shaO^rbmelP!I{xGLYyH1&CSy#=n`*mPfg3p< zzecERIEgBPGe#UId2M<+YT znSLmYRa!|rbe|{nf&6j9TXF}hwAiEY@vWm{O&rW?{Hh)gqSjlZ5kHHh(B)s*2hwCYzfYXf&1;;n7r09VnsTfuB3t8}3?@v2nF{=zv zzG~A*h_n5H#UMBvvW&eWzr+5R;ey_AlLm~2y#Kl1+*b-vUz%cy>TYqx&>e*wDW~%e z86-O~FndUO=t$ze1W_cxDrf+(s@&K;Xs0`;(mymjAGS@1gx1w>wIf=2kv>#q@-h3;jE~AIH6oQd)}=B=9rrs(WAIY8P+p zozDPx@W|yM25-k!60xTF4PRT9iq&vAeYj8GkRtrfyX5k1Ncum$n)ZO40L=`h$C`LZ$(Yi*aWdZackJy;7OtnJR$F;cYAYK&1pCR z(CMY^h3uK6CIei>Io5KK93Swf>}dko`M%~G+t_(1+2}lhGVg{i3V2ie7wD=epB-~kgudQMiZyuWO#Y#nA!U^8~_6|MH zOX&FF-Q(KB5l{Qg#GERbtwV0KFWNs;G>Y>>UOTzZ7;t<;!Q7~PW6E!;kb27p<>I&)(C*j^F!7JqgRSh$V9?^Z*;xIqp%4y?_bV&U06oRkJ zp8U-PWfO_GJ!M6I5V?LZIkG z)Qtl-d#U-LZ7ErnD)Had-4Sv58H+5Be%6&SWgHES&mp|sft~7D@%ZHd&o+gbu zQ!n;$wg@mLFd!A8JcLlh`!>djU^V2 z=zjP(-3oTZU|P+GS22QV(nj79bWY0pJRI6*gV>lF22a}NO1N}Xlowsml>Je9&>%h( zO$viumqc(o2U_AV zQOltx>;^gVV@8Yvq1V=Xg6W_c50|Pn+X!rU?V&+aeK)w0sL?GDBA7@oD-9WR+fuSV zmGS)L*hAO$+ng*+BWhF`W9rII)F;o|^Ue&}By`K_e9E96&n{aM+x0fjfkDJti;^Ty9a) z-6|sPN@E~kEOd(Csxx0|gB-i*s;xb=aVwd0CXNofkUAVlw#S~w_qoy^S*p%gDlzyGGZLVy&?bH+ZoN*;e%M~Lo8bl=5Qv#*7-|4vK+&NtWOv)$XVQPr%vYc|13HnKXw1viTIiL$HfhddpjrxY!Tz_}H$8QU;bB-Wwsh%N^7Q1h@r|aXY zm2^C;^x7oX<&!x7g6QKQW2|?% zD<$7uY+$zS&kk|e$1qNS-DZxL)v&y2CXqUco5}h2H z_NUpBiuS)wTKK?GodQXqvOo(Tp$(O9!Sp>+;B>oau>jrBPh_Q?>(p}MT5bE3Qv27V zg_aUTMfY6+#_wr4op^sRQ|7BlqRXtj5fI^F1UEHGC^W7(j-*?aH+98z7TvuU33!PC zr%hui%m~fI^YDI2w30C(IoHqn`+Qh3U2XDbgSj?WxX3BF{=f7Aose4|X(QkvW~2A7 z?BIuFoRx%F;K{=f?4UM_B}|=P_J$7UQ{dp0Nhmcd(!i|;S^7L*gnceY+$7#6`#6DQ z!v;~s%Av+C2yVi6p-q*UZk%pr zEaNT+6HJtLr=|aJh2t9p3H^+|Irr-`tH3&wo$5SbCKpj>YZZqZAl7u}-6kSmSftC? zExyRl<3d3as67C0qg6a|nU*}igtU&f@`bi0*{Gs>^R{9>Sm&$BgAUumEKynaBq&XyUf$X-*lSVk8+pBr>x7K_p+c+x3}OTJN{!%3*|jX+GL-Vu z1TF-~FgN<`ff#elbhgQnb552;8y_g7y90%(Aib}zfnu^wZ*wsli~F}1t4saiuK)f? zh4@a%Rs1&oL6bN6ecT3qrP-j}C!U^hTJ?0m`Y5F|sam1w))nO{moIp1_-$c67#E?y zX5Wm8POM1;#VoS*#Ue=qX`BeeOP(FI;#D~uK;G|b>OlMDi)GmJYp)L%Re$lO*U==P zo|+SK3u-%!@z@w>LW&Srfnfo~gq>^>pG>jdi?ZH-i7k z%!>6DI}Qt#r~7E*4RAV5Cw`*1ZFJfce>~<2@DG1-g!A?x?oizQD!`Y(T#bNQK>BMu z2x|gi2cc(^F=9=(*9o21=-@p!Z zFXI`ksmc>#WTiW0`G=(>cS`lL~ zMSh~-m2AIen=MP1fWqU->Qy!u1SPwIpRK|kZH@|~0nu)v@ym!rT;#QGbQ^UVg-{&# z48dF8x5+}GA4YSLu0Ij#uKnUeNu5bAl|M>5e>6pxBK`Ytc%1;)YH~~q)$BeQf#fHK zzoTOa!bhXukpzKM;5oqD^{{N{SFl$gEKpQss$+;Y_rDBI_ixw$s4<%a*{y@R8Ay$pyq3$!Ba zW3uC|>99twaZ0I)1y&8hjRGIEPV>l}OgnpbL^ZvvH)1t|JO3592@ro{Sv!k{Yyg?3t<3(k1-VW5KJJ95q>Cqnll>yo-$%z<3`m-+7A zm1UQBi{MbWl88fgL)smbrl42qrDE1X~$-b1t@Sa^OUWqcIR$cNWEl{&sf`RHX~ zoO|``#{`d;oB1&nzsCD4`w+RkqCv?{3o?!_ar6o>2E)!)8cCy zc6@t0HFVD|?`HX-j}2%~#HN?|k9G+lX?-gaXHbNP6&blh`NYw}zYRGvxJucos)BP7 z2e`!0T0N`E)l>Z~0>N-2-)+Z%uveX_yywu?TcbnR15fr`x#LO9fK1#TcPPA&RMj>~ zXiwS9pX=cM$4nZKm0?MKYrxx}o&F)i6#xB-$J@%zBq}vqwl34uU)P`Q=)*UD9!i#U zj7jCAoAtdMV8@^Oyzrq5H%5LoIDBDo`JDsZhPfiBdcN&TKd9XmM30?y+!aOd zrOzN)ZnwvCHgxjg0rHV+`1^svR3wMc3h*-Woe`vCBpOh)-2Q&Zzi`Kw@o3L=^sT`4 z?>F8p7cWi(e&=hWX4cY@1r>*i2$2uBX?&~BWiPBlLzv&ND2jeXB6)EeG-!G#97cnP z+8c0B93Qolej&vuN%M?QCH>^!EJu{58GIork3n*DSCN`C+DKuU@j2_~%0SEqg#@g-FUt1k)4UoOTG4+ zQ;<9XH%5zP7`2B%y$!d0*v-KJ`HFPwYK3pROuDc%{$W`8ULv%(%;MwSx$_X*UdjM= zD6IPwi<7M=x+UqI-8fe*DJ2-L(rdtAWz&I(&8)CNedEiJj4B&w9%i2`!z7&hI=U_d zuxXjFfYoFwX%Ya1LdueV(okyahG28@1=rL*FQ81ET)u+wHWkte34?JBs1ABBS1du6WJMA2_%|LqAJA%8=){ajO zrY{<{$BSndgm>X%6R%HX)_Y?uT{s75h3H1*=It)EEROl&^kyFSXj>#U_>QLLOuJcn zU5u>vAesYsm{||m$*uN{p@XI60)asn_SgdJhF&6Eb~a1Z+GWk_7e^re$@e*l`AeI^ zH!>Ev>u#o{o!Dh-;uSGoR7<@i2|Jj$-qH0ah|HO3dA2rF>Ra;5w_BY(X2wiZCp{r_ zNZR|0UD(c9S|!Ob_Ti*5w7Vr$AcPqH(EnoCe!r}43VDLG-<|qep{N1%#In#e@P+Io zI2DIBIRHVJ4o4_pFr+;bPl6-NzzPt|Ox-`F4ZaZ(&5_fJ;gIKSi zWUHob@)p2~McPVreGv6%4tH;74IlKsaQMpV%s}$U+5Z-|QT`w6uK{3CvYL7yl<>aN zO=0+;w0aff(3#y!VT$PTW5DG_F1Sa>D0rTKcxQc*rGLc;s=8V8A~SN)nhe?Y|7lcN~`CVa=pW>RhJmfuaq_6aqMNiw?U7xYVRN5{mU zU7)As?I!@tYzr-y*}|7ST9}t|3%!FL`_QrYnvil-k!`A}XHyrt1eedzKlVW-Si^4m zB9x(%wZ*#n0U+i4Xb0Nj=3PF?T)m$e0yMeEh2I6)N)nV!s#O?h6$Xe051{H2=l&*? z$4SXzCRaAL2?<`iMp(11DVq+dm`4eA?3~|1C+U_j<*?7W*~b?4c}(2fiI1s?9Q(|g zYS|;T(cma;U(omj2(sd{rbHpFDxx0@5O)xk;NV0*iZY)9rGdFVh7;Z5oKeHqn#e&8 zIz9iXDePdAat#04QAkKJoFYoV@AsNUufkq4bdZO5tBC2!7G;r2?21Zu;uWR3=8P8p6w~^410tC-&@f7g&piCg!w35haVJ+N z$BHWD856OwRo9`c0B$n zGd+3=ODEHR)w9MZMlwoyxXr0MnenCmaTv4f{fHbLlRGh{U*1-9?|dhRGl!&dc3Tgm zkJ;4(ac&}u$>7O6+vQ42q>f0N376V|pygC1(x!A2FUUF84hQ=pyct2ALyUWz4L352 z*%rMiH}tGbHp@wtf-a^s&<0oDh$!~z$#Z&b=O7u#ArW+7Doekf0jjB>;RWA5pAl5H z+--9$QI}fqlS?WJf+ux6PLJ)|w`(s%X+hW~BoY5Blrtp)%frU~kk6T1w=WA7JVdj9 zvm8fOEj%u(xndvL$Mb+MWhPH$fGsM*-sG2ns8oTgOQrlwU5W_9eXIQ&y}v!y%qW&C zzRzNIYvAtyVdHO!aJho>N9jW~{++=iV-j{|A*xQ`pr@y>Apt}`rLah9fv%nu8hwV1 zrr2!J|@BfNa2{mt2_by8;~HlMZtAtOtqtX#;ci-AKEr zMu85=<6MWOA9PE|ds|U{+P{#>rO&&Ei@pgcnq_!(dk{5wnH4Ec zprZ?G@=N*w$!Ezj9Mq`4_faxkYS0L2Y7>F6x6z2J0^{miZsvWd$)?<`DMX^7Hcx;& znP;*kS<+F!I3u{i9fuHe+MW3VV3#3}v{sHD><_M(G$Y%unVsj35?hf#uXwc`cT#hCh`G)31ugzQ!+^i7WK zmiHaW=kk?Pjl0>bn1;B&hCVY1^Lvra{XZ`N5Zb|1JW@X=g|^K+y%;90ui%D>yVE`U z!)7HN`cO-EcPGqlR(g~LU$O59XSgk3yHxdKM;B!Z7Orxcp!+vP@kmcDcJ1FxLFj0$ zYxvTbgxQQO8V=mm;X3@YMAG^crogY%#qPEx%PpRt;?mHl|3@=WMKe_8llG9np_uvC z=u@F^b%1|DIx?i{^TXDdDDxwy8H$U#Gr1+tAqTzY48{+ol~bQyRhi=l1Js|hY{u3h zgJv=v^L%SHRRckDo4@*J|!Q7)U~fd9(MhI$2G#~$(L!>*^s~8pIh&L(H|TU%l8;xrvi%YtP)&&DfxvFTFBm<-i*U^ zp-X{6S<~-QL;Y%hNfPKS`lLP%5RW4X>vh5 z+vbZs4O@XZbI)`jIqYV1J6ad^32cBJ&|P#paH-~y2hdYZaqB2P4sNcFJOrjM2pg~L z#5#DG()rLivJ-vwy}fM~*n3(R8+cCy?pfqaA^brf6-u!p2aUvzqva8MMQ-alj((op z<{x!9xkHIsrU1R<^4S*2?Du%Q$9LaAPXqjoyGcjWyhuBUQYNr~@KVUL)%7q+hk7I* z`dA2Iy5x%iZ0N7PfH1M>VfpGUXJA{^$Gi5Kfz3|yK;J;|k#FgH!FtWHNngfrZihqSp3la9s|A_Jh+aB7DJ!!+YEVW#sbdiX52ZArxex3P6)_#3F%t(&eL6}y%h>K zj0AK{rR>vtxcyE6K}5ITH@+-E$7PcHeQB;Jz`q9+P5Nma4cW3@JEkR}Ipj@UFiuCc z(ooq(dn)G)xFk15K8$^?(Qv0pwvJXM%U0c6(hx`h9r6B$DFXn!go9&|?mU%TJ+i_G z2G0L>!^~q`Y8i~=Qxk^6K8F=@lryviysf`2PtOxmSE8bSqV4`UtOU_ftMx$maT7i{ zNe(Yg3*dZam0vlq(fW=6@0;C7*A^i&X;fD04=sK?oDd1|5l^^})57COzlekbP*W%W zR-Nk}_h&YA-saJ|oib8VTvY~ScYWsL@KfdlKa%tA+ zL<*Mzf6Ran2rz?%kMHCNNT69e1|2TPO72jZTM4$^N1)g*Y9==`YFLL}abl=6?214L zbNh8tG=)uEmebn-Nlzc^Aqr=`pFXk)ypb5WLc46+5>KbZ;d;CFBwitJKQV&sLj5mr z{_p4s$)lnH(ybyfXKFSdZDK)y#Qk`gI+~TKbT8B#aWJnGRQz*HwpRg3M=1n=!kx^^ zv=7u7Dd9r!qAAczwk(9$p>WoA^<4!L;+2T&;^eLKD+Uxx0x{*r+B0VodXlXS_Wi(# z>Q)blxDMdJhXJP99Bv+IE2L9htclqN7bN4})OKp2F#PAL!~~L7EqtEebn32kPI@7> zMN%!;AR-*GbpdJvXw70f^K8C>km6#)xw-66-6&VgTAyW1o9$au`dSAr7n0*AVr8Gk z)SL3JLVX=tabOZf7mepk>3|EhcqQCJ0qIKz*}pnL|H*QWoElmsPwYA@inve7#^_a> zIq12>j&N@I(CyL+T8OJmhyNR}mlVm#IGSbaGwt=*q20@HV&$%}m^e3HjmeM+tN+QiaZ~dOXmDM5Uha6&Th6w2HDKV8x15=*OL81Z z1mEVL;x!lb77BCzz}O^pdf1JBxq{*g2rnp;rgT2o5Z@rVxZlQnP#wsCl$<;rUEJHi z&9?epcrih&itW0sfM`26pv1<3u|{qIycq}#G=L71cpXRF@`G{+x&G9alD;Fo+`}n` zcE|_@d$kdZp}K*=V+mc^I|3=d->RZ%FYP^;TCMdq@#ehN`3`rz_(0S;xHsBF8E@CQ!@N}{F0sRNf8K-10v)cOd+sddi%9tAX^^VJ z3i-nhNddY2RzzWH$MY`RT9gjT6YW?41N1c1CZ7Go4QnT7!jZZP%kVP-<|Qzl4-yeM zTfw|)QW}uNlbkWsCZZm!objnBD56bM;h=WFWdRYO zky33_Trbh1Ad((Zg8Sx!W9e63FtX_DM~HVOmk+~`!)eGhQxj=Us_J;%Q8I`<-#(jv?OR$!ARA`0 z7|bIWF#ajzjomEAc6uFGWv{;_pLX=zGmp_7-}=q8IZKKW$J{NDL;n&m*J#yDW`Y_sB_a9R9vpRaTo(CI4ehcth}^EiJv;4RdMLa{Vd~gpq&&ll}}bTO!|> zggj++lE*)+G;3Jz3W6gCllqR*2aLHjRqxad<(m8>eIOFluQ?TaM(l{^dRkb{59mPO zQDZ$-nZz0;C33IjZ}HwL5h86tNrnC_!rB3Hot6TqICdt-b3~ay)C#2IH1Z@!&MfMb zwA*Li$P|7n(^i&d%8on9qj<^qpa-|RY+UaQw<&n5v@nZy=bUOmHhw)8*Z2Vv`kG$Z-4kL18JUK!o{h6=HKo%O)CoCEc0#fIBovA*2^ow5X0~ zi%V?OL;YF`P;3r|SMXEtVHfYDvLszDdCz&C4gJ^BEM`#6bk_n3o@Et?+ce zv(M5xxlp>C*tC&Sq_$)ZQb>otjEjn~c4iJ)77lx3?p-7eSow>UrD!_L!##~>(UkHB z6+lPad7*Yv^hbD(Igw156ZR>{{;c*4>cE^6sdw()`9=q8K&#pR@*1_jZp|`*H&64! z<;|5kT<|+KE1WYw+wii|@%kFsYRg-^ zZMJS|60NbMGF_+$9v9mJly^2#spn7N^l;*%pb6B}=Im?2*$!_n8Y1%Nb|xrS{koEk zy_6>{)h{in_2UxMsQ^QzOW*{`KJd51E#I$p=PD@b%6{D+Af(5ULbQ?M|lJ~;M1 z09-?GTs7NGFuFt|jEBEbpWvU7i;(;A!E*o=GF4FgO4*hx`y+Cp`+IEtS4`)30}QFQ zO$(|~9P-Qd?Al|BGb;wH_5zRhVm1+;FvucZu}AYmP2jm~;e1lfRm6MK-HfuYlBWR8 z&l7s%lEw~x%zicYa7O7DV}Zp_6^+Q>z~r+HzyGf$P8FC_V;`a)cUjeINwb0sR2Qka z)9ZRD%EPFkt_@J+6SGrBJv$}w-Q#jPW#+A)EDz} zwzE&rhY37%`6Y2V$Sqs#_!Zv?zYFf%04)qN#`Z%Uyu@^Hv`KLf-)|?TF`8m$q_xWE zG5*rvsxX~EWP25JR8oS1`3OI#I}+tKoNz1oda|-h1p|y<5v_IG6PRt7+T66hfHY1z zNnG{WUSW@>dB)ecL^8`M5((NtDq_;34&!P3r!rh?PZ?`kgTd~`dFb_{U!`bfPss;^ zi7{7t00I%yM8YTfp$TEd)T=2)%(>8g(Nuk+>3F#wwpC_r`cYR%4Cy>}#+7eY6W3|99jS?`z)t{BA4n)>Hj_;e+ex%lMTh~Xd^ zD%F{Z5DB-bm0Gz*NE11ww{jT!N?mY zu2V}F1YU>A8UP2=(>xOb8Q=cA-MSl=#sKQ{rVt{KT`G(p|D-G4DtZw64>d!E^iVCl zvi_-*P?<^mCtt*90o({DE!j3=q#fVvIrHgqINK=B(7>*&p+uKh7iYR$=$U9;hhEct zK&;iZ49qYd*Vt41A{re=nsb%@ne{M+-+D&uH$m+ECZi-o{Q@lz*b9Hvg0A?Qn<3!c zu5Fs4zM@C<13;#TV(Z|yQa7t8ufi0WMo9~(13h%>T3f(Of%rlYVesniDI2NRhR9Us zv`t`?OcqqPRHy^fh|&xwqoc-0sPgQvf&k>*DpjOE!23SkU9=)?ZG2ld4+(bgB!3rG+pL9O zw4Fp{KTj6EFvT0^TaAygRG9{!s*N3Onfi%0 z^PJ)^JD_=w;O+4-Pc{2PR@LGViwbZ+}5pLSvu3r*FQsmJ220g z$&d`33=?L%=O3{H(y`GsJuk{nEOkntY)H}wL@V4}5o{`RXo}O0MSBw_Q<7L@KH=;iYn%wHq zf>N#jAWQgpnW)1nSgiVp*uk6D zB3r~vz9-cF_K-j&s2fz1)igKlnf0*j>`;67vE*}=vG7fy>DtgY`hm?{&kl*(z{f1t zCL{?Vj*~{3O$l*^uivG|s1q|W2MRM?-w}VoT|%AOd{-I%F9uFFX@3mc3mgqMA^P#5>NS{_YLu(_LjNGolH=akh6S};c(K#;>bv%l#0T0o1*t;h;GlUl(g_w(}(qgbf^EmFW zAaTq>%#y0ti4|&i(SZ0S*4<0sQPvgC#7&FiwQ;&qM zFVQ3A_Aui9!9$r0&{vHslLbCrWf>g9Ah$a<1!fcmh=Y`wsQ0$3*D5%--o~DTe=(Os z6CQsOG5Qw)>JzvC`z)jPzEAv$pp}R@Bok-vH9QYN<1#FsOc;3HHRAEB2``b{;E@>a zdlgf^_3LF=T9$d9?}APHQHlH_?Z(`&`K^$Bq$&#J3W0 z-TJg6RwEqX``aa7#y~oa6D6|Cq9u9hq)d`U40jEH80F*?k0JSc<#K(>zlhx&=dOQE z{)wx7K;J1USms8jSTx^4MkvHdSKXNSWpt``N8UI3wQb20vwnhj0G0jH(UX~gxkQ>X z_%PWpwLpxyo9PR`u;1N$gUkx$Wa&6ZNM1Rh^pJt->TW2qt_!*B?;KYWRLkCiJWc=zt&5!)h=a9Y6YG^W zvdIw0-X1>2@1-0LWUQI&_r`jKA|(ELJ6Z;Owq18feOl!_|8pVih`%JOn)!Uk`>;l| zlC3KXB7$ZU3gf&Ess8a-{S!k=vR51@0FX0PA68BOHCQa3uoFz_zIE$Qt?(1{C zJ7yD6W8a3NxA&~!wifrxnP^|^TbCwVr$x*3phH-*{flzANEM@Y{nGhev=k0I#(tpP z;J?1~e<$HKyCQqXMv67nt?+0^ifN%uJN~I{l;tR%`6YMXX!??I?_sh;88`A~Z~EjB zdEZ9!8sQSQdGyil*vdWX%<2*k@~w8i$7zm(P|bPHym+cJA@SFJHeU3-dJTyLYXFCM zN(h;|7XRf+WR9^YI(Q8sEVUq(zrN+mMwb(lZAgK?-tX{-l~W;dZsWeR;p5EgT$G`0 zp1^$QWh$~HVX6d81$-dMX}xnNS3I4q!{~@R-y-xQJp!O+z~482LKv*0vYlHMVoWOt zLUly74L=#aH^LkC{fRoM?C_Z1i|~TEPwpe>`<*W*bNB7?IUNsY9#NU3ct^DIp=|H@ z!65#(BY_lnp?p4G@GLH=myu1`>#FBJjA{P&>U9%6gKq9Ed0aSN+0Sg`F11+U5#PcM z+z~_*+nIBTnbH__6XASn5MV~w%qQ!BOZMxuVBYyZa1W$r=Os?=*j*4fd<~-MKHx>! zk_{M2lunuFwgY;(Em7dH=7;7mH>{tjs#9BA2RHc10Ukk9Vz>{yV;gy8l%>>|!dD=P z-x)@3E7iD_q3bfu(`-i`_;Fh*q|MrlN-6~EV|?A0qK9$5R0!eXa+0IhR=LdL5kXUI z6udCOYlZ{KkX(J=Q=b# z4!BX#?=NHSF?gE4?~n77Pe^9$O(Y&pKjM!2}7HWi1)IaU|9Kxe(v$M;z-zE znP2C-5!-nhBsrEj!4@$zly}ccC+A?5vZ^7wn4eJobGsZ8-!-veZ6UjZSkC?6d}j4W zhh#`(Ev(EU4GotUcE_VO#OpD8( zyQqs?1twA^Jp2(-JoB^uD^b*OF73E*PoPg!xzDdeNCbKQR_07RfEGPAvSJ?v)dP5--s9Yc-R`zS!b|R>!utq3X*hl0C}v} z)T9*bLmSAqrqHztQafmj$Je0t#3?IQDh4Gq_qlta%(00ZZTBQ4h>?cwCGGgmLEbXJ zZs5I~bvx^^%-*mw|6ITlSA^;%csQgJ*lrk9n2z>}$DjAGYPzv$ZLO(xq` zg5GsBQ6LDV2{bQ5U{XQKvFbOQI(C>W-ZZafk&lAe z&*57IWy}OXENr(b?zRL5fZ8U1NF3Ka6i9FYVt67_cOHUENu3| z#}*bfaZN%z2hyD<9k&OMgtglcb`HLY-8z5-v3=$hK81M~H*pG3d~>Xgg*lb(IwiOY zONMOZwWG{#CIflVPUhKAy@p=xTvubh4mP0s)&hT2Oh^7&FH33ev#&Ftp4GOt^l>Yg z8Ee5hPw{L}M(T7yncOG}v91(J(-g6Fr7pq*y$Qaiu}F-guPeTO?hma(jbZ;>IoGoG z1ks(7-D_+cigm`hf_*-9Z!08n93Mm_xirW~AkuAE@Y4<92dAA`72-WNfx?X#Fiq9u z=2UA{k2>ax^eM5d&m2bv<6!DLY7u&E?^_N(D7-6@9LJDZ_Ky#P_o@fe59{e(uubES zP+m7yXoqli);?S|VdQqX+U@k*2ncmsJ_u0d#BE9GOW`tf0?^2D)}U&)QsjDR z6GNy{u4Pp(lJtl;tpEy6?$^PCSp`0ponmD=5;+pW1^scJ@yim7U1QSr zQbmzs@$QWnTOCIF;OkB`zJ!mo2Yl~=DRh)vKOYIFz<&43g#k9PRz0luG8QJ8WiDfp z?6zaar{z=eb*!F$ryh|ONHHhbw!8E0oL^N`olt^D{WfR0pFMb zcHF8bU+J)0OU{DK0@yiiN*w-)Pwo`=R|pYDKJSg!9Vvknp84_B9i^aO%R2lyL-hY*^2o^=HJTF~)4fk#Doo^Z%K!vAj;VBfLw zupx%^4s9QKk|FUBl4r0xrjg(2H8i)6R!OhlkC?0Cu->DTo%qL%hR2&@zd#y()>)$_ z@BJ^ut*#8e-_o_c;?uC(uF;GJ`!8xHukn`WPz7V=>i5r8k`|oxw@_w{66kpBKZQnr zyK{{4xHr_S9>Q$(l6SBOPHGt?hklNBpOr`~{Bw6R(J*QLtXJVGt*J=MAke~~W*I#4 zID_u1(H(bGmLZk6A-2XxDqgd=w+s0);A1-!Rg=Ss$tUu3Eg<>S3_Y6O{wpKvh&gqs ztUG+01(DT`H7&-QP)F{@A?dD0M}dt~-KNcMfZl`g8T)f333r;+>dZ_rWej`vzLb$| z_mkOky6cG@gB(bHUG_+-sikXNTHVzGXZ-4A^JBxAnloeOeri!XqColUO1u=N@WHp= z?<|%6H`s^f4h}=_=+iyJ;E(@uqTfoAP!Q=KPH2ZGxkj}2LJ>)oc(ixa$odwS68p9a z)zXZ;W%<%&_{i>)WKMI&-@G8sWD8;fENxkuQ5q??r^LclKnVWwiC zC{gK8AlOKkiq=P{f(Q(gzB$pcpSHj3e2c!#8kxCnW0z6Gy{# zD7`|@({Z;4t|^|hU&KLjal)_6U1aCMzmE)4B*EiWPdX9*bS}X+=$X{wRt(B;^tHrv z%lyg2gDQz(IXi?!YxSHyjV+iVx$D~0STPk z9x&QXqOPP&2yw=Jxvr!b}JCub*Ll`?xUTFyqj#HjB?T^wsmRZjY zHT_d(l77ptOtes`Tf&3^|?8rkS4R z#w!8JBiNVmNEOuL`rgdEpls$KS2jf?zxQ5pK16ISV{%6;tAp9CZ}d!pm81K3!z$=>C|2i$|c*gNv$*5$D!=4;ul0C zLP>s)DU6xrMrJJWY#s5^q%1vVJW)nz_m6KW8e^F{Cp0Y$v!gkka z;|zugFA1@?kWHlMMFU3dYuD)(q0eccOAQ&HV<`p_t6cK(d*0&vrTkgSkK?xa;g5SA>8UoX$`=Goq+s|gtRZ5|vx}EuN75;2m|kt}J~*i3 zKL|s`qgd?<+CA3p=7+5MVTiO)`??d z{E6j(--#~&sr&)^sUX_DZBg%K)ei-i>2P^c&A2tT>LJE2=nBec%B4`P>ne1ae{^n+ z*n9g5De++tueJ_O(CW5gyg$p;efRFhWG3V=rVL8+!+8O>5^97?af4Cbb>(`+WFf6N z@PI9MtEwT@Bi2wi|2q$daCdZDs6ljlcQ5-fTk*9_aG45?_4u^zn3u{53hFclNx9*| zIrReP_V5VxPI!2@6ZZPVa!VN#-i%37lOn36hBMkd{Zjs~Qud)2FPPe~fH1>C= zCjl2)Lh*a#SW+^~+_v(YoOy&jMEE~IjoemX%R!NPL@VA6D7c>ei1;mRGzXTl*gQS&3N7qqdhOezWrIQW za4z*sW)x4H5#kK+aKq^%ad(>zfIyiaT#NMSl4!~m0Tj#&Ni3o zqkdH>ti7vW5jaev9G%YI!cctAYgvXb^hjE}fNJ`Y&nm+6l}E9DMMnnvP4rK8lWpWV zhs?|b_2Lb$z|?4pq-C6l4Q64ZKSOk1_NpVmOjwVsnzTFb1L~iR>(~&JD-m zWU=!!LUmY4({}VssOK#)x_?Y}k~p09-bQ<#qKk%GUGP`lewE(BS|kQrEK=Ie!r!qT zpyU8(xpuWY(I~5WS_x>78);dYo2K98M!jVV6 zd~Ls;Lu$ zKHl{SQTZ#e-q~{|NEs1$h7R=$d&V&md&F`d_>{v?fB?f-_1|8|Z9vj`87_|>26++) zeclWYkJ+OS)O1rr63%EU*w(%%v&(=)V23}!aToRoe-d^iCBXAan( zoCDgAqIVe}pAwDlk9zs^#Aw)AQNXRQ_@edgLBAZ(_Bgvv@|b()xzmWo|CovTawm6q zmadsrwuCnkx0Z55`*t|t!wR-3>!b*dH{H1--@ZU9Zs{ZiKO3iV;>&OV(Pl|ru>R^N zK+qO@qU$_?nBzqv+ZJ|%KbwK>X)L$wp0Tp|nq?e!(>Q_UA+WQzt{s<{{esmy=tO$?*|Xw;>IjW=l|pIyj4ybYi| zXeNOzdCQukmz%e_vehL-#`YX)la^P!{gewsKGV_#RgYiaK7lR_*xcLPo=uI2p`cKI zC8ONeQ02I^SHt@(XqUznotaW6=})`&n?%7wz#N-I)2)u}C1{*G=O%e98ot~F!R+45 zBNCQ9>*5()elm&p_6vc~V9xQoR72+A;mhk0oTVfZY;etYv88(bVL$8RpG*@mF>OE$G=+D zIHc$hMGC2TFN1+B#+x6cm5 z6mhreB6WcxcASbeP-L~ehq6Jg-*1k~ce~Q+KRn-yJ~{Q^i6dYi?26F^5s=GGHsrPzg5OqK>OmW=pv8SP7fRqVS3iPoSmBDFtnc}+m4jO zRt#&Ip3srOGwVNw7Ukv!kL{|zSFMk=OXE>eakz6}AJofh`|fKiV!6ImwAyoI7?;=z z=5RhbJ6FikS83H%&L1%Alve*%z%7cN4kOtia9dLUAd8D1)LT#*rswKEQ@Wl*$Kglu**Sw> znJFE_;on*$wBKi6-)(Qyt>ecz9hQRzJukz+iGG9$903Cj*EYw)mn~j*cbrLN!SJyH z_v9?UqhoLHYOx|V!_QG*x56U=*f98h1pnA5Xv9G6UA1Y*dCyr%CX#kLFQI>KIq=Lt z4CW1C7BZGm!4eO*mkYUA{OxC#n%R=J$|%u_1ODVf2SNLcCIk#M*>pULvZf?Ba4%9f zpIJ-Wt}RkCQ~rQ{FQNLLSzPhwqwI#R>vMmZ*cTfkV44tDUW_F%jYEc}R(R`$94wqO z|Dz!0WKrm6ZN!Oc`PU+rO>NaZq(xJ{D=t`r*EP=rTfL6HmmhhEq~oH*eTkFsz`$LA zrY3YqEgDqi<;ox!8ECbEmU3b^-Kw7;MXZQ+qxGs>;XK5#?|B}Z>z~J&A>tbpkER2J zCKUzNGZO*x;TAEOhq}UN^UV2EHSM!6uW>M*(TK0VK*LwWh=kaZmxF5n%<=4_Gq*~0 z+`OL!+gOU{jBeAe@C&aHxA=NIb77;tbJud?5rMEq$9?(*)!4GI>zdxpw`bL{u?ck^ zv^ajX+*z4B&dePI;fR|Int>{guJNnl5wnGn8AM@Tm%9_>vqA#kPWT0|vTGeaNM6vHQR6#+JzD7TYWtKBf z0WbRXHPd4)t2OzDa<@FODZRBPF8gYp1T`H<+8raqOcHw|4=K$sc}v7;!1C{<+Iz0o z!qM+Tf=qT$)~#15s|fh!moourKWwVMTyua;N7bv-J2cmq@%%|$)QCiGn-@;%1!=Fz zac6cTC#FIEV+`&g(L$(UKAH|s?|WG;gPm$#lH2dMuPe)I<_P5ZNLl33%?h16o?Xo0 z0r|G&2z#6{BP)tynX6{mqUSdv-L~ttKD`h-<07yfU)V6Yp>fR7iv{2}`&sq@8Pc2^ z$7?)uNyAts2bX1i+QZ)K1aZA`LN{%CTx7WZmyylz)c=;Ph}5C7G6QLlzK>&}0HI|t zDo^`aGoOX{s$61&whVR&oO)_90j6olFSOn55_v%uda@s5(WYzM#6c;R#WAFsa;ICF zZX8^lL`8!Ff+wh|Cc;xSv< zpS27SdLMt~ANK~{J(C2}5d{Qt!G*)@e0{@cf|C&>n{D(u?xH_!X9)8C?W4b`cGPt4 zktPI@mX*g@mNd`WPxLr5IS@FvHmvOIq&3jw%Yhou^g(%5XDS)H&-YIRW2ijQZ-S)z z4yXQai~h?}?fl-ds1ArG%#~4w1Q}1S9#AHp{Z~NKI(Z#}ZN{}fl!~?qralPWO;_?% z`qRS*a3i22^IPZrB4}duU^n$AgCkaq+0TFtE*R$d0j&F62!EPW8$F^Cl+V;#-c2`S zx3mQ|F9O66u=jKAa-G4z$X$w)AmWM{;B~-;_2;BZ<$fI)!TCrNj|pT|Su;#`+iC)Y zF*7`17iC2Kw~K~e7#@dj0Z4BZ#ltc~;ec1&-+ofXI6Lq_#V6(3z@l`8caxa15(hNf&(VXY|K{o+$~eYLosHp1thb;sgDJpEoh6 zooO^!S^V{eT2h6K7ZWkx5*wZ4NQWnk6Ts0H_z_p}&~~Nf@z888llvb(6?B=5WK->C3mxfvxa|oc-zil?2AbyXMXgb)-gV}-d7m!b>H;u zaP@IGs@G-r*yt(`*m=A=`E8sR7}*&@-gqUaw9v1nr#2^?yA!quZynZ>Q__Wyw2&)p z$#j5#^QKhlhPufyWOTTvUmT+nw&l9wv!JITM5sXKp&@1x;@fQ9NK#5!Mr!N>lt2Z! zk*-BTgf6=-Y|AL@7YIS#3yxb)2PZ8Bu?epD0ohlv7Q|+40hhX8?y4!B#~UX~XG8g) z_NyCE`-52rb^hEimq+obxHN5x~6?e#+7Vq+iv7ZK?6prM5}cD55B$jSNHCFj2%yR_+V z=xyLqD-N#-P2(fwrYU25rD!)Ed3NK;8d&meic0X%rBnaX%E4>Jgb>}Xv-gT`c37m_ z>9JsFkU1-ZQ(#TxFlJNzKILLH^;O18S!(0~UoN5tOzp38r!v&PTr9u^Gv!NQs;Im(fI&{2Jk@ZgJ8d)AloZX7Bffj1;hvq>x0y_COr1 z_V^}0%WyLD_SCTgbk$?J4$C%tbrYna?lzDsrZ#~|l~*owqUYGm{e+_u!`6<*4KE|?1_ViOH$0`2T-1o`$8T;A&|qZ+!p{twl>D}yXwRL>d(R1 zPJtdX45lhND=KO)D{ZULABFE_?fG*gQF}b0=`4B*w>7L$(fUb0<<;6QL`WdAe#-NN zr6yvaEQilxAC+~nV(k>=?){Yt z5Zk?RGP1mziJ#;n*)~y_zoQ96$Bd&@va<6YZobD9l2!OB-MiL(ELhnWn5=1XxW$N`p>0SEi@Oq1ysI!~ww54N;+w95sXP zd2`Q3qGG&Ky|P9F8sDMpeG=zOra)mQ*8%CcJ1{n%0^kcD)(b91yn71*Y+GN>o1O`% zx7h*2+t4A;1Ayx|n`NWQ`Q#RxWEblYx~G=HgY2l2-hB}r`8Ql)GN$a_uF$9BNA?4; z%sBiEO-W3fRb9V3Hv6Qm_nB)zs!SGZs&kV|w>;3h*5gNBaBYr%exfGe*j?Ery+d;a z1`t>7Twl)In+JW5cF9+xKZrcG7_$;Rh6vmn6!MZXzqLg4tCF&=hFrjc;3YX$q^~zf za&|lf@maOWQc!cnC+i=3*T6m5elqOTz`u}h(h)3d+|{@rjnfZ0qE1H7rU}@2n4cZT zE+vK6+c*}yNopT}nKn>7b1L~3r7)@i5`Ku}MmUv6?lMtJQRt%im zh!!;wI(t{UmW@fgu?kBk4ne~$0cUWZ!S>1@D<{Mak5Lm z3#=H5fddXd;ji9xm@^TQXp4r)9{qflLujL+8G?1=&FMb8P?w*6^I-}BaA1^KePOcYNThM$E@>0gAbk5m=R7}%7l zrdBPmIX>T0e(#`{CI`bCT^pBmcy*p;+$Uh?2zRd8^$sQ*1?Yg)-H(4%1?t_;RBeFiz8B&%%PB}1hA_p<#_zHw3^7wqAy_dC*B06Wyj7@(|_#b2P0_$>O*@Ch(S5|S%>In5oJPMI|u3CZNW8%CFBq3DPLJ{%+vJyf=48?TPOiRkBVFQCzTTK&_ zU)L~O@fZrhhig)H_xAZIEnqTpMwBN$wQ5wQ&CiH6&bQN4TCDMr{IgHI5aIRYUvZ?l zEQi^q#L<@G$z*6`14a&QCym7qa3KO!FQq42yS057RSTZTV=L|$qZ4c^$igu1f*mSx`J`O& zx@I_4vLU@(Zzf-s-M}(y2?$=v0zLg@?3#zpMRJ}ohpsRPtos>LBt=hh z<~#y_<0|LZhtBq-r^y0|jXQj)BbP-Yf%6tRWR;IUzR~C#KFoIQFk!ZThdY05gXBk@ z*X-bM%A@iCUEb{ZpP57($8ABzxafX88#L523A7z-ch862Y%L+ty`p8>8yJ0mL{&Gd zc8LGw0>n|xKDBU^kdcN8|66CcOSi+M7p%uWXnvMoVkGqDeY_$a|G>&^`UpngbO>=! zc5#><^ktDd?tWl0NnS|?$(^MW@a(6?!arq=aXw4X{)9TbI!TUjA>LkX22XMCDglk$ znA(0jDsT08Q5Sk9fFCtUf)T}tlZU+e&ZsH9n=n@ex1n;c>bZU?$c|l1p^aEU$VDsn z%^NB(%kv%3v%LxQyWs8C-h5VUc>Wu~k*qFkRfyrWfC^?k=?tpYT(xa!aOGsR9F1CC z{nOyowbMWx!vZ7R(tBo_pue7CL_9P86n4!ju`Oo1_SpEX+ozPC*1bfPOiKBKsw_@e z;U9}mL0Jk-6B3D9QRuC81yG+hoZOBv$n_qbkDY?|*P>d+S0E*H$tfZVpxK&-unO$w zhzf)F(k|A-KF&!Hz+G3AJ&r{_-#xA62 zy$}{7C)XJNu1s6WW)&&H!r6nX$L6@mamLEgyvaElI-?H;DO)ctMVY}9n%OjZdZ9st(U9=BvL`7O3G)I7X7P*Tilsor1@XRYT_U@~ldZ@=U# zdi9GL@5@e3q?a`7{GHKVcK^#C?*6!lqT@TyzgRJCmpbE7AOXz_9iUqvHP8n>$U^$f zph~rPdTV~0R2m;_pFgIuxH~zEE+Z0isr8B`XRwoT#Yf{1QZ53f>odm^_7_}UX_vO` z!rm-f)|0E}(~m1qnzRNHa;W++EJq}=&?|PW?;MfEW9oCrDYX24FKv(S6v)B%HRitF zjp?X*18y>ut(5nHTbB43YP#a3utr3eBs6gfpUZ9)P%#tp4s^ z=>?D*Y(fbD@#X54KxvgPV;=IRu%8wm3Tp9ft8e>7E5FNIZoj#$s$HR%kbDgX9I(0? ze-lL$&3&dS4{=nI9JCeuC^B9$-{XhCp_3oAyEfrJ?MQv`E@6hE34e-rwbl3N9S47$=D1{Pjgh1hQo1^HJ16<^6z@F15@QiRlU0zY3G#YHB2D?L90*c!ZA|Ob+)15 zvq0gL`K@>LF~%C^F%K(~i3=8g{(#^%zz%L%G;Qu~6lrc1-b9=w{25~&-3xKYT;Z6; z2}6jD_3Eeh4-cbCyA85_ZUOv?cir+a!;5M z1Bn=e;P9LHk^~wh6BFjkw+o?zx41)tHj9x%gRtiT2f`9dRb-rO&;8}&e+_m#qG9Ke z#I`}##}XVyk@7U#iWN`n`=g)9e6}Y@VCzd$w zB_WJM!UJP>reM43kpr|F8Q7L4)izq)uBuwe5s;?jfx>xF6=r@%ST@`M@c#7 zMo_B@D=t$}cC665Np%a0bNEcGinkWTTh~L4Dm0--`h1p-C4}Yy_6^QYE2Si?BdU~~ zv3*=g*-PFj`+o&+-7zIz1_x2a8Fb~o!2;qhcdyxYULSAnk>>1^@~q-6Uxpj=TN#g0 zR9nR6l&9S*O7u`R4noisG_q`)+x+~~besa;0VA;cG^o{NLB|-iLQOmx{;f8f1470uvmWpOe#vX-Om+nAp<-vR-S-?;&u(m zNln7p$&YB)M!1yBjPqrO=%egF6*pu(@O|Mkjq>7P$CvgAt5D(8=qvcQ!d2YGOl}Jfe*;q$)8VEy^H%DCAvZ{2jZQ zVCah5m-Y~*0AGb~1&zsbJniEsn5ZQG?S28#^acZvoQ8{f-fizO7bfx7>?EDR6kR?{&Bwq>#n-NqiCNjvFgYxi>F?C(M8jk0;>Kc^ zfT6La*6n+nihz`?yKRBiYD7jHu;arkmyU z!hiV##W_TCgvtv?;VGHr6sSb zbv%o@iH7w?QBnQ=GMM;o6!Y%jhQ7zakW?j-DxDpt1X7R`JEw!r3 z*!D$Bc%!UamQ2nWliLi6R+uT@_-a8@37y5!AHNk*rcRT?6S-JLd9uz7TKT{Cz)EXi zuN3hRieNxDAgw+gZk;&Db7A+?kldd*1c=2}v)L|puA3a21p76GvAm4Vyx%Gg8Uds1 z7;h_JzthW@1y#9KjFTln^L?kUv*sGpcCckXU>wPYX?LE>FZ{9+egaIReL0>Ija%5< zzL~GoJbKA`BAvF*a2|J3=yKMV9*ja z_Lpo`=d$ACWYGkaHNlL&Vp1V}4pf`_(dhqQi;oKOGS{!&n+)4{8)L|XN*g|_dh8Ae zgbx3XV@h(5{EA@FLzG@QJayR3_}l8)1LC}&2F>B&od4~d&;s7uurEO4P}rWESs1|Z z>>rQPG1YM>AIoJr8SU@WuDu$PnpIe=efYm0_;*@ki+G4`HmQTL&~xRhW8mRJjdFI9 zM;ON8aU5+$*WXzA`6X=_^mas*M@TB)ILsupTq-tSXWWb5W&X}#5xZw9=^zzRoTmgG zbJE=yMZ0BO+wgwvgLj575e-&KVZrLgTc~0`xbKwee05G54<7+7aaBm@J%6Z{yWJV! zFA;i`%luW!{oi$Z-SvWpiF;5{Y&i*WASBTrB37A21dVt+P&5At!Fh0-?vB45dV))r zztU$=K1*kyu%o-J`GTE=|G8`LNAj)nT~&7eZv$ISa$UX~Cw0$|c9@sn=9LMc>!btBj1hPJN6w;9jR#4rOiSxHE&gZAYBNJ_$V^LRbN<*;(6uuP`^D zqUL_4i+$9%?#5?Yew#=Sw=pqd#=ljo4e2-+0S-vFDt$Dux*hS~vQS@Rt5`1(F2F2n z%o%uWp1rMRgZsGcNUyTb>0m#4trr|lbk$ubT9mu;C>L>m_+%NaY$BVqStgN$JLrz9 zyPB+-bx;!Y3s$b({N=~a5H=}~-a@o4)#yS#u)BGabL*1#VtiR>VN^-e^9po3WtmKR zviw1jAxDtO>%8%eo*-Q9s}fe;YPT^KBXn4EmR-BXhXU(?H~+;>oRCe-)*zIDOJ~=E z;FP!7r#!BzJ~U9v2VRvl8??Ci`wSw8Oa% z^MDS^OWO-YTG~hU>ybKtghZN+YpJ>F)0CQ0W$s zZZ=)g-QC^YCEeXfcXyxV`=9Ted#*NX%{60;XQWDSBNIx9LWNQ%dM-5v-qSygyp_Lc zP6>=#HOmKg!MFeq>=C(hXXej0T5?w-dpgU|DK@>`2cB+qqxv9fKPyG`rLk3eKyU#AN|PC2-?1rp8I3vVcW$xV}}aqrgkLuhGm z!ZH}NSQN#Ox43_8ubc!gZ}22vWpvRl4B@IZH8N2*3=fd5gs>(M(F;S3FAw}>LtfL$ z9?q9VQcMD8*`8)!fhPm+urbhdws`DJ{hE&ZYP?)@*=!1&atjLlp=9 z@z7#@7uTDAc*Oo<{h;^Wl8Y9#ZL%Y{SP;WyHnFEb^pYSKyGRbjYB{LQ`0)ie z#fdf$m)exDP_@>O2VAUP?r<-Tzj!ExX3zKAUA2EPMntLTaq=&Gr}^uTsCkd>b-p$1 zB`H^Icw}eM zjnT?!OS%P%o0{;P#k+LtZYm!l`vbZwe56FnKyaOX zqMFp=w+rGa8ZPsRCQGm8?&IV9kq3wv1W4tbTbv{6h>?G-mh&&Ox7^fXV$zeVK$MJs zOoWA=cRgl~4ZC%y zTN>^&uO$VU{lqs9eVrV}=W|_qEj@YNIOU9a$x!=1h&>a|6G#`wOpyR;vsY8qKlw`H zh6tO3B7Oh4E=qvqR?DeuGD-IBivLadWk=`L=)i%5BtZ1vU93v z?u5JYRV64mTouyK=DVKZo>c3QarHD7YlRa4~XlQJ2-ZvcY6L}f0?}U+C)1c5#9xi3ocap-Icw<(} zl_2YKE!pxMpD?2GKwM`%NS-1LQ;rA2hdp0GRCMEX1~@)r^{!NXC9>jgTuKNty2rTg z9Y07jT#VbC`m68SY_^oWOAWUt&Qa*64VETs5|!}4Fl$*O^}=U>v(KBbJ8*E1Ut zi)_mO_O4)eeBo^*r)jS6R5|owpn)p?;KdsGek^{}uyx{=&ZzLV^j8EOqGrMRE!^ot zaEBdzpxlN>Z`E{GUeEWpo0sdzfZWsHb|Go(DXHAZ=c$P`X7e07u@(F40M;f+3r1@$ zHl4P>|9W0-ogMYtkL3)vQ^~rQTkh}r9!do62SEQmTl!t{A)$_6661`QY8lPt)xF5B z(5|@nRA7iN@Qy4eZuP8dtcga|`zDF1rp12K>TrNZ&VIGjEO|LEjSRdo7epGeS%v|a=ovSEyY=(e;|&d-t(W-}Lzb3e?nNgm#ExA-}(O-#1pPDqG zF)@kax;5!RGmZ?VPF7W~+QO&@0Erb%-txlHi6MVSLVo}+ag}~sM17aUR{ou=#kb>f z7W0Plr@AC8ACt`M#*yXyhslK9v=KwkJxnGd*CK(zBjnpoIotK7_4-#9^%D|A2_e-? zFq^O&gsp70eb-=&oh{(bA$@VkjSa^iXDp<(!HsZHdnamChQC*($Os{aN>?B{^WD4t zzk!73#E8?k0r^rX6nVV948^zA5r6qKD0BcS=y=x8iKc5Au^}?U*GN}^SvJR)QVy(K z`c^042D$D&ZH(eQiOt{hL&w#a8Slg3bgO|;tZ_%q`2KvWN3_Fh=&}&yvfgeYlS0CcC8lo$EdkxmqqciQ_^D-g5bbwT2?Qu5KS%fZDSbwWv+jqV{w$+@k*GUTqEH z%D;mLHOd6M@|gD7E7mtoq<@dS$V50<4iO6}PsJ@B%A+_Wvg4;B_}whvJl={N_j21D zxpG3`pk+pucZr~DJYIU_M|(Fmb@3D1WzX9{oU7)netGS%s-LiWY|?t@x!?1-{_#NG zvzYJoBEsqR7s+S(W;FPqAZ(1^WiHHHdF-3(skvDK-TNPM&M70UdasY3q(pxhr4;hs zt>^$kOafQZSmPV^^{2Hv*8t&Y(tDSkICcH`1N7C%h}GP9n@!uleHdS$ zAMR6;WD{G#bX}HZ!+QI-f=L_0#Z+}qyN?F;(ZE7G=O_JoRZ#?+xw+)DhMLEzj9B96 zex3bl^LKj!E~8;#6?236@u4HURq&)4W(3!vGhUMgP$4;|IB2uRbHXSc1bx)!2336u zd+#O!>w(0V_7aB^cOps0+LP5Y52r7RVNM8XCpYst^M;(^zA#@rB;vQ+p6R~jPwvw<<;T1m&G%HUfsGkI z&N6#c2Y-n_OfyczCQ8&`=oz_P^-fc4AhhfMDc6iIJVhu07qU0&^|)%0gc%ecLRwG= z&n3y!KZwv01*VY%LgKb+t@y~A$jxK;AGUMWSTC#pa5nACSE;@4O|~nf{B?ERIo`>B ze13>lTu6?!XU|&_5l9PX_x_m8R|*w1MDWi3X@SXBJ-T@|$LY$*WE=3FOO;BxT)C#0 zf3nnAK+_KsR6{nn%TQi_ITcR+DzJ?H-u=%ftdfrVkPg$6H4sQ76zB>~8S0q4V~K&y zh0Ln+R$cm~B5Rl-9s-sRPXt?SST9SgEjH&_n^PLs<-nG`6mjhxF!)UNPwP@;z9u8#+2;UbRq^^s9VS}VSHMcH7f zoZz9U;cXmf^7kxf8)l&C~{8myHYhUmb7^p zm_nhAJ(8-bv7OxD^kzdh@H+thPAkoR z%IqibI?T2|5te3jVTYI?Er*!Iff|5Vv@G&v)m?lI$6qyjF`g~2er!Kn4;p3xhFff1 z*MJusibzAEYr`0x$2a`^=+bgxd!=ie0o(YGY!1g8`YLn$y-NOS701TjU0o_**JmcSEc=T%(7xCD-4| zN`GyfRSCiC&2^|LqyL$AZyWZMk0d6*3|=F4Al+xX$3G$n&)TBBAVPTmXm8yh;^q2Tb`1)@`=46+rVGuZ@`_EAhVI|RnS}VamW)qlIQMD!Cli@y z1tvM}6PlM7m%W$usyvCvp^tHx)B>gz;3cn?Gwl+rOu(a^#}G_BI3#5VA;I$uB{nuNA?ByAS*Gv6>y}m(BNnf07Du90IKT z2s{2=%?(|mC#blR9@HnFmlSZ?nZsTz5yl6P!%t2+NkgLbiuF1kVzzWL@UcNN6_%0G z$MXC9gkz`5rLuoHZnG~vCddVG$Y>flE&!4=5F1(0I7@zt( zx7^Sr_=YXe3fcQ+1XC%rI*yI%a$S?AeQ=&$t|Xld2w`_dWXAIqas;D$O;U=?mOJ;C z@S@{hmo(wVmfhz=t5sO1Uw~HN^06^phkL+juINJn(x_n_yh*j&jkug0%xF_sb5QmC z!PA&D6JnSn zh~Y8FSD_S*T}Hb`o$7rsWEJtmhL?eT43+(U@)#$*p*ho#oLWMCTOg5+5@BYiku0XL z&T6M7PhdL`wWd5XDNK5~ky?>Sk$?EtH{yJo8xb(B&h_!irB$s_xES^B5(z)nmb%E! zw^ZNtTF|+yGft!2C4(2hzr!zOU8;>^>6r_?R0?54oZdFjJSX@Y<*>aN4osPyz2=GZ z&yd0)K=60OXec}UboW;O4 zfr|8UudeLl8TOd!zX&}()LsV>k>!8=WiLtSYaRu5YXL~I#UhDV%g}Y-#!Ctr%NRO_ zGfd^VEB|BvI-sfc50TTP{+JyEMrHq)BeeQ-i9Ppc3l6E;8#zg+262C|ueL^}!}zEC zb!`{UsyUBTD_G`%J3|7ctNnU_^v=cbYp7K8ezadz2qC+67kF5g5`^z9&K77$-@$%) zH6CU54cPTww6huDQ)FvrV;I^d)d;JeyHop{#WP_Wo_~3}7uOPp>3^Qpd5LQyIUROW zKdG4tsx_N#rSMGHWL=qwgSG`!MNS{$`k=QUWgJCeK7w6q3 z$6VYdc4Rn)3*ID~pp}O(Y;>vNhY~|*#J|6mrEyxS&PZC1IJgtp#+KQlp~|L#3eMWf zN6IT?;@8Y@^rA~zLOl3`;0Hy)BLJag5Hn%j9R8Hb#l}2dgx?m?&p3>a0M0$~ zKlPDO*-O1bJM8)LTFDnLHx%;KSs?oQck|^?h=T~>w%^RcR1*XP8X?#RK6r`-t4*2@ zX**CC+U#u*i6l}kl>-gOUFKvzeV+YgovD*()C{xZu4cj?XA8USH`!WBq^9gD}0W^1q^LXr9k1+YOwUs2q!j}0b3lVj8JZ^e&u4eg9`w_-Fh|El|@0!a5Q@ z<%~U)HzLdoyMz!egAsm?jxburYUmY)y zN%Gf6k6duZJ?}Sk27b0to^Z;*K(}*m1{t)u^_+Vx34+@X&S828%I|=)P*#P*%Z+;R zUE3K1kQ$`UQ%+Uo6-mp|?IF*fDO*Mo|E6V!_ss?+k9Zb^*u|h(Nj20-d@y~OpIV}g@`DoX&`x$Tf0gLk~wx&g6{YK8k3KRe>Xr}Wirh@ zQ!L#h4&f@%I5aAMXs|(ltXc z{K+Le-viyd8XOPm%Q1&fAU7?E3TQdT3c22np@q zW>$j1zc2*qb~>`y0vf==S-C1ga^NJ9_IOQxp6N}&O$PbHi@<%fa~);7DMseyUlvlI zr*%VZn!pV{*wROervaagV6y*OOi! zr_$qRb<5W{J4IC{`|7{QOg(g*s`Jz}<@re$w#M6I@QwUo1^0sFaJk#+oM)3|za=Yg z!D`w@=Hjn4`Eg^GNPSTw`%I^rtIWVp)z{QhrnTFT^D8)v$@0JMB*^%zUb-L=VNo9Q zd&@Zcw)g{^Xms9${}uY(yqG!zRyr&WJC6AlVL=GMLu_9AG+5M(yxRU1JdV)er(A3) z17M+3U*7=ps?tB1Xk`+oiS$-u*)?C?d`b;C7OV$8%q<|x=XCCjvfgddl3#2msdLlXmy~3t_yjJq3(FE4_A;b4QhcNea7oGA|sHnS-j!X8QyvX_q17Ww=l4PB}cvX z>IL5~ufM9%>a^#OQRoW%OL=F;V8!`y=!}#N|;}mL>Jqz=k@C;?sm~ed& zyon8WlMT|RmE7%^u#I)O-)M-|2CL<&Zv`9!c;DMo|7J0X_b7YFL-yD^XyYMIe|ZL=3H{$LzPx2gN>7Jj8o8@U zaMirLiUr;TquX$!`k5uG+~O=5^0-0*5$8@&jvlM&xLdzR%@IO4U^{VLqzx}x4=oGKNnDM_fbH%(~=R1(W_lJudc3`-{P(b;bOoPo-!&{zGhbPn1x1{ zAD+T(XaF;rn`Vh_n;mGRt^0{waI`n*5WAjVR73_EBPHEhY=8J-w)P$WbP(wg2}%AZ zCiAEd*GO|YdCas3IvmSWgaK`Fq>f4T39t;i8Dy>*hf@j#kf*L@1cz}tf|M3i!pt9| zq&PyCfV^`abv&pS^@KvJyQBZFgKs@J!;r<(z%#;wBn^InK9zvx#s~iL)^y`+;&*2Q zJjxh$fgfGkowEI#nNO{Q5GugWw|lhWpijK3>E)t%U=tQkEYK7{GVdnI*3j1ooY&i4 zj1{1>voE$=Wf;a*rrukm*JJL!18YXnZp?SQ);&%H@~O1ESPCw!D85pHiWV-$!phDG z>RfNW-N?UP%O9S-o}Ts1%?0`Yr-uK?aS^4VD#REGCp*WF?X(I`s*eq3TSl>k^@9y+ z1=5P=4f}u$nlkfXY#*`Dd=~@6*cNGI8ETNa=sRT`z3&=j z9h}!L+15RSqvkV_(y%u{jFlvvt8A5)$7)X(8~&_SK6w!21CQ-sA{9IGTQ??Gc`sTI zaeX2l_6c-!CFK^DQU6U0^-kRDZaHQNktA|Y9gzqdP8M;9t!vK@1valAeL+;qXwB$_P}&@SnvImfYHT*P`VFwb>={UI3Y>jOoZk zf9h>toS&Xg*LPP_HwBfgju8zP1Bp*4ES}-=;cJ>fV3rPh_Ykb zamR7ZVN{!oSzG|I`_)HqeG$^1AF2{ND|LeLFR=#cKpLP>FK-8YlLQII5W#N9#P>TN zq_HYim47DV8(>nMx3!MMi$70mz2CfAt0E$BsSqb@lK*n|*VpMt7U~oN(2MG6iroFK zRHA3w#keI7@uuoW%rX}yy;7t&8fm`Qt3d8r&=zgH9wH8&1zrE43>>B;3laFrvR$;)s*ZvIg-%6Z6lgHeJv8yZM-Vy(S zD~_t#6sE;rV)12IkbySu%ya@}DOwqGfOQauNkZTb&z0lL&TzGcw!7LJzGtWd|Jcwk zqG`UNI{X*U=4!ayq#pdV-R;JxGdB4(*)dhf%ix<%Di+xEv^Rzz+};__bmU>0>;Im%_S~GBP7vmTW0s{-j>}In@LX+kAjl98Y>{xnp?VR&qZ*|BoHCUD0ZlCg8)<0_>9SiF}y48&KSov>j_~;E^O#keCM` zkJA}y|2RYRN@zVM(v}Dyaj9LsC1#%PeDcGOh{dmu0irlH;)rP`G;Q{v@O`4wC z26b0<=Dv@+vjrR8)N_k)VZ{6@X|;1;8z>BFR_zb*%@4b*hwHB=>ofm4&xpJ-5E9aV zO{eaZ@K3{BiTF&W`d_QGu7da!x!$VK+Z9D`DTM_YY*Chp6VunUY0V!MgC!Dzr{Sr{ zLTyEA@x2g)Xbg$u)XJKr(p(SKEmRB$KI%9neQR@#d+f$)FC1ijeglMN8jwTfj6;zr zl}+KZ$>v~zs3?Ws*DNYRJCJDDlz^mm%D*Jt4ai2obF7`J~9Q>@K~6d~_y(IjIA702{$R$V7wj{l|P@UVn_b|~xjT-li- zg;7uKbmu>Bzt$HgAcbBHkDbpb=Ns`da7*D25o41&_$N9yKMwyOvwu? z%Sj&%?@KBdU`v}B2VTIHG@_r}OPDZF;zByD$ zuB=oq*geG7jO-viXzk>e%cQDFh}qvonlvhO;?n{I!ioYWcA`|I)Sf_6s{qS*w^tW# ztRzN;9017f$Q#~MyXml0X1{)VGgy0^TAm&^zxN~9!_R|;{c@|50dU&IpswSP_AIqp zMEtNjzXJlnOZeZ`?%0qacdavLIbw^gS@w`ef)fqw2E}4(nU1ww&nf%4uWix!(JLn% zx-oXM2z|%;;;~kDl+jhm3I&yBJ+&N+EM|L+88(cZ!7L8W)X~cKkapzNHrW%YL#rAo zG1#X&l}*BDKE$Qd42nC78PP*H^7B*{yIKmt_iaw!eBry@62Gk9ZU#AvQ>r#;->R3D z+Q<(1?j&RnIvo>Qs2`FCWul~D?2Mb&sghUFo;MwUi7lg_2~ORVKnHU0NYAOZLpc9r zRybzoF|qU~bxQ4((-ZML#}2A;INimN97+SqKE&4mf)AiNgl3M{`H==9YRlgY0{y@aEH} z`dnz(wk|!Q|3X{-{fIKx)CntB{VoI)1meLmf3MEy5%a9D2>rY6B8*+>=G3XtnleIcwEwLQZrqt~esdSoN)v~{)7}F-|MN@Rmkc?+3{MIiPvlV3EtJp=f<+x<# zbmI5!5=gCyXgCO#4a?Qe!QDJ=!TyRpZ$Y|C8QIzQbrSS;P1FwDSj6eRbIwKGVl#QY zAuDZqRmx5q9j2`F=s=#9_daXq44ikq+FkrnFRXx^Ag|7!*IbRcndZFT{i$sCCvv@U z%pc1`nmefz6d*PUgT|u*+2clAxPaM|Txn(p~4Aw*Se;Obdhf%@< z^)ThJOgl_#ct2jahqv8w3FHm|aAJ};8vajuGZQbZJr`YbOp@Zd8uTqwZBIo&VRq_x*H_{h6iMsTsKi^!;%uXz&eH zM<#zB`p}JA!#Mc|Mr{)C#_G3cN>LhhJj{^R)?IiFdaRbH9H4%axY)e1nr&dxZdIa% z>D$pe2pl+!vEAO8;~o|!*st~WF}%2H7o?}ANIzZARks7)HP-A0Ge**(1~&;DW?T8g z`zS-J05cnX)2T5V{w;mmk7kGGDl`S@Sbq{IgpWzBb(RbhUp_oZ`GCJVAe}zASmj9{ z@GQ>L)n|wxWrT#!sY;VhM#UuU1G#5VT0arpC^(GdmCpqTw^^;f4E;IY$a~41pJ)G2 zo(TEEb%SLRh8J*7`%{>3W0}Q#B^MUN!L4JH)T$EOh>LZ<5*lq%_U$j=F*z~+)Xy|T zt~gez#Vs|(6idHHNTmby4!0+sSVfcJy@#RHF?AAbu7wIYd#EI{Rq|_)F8V?Uku+4^ zkZw$14U>fkj}v~RJNy%DKW0DAtI1qX<*A)WZ{>fQ2SL|cMZrEW5J>oa$sY~r0leM4 zryum*u%xWM`i4s$;~FzM(V67y<>z_&xGa^T(v*o9Vm2q zgfmj0JcA3Yc_ehE+mlANAbq#0)VlyCKRg^a06H{C(Wq@>HD3gm?i`1}>fB@1sYni` z_x8%|IWwZr!T>U(*l%PTP576W+jB23tQ@0GqI&*Ipj4;}dwxv&QV*Rh#OBVdLg#`| zbP}dV2v^{r_pheOUVFIN;&sElFN~SZ$~ZmF60bZAP+Br$kS{TIMOOblY0%1&=A4c7 zN`q&>YIzEnJR1tv32gz4UD7A*PkiaZVj%Y%Bl%U2C)%IDI_@yX3~C?OHg!|8o9khw zBDCrn1V?|0|T%Ruj zYsN>ksq8CbT@gM0rXscZnTZbzw22M*-Qr=!GAshh#CeRj8%Tp$Oif4U26itO$#r9( zy{mTHfHo_U`AVgqRk{|{8TR_F%4j)wJS~^VC)?H$R#JUtO%!F##`{uthT=7l0Lv2I zyO;?c5+ghEg@2!VMF$zva=G5!2u^MZu%so78z25kF`qPk0s`-TK#mQ*47b4hLj5oLOjP3lfJ z1OD~?Z#5kHdc+u=Ak09OT6`M)*-n40hgF5mgy(vKckN+?$NDPJz?#>m?)M}-!z&Z=XBuewW+GI}0=CD0 zov+hW#6@^kokoc4UrLQ>TJzX#kEes~AvA%mk|5eOU=|n+ zX-1siYW=UKcR!d_kpMMap)V2Bw2);0f{cZwQWab!2KW+Cf@=CiYg$c|H>@Ss zptficttd;oNq&ol`?jR#`(MReD_(m~|WN!h{$0QSP5SEwHKT0m zd+BbD2M&fE%ywHc>rVHhraw6b3P+3)zPl#~%Be;gD|RkWNTwJj=T)dBLEMxct$Mo! z{w?}2Y^TVh$dngkpoR2N6o(jW0nLNlqo*(fjUpP4bwb!j@&hQ*>M=vQ-=xvV8a!wm zx_NA=b7Z|mou5E_8XqTrxvv|gaY>>+)cp|ZR;pj7tdhB+UZ(jCdrN?EBJmLX=hLN$ zeU>}ChH2nMH!`W4YQNNjP{=8*@9`H{o=u5c;YIoCk4L*&$$PL5Nb*vc1o_9t55Vyx zpm{SmJR<1{2z@*TxM^$p+5z)wZ+x6=nf%~qVMh9wF_=qy= zcC0c#ZUa<8RZR-LOt|@cS2p~A8-(694W4=-Xw9AFITa2*LluO1y?vxqlL@gA;l%GQ72v}6!H*X%0eK|RDqH{p|x8hK}+uWfofWL{#|~eq`oLIDDgT-sf=uum*<@2zD_tPHJF!<~d_a zT8bIJ0+TyR!?e0?E^T_>;A6fa`eZS{$AoSGak;YWF2x@;MT6%qfI9UK9Lz zmlF*;R?|@^03S1+iUliR!YA2o^VVAwaoX$x;#>ZLz0f`DQT{!ciy@*BJZ~N5TLuU#fYFDdC~_B2M_tatKcYs-Xj;7 zlFi|cu;06{ScYmi|98D79nZ0vlF$_^q|$?7$>A(oH)MA-fFU?6Z6|Tr_x(8@~3Y9AyPb@#r*+ykTN34Ti5U_)v*uNIZ z`umIbaPrWB>PRZPx~-bBV7z67#85O%M5#wa*I8AEW}$;m%RW5F1i6aWQhV)lUE_(E z2${vEm?afso#EjrNh+~PzTpc|U$vFO6@18E>_=II0~RgFSr*y!tH6%t#WQK1B~2r? zP}6|z@9sn9k1h8REYW#Al`nlb%G3sHU2b}?tYHKz&Rc{lP{ak>z5Qa&>X-zLwi^U=0h9PocJfekHZzNeaiy2BLgw*j_*IYG{P&Ea zi=FpKO~b5S>6HwvfmA)JY-eB32zCp?;v)kHGJ54&N8ax?$QbP6i6w>?QwhW!B%I{YBz z%5cC5agRe6s1(-^6BISv&RjeQ$V(iBFpNsGohK37+I>bU($&bUDUbMPA?Qm4iDpL^ z{a+^6PXP48Api?HoFUHQa3%uFtkztXv?BbHoWrnZ5O<_n*#jIX$eb3Wr^I1LZR9gg zr86zi6XZ4Op)%Clc+zM2r72%|psf6}YAhh#? z!{wlf=~;bqdc34U|9e=Nr8fHmj512#+cfy-NfVzF427EU&eE@Xv_lhC=a*|u2}0gH zdObMAX=O4O*5lDEM#z6nN97lY>?aR{RvJE5*m6ZImYbksjIB6|!qC-HZ6r|+oofAL zFSbvqjBCd9jav&48dkR{qe%nYpI$8wza#}QQ@btjtlLjJloddt!l^HLWqmeJhpp8u ze{^2u&|O~idkzj=m)6M9x1z=!|93$D7qs`1nm*A8$JQ!S;ptbvK9^0k z^Tqx+oVH%E0m*%C`G{in^n34q?dp~?i1>uC^yVv)dqe)G1sD(gBuVM3 zt~NdFG+`3m2nq+j01A6r0vFXTjbz{`@I*zQ#?c?>qV{P`m^!V>%c56yoEdDTm`R+( z(Espiajz1niy%La|5T!nkejPUasMoNA5n~wyZtn`2Np1~N48=xo!#xTx5 z<5;B!gWZ^ALNJA69K)Y*R{6U3`wHjBL-DA;BVm1bw=%O)bj*tqP0ZX_Nlt%ENU137 z<47m62QL4DfAWrBPAN`lv}|9s>~tj9QQ%*d%Hbq`@{ve#qk3RXP;=|~EoCwOv+!Ia zOMwhwPR|B%SJ0y*guDobyI;}d3eV~G1J!zEF8Z*|V3SGW5w+kiN4S%QDP$Ini`ohwq&Lb`>N_DrUqvpIH_d;ZZL$rL~n=UD(M+6-2 z)>_8qHf1b=r+c*v5@z*!^~aZRri9}SF{fnpV+;>1IgGx7MGRA_J06t~AJ!dWY$+_p z^}S0mh4lS z=qc_aI5?5hZ=xh{0CDv95cPQ+wLX?~m<*-$IZrz!-y}58pV>06$EPL>40VE}Jn&YQ z*fT}}?TJ=CVFz&}fQ{YJY++0Fv(z<|*Tl=8lt?$8l-^whul)ee2au#0E&Tr*O9@L! zq%BGet`ZR(_Wy5d8D&mTb1JdNRHLqgJtkL77Fdvd2R?yuVe-?APYNM2j|V{y-UBn@ z0Rp2t90erTz~7E0%}h|Cdl4rCXK$HhxN$SPM$tpe==KYG3Q`?1e;Bt!(cDTeRv6U1Iadc~luYo9fN)A>J z+Ick9B*0h;q9sBJew0>X`V{5eBeTmC?6-~e(G%l~Z23Wu(aZ^p-}|tt zoNvxRv-1qFvc+D`1Nlb=xbuLy6UkM%%Qee1g;*AwYI{3mU+`CaG|eit2N6Y5xgoHL z2%s$#f!ceiD81YbT}~m~Dvi{_|W*m3qEsMTo-CY`f$yOH2-@ zO*#!jJbg?Efb?2RFO16hvm_za#>L5N1$+2Z=89LZjDoy6pE<@%O1AgA6F+UMFO8f0l(iUq_$${1kQ*T$R0H`_*L5f~6g9v1$nc?-41gw5 z8xUgF50@V8C+viqWHHX>=@70qYc`#Z98Vv59TCb$LomTt< zmbY06^D0LYfca4np<5y^=QN%lfJgY}CCq$)FmDFDTs?J&v19+d-LVSEQuNcH_V_|v zbLqQMAKoJK1hZw*h!qq5oN3zapVeNYuJa0;tKDn8o$$ud!cgzl-YNU6L+(zp60s zF7PGRug3*&_StUK$dLSxFh-J1Ch=a*)u!k(xdVS)D9b6Tr8b;q^!(vysCj%#?FbC}NNUvngVf^4ZRU5%W^*V-O93`L^%}g$dB=4AR$W{^fhjeIup5S5xNSAUY2rM;yw90jOYUo z9Gp-)L4{3?nCw;eJ{EnR-BI?vnWjDM%ys5a0>A4%&pm>q>cq&D!rFMn9__5mh;7hz z_(!#Pi2^|%JbdklD~;%pr9vHetT4B`RddUHXioa8Vh>QjuK;Z7>ev?&&8)lvGJM@$rkhePCo z%6Yq9{_^PF^`PVqcK^bzt;?XvPScOGVFJ!2;X1a&e(APH2ojZ%v4}{ou61$<*sTSD zAoy~3R+88&(4ii?Atyjy?&d7#v(lSG?y@ziyyzKKte&G-_}WP-g58$uZO z0pRFX!Y|xxv_xc0hcBS2n;>w_U_MS_FgG%Sp_QXiM5f)BQ;ZN1h$>&*QY>tPCt;_w zolmy7wP2S0+8Nksprh+zrb?Mj2Rhu>v+Q?pLt%?MR4QNw^0|h9fkf#4YF>^xJ)J8Su8;|bkMFtU;q#HBWo~S4Q|LB}VlW*^ zf?<%%2GY2i^B;`r+i-WW$lg}?kHPdF7b>!_XTYr<=XcankiL3NUItV=$RS87mkC6j zDP<9T#U`ZqP#9R5kxvG?DSeNTpHARJ5NDI45rFSIi%a>$)i?P1^d%cW4z=BW_zt6G zv|Um92O}KD*_}z0d!w%dN5^=J(S#jw`B#guSZ1P4zy+GVX7|jexG2A&XnL1I<_`at zQBXSb5D0RWoS47YE^{Z*<40-%X-dw}bhzK>-**X~r0Fw4XU z(jzyK#MP$a*^B^6q>?wW<{BX1tvv3}U3-Jzn{jWYw27Ez^k2j48d6-&FSg;1W(6iU z3$fvN`TW;#xBTc6`A3Z=XIyb^n2EAgLx-H>&L^j~hZ$^~QOHKCU%wRX+r4zw;HHtC zEnnI#3*E3u9w1y#j^xYcNDa9>hfadQ-F%Pjuz*K%7;5)$q-(sBi*!@f+c0dxphVS zA^@9ynne0ZC4esBc_SsB348gl9Nwh&;=0^m)K9ae*9I05vRNU z7qzI$p@FvdPcj8N0}yQVNheb$zv>Xf|64v=fdyQ(JYQ6A+l|tVqRuU`e%URaL3M?F zTimr^^i3I4$;I5g|H2aCH-^dp{tKVsUCDcpJ6-DyeH94yELt$2F)#>s?U1P;y8tje z1#dm%g#F2`>UPb$O1I=Sh1}}qTEB|p!aA>(M^yTW5swj8UeAh!qSF9}7vvioQ3I#d z;8HG;3}=5=C6W1tP;RP~Rg+O1`Ltf7ZY?+89cjQ~L)^ETU2?0_to}ztiqz~3lwKS9 zlJQa|7{VZ9Y>9Jih2>zXu?2Vq{ze*oXW)!pZQHMMbZAS#r6jnRys~dHG}a{J9d<5 zoYXVC*>d4mOIjOcqy)6OxFYXm5aoK%AEbu98w<@uj5bC5hMT0`{3|Bi@z{ z=S#_&gzmK?zzZ_LN@oPikZL2_RGMxbelyr>d|q=uV?+5Xxb@g3Hijlf?0acs zR5(ag!TvD&(BU9!mQ3i3MiL63d+Kosp%jIk^RuxLX*5p@zM0Gb;Lp*8RZMM7%*5o~hVUyf@(# zH7R40;vcl#;D3Ht9eA@KMXTjVy&6}{fGY)VIJ}?u!X}{%C|Ht2(R~}csF1&d6ewNz z`MOSh@Ov+E+b4=L_J=ZN^)QPGmuw$XDH>fAaTvE#)eXNjcvxw!xjC|pW`EdWEQ%DA z&>de;nJOv_K@~`snCv|wRfg^`F=SB6Wn{%g`G07-%D5)qa7_vN2NNktMFHuME>Q## z1d;9@IgnafdO&Bm>Y&);#{LZI+c)#s^-ut=l>%QV{ zuD4m*&da`TW(fXkf8A^CoXUws{<}NR>++@yfs&U`x%dGJ7KyvJ{INAvEm}4?Z3EJf zQc~~2o264!Ck+m8hP_N@9Mb3fmMgoY^ub3olLIHAAvOLQc%#ET+l#Hw$}W0l#}%pM z-@C7~-*&?}$f51sezN8Hj}vp-Y#6Z}I^&_w+Rnk8Rxwdewm*AZ)~d284H-g< zx5UB9Gzv+d%IBH)D8h^6wS*=Y(;8OmkbENzF{3n$0@xtGCr$=AY z?rzP)QE9l3TbEF?g7e&0jZ^-&gh-dhRo4W}HMQvcC<_lMElEyC%u% z5Xca@UlB2glRp1XlJqQ9EdXkkUs;NYm|-t_3u<4{-#_;!mGflS1xW0^0t++$BOwaq zz8Wy_=AzMWe8UCKbIQGQ6It{F&ans4LhX9yYkojSAAvElGFt*7!9EJ^o1(cixEyd9aiz_9Ma;^Nk5V!M873K!1TV|GS4T zA+kWWBd^nOwD&%)0N@@_7vzQgmb3emgRZ=^?IjeEByR3L-)1l7>n7ZDPce!os`Hcv zo-65@*bq!nnz{BW{@rf5hrZ#{XHSQM{%+1+2kiX9sya!#sHPe|p~f-;fab-iCc{)~ z9o(V#em8+1~Y?DUy{3>5j@JrqFlQ*Oh zX*#8`&0}Y(vulR6yVGWF8gGhBnf0}(ix`mtMlMWdaLv;uSxv-;@19pYE!B&fGOd>9 z5^m4@T~T^r$QmzK_{fxA?kk(yDmOc1)~taFm_x_?-vRux_(0F>)+14^*X;lK@CF4h z34OeV_fk-DrqRBV<$A-C@I3z6#K1{)J;hLj470qoxkZg2K?K_D2ZgrUwQ%j!vYqz{F~zg0`RndA{X%ahj zcG`7K41#L*6;f8!`n|c=rc*b^P*eSmj;Fr2Hm|8Z{!D{w`5W%b5+$ z-qp3u8K*16Bs=LKD#J3EtdL`e+sY3DW*p7ksGfyvnLYI~Ucdg%j6^90_lY>@ye>fk zrs6iv@r4T-Rvgj%qd8{jg>$KUk!}IL^o>Q2WDQMR?njWoP3K}UKWzMZz_UQCQMWK? zOC;KyNLlT^lAR`^0)%ve>2cZ@5Uw}UKyGY*>6zF(=Yk0{2D^lN$`%PHvBnD0pg_YE zY$9xFKy#VM$a+Nd?n3x>=Mar87*s_kMv4AaMKsn$JN9& z+=lks8_%_VKbUEL`=}z6zt<;X*}l{8P1C#0{hcb7n?twb{>v86OD&Dk*4F*MJCPnC zc)ho_bpa8+dg~VZ%WIEa0_`&GEZnY&_uGbYKE7jLz8~uxs}K!<0@DMGijNSYmn7e( z{-DTW|vhmtC--(_LA^#0$Hlik@>}5;e-uy?*nFvdpsIKp=a(gVjAkiJ79c57R z`TM=NtL^{fS5tm5BpazG*;oJGu3@}+aHPPu=~q4LfS(WAWVra>_{t~ojtE?lx6i3X zin7nB|0R>}vR;?)031EPaVvAW4q)L|O0EE0m>{pspFf?~v)^?HCrPI1+=LMZjNcPj{_`iL(>&?APQJVL>8%@_1fJ*Pt2YEX+V9d^ z^_^VAC*aR9sJ(N9+8PBhGTy@!g>F9LzTH~4>vL&hd9sn)_1(IPmXr%oxk*EWlw$iT z6e|Rpl{IFFR7etbNeguOcI1CwNB>N5;WBdU6mK@rH}-Qc&a8Z#^W>d$|SfeLO5KcjeAK zhO=p(;fS?DxEp<13FHgmoSPyA#6otRS{+j+Yyrslxsc17jQVOb{@2zVzDs)Q-;=J+ z8bZA`BAeUOT^obOVFD$KJeZlDJw!WV!E&lk2-iA&u0#?xJ~EO?~O0UTaCw@IGbzTKHLYvXJ64T zQmP)bucP#i)r20fH$Ft^#&)ap=}6^Hlqwyi&#Cf-|DITmFty?zI%RUye06x)v$4a$ z?Z+k8NhdviP&BH2;tK31p=>fRD`@;t1Z{`=hJ1(aMnrX2s^#zV;A_8D19Dm1uWIaL zQBS!Z9Qe(>^`LjwD+2iGA^+^%-d$j1)4g`n_I$(rQ*96Rf5j6RVo!2CWFAW1?Xr^H z+0UYDiiH4bG6@;|?Z%N}AQ~khy47tY+skF=1Q#>u?FleNNQmSsYHnPA9>0F8Jq!ec zRYa4w9I7uz{eF0A$whme?Qml_&@@f6U**0y`-_@M$lAYnvgm*gnXGi8TN<48OjD{> z=AB52NeWoxWbXcF4e9%sft|K`^MCRoN>YI@@$(cQ0tX2`efYve+&e^HI{5}Ffh4mJ zwd{=)2Aj%wzIP9nSiDsqHWlrB>Nao4Ux_Qi|GJU&s1xx{oXxfk#=Fs_Jv-gARoB87 z%Ph-YIsTU=Y?q0zeWd(jmhqRcH}RJ>Y<21Nj~PE`a~oX=zR$#=ef^(xo4vO5(A{5- z881T_D}dC&v6xF`ruRGFywSFG7y8?cYeCd=BW9-FWV?!^6BAw;U1M#r5+Z*4J87X; zQK~ZQ!v7+wM9oYAyRPcgZW>(9`%umBkewOMz&0$+29^#y2bb`^EmkJJ>UuhAkf5df z$HwI@|3llXA`~ABWFrZ`YuA7@g6+}m5AfWND>^l!%C$vEl2{9Af2yyOT%qR06!wdc z`UUhhc5+S6Mdfk@l_YI_zZ#UA;d+~^D4pj5D^``~`I1q8%S2hGfpE#?f?z#1?U|f< z3 zAC!EC)3o3x&B0Z2@TG#ydeZuZ`jhIBK>c+-2{C({ZQXNvdMtG7mbK2P z>h-HK=Q!7C<;5rFri0&tnIBt+B|E$9edZ@W1~-j`WD7h;pgj=Hs-EU}?7wk}DrkN2 zPy!-;J(x33Zy_4shgMM!VU(OuzYof{6OZ!{Ue2A~;${}M{te5yt1+cIkMb8Z0duZd zIACWJ(_ESNmvxd=kseKtPTeG|?6B#8bvYk@kiGpF3kv%gRzZ|Ir2rmDB*ZT_23eC1 z7oND6Pn&|wIlE-t*c0r_V})Gvo#Xxt8FVV>s`;~yT~xs%&p&OZEk;2+5igP|`P~+t z-FXkaBL4MuQq(0a2?CfJoJ_M_$U9|5+lAk*|g`eXH8s>G|&7Vx0|KqB)iJ3=>DtA)9#WB zs;a^!k*OgM{N4th0V<#$zmA3*H9lQ>YImMgYrHe^=O?r99*~wzHK&qdVl)De(W5D> zvV?`snMoXi6*!n7Ynlvr+)ESFH`3S-n1-%-O?xbwbkl z-%NY`qu8yGU$;y>@56`m6VA()-ntlj@AJ?{%^a}KMo^EwiRRDgs|pj^29RbwVBUa4 z6)5Y?t=MY+a&jqaJcYfZ8PcJdZ3kE|)0Gv`k816Eoq&CG<*x(Zl6zB z2iR*?JybHDzeR+DaXZ2`BY53KiE&AuBLb$?@pkK#4;BP~#03d@LMwVISH**Cq zL(t89UxHXZaU25yHD9POe6MPN8%?}^KB76!m$IVV&7REorNg`AS)|Ja!9p&HiiAWB{pBm8#d6?^eXii0@7DdYJvVma`AfgN z@n^p1D<)TiGE&(>cVA1-!N2Az-*rVC>MUd*HBak#aUPfaorY_uoOfH0b8=?_bi zzFv$a32t5Hb-Ihb$UPH*f3@XY9BrigeA7p&=iq~)!za6>@T{nZy_m1~q-&p&1zO4y z);Wnyuf9fRA_|Yn#yqLy%MDg`N&R_=Jmy*}+8iMlK5U65z8Z+S`uHW0xxk!bd~hWnI;tAmz;e=K=(bN2M#S zxtY%N2ANF}i%hD_%|PZGBkzXag`#^xdzY%dw=G~4rZsHa$n+s8G}2$CrudK3!84|0 zWx=$x466Sssn##5dc@0H%BxX((m78$^+WmmNZEApsP10{!@?%pz}g}oKYn51Z34RC zKRG_BVwAr9{?;Tcu(_a64H8hveB6D8g;|{z=={XaHB3Hfl}2G0Uby>&@@z3voj^Xt zeK?INBR+|c40C13^^CjV3!g&R!VTXvbF?tqJqwl3%R?E^SA%Kl?aG!6&ssR(4KST6 zb#~;QdlyqA6ld*-l--g$Bb^TZgWe;79VZ*9if!oVtOZe-Z}bGI;vkH3*Q&J&(@k{!vhr)y{*AR-Q@J^3m=F*pHO4-?=6~ z;I&sMGMw~N+zN`)I->y6q2W;mMCm4d$i$-@dEz1gyKlP|I>96+BvkVDMbBNVWh*mH zN*0C)rTkGHAtYdekL;iv9$%VFrP^0M_{NFGl_^_I8f^?kgqLLE>fEyXpD}b}2m-<; zYmnYEtVIyYlN9V~t+l2dhyp|ZAVym=0toz}hdTiZ9?$W91yS9n9dNQUcQUaqMrtdd zgd8@6M3LP)P7W$GjjaU+c4RrZQo90A6PCiLE-=K)&@O?k=0>TZKm_;@xN2WmAEu;wrlwL*2yS*3ov+}mb~@hH!t3!$_e#RPt8 zPO$Xy?cQ5xY%hfhXfC*Y+3-%Tx~<&N1u){J)*)tmf#{QQO$n5f_ zO%nY*nqC`8;azN*7Ndx~*ahLbj(uBS|2@~h!)g3xif~tLaSTGn7YBE)+ni8`Tw?n6 zLgu@d*;>GE?AZM9v9Fu$Z201-!m{EVFI`_>Z+i8iY=n=~LTYH37Ij@%v*UyWqmnl6 z8bQ3++J{$mJnder^^z7wSKH^_+spemrk6!{1?%Wdx?NISg2^5KVl>Hq!Vm3MN@A`G zI~!#@9T4^vK?@QjEwU;7nr9CQfttiXg?pE}Prt)1ZMgL{@2)N}#u|lG*KchvM!)ur zX|Q3sY0=d;1~bXI={o{xq3tak9rl?HD{O5uFp=CY@a$_TzMeoJ^XIL}1 zZl1aJ{+z(xqBAsw#y$H%%F06o-+I4*gMq9zjWU$_)1o&(R}plG7i?FDh5B%F){RKP z1EVn9RL64u06r;=EXK5ZI4TH+Ll%T(Naziug+0ws1YeI9=IA8< z?ONy#IDeNsYLM4$R1jsCGc1;BpK?;IzU#G*Zy|fGGAl;EQ;WZ$s&H^^p zFCCg#bmC6an5#z>8H@wjp%NB(U=+V*jw3J(AM(6$?EQGsarD~PBDGpg6biXKcu@^K zI%FwM9Z%RRpI@5IXWg?(X}51E-kijfdaN;;|;L97F_~h;QgY(0xl6Ni9rm<6p!K~5CxS;36g9{zrxNuwtZbH4Vg$_D@G0_}Cos6omK|`xk z{moUZz}&l<#05BHX={1P?YY7d4ja8RWDyN&!8wc_$h%&^p4y5#U>>yHR~ygT5?}jb z&FV74$dek3@@gf%3*5+@PTDV2u7{k8Z(9ET8RU|WH;Y-8$!ogOLhjyaY9}e@SRUl# zhEAHq>LZuldw<9?UeJxrb2@BS>s^kaE{XX@P);~<@Ernj@b=ngS*X9I`aG7!M;B83 zi*nSyPRf4d-86SkpXNnknKX~JAhpd3jhtFn{I^298{pB_+H`M|fs4#eciDbKE!5?}5F?oxzsLK9d8vSM-#&jxjG?)i>>4YFR z**Q%8W%+2g9LUoanJ`{1FJqln39SgwkMP)r+_rr=4sX}WGT2E0lX>^TqEvyGzfKQy z`p)Z_PLVJ1HRRI4fVThCgbe~3MTRG#Xi*iGUWneurXc_kJsm zx!7KI`j$YU*7WiFkA5a@YVfE=>hVEVFzxaumjB!@*N?s%C)H)i^V}&33=mF92$q)T zXwp{R#Hr)&+&Sis5sTr&e)?<_Zg_tQ@a2+AEn>U8u#IWmf56b&wCKpAzr`1HvVi&( z<35_1SDgwU`{-(IXj#U@ckD&PcfPgkc{&yKX8*9BkES??OYEvN!qK=Z?9*M=oG1Z5 zPoeXLT2o`^UJ6fw>!pfvSoI1ninPTx4(@gg1tzgzI~R9e@K?qZbDe@e0wz^Wkcwu~ zifjH@lQiKZPkr{(zHi4nl~_-Kq?q^$?nJP$rg>|kDSmC38_*Uqsin~r9pV-etg%5t zQ;Qql-D>-$cQ=a5jo-*-&l)v&L%1tpAznz>1k-|z&cqZmhczlwBSU&bwX`s9275MSRE>k6n9k`M(x>ufh!J) zr06U6GTT{ESx%ebM7469vZ)KV{p3*FsvtI(6`mg=GgZlp*@*-dy+?L|l4b1eQ^e`l0UiD^*r7nHpT)|Gu6E&T# zcL&Y8{%;7Ef-mfxAsT9tjJj#0>tF{cijs%RA}*usT?U*dPY(xrSrg~BXpW-g ztv-h@0{!_UxT(W~2$-3K5Jq5U&5da=7-L>0SmiL5(kg1okgaHP(W7hgKg(e1+8h%` zy|TXY%E}VBOTKqmQAwWRWo(q&a@E(<+n;vgW$$vi`5WKBek8bR#@*9RZ7s{Y^?SmU zgUNrd#eBXnJj+MI+)?Mpr0oumTU&{#TNEtptXEe*CcXIErivw$E@C6+iF@OuIZqIwsE{h|x z(OaX)?ig}D$N|~(gwc&MrjfgN)csyI3P>@X{Q&QG^4#D-wHxs$Ho1E*3hU23TERA? zM)^RB{LhkI{7mTf!Fp#b(RGSfF3=nlOqheyp(B*~HV zYm^~~l*`<8V4a#xyv47`ZajdCrdk)sJ9yh|ZVOb>pZfb$%6$&d8uY^S9q{i+*ibj6(Jra+OtFIw63;_KC$6zyIg+2ylpth>4%f^uGhrRaAS1&?d(Ij`OGhS-&T^Gp%iYaAD50+ z?Cev(%h@{Gw8iFWga_h#z#%@ZK?$?g?&G>6=}OT{FZ$nxIGTpex@K+q2UqTwTmSrf zSdX^o)!o0JVrBXcu{?Gd>|7Wcv+Xh~|IamzxP7=zNZOG+>iOb$#r_0=_8M2hjBcb- zk7IV`18E&?{~c=g7Use3uSo(XjKP>vHKD@KQicV0emMl`{3y(f(g#|jcFV9)7e13G z+f$9}o=3Y0Fmz77-EWHF*$zvy>q{Xz?b89}QR{cW;w`+yQF)ntfg+H_4qL2zpq9lZR3cg!TK%i@zq^e|omG?SwLotu4Ig z$p|kk@ICdIuh=51$oUhFf11(`D;W-;?bJO;+j%T6r)A%u-ZMV^@p1U0iJ{j9g4~V| z&nw?k3%mo#Oir0)#bnjX3#YE(-MF^VCqppb?EgoL$j>f8G4_OY~ zwq6p36t6O@N>_JtWeScK_i)+T8A0=Ues-Tu!|awPf4ddJcUf*f8hoR&qA6|^C3=u| zL5$vRtS|{0Ubyi3N*;L9{ld<{Z6DS7Wy7zqqZYqhNg9u8M;77NB$;9f3BcP-w%}$n zpeZ*zhf<_iyX-5(IWv#>QIGIJ_3~9TQ&G^Z*@f(FpU&B!D;C{ED^QfxK>0`}l*PBL zha?%=gK=pjOuNZEHRbu88cLQC8kzQUpBQp#qLk!@oNY!aiJ3Ozm%c5f5Fe=b=0$Zb zm*fs9bl>Hke}lpdKOoE_mu;iUrHX&aERVa-*vBmI46Sv9}ErFK}!@f3IK^if8` z-+Ft;g0jypvEWg^fhbJA*hQO8gD3JCx?NSOd%6CkLv~#8lMMMP_%!p7EJUDgiE;v^ zcIfkYJTWU9>D)hapzQCsecOHT=XGR|5yu|x`=|1S%NTM55NDvVBN0{FHN^08>>3T@ zr6fHwUw=y-S+(O83ybc|;q{S^lU|#NZy;J<+ONEmt-QMU9{vM&CDpFJc}(L|@LvJM z*Uj1QPS5bV{@+eZh1Dxha$-($Wc9Ane#>P@PIzxQR+xeC*W&&*(f%b0uDaa0D}wEX zl1#TV{IwjU)`p*t`cF^*)4h6wZk;PPg{;>ggA9)|)e=9tosli0sKvzY>Jit-L9se< zV&V!&J(d+oEHCgCkLen>9pCo^`!!E?7JmVkg9_AxmxA$9^>XGJ?jZr$ZoOM|QsbEs zi7?2#8*kF`A-#xnC&3rpttZS#TKin4rnVW%m*zM^#|+SZQk0bj(zZEL@LINi=dQ^ zjVo58h95OKe8sbac^I}N-s^E~|DjhM3K86V#KP@x-GzHODcPrgkA%~t-oefl;$9`o zEPpMsR11B^A$Pzg3gSSIp?o(atPLQ$T&d}?a0s*cEQ)XITx)RlE|6|%(hHAZ)mmU# z9=CBUn6Eu4Tsw{)kr3k;914EE7$OVqe`axQ0V%X)nmQ7=!2{HRL(gQ$dw#s$a^5;e4pC{1_N8iuTYbtoaQgGXUPt};Zg zr|XVHq$OH4UJl?PZo+b0t`f&S2D_44donmG@~)8QTtOz?ZC4$8DW{jSKDa3^{#`Xg zk7RN6jVv9Rz?kN3LXXt{q*D9gRem{nEXw}bd5v6)mfm!Jf}0;rdv@?sr4z2!n;|{X z-~0W&It@lBa)F9*i#x}XLF(%YDnlb?=xwqjG)8rIq#(N1Co*D_Oe%gsfEjKvLS9>FWzxW&V` zX@F2 z(!Z>|0@R=y6%+AzzJBJ(@DjE7Ci1|}_t95T4Cz~JjT6+iyYnwNkhV$#u7;UU$KVOf zH6Uw*ykz?=X`Z_7{g~{;yJTx6gH4}BD0v<#A-3#Na_h>A24wm%-Xm zGMd}iY*q!U&gwsOKZQrmMcIslI}AbwL{D-f6B6bvr_!sJJ`2x!k;VTZE%$)E6Ep`6 z@8yMO4zG;4=&38S$H>L?fT8sYj=W{d0mj2Qy$2_v9-a40LZpN|-{gscXV#qqw`!rA zr+wIVyBFW?O!7J8@qYbz4lKtl09PL(rR$D+XdHjr(*L_T=0}O&J;b6TR$_beA21>c zBy%-v#^vMb_t;{$IEf-r{8kar7(XTv@7Ai1nIBk@uKP$@J&W<@K(LM;v@6! zjnie6RuHFj>RzSr@BI#6GhRoB`gP2caYPnE5~S28*qKW<|V7S3dM$Y79KUkn2DYr zbb$feh`VOd8xrr;hu_4mbiWz(GP;_Ete+pe9Z_xnvY>xiYMp0#_go(zD{uh1RXl8} zEu`J0g-GF`5W6!C`g?Z`DWB0#ZN&!%O%C33Y4~QVC!=u;A$7l#1x#u(XX;<~i|RAM zOSR>GpIc<1OX|4nJJT(`bV_v>w$4USI7vGJ)52;LO?u-7bZd_{DY}pRWE(46d95CI z(eIcndzC$QO=WJDMd({&X%J&+(+VzyXToKlyHo~15XXSj*MD~oK$`68IU={Qu2C)egJS%m&;QQA<6&X-h~ABCVn zZBB5^SYY9tl}vH)UWC^l$$y zH=ii!e#B%zyPbsk_V#lej1jz#{C-(J<*xR^_}}s<;P3$oImZ2o!l1=_pEhx}OtN)J z;fH7m9`j(GXwVGKIdRlC8H%N}a5LZD%tB>UrFzLpR0jhYkik(eVSiuSC)G%24+iLkQ~qpjtFcB9NvU`!_&<#YRW*Fkmz9p)mjVxcvh@L`sB(E|j8 z=mvucLxiAoF?@vwdVB&B5(UAV>`#iTj|x0jdWt@FP$^v_c){VGbe7jk`3&Pbw;Ss< zDSKNZ?uG}#MU?61jUC9Lr8yTvMu|%xIl2wa8R;;7JiLe4st)9{Q2&@6_3b`=Q?D>| z_~0#1#hix2*;>xn!JO)22DT8SuhfFlHn59teCA4=e-jFoS+?r;QYetGk-Sbht;aj; zi2yYhvXnM^A7yo2RVaA6{FBNDlJW<6_QP;XSU>AI#agFH-RTxg>>`{?Fi^b=BR)Zloo}r=gO@a;j6GM>oq&{UxA(FP=7^k*`P&x{N%hf>E2GD zRpVd{TSGE8^*iAfjFOmknZn`ZtfQxjl{QR5998w8XK`(LAnK*~5U>J>Aute2K@_() zY4!B-pdS#!1HL_BEZY*;hv14VgqWS<*0vmA^%2`)WPd2&8D@eF2AoiNC!r3%+$clD z-&tzcqh1n%2cZe0tH<1X!Gtk>Ji?@&>p0L`AQi=0h3YUiOQRLPxX`hrcfued)Og-GonD^X~aE6J9FI#)DhwCh#S5Pg2}`? z`L;bJQt&5}F3)9&=4ipU?NqJ5H{dt0U3C z3GYbL-v)R-i=cTjG!Jt(qD+?1-Q#q8y%bRAnr7T?`o+KhqGqOX99o$3mhKxn&w6pn zm6`CNRhcIH^Urc9<9vbrqnpDY!3Yd=8{q}VOLhNkl$=}Uk074D?2=}!=~;U}JLYQA zEHrtJhM7A$`Xt||SgpZ%q7N}jplEQtOtD9GjJ0U(hp$fUzoDN{b;l|_eFEDRTq1at zV_67f1{wh*LCCHQss_CQVuv4UnV9hp6JYJ=(?n_H4>pGiB62o7KI*}f3Ht;d{7%)#Gva=D<=8?Bj7C*F_~ge?11<{? zHvJF+J}2Pc{t7PVm91?n{lCK*J}R&t@kA_V_RJx@Dkh=F7M8vamBH7JfwT z9Gyv{=j{O+Sk4HM#jCZ=4-dT)`B^RaU@jTP)|QAaiVm;QraBS^gf;v(N#>Vw|m0#jMumov=DHAVREdRrTjCnhy?3gmldTw2INB;-hljh$t%tgK8x$k#rURoUxI(Kt zqC*&EB*aPC0*1{lc=A_K+wF^u?}@7?|BL|=`_Dr(ggFQ!vwToaHDe#|-Ak@tN}u>r zZ`VKD8{$XoV&eOahAw#&F!Zeo0QZ*&7sG{yIC%=Sp0de|Eme-Y(;<4qR^J{V#9X(_ zv|#$}Rp&Mm2;r3&qmp6Nwi7(?@%P+W~;Pz59LVPf) z&DvUw2s`GRuicxQsA&E3gj3OOMLvbim`gxdX>)Y?)cFh`Y5(Da6^A8E6DC}Oot!F1 zZusKSj4xee?+CH2MHu#K{|!Ag=)!e1H!q(14+F6SBE{U|ZjDI8!6gP!M-VMBwIyjtD~wS5dwjrDjTYdQ_~yaKujC%PNKXXM{yY~TKbN8)((F;T-c zt3U@*%M9{st6vD2PCVBrZ0YMwT$**)_uGJMc#qd?hILyirJ<1B@Ea*6XR1SYiDP61 z!v@WPBOXoY62Eo~EzJg3F{Wagz0fbn*k?RpYW_?ABO;S=6geG-I9Ukzw!v)ww_46@ zX-(nZ`n8Li+BkPYQmWS=jLJQ646BfR8F+?K*2%_yJ+-Cy_H1d=SSEjAc=2(Hs}DlU z$`vs2w#d8sj=mbo=eRmc|7+@`s?GaT((MzV z+eIRGY!x$Vs~wm}L0CA2lVcj5Qe-dLilUj(k;t5$0yu9q4F5S0JH=Y%JNw!8^YRMB zs^y+_%?y&dnRg-Z4=U1~-Q9EN@N1kukEXri*NtU6E5maXCzorjmfJ4AYSmf~99OPT zZEgOBZ5<6@tWoR~jcMTnR_)VX^`T(}V+N0#Y0)8c2KSCz5FH~#?n)dNW8Is;h zN2Z?fb>v(Y4mR)+q_w`~a;x9EJbu<6!9umYoxXF`8I?MCjf*CmmWAf4oVm?)?pfbp z{ajGiqXs6c-sNt?WQE%|t>3!6t~e$qI-G3<*5|y@V~AodU@b$SfG^uUpGu@s90+I% zDh72Va*-o~uFvov@>N*)Ga6wsj*ny1*N?jVt0k_dr%)g@vFP^&g2!E}uDnD(vh_zU zTT7{&LC&j|;CKfD>FL;{eW+3XXWg6;SUrq_8OySu47KVg5l@`*Fy;R()MXE=bJMET@+J@elJC zx)PbzbTQ;Nn5*opW_QG<4P_>t^t(-lyiZFL^2<8Wd24&JHDIiLY8ums-UIT~YM#Fq zVgFNC^WmP2yl?bjyHcvUJ-Z}+Jvh<8fhHsoXe9*HPktErQULZ_F9cyyydW;cp9dP2 z7*)1{)`;9yF1R@jvT70D7p@X7O`ZTIDslPkM8iY9;|j=-Qt&HCkcKA>ne zIT2$rVyUd)n61H$Y#U!m(kZjUv3L9?FAdFh^N#p?^)GL}EjgT)F(XdgO;c4Nvh31| zle4gpzBY=Lz5Yr1#hy8DOk{i67`;{2jy(FXK=85_kB z3oN~F`NF?sYAqP_>A~1@CFD@M&=EV&gE7hIcPO~aqx(T}*f~Y#T3Ps0wvRma$MC>; zpO>O=*Oshb#f^^7N!^K`rF# zX3QIv?fGL*ROoTEYvGAQ z%nwMu3cbp5#TO-cl18nAyd=kMK!MPvNCjYMtKM6jX8;86H^vI!7!#>?Xqa+<)A(`y zoVmk?V5jis{0{!0-npWW?$ptRK@QC(*IP@$vpI+hkw=82=VSk@np;gb&4zBgotGAa z^*r;{Z}htpsDNnT*NiSv4nG(uuB#g7YxWm^=VD+#2bXc`iBjW;bN#7E*V*v#cJCU6 zYnXzt*cG9ob4KkYF>IPZppY(N=WVL0P>1>f7T2iuA`)5i`!z_g;Hksvr_0wjy@TPLgrwmUXsc!@NBqh@F zktVXrfAxcYu^qc8{BXHt)*iEX{$-RAa4??j-=-YzVaAZuGo)e+F*L^F$%)$EJ^+_b zQc^}Te+2;IKrH&|^<9f-zPrNPIkx*XvK>4bKLILPG_Bp-M-?$x9%FF0O+hB2aYQB| z07!7z`C*f8^^WUBiosI*SIw;&xq?YU)mGm=3EAtZeCp44S>Yehq@G#inMR7d)u{sA zsDGEz@?s3tq7yaXoq}25oTl9`Kcz;Wu_HKJ-Rc9s&K4N_(Cfr1Ctd+97hO#HP0`%& z3yEBy97X9J9n$x0r4o+@BD$x}g`xH%GWNqa1MuLF5e?$m=hN@iU-mGJZ7<(x-Q1Rb6qGG^R{^^EV+FJlO@dtLr#nFKMzNbZaeVtC~1 zJlFDf0olM^;t8M;oGXmj?Re|`f>ufTUrR4c-{=3G_ur)LH?B!t+Zay&Jk4N;{q7u1?n>g$=ekJe{^VA|HZy~)(o_( zaECLZ#P&?{)Pp;X*YHwJvW5L*S&l}9n&H7|&)(41lb>Sr z4(TV{@aBf>5A__o_uNz=j!US^XlOW{FkdzAh}>mt6=|AoS$SMW$I4l`?N9v2sHb9R zWZ|}Ne9u_(f^LN5&m5UTyENG@&eyem-ppe^GW5%2`_lz8)Wt?F_thu}blA3NTJyP9 zHL5dvSf%QdeMq)Rae8w-=)qT5ZYo$ZDUfDHIuF*r`2B4 zuJxYMe5)`*9ZrhG_mIK+oy0+@Xe%p`$o`A`vVIJGy+Z#wY={$k?5nr@(P0~v?#j3z zVEwWqIU4XmDeil)Rr&TTYg+_`;9xB@0-z?T!*p*hR&iMVTXbcy%n9nUj|>c(Ke_L& zS35j}{&CHVaP&thWgsvWW>P& zX+jxH8ZU3oVV|53##QUP;WFhiyJ*T$+lUyIpNjb|%dVR`l*_Xdw|Uo>A5+-#33#S? zm(@pek5$unxoZye5B{n-q0HX-f)T5}?=$TJC^~G?Cu6~IVLWU7U0)6~ zbxmq{;%v%@YWk1o2(hm>1}&s{nVSYdYirfnmu0^FSB z*$p5sfbaN;)p-R{M8=wG#n{WLrWV>c?ma8cih-TA;lV0#|IZ8uml711WU>jf&Y&yp zWZ2P^i=}AiMNZw14SwKn(P^^+m(>rRK@5P*TZ8AhZiI=rBy*T?rZ#m9Y?76 zbxv%lCt0PJa!5iD7Zu-p8&c_SlkDO^y9Ctvo|BpJIqhM`aALU4xb}0;_bq#BilLAr z$A!RAm$FJ~(%-jjajNtN#_~I`orR8-7gCn10aOwEp<;OqO>35z6hIjb2(t4D`Nzq+f@ozcof~@W$*<+_t zqqaLYuu`xR<&c`OcgeCZj4##oQlrzq?Jg=P$ZAC0Z{e-T%{AyJ)hHOc7y5?>E(P;@ z*#D!YI_{fU^tcRi;$N{y&eqF_p65{w32&1Y(CpuG3})ODWLD8Y3SuayTbgrfIAy6q zhykm=s-WBi%BNiKt|vdUEzR8IXa5u1#J~~Y+M|lY*K10hoW{q8J6?B=Jx&UYyaXEj z$g|ZBF8sV+(s5ku1{I{Sm3r=O`8+#xcic}V7PW4{J)|>I{Up(}RBSWUF%A$BmpA^wSNp^MbyJd(BMrXv zFa4wW@jq;q_jR!vfT)~XKP$hj_i&5}BBE1a|0=&Ez&2uhZujBDR$H$|rA6ON57*%(4Qq*0@K{ z>~G8~ya%jAKLtFGIhuDz-FLj$PyP$^t~L{?5lzM9ZH~hmS4Wi{A z{+=hW!&<*ADiS?tVu{b!;1h#-8x9ZN{sx4kRE&UZ?R}}^dl+E^GNci%_}(z2!OrD$I|2CLT^>dwNmO zvqcVe1kN6G+5N)i(ldO<*g+3swlHshr#Fl1=MJI3z?t8dsu{g}G-1E%n=^mI#~~${ zfqxTYi*o4LjZms&N7SGdd0);W@!{#VF=}>&(Ud`|R2CuIQXmgU3+_4(M-@%9&3kZ6 z^8TTFLq5@y93Ls}%h+AKx16KIpFk+@d~lKUo41Z#;(yw^?ysh{V14Kcs32DY7X*b1 zs5Bu+k*ZRZdR0V%^cE=zP3fU{MO2ysQlyC}AeUZ+gaBfQbP`B?#D%=n;_6*tf=p$adBXKav8$huYDIYwhMDlL z6)T8T!L(}L%yVQYFOHcq7>1m_skQO6iHyx8@0KQ{iLHuJXI@5We9G3_UJwn$Y-kGW zSJr<$Qt%b=Cuii$Gmt?T6KML}Rn?jHFP8s(r;FiUFTQB@ohf4L{G7k!EU^S`35q%- zdfLvF|kvtS4*oWW4;tRcp+s zo1(h-kDvnfR0-w!euC&fPW$s2t6dYFSPvnn51N;C*qZea#}{U~Ch-0UpP(aG{cm~gJAH9qYOh&R8+!BG7qNjR#6r28N)jfv8X zzZ*B@EuIeP!C5)`CBUNh4oD*%CO7x%-8dndBGdf@9Wa}IyhN&Od<{Tu1+8!N$`v}1 z(=54eJHOPF#xdfw9kr_}YBQh7%4j;bc$u8cv*q{xx7%;p<$cLk;IgY9I&(7TY?jkN zWJTB|Kny>Eo>MG4_A2hmgAB{_G-Ad#&#m6X5bv8ST?2>Niq_~^Kf?qBR8UFO-K-dG z+Rggw6u4yz*H&ich}?*>Q^Oh~#N2;l_wn3O+M3Q-#JQpG8{RET?f6J~Y7;CpXKCzC z8#zYd_EX|Afp8@g@`?NsVNh?mtJ9El4zYx1i8tHNtotgjj0TfzxN2#|sly|?@Vi8p zdRj+_e^}PK`gz(y|ChD6?(JC#Q2D%Dme^F5U2WTCIODvmDjRmefr=?EKbs;J{KCiX zkC`#Vnlvlk&n}cfZ%E54`(iAIH>%6=DsS|huT%J6?_E%4*>CE2^ce4+>L5Tj6x5w-HiW%ph`NtX>w`YTbSSYlG zKehFO+Ho@?k(vs$elQQvWbzN^C%h4^ALV5twsT)&I)6GHDQTDM(5gl_`@2cH*e3;~ z>DkU{Ul}0EZexjIi(NPOthT}yLWlG2PB(7++lx-g63$CyxXQgaPl+GQV#0(ww4sVU z`n3xby3c-!wnz^C^Ga6_ay_<5+^zYL8?}c6rqyhkimVIm4`g1TVfll*>>^vwvk4q}5AErSJMjyJC3jCq0nffqn?~NJ@a5O~7Yu zN934PC3%AK?HnlvW z?AI3ADIeMvJMHFrJuSbNr`EPk*e!haSq`%q-_?7a!uMIfG}t_$mSgeigDC;(CzDyo zn_bI@rDsz4k*fvbbQ`|6R$P6{>PkDihGH&m7Gu*2i`{+kASe|+fl{6n8?%7tkTe2m ztJE76p=JRfFzTHss$rA3`}AiM86Fkn67IRCUdQ<9zw&$-hu>O^tvDSAcMdlvxLRoo zqmSOz&7`wr@As6};qz8s&2@@uH%R*Wt^RN&yliUfIqiEE^_>s%78bI)dx;XDk@(1L ztEV^lUANnSshAPi;%~NgQe3k|hHso5b>KRj~qW2V>+Vh18t-I zv~B@*bVr`(%5e zB8z~Ii|}{b^&UA!-PO?uT;+~H2tXdm)L);h(Q~G>Y%1c$uE>T zkHaYZf1r(ZCl#NK;b?9Za&8_KfG72wnO)oqd?9O*gQfX>=A|Z86-9@Ar(ed=`a{oz z`el6>3DeZ3wzs-tj}uhCaH>kqxfcjmyNKr5H2+;d9~zyHZTGw9-qh?G*bVq)@NsmS z$xy0wsetggOG--Hzqo&i?uZ3oSWINzdh-P0GHHG*naG1$7>rmVRyq@$CW!DbwLTO@ zU5M;b)|=7F+Dj>yk5pYJZ~DZGt;71b1D0WW%HZB@pt6!gb*KB$(o zOHG7G>DdOXT%)*aI?Ob;dFMvqRn!&@>7&q)v}cSkpJSp+LGQ#b`~xVw+th}LxyUmt zheXb17dK7bGij2WNT6N1E2wXZcIzzLz|G{aR(W@x^>WXMzFZ-m(y8+A<&Wt@(;7GB zYU5mXgpt`-@y<^Ppm^zdJ6w&*A=cxkXB?73dK#xmdrU5)7CPKepVM#kYurlpDYe6* zq8PzQ2EuR9OdMsu{i(YfFRF`WX8tLL4s>@djC!)f28l1gULThy;)?5+073i}le6%d zqrYH3BL1pvdWVvVNssCvM;h4mOW6|&viD#unl`XK?SebWGoVU_$=^zwd73f=pM*>g% z)0*AmxOsJ_B%M~j=p5Nv3cF5qBt@xg^8VToO95!05@sTqwreh#B?t4-0xrGUw)d50 zvku}V2gAlAoIH2>Y*5)RGINn`jeAY|K60dxVeDS5#$0L5b0Y9X?bb21Y`44cq_mBN zFv{9%=arz=wrgC0pjzdP*UQ(^;Aq*?$8!*W-^tK5nR-1#axJ`*XoOu{veu}N_;G0g z)u+RtQL_X3PPbqe-h8im4~rwTF2&;LcxS$OqkCG4a4^_)!(F3#vuW*%#WR65 zURAd@Bb#=n*825bfY*#1zyCc5R8yiJv+wJlVVT>7JnY-a-@2us&$$lrcQDIS8z6~%{;_i5 zn)AILoCm{B;ms<<^>NvsU4L7y$!YCjpl+TDs6H1A;@elU1r(oATp~K^G3&6d4Wasm zW_psz*)#A5E*E;6HztNa|6};SXQVaydTY5VIczGAwd=Ij73uCGroV0gRzi+DYvdcv zdV|P$Tt~u~{-m0i3^g09Y9bShj9w67wpus{F+c(>P>NTVQkOg!SLIb5wz`f_|E0UF z;O3FLX;(@rl~JashFsVKodIN|Hdi00?b!dEW-V1vyno%)dWgFAGgpT3%7D{1{2+Jb zjWyL_^JP)%ebiM4bq)0gfNj#bFV zDV2kgYX0ay7_+*26kSzaMvd-V4yz*>@DL48TTEsBH11RP>o+Y7eOHwW^`~qR2m-I! zZ`wwQuR|=QQZkz^`<^8?td6^HJWSSf!J& zb=OgER3l;fXtrk|PlSZtG2&*sZL&X{!v1EVY}~XV{dIY=G5R_RF(YaB(Z!mzzInmb z{T6!%A!5ASt9PB$u&n+kkNdU6v8R%8<1Lh6Zdx{u8vj^Icjw!YZroM7*{wuP9f#3} zgb?3wLSr8j`x?h19A>B&8v>WUKcXJlUrfr<-4D1?3XvRuV=xf>l_EAA4#A+!ig6lEwdo)vAQ8wbyaU;6o2%NSZAc@z8G! zw3OZG+UMD;MgaD%$)~+F2eR(U0f*gLhi3~)`2iWiGWD`-jhS!0@Fvb+WT8ukT>koi zwL?uOeADp1<>d5<Bhlu;WzW)|Ku1 zhUDr(ZoUdZ_S-dtWv~2HJD;$ZkN&JYw}jwpUhM_0^K32^1rXv&z+zPE?V z_picHyM~aEPz*1`1awh&z;{gVAu|?y*xLLObN44od3{+{+}tn1o6jcl%z&_S&8m`D z7k4bl{!NDItVy%$J+6|}gz4%bvxfjx#ZMxFlr(T8eO7|1olULx zcTCO-nFP{W-|dE{owcGr-@lS>#ZRuFi-tyW5E}7*T`S}dIHq;EL}fO;?4H9--YZhu zAn!k;0@zvM*!L-NU7TV>$73s_{KLFN+f)?S|4M0FAAj2I#jxUnZMPgbRN`x=W+}=# zLi=7L!Um%mrzio1cL*beF!iSEvmK(}K}_#ujX0_vQ(SX>q>0u&A=af&g&_XTEBY5K z*Ne5T-Ehz7aqWOA!+@uV-wr=jj#{-7Yj_)&5Ret}Y+}}n)TFzJoAja2V_Piib3)3V zLX(yN@->uXYvosejDO(uC=)F zw{)28Qyg77<|>}$G^O{a`_2R2y~9J=_q=R`SSrQ0?ywr3wD`Wl@MI5mLK?hKWo>Pb z`$4Y`{Sz>6gtt^z-2H|Q4&!#8N}|3PHe0`Hu6Q(>lgu(nA!a3?4xo{$mOoU#gw_p3 zV<~VY^Eh$L>VU$D%-35Z!l)?ijysKv_&CSKsi~(PdcpJ<57giG0KSx%DAJ0IufJ5~ zQzlhz!iafXc7SyzOx{KGS4>POLF;GY!di(b%&AgyHU_p1cdU7k;(@rP6Hz;QQc7mz zs_zo7U2w@i;C1f!T~W7-~x`8vngm8v67+c--eyQ7mI3&>a-sXZ|tv7 z<5$bR9k-wKXz7%N_our^kngHZ?*n~Cskg}6UrG>vLp0n0Jp)H2)>ezqPbpoaE6&WzWW!+f!4QEUEVA@<8mcxdCye1BUgdFI(2d-+A|s0-8@;g-e@kPLW|FYF&%;((@m3Q}Q9ODj1+m^u#?tt*rcI zHJ5LeJDS~}s^QB!`SuxK8q#gT^1a3sobp3{bYCC8EG@p5X1lkK?tfWn$<&_Iv=Sq8RlW_XY6|FBE#ZOx4ubP z8rKo2+u!d{3MJ}8>a25Phz!9SW;k*1+!7EkfN>j}h%|TQ4Ab)YX7Rnn*jTz08;xhp z$UfYD59Hv7t+?o}yG&#suNUAMtj&j@brE1DL6fOZ+G-=+{*DmJzKQt) zGS_ReQx%6^jd<}qy>^i6GP=4-NCwcL91H#v^I-o@PrnLzhpN_~a``TKax*9kq2=*@ ziWJs(fF;mDY+>08%flD(4HnUc<%C)v{L;fp6Tv3Pms3|+=o2T!F=!~0N|%0nLLft% zUl@C}NyAv3*y4iqYA_<|Ku};FQ^O$5^4?%CV{%vFYL(VCyb<4DY<`tvf`Za^ALajP zYec<6KQ|pspuK-2V7En$7!zRUgdBtZyH|n4$1jm)&nd(twIf=K&*m*w5v`TjQ4TKD ziTSCxJdfIu0MrPBM%Mhv+747X>(_IU{8BpoYjC*FAox+sba*V4qb2!Z`{GhpofHlD z=9z|0ee>ou&gbKT7s%E-M~QeBVxq7QP|?)?{x3R2LwVd>6?jFV>AQj#8hG&sTdQER z$rNT%)gZmPS0_ED4_yMo=?niD^J%#|`p;-38&t{o@AgmdcUD{ri#+AKb2@IivgCzO zGY55A=?Q?2dYUamTcE8zCT1({u-rvQwQ1FK#Ee-(FCrM|**r*I058YvZlNn@uw=2S z;u9qtDpe=p+Q+*Vj?rrC*W97@33L#T+fuhj(Q#B-+O}A0Z>`0)XWZ@Q^Xi&E1;^Fh zS)obX-WS!%3x9L-k(baAxe)9Sk~@FrehtA*mb9nDV@$hJjLv1!ivcx?;u*4 zDkM6cw<2Vd-tJ&;uPvgE7T<`g0MLF}YBDDj)$7Z75d1ycOuC3$R#u5Cnp27D!6uU8 z?pM{vZeOk(`%IUkqe5HIaBC(;VX#3yHjg;aSrT`2G)5(bnjb5sFkR4peopQdm;+h= zX{{}P)Wayk5{1}Z(Xy1l)u8e>GtSE?q`q1m8~Q$a&OrH+Fr*U^{%awmg1MzlyTk>x zN|)LD00~81lE26I6eB2gxggyq?PP-KMCX}aS@@t@&3($AQKIP2>e!oDaauhy^3ajN zCS!6T53@cpp#?#z0Jj0Zzv0HG-s0)S5imz4xX4-7nR7%(w@V~qst!mCetf^-Ztk;| zZ+lrFnq1sEnQ;(mb^lKp3wb9LO21V4Cptkwla-GN@Wzb7dV9WL>#JbRQZ;5?8mN3{ zAZ*|Rc#)1ZzqEmQ&d_;41W1rM&K~~tc9j;7wtiOy8kl}EV=_@ja{sG5dM=0t5;JW`Bzb^(sr$~XkdfOY#>GV3LOs*K1>z7}2 Gy!Sr>>Nqw4 literal 0 HcmV?d00001 diff --git a/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md b/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md index 0db4289..daa396f 100644 --- a/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md +++ b/03-VM/9..... MASTER Transport/Standard Transport/IPs & Address - Master - Vetromeccanica.md @@ -1,5 +1,5 @@ -[Elenco I-O Standard_V07.xlsx](file:///C:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx) +[Elenco I-O Standard_V07.xlsx](file:///D:%5CTrabajo%5CVM%5C07%20-%20MASTER%20Transport%5CReporte%5CElenco%20I-O%20Standard_V07.xlsx) | Componente | IP Standard | Commento | Optional |